UnknownElementException.java revision 2571:10fc81ac75b4
1290001Sglebius/*
2290001Sglebius * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
3290001Sglebius * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4290001Sglebius *
5290001Sglebius * This code is free software; you can redistribute it and/or modify it
6290001Sglebius * under the terms of the GNU General Public License version 2 only, as
7290001Sglebius * published by the Free Software Foundation.  Oracle designates this
8290001Sglebius * particular file as subject to the "Classpath" exception as provided
9290001Sglebius * by Oracle in the LICENSE file that accompanied this code.
10290001Sglebius *
11290001Sglebius * This code is distributed in the hope that it will be useful, but WITHOUT
12290001Sglebius * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13290001Sglebius * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14290001Sglebius * version 2 for more details (a copy is included in the LICENSE file that
15290001Sglebius * accompanied this code).
16290001Sglebius *
17290001Sglebius * You should have received a copy of the GNU General Public License version
18290001Sglebius * 2 along with this work; if not, write to the Free Software Foundation,
19290001Sglebius * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20290001Sglebius *
21290001Sglebius * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package javax.lang.model.element;
27
28import javax.lang.model.UnknownEntityException;
29
30/**
31 * Indicates that an unknown kind of element was encountered.  This
32 * can occur if the language evolves and new kinds of elements are
33 * added to the {@code Element} hierarchy.  May be thrown by an
34 * {@linkplain ElementVisitor element visitor} to indicate that the
35 * visitor was created for a prior version of the language.
36 *
37 * @author Joseph D. Darcy
38 * @author Scott Seligman
39 * @author Peter von der Ahé
40 * @see ElementVisitor#visitUnknown
41 * @since 1.6
42 */
43public class UnknownElementException extends UnknownEntityException {
44
45    private static final long serialVersionUID = 269L;
46
47    private transient Element element;
48    private transient Object parameter;
49
50    /**
51     * Creates a new {@code UnknownElementException}.  The {@code p}
52     * parameter may be used to pass in an additional argument with
53     * information about the context in which the unknown element was
54     * encountered; for example, the visit methods of {@link
55     * ElementVisitor} may pass in their additional parameter.
56     *
57     * @param e the unknown element, may be {@code null}
58     * @param p an additional parameter, may be {@code null}
59     */
60    public UnknownElementException(Element e, Object p) {
61        super("Unknown element: " + e);
62        element = e;
63        this.parameter = p;
64    }
65
66    /**
67     * Returns the unknown element.
68     * The value may be unavailable if this exception has been
69     * serialized and then read back in.
70     *
71     * @return the unknown element, or {@code null} if unavailable
72     */
73    public Element getUnknownElement() {
74        return element;
75    }
76
77    /**
78     * Returns the additional argument.
79     *
80     * @return the additional argument
81     */
82    public Object getArgument() {
83        return parameter;
84    }
85}
86