FELIX-3550 : Reimplement the SCR Generator

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1354344 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java
index 19a5086..9a621e1 100644
--- a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java
+++ b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java
@@ -24,6 +24,7 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 import org.apache.felix.scrplugin.annotations.AnnotationProcessor;
 import org.apache.felix.scrplugin.description.ClassDescription;
@@ -556,7 +557,7 @@
     private void testProperty(final ClassDescription current,
                     final Map<String, PropertyDescription> allProperties,
                     final PropertyDescription newProperty,
-                    boolean isInspectedClass ) {
+                    final boolean isInspectedClass ) {
         final String propName = newProperty.getName();
 
         if ( !StringUtils.isEmpty(propName) ) {
@@ -570,6 +571,9 @@
             } else {
                 allProperties.put(propName, newProperty);
             }
+        } else {
+            // no name - generate a unique one
+            allProperties.put(UUID.randomUUID().toString(), newProperty);
         }
     }
 
@@ -601,7 +605,7 @@
     private void testReference(final ClassDescription current,
                     final Map<String, ReferenceDescription> allReferences,
                     final ReferenceDescription newReference,
-                    boolean isInspectedClass ) {
+                    final boolean isInspectedClass ) {
         String refName = newReference.getName();
         if ( refName == null) {
             refName = newReference.getInterfaceName();
@@ -618,6 +622,9 @@
             } else {
                 allReferences.put(refName, newReference);
             }
+        } else {
+            // no name - generate a unique one
+            allReferences.put(UUID.randomUUID().toString(), newReference);
         }
     }
 }
diff --git a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/ComponentContainer.java b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/ComponentContainer.java
index f643b77..4fc6976 100644
--- a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/ComponentContainer.java
+++ b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/ComponentContainer.java
@@ -40,29 +40,54 @@
  */
 public class ComponentContainer {
 
+    /** The class description. */
     private final ClassDescription classDescription;
 
+    /** The component description. */
     private final ComponentDescription componentDescription;
 
+    /** The service description (optional). */
     private ServiceDescription serviceDescription;
 
+    /** All references. */
     private final Map<String, ReferenceDescription> allReferences = new LinkedHashMap<String, ReferenceDescription>();
+
+    /** All properties. */
     private final Map<String, PropertyDescription> allProperties = new LinkedHashMap<String, PropertyDescription>();
 
+    /**
+     * Create a new component container
+     * @param classDescription     Class description
+     * @param componentDescription Component description
+     */
     public ComponentContainer(final ClassDescription classDescription,
                     final ComponentDescription componentDescription) {
         this.classDescription = classDescription;
         this.componentDescription = componentDescription;
     }
 
+    /**
+     * Get the class description
+     * @return The class description
+     */
     public ClassDescription getClassDescription() {
         return this.classDescription;
     }
 
+    /**
+     * Get the component description
+     * @return The component description
+     */
     public ComponentDescription getComponentDescription() {
         return this.componentDescription;
     }
 
+    /**
+     * Get all references.
+     * The references are put into the map by name.
+     * This map can be modified by clients.
+     * @return The map of references
+     */
     public Map<String, ReferenceDescription> getReferences() {
         return this.allReferences;
     }