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;
}