Sat, 01 Dec 2007 00:00:00 +0000
Initial load
1 /*
2 * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 * CA 95054 USA or visit www.sun.com if you need additional information or
21 * have any questions.
22 */
25 import com.sun.mirror.apt.*;
26 import com.sun.mirror.declaration.*;
27 import com.sun.mirror.type.*;
28 import com.sun.mirror.util.*;
30 import java.util.Collection;
31 import java.util.Set;
32 import java.util.HashSet;
33 import java.util.Map;
34 import java.util.Arrays;
35 import java.util.Collections;
37 public class Misc implements AnnotationProcessorFactory {
38 static class MiscCheck implements AnnotationProcessor {
39 AnnotationProcessorEnvironment ape;
40 MiscCheck(AnnotationProcessorEnvironment ape) {
41 this.ape = ape;
42 }
44 public void process() {
45 Collection<Declaration> decls = ape.
46 getDeclarationsAnnotatedWith((AnnotationTypeDeclaration)
47 ape.getTypeDeclaration("Marker"));
49 // Should write more robust test that examines the
50 // annotation mirrors for the declaration in question.
51 for(Declaration decl: decls) {
52 if (!decl.getSimpleName().startsWith("marked") )
53 throw new RuntimeException();
54 }
55 }
56 }
59 static Collection<String> supportedTypes;
60 static {
61 String types[] = {"*"};
62 supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types));
63 }
65 Collection<String> supportedOptions =
66 Collections.unmodifiableCollection(new HashSet<String>());
68 public Collection<String> supportedOptions() {
69 return supportedOptions;
70 }
72 public Collection<String> supportedAnnotationTypes() {
73 return supportedTypes;
74 }
76 /*
77 * Return the same processor independent of what annotations are
78 * present, if any.
79 */
80 public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
81 AnnotationProcessorEnvironment ape) {
82 return new MiscCheck(ape);
83 }
84 }