--- old/src/share/classes/javax/lang/model/element/UnknownAnnotationValueException.java Fri Feb 6 12:50:03 2009 +++ new/src/share/classes/javax/lang/model/element/UnknownAnnotationValueException.java Fri Feb 6 12:50:02 2009 @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ package javax.lang.model.element; +import javax.lang.model.UnknownEntityException; + /** * Indicates that an unknown kind of annotation value was encountered. * This can occur if the language evolves and new kinds of annotation @@ -39,7 +41,7 @@ * @see AnnotationValueVisitor#visitUnknown * @since 1.6 */ -public class UnknownAnnotationValueException extends RuntimeException { +public class UnknownAnnotationValueException extends UnknownEntityException { private static final long serialVersionUID = 269L; --- old/src/share/classes/javax/lang/model/element/UnknownElementException.java Fri Feb 6 12:50:05 2009 +++ new/src/share/classes/javax/lang/model/element/UnknownElementException.java Fri Feb 6 12:50:05 2009 @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ package javax.lang.model.element; +import javax.lang.model.UnknownEntityException; + /** * Indicates that an unknown kind of element was encountered. This * can occur if the language evolves and new kinds of elements are @@ -38,7 +40,7 @@ * @see ElementVisitor#visitUnknown * @since 1.6 */ -public class UnknownElementException extends RuntimeException { +public class UnknownElementException extends UnknownEntityException { private static final long serialVersionUID = 269L; --- old/src/share/classes/javax/lang/model/type/UnknownTypeException.java Fri Feb 6 12:50:07 2009 +++ new/src/share/classes/javax/lang/model/type/UnknownTypeException.java Fri Feb 6 12:50:07 2009 @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ package javax.lang.model.type; +import javax.lang.model.UnknownEntityException; + /** * Indicates that an unknown kind of type was encountered. This can * occur if the language evolves and new kinds of types are added to @@ -38,7 +40,7 @@ * @see TypeVisitor#visitUnknown * @since 1.6 */ -public class UnknownTypeException extends RuntimeException { +public class UnknownTypeException extends UnknownEntityException { private static final long serialVersionUID = 269L; --- /dev/null Fri Feb 6 12:50:09 2009 +++ new/src/share/classes/javax/lang/model/UnknownEntityException.java Fri Feb 6 12:50:08 2009 @@ -0,0 +1,57 @@ +/* + * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package javax.lang.model; + +/** + * Superclass of exceptions which indicate that an unknown kind of + * entity was encountered. This situation can occur if the language + * evolves and new kinds of constructs are introduced. Subclasses of + * this exception may be thrown by visitors to indicate that the + * visitor was created for a prior version of the language. + * + *

A common superclass for those exceptions allows a single catch + * block to have code handling them uniformly. + * + * @author Joseph D. Darcy + * @see javax.lang.model.element.UnknownElementException + * @see javax.lang.model.element.UnknownAnnotationValueException + * @see javax.lang.model.type.UnknownTypeException + * @since 1.7 + */ +public class UnknownEntityException extends RuntimeException { + + private static final long serialVersionUID = 269L; + + /** + * Creates a new {@code UnknownEntityException} with the specified + * detail message. + * + * @param message the detail message + */ + protected UnknownEntityException(String message) { + super(message); + } +} --- /dev/null Fri Feb 6 12:50:11 2009 +++ new/test/tools/javac/processing/model/TestExceptions.java Fri Feb 6 12:50:10 2009 @@ -0,0 +1,55 @@ +/* + * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6794071 + * @summary Test that exceptions have a proper parent class + * @author Joseph D. Darcy + */ + +import javax.lang.model.UnknownEntityException; +import javax.lang.model.element.*; +import javax.lang.model.type.*; + +/* + * Verify UnknownFooExceptions can be caught with a common parent + * exception. + */ +public class TestExceptions { + public static void main(String... args) { + RuntimeException[] exceptions = { + new UnknownElementException((Element)null, (Object)null), + new UnknownAnnotationValueException((AnnotationValue) null, (Object) null), + new UnknownTypeException((TypeMirror)null, (Object)null) + }; + + for(RuntimeException exception : exceptions) { + try { + throw exception; + } catch (UnknownEntityException uee) { + ; + } + } + } +}