You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ri...@apache.org on 2010/08/16 12:04:42 UTC
svn commit: r985853 -
/geronimo/specs/trunk/geronimo-annotation_1.1_spec/src/main/java/javax/annotation/processing/AbstractProcessor.java
Author: rickmcguire
Date: Mon Aug 16 10:04:41 2010
New Revision: 985853
URL: http://svn.apache.org/viewvc?rev=985853&view=rev
Log:
GERONIMO-5529 javax.annotation.processing.AnnotationProcessing inappropriately throwing UnsupportedOperationException errors.
Complete implementation.
Modified:
geronimo/specs/trunk/geronimo-annotation_1.1_spec/src/main/java/javax/annotation/processing/AbstractProcessor.java
Modified: geronimo/specs/trunk/geronimo-annotation_1.1_spec/src/main/java/javax/annotation/processing/AbstractProcessor.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-annotation_1.1_spec/src/main/java/javax/annotation/processing/AbstractProcessor.java?rev=985853&r1=985852&r2=985853&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-annotation_1.1_spec/src/main/java/javax/annotation/processing/AbstractProcessor.java (original)
+++ geronimo/specs/trunk/geronimo-annotation_1.1_spec/src/main/java/javax/annotation/processing/AbstractProcessor.java Mon Aug 16 10:04:41 2010
@@ -21,12 +21,15 @@
//
package javax.annotation.processing;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
import javax.lang.model.SourceVersion;
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
-import java.util.Set;
/**
* @version $Revision$ $Date$
@@ -39,29 +42,63 @@ public abstract class AbstractProcessor
}
protected boolean isInitialized() {
- throw new UnsupportedOperationException();
+ return processingEnv != null;
}
public abstract boolean process(Set<? extends TypeElement> typeElements, RoundEnvironment roundEnvironment);
public Iterable<? extends Completion> getCompletions(Element element, AnnotationMirror annotationMirror, ExecutableElement executableElement, java.lang.String s) {
- throw new UnsupportedOperationException();
+ // the javadoc defines the base method as always returning an empty collection
+ return Collections.emptyList();
}
public Set<java.lang.String> getSupportedAnnotationTypes() {
- throw new UnsupportedOperationException();
+ SupportedAnnotationTypes types = this.getClass().getAnnotation(SupportedAnnotationTypes.class);
+ if (types == null) {
+ return Collections.emptySet();
+ }
+ else {
+ String[] typeNames = types.value();
+ Set<String> result = new HashSet<String>();
+ for (String name: typeNames) {
+ result.add(name);
+ }
+ // this is required to be immutable
+ return Collections.unmodifiableSet(result);
+ }
}
public Set<java.lang.String> getSupportedOptions() {
- throw new UnsupportedOperationException();
+ SupportedOptions options = this.getClass().getAnnotation(SupportedOptions.class);
+ if (options == null) {
+ return Collections.emptySet();
+ }
+ else {
+ String[] optionNames = options.value();
+ Set<String> result = new HashSet<String>();
+ for (String name: optionNames) {
+ result.add(name);
+ }
+ // this is required to be immutable
+ return Collections.unmodifiableSet(result);
+ }
}
public SourceVersion getSupportedSourceVersion() {
- throw new UnsupportedOperationException();
+ SupportedSourceVersion version = this.getClass().getAnnotation(SupportedSourceVersion.class);
+ if (version == null) {
+ return SourceVersion.RELEASE_6;
+ }
+ else {
+ return version.value();
+ }
}
- public void init(ProcessingEnvironment processingEnvironment) {
- throw new UnsupportedOperationException();
+ public void init(ProcessingEnvironment processingEnv) {
+ if (processingEnv == null) {
+ throw new IllegalStateException("No ProcessingEnvironment specified on init()");
+ }
+ this.processingEnv = processingEnv;
}
}