UnknownTypeException.java revision 2571:10fc81ac75b4
138032Speter/*
238032Speter * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
3261194Sgshapiro * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
464562Sgshapiro *
538032Speter * This code is free software; you can redistribute it and/or modify it
638032Speter * under the terms of the GNU General Public License version 2 only, as
738032Speter * published by the Free Software Foundation.  Oracle designates this
838032Speter * particular file as subject to the "Classpath" exception as provided
938032Speter * by Oracle in the LICENSE file that accompanied this code.
1038032Speter *
1138032Speter * This code is distributed in the hope that it will be useful, but WITHOUT
1238032Speter * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1338032Speter * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1438032Speter * version 2 for more details (a copy is included in the LICENSE file that
1538032Speter * accompanied this code).
16266527Sgshapiro *
1738032Speter * You should have received a copy of the GNU General Public License version
1838032Speter * 2 along with this work; if not, write to the Free Software Foundation,
1938032Speter * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * 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.type;
27
28import javax.lang.model.UnknownEntityException;
29
30/**
31 * Indicates that an unknown kind of type was encountered.  This can
32 * occur if the language evolves and new kinds of types are added to
33 * the {@code TypeMirror} hierarchy.  May be thrown by a {@linkplain
34 * TypeVisitor type visitor} to indicate that the visitor was created
35 * 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 TypeVisitor#visitUnknown
41 * @since 1.6
42 */
43public class UnknownTypeException extends UnknownEntityException {
44
45    private static final long serialVersionUID = 269L;
46
47    private transient TypeMirror type;
48    private transient Object parameter;
49
50    /**
51     * Creates a new {@code UnknownTypeException}.The {@code p}
52     * parameter may be used to pass in an additional argument with
53     * information about the context in which the unknown type was
54     * encountered; for example, the visit methods of {@link
55     * TypeVisitor} may pass in their additional parameter.
56     *
57     * @param t the unknown type, may be {@code null}
58     * @param p an additional parameter, may be {@code null}
59     */
60    public UnknownTypeException(TypeMirror t, Object p) {
61        super("Unknown type: " + t);
62        type = t;
63        this.parameter = p;
64    }
65
66    /**
67     * Returns the unknown type.
68     * The value may be unavailable if this exception has been
69     * serialized and then read back in.
70     *
71     * @return the unknown type, or {@code null} if unavailable
72     */
73    public TypeMirror getUnknownType() {
74        return type;
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