test/tools/javac/annotations/repeatingAnnotations/NestedContainers.java

Fri, 02 Nov 2012 14:35:57 -0700

author
jjg
date
Fri, 02 Nov 2012 14:35:57 -0700
changeset 1386
bf76f4190ef8
parent 1313
873ddd9f4900
child 1492
df694c775e8a
permissions
-rw-r--r--

7169362: JDK8: Write compiler tests for repeating annotations for JDK8
Reviewed-by: darcy, jjg
Contributed-by: sonali.goel@oracle.com

jfranck@1313 1 /*
jfranck@1313 2 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
jfranck@1313 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
jfranck@1313 4 *
jfranck@1313 5 * This code is free software; you can redistribute it and/or modify it
jfranck@1313 6 * under the terms of the GNU General Public License version 2 only, as
jfranck@1313 7 * published by the Free Software Foundation.
jfranck@1313 8 *
jfranck@1313 9 * This code is distributed in the hope that it will be useful, but WITHOUT
jfranck@1313 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
jfranck@1313 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
jfranck@1313 12 * version 2 for more details (a copy is included in the LICENSE file that
jfranck@1313 13 * accompanied this code).
jfranck@1313 14 *
jfranck@1313 15 * You should have received a copy of the GNU General Public License version
jfranck@1313 16 * 2 along with this work; if not, write to the Free Software Foundation,
jfranck@1313 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
jfranck@1313 18 *
jfranck@1313 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
jfranck@1313 20 * or visit www.oracle.com if you need additional information or have any
jfranck@1313 21 * questions.
jfranck@1313 22 */
jfranck@1313 23
jfranck@1313 24 /**
jfranck@1313 25 * @test
jfranck@1313 26 * @summary Smoke test for repeating annotations
jfranck@1313 27 * @bug 7151010
jfranck@1313 28 *
jfranck@1313 29 * @run clean NestedContainers BasicRepeatingAnnos BasicRepeatingAnnos2 Foo Foos FoosFoos
jfranck@1313 30 * @run compile NestedContainers.java
jfranck@1313 31 * @run main NestedContainers
jfranck@1313 32 */
jfranck@1313 33
jfranck@1313 34 import java.lang.annotation.*;
jfranck@1313 35
jfranck@1313 36 @Retention(RetentionPolicy.RUNTIME)
jfranck@1313 37 @ContainedBy(Foos.class)
jfranck@1313 38 @interface Foo {}
jfranck@1313 39
jfranck@1313 40 @Retention(RetentionPolicy.RUNTIME)
jfranck@1313 41 @ContainedBy(FoosFoos.class)
jfranck@1313 42 @ContainerFor(Foo.class)
jfranck@1313 43 @interface Foos {
jfranck@1313 44 Foo[] value();
jfranck@1313 45 }
jfranck@1313 46
jfranck@1313 47 @ContainerFor(Foos.class)
jfranck@1313 48 @Retention(RetentionPolicy.RUNTIME)
jfranck@1313 49 @interface FoosFoos {
jfranck@1313 50 Foos[] value();
jfranck@1313 51 }
jfranck@1313 52
jfranck@1313 53 @Foo
jfranck@1313 54 @Foo
jfranck@1313 55 class BasicRepeatingAnnos {}
jfranck@1313 56
jfranck@1313 57 @Foos({})
jfranck@1313 58 @Foos({})
jfranck@1313 59 class BasicRepeatingAnnos2 {}
jfranck@1313 60
jfranck@1313 61 public class NestedContainers {
jfranck@1313 62 public static void main(String[] args) throws Exception {
jfranck@1313 63 Annotation a = BasicRepeatingAnnos.class.getAnnotation(Foos.class);
jfranck@1313 64 if (a == null) {
jfranck@1313 65 throw new RuntimeException("Container annotation missing");
jfranck@1313 66 }
jfranck@1313 67
jfranck@1313 68 // Check 2:nd level container
jfranck@1313 69 a = BasicRepeatingAnnos2.class.getAnnotation(FoosFoos.class);
jfranck@1313 70 if (a == null) {
jfranck@1313 71 throw new RuntimeException("Container annotation missing");
jfranck@1313 72 }
jfranck@1313 73 }
jfranck@1313 74 }

mercurial