You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2009/07/02 20:43:49 UTC

svn commit: r790706 - in /felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag: PropertyTag.java Util.java

Author: cziegeler
Date: Thu Jul  2 18:43:48 2009
New Revision: 790706

URL: http://svn.apache.org/viewvc?rev=790706&view=rev
Log:
FELIX-1296 : Fix handling of @PropertyOption for the @Property annotation. Applied modified patch from Victor Antonovich

Modified:
    felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java
    felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/Util.java

Modified: felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java?rev=790706&r1=790705&r2=790706&view=diff
==============================================================================
--- felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java (original)
+++ felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java Thu Jul  2 18:43:48 2009
@@ -62,7 +62,18 @@
             public PropertyOption[] options() {
                 final Object obj = annotation.getNamedParameter("options");
                 if ( obj != null ) {
-                    return (PropertyOption[])obj;
+                    if ( obj instanceof Annotation ) {
+                        final Annotation annotation = (Annotation)obj;
+                        return new PropertyOption[] {new PropertyOptionImpl(annotation, desc)};
+                    }
+                    @SuppressWarnings("unchecked")
+                    final List<Annotation> annotations = (List<Annotation>) obj;
+                    PropertyOption[] options = new PropertyOption[annotations.size()];
+                    for (int index = 0; index < options.length; index++) {
+                        final Annotation propAnnotation = annotations.get(index);
+                        options[index] = new PropertyOptionImpl(propAnnotation, desc);
+                    }
+                    return options;
                 }
                 try {
                     return (PropertyOption[]) Property.class.getMethod("options").getDefaultValue();
@@ -255,4 +266,35 @@
         return parameters.toArray(new String[parameters.size()]);
     }
 
+    protected static class PropertyOptionImpl implements PropertyOption {
+
+        private final Annotation annotation;
+        private final JavaClassDescription description;
+
+        public PropertyOptionImpl(final Annotation annotation,
+                final JavaClassDescription desc) {
+            this.annotation = annotation;
+            this.description = desc;
+        }
+
+        public String name() {
+            final String[] names = Util.getAnnotationValues(annotation, "name", description);
+            if ( names != null && names.length > 0 ) {
+                return names[0];
+            }
+            return null;
+        }
+
+        public String value() {
+            final String[] values = Util.getAnnotationValues(annotation, "value", description);
+            if ( values != null && values.length > 0 ) {
+                return values[0];
+            }
+            return null;
+        }
+
+        public Class<? extends java.lang.annotation.Annotation> annotationType() {
+            return PropertyOption.class;
+        }
+    }
 }

Modified: felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/Util.java
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/Util.java?rev=790706&r1=790705&r2=790706&view=diff
==============================================================================
--- felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/Util.java (original)
+++ felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/Util.java Thu Jul  2 18:43:48 2009
@@ -378,7 +378,7 @@
         return ((AnnotationConstant)av).getValue().toString();
     }
 
-    private static String[] getAnnotationValues(final Annotation annotation, final String name, final JavaClassDescription desc)
+    public static String[] getAnnotationValues(final Annotation annotation, final String name, final JavaClassDescription desc)
     throws IllegalArgumentException
     {
         final AnnotationValue av = annotation.getProperty(name);