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 2012/07/02 07:51:57 UTC

svn commit: r1356072 - in /felix/trunk/scrplugin: annotations/src/main/java/org/apache/felix/scrplugin/processing/ generator/src/main/java/org/apache/felix/scrplugin/ generator/src/main/java/org/apache/felix/scrplugin/xml/ maven-scr-plugin/src/main/jav...

Author: cziegeler
Date: Mon Jul  2 05:51:56 2012
New Revision: 1356072

URL: http://svn.apache.org/viewvc?rev=1356072&view=rev
Log:
FELIX-3550 : Reimplement the SCR Generator

Modified:
    felix/trunk/scrplugin/annotations/src/main/java/org/apache/felix/scrplugin/processing/SCRAnnotationProcessor.java
    felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java
    felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java
    felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/SCRDescriptorMojo.java

Modified: felix/trunk/scrplugin/annotations/src/main/java/org/apache/felix/scrplugin/processing/SCRAnnotationProcessor.java
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/annotations/src/main/java/org/apache/felix/scrplugin/processing/SCRAnnotationProcessor.java?rev=1356072&r1=1356071&r2=1356072&view=diff
==============================================================================
--- felix/trunk/scrplugin/annotations/src/main/java/org/apache/felix/scrplugin/processing/SCRAnnotationProcessor.java (original)
+++ felix/trunk/scrplugin/annotations/src/main/java/org/apache/felix/scrplugin/processing/SCRAnnotationProcessor.java Mon Jul  2 05:51:56 2012
@@ -370,6 +370,8 @@ public class SCRAnnotationProcessor impl
                 index += 2;
             }
 
+            final boolean hasName = ad.getStringValue("name", null) != null;
+
             if (values != null) {
                 prop.setType(PropertyType.valueOf(type));
                 if (values.length == 1) {
@@ -378,40 +380,47 @@ public class SCRAnnotationProcessor impl
                     prop.setMultiValue(values);
                 }
             } else if (fieldAnnotation != null) {
-
                 // Detect values from field
-                final Object value = fieldAnnotation.getAnnotatedFieldValue();
-                if (value != null) {
-                    if (value.getClass().isArray()) {
-                        values = new String[Array.getLength(value)];
-                        for (int i = 0; i < values.length; i++) {
-                            values[i] = Array.get(value, i).toString();
+                if ( hasName ) {
+                    final Object value = fieldAnnotation.getAnnotatedFieldValue();
+                    if (value != null) {
+                        if (value.getClass().isArray()) {
+                            final String[] newValues = new String[Array.getLength(value)];
+                            for (int i = 0; i < newValues.length; i++) {
+                                newValues[i] = Array.get(value, i).toString();
+                            }
+                            prop.setMultiValue(newValues);
+                            prop.setType(PropertyType.from(Array.get(value, 0).getClass()));
+                        } else {
+                            prop.setType(PropertyType.from(value.getClass()));
+                            prop.setValue(value.toString());
                         }
-                        prop.setMultiValue(values);
-                        prop.setType(PropertyType.from(Array.get(value, 0).getClass()));
-                    } else {
-                        prop.setType(PropertyType.from(value.getClass()));
-                        prop.setValue(value.toString());
                     }
+                } else {
+                    prop.setType(PropertyType.String);
+                    prop.setValue(fieldAnnotation.getAnnotatedField().getName());
                 }
             }
 
-            final String defaultName;
-            if (fieldAnnotation != null) {
+            final String name;
+            if ( hasName ) {
+                name = ad.getStringValue("name", null);
+            } else if (fieldAnnotation != null) {
                 if (values == null) {
-                    defaultName = fieldAnnotation.getAnnotatedField().getName();
-                } else {
                     final Object value = fieldAnnotation.getAnnotatedFieldValue();
                     if (value != null) {
-                        defaultName = value.toString();
+                        name = value.toString();
                     } else {
-                        defaultName = null;
+                        name = null;
                     }
+                } else {
+                    name = fieldAnnotation.getAnnotatedField().getName();
                 }
             } else {
-                defaultName = null;
+                name = null;
             }
-            prop.setName(ad.getStringValue("name", defaultName));
+
+            prop.setName(name);
             prop.setLabel(ad.getStringValue("label", null));
             prop.setDescription(ad.getStringValue("description", null));
 

Modified: felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java?rev=1356072&r1=1356071&r2=1356072&view=diff
==============================================================================
--- felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java (original)
+++ felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java Mon Jul  2 05:51:56 2012
@@ -438,6 +438,7 @@ public class SCRDescriptorGenerator {
             final PropertyDescription pid = new PropertyDescription(null);
             pid.setName( org.osgi.framework.Constants.SERVICE_PID );
             pid.setValue( componentDesc.getName() );
+            pid.setType(PropertyType.String);
 
             container.getProperties().put(org.osgi.framework.Constants.SERVICE_PID, pid);
         }

Modified: felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java?rev=1356072&r1=1356071&r2=1356072&view=diff
==============================================================================
--- felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java (original)
+++ felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java Mon Jul  2 05:51:56 2012
@@ -496,7 +496,8 @@ public class ComponentDescriptorIO {
                     try {
                         cl = this.classLoader.loadClass(className);
                     } catch (final Throwable e) {
-                        iLog.addWarning("Unable to load class " + className + " from dependencies.", this.location);
+                        // this doesn't have an effect as the classes we processed are loaded
+                        // anyway.
                     }
                     this.currentClass = new ClassDescription(cl, "classpath:" + className);
                     this.currentClass.add(this.currentComponent);

Modified: felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/SCRDescriptorMojo.java
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/SCRDescriptorMojo.java?rev=1356072&r1=1356071&r2=1356072&view=diff
==============================================================================
--- felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/SCRDescriptorMojo.java (original)
+++ felix/trunk/scrplugin/maven-scr-plugin/src/main/java/org/apache/felix/scrplugin/mojo/SCRDescriptorMojo.java Mon Jul  2 05:51:56 2012
@@ -24,9 +24,9 @@ import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -149,7 +149,7 @@ public class SCRDescriptorMojo extends A
      *
      * @parameter
      */
-    private Map<String, String> properties = new HashMap<String, String>();
+    private Map<String, String> properties = new LinkedHashMap<String, String>();
 
     /**
      * The version of the DS spec this plugin generates a descriptor for. By