Fixed Felix-3155
Applied the patch from German Vega.
Removed wrong comment in Property.java
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1182974 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ipojo/core/src/main/java/org/apache/felix/ipojo/Extender.java b/ipojo/core/src/main/java/org/apache/felix/ipojo/Extender.java
index 0af2b64..146f06e 100644
--- a/ipojo/core/src/main/java/org/apache/felix/ipojo/Extender.java
+++ b/ipojo/core/src/main/java/org/apache/felix/ipojo/Extender.java
@@ -253,7 +253,14 @@
String[] arr = ParseUtils.split(header, ",");
for (int i = 0; arr != null && i < arr.length; i++) {
String[] arr2 = ParseUtils.split(arr[i], ":");
- String type = arr2[0];
+
+ /*
+ * Get the fully qualified type name.
+ * type = [namespace] name
+ */
+ String[] nameparts = ParseUtils.split(arr2[0].trim(), " \t");
+ String type = nameparts.length == 1 ? nameparts[0] : nameparts[0]+":"+nameparts[1];
+
Class clazz;
try {
clazz = bundle.loadClass(arr2[1]);
@@ -288,7 +295,8 @@
ManifestMetadataParser parser = new ManifestMetadataParser();
parser.parseHeader(components);
- Element[] metadata = parser.getComponentsMetadata(); // Get the component type declaration
+ // Get the component type declaration
+ Element[] metadata = parser.getComponentsMetadata();
for (int i = 0; i < metadata.length; i++) {
createAbstractFactory(bundle, metadata[i]);
}
@@ -465,9 +473,13 @@
private void createAbstractFactory(Bundle bundle, Element metadata) {
ManagedAbstractFactoryType factoryType = null;
// First, look for factory-type (component, handler, composite ...)
+
+ // TODO : Should Element.getQualifiedName() be public ?
+ String typeName = metadata.getNameSpace() == null ? metadata.getName() : metadata.getNameSpace()+":"+metadata.getName();
+
for (int i = 0; i < m_factoryTypes.size(); i++) {
ManagedAbstractFactoryType type = (ManagedAbstractFactoryType) m_factoryTypes.get(i);
- if (type.m_type.equals(metadata.getName())) {
+ if (type.m_type.equals(typeName)) {
factoryType = type;
break;
}
@@ -475,8 +487,8 @@
// If not found, return. It will wait for a new component type factory.
if (factoryType == null) {
- m_logger.log(Logger.WARNING, "Type of component not available: " + metadata.getName());
- m_unboundTypes.add(new UnboundComponentType(metadata.getName(), metadata, bundle));
+ m_logger.log(Logger.WARNING, "Type of component not available: " + typeName);
+ m_unboundTypes.add(new UnboundComponentType(typeName, metadata, bundle));
return;
}
diff --git a/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Property.java b/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Property.java
index 1bcb0eb..87d1e9f 100644
--- a/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Property.java
+++ b/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Property.java
@@ -543,7 +543,6 @@
* Invokes the setter method on the given pojo object.
* If no specified pojo object, it calls on each created pojo object.
* @param instance the created object (could be <code>null</code>)
- * @see org.apache.felix.ipojo.Handler#onCreation(java.lang.Object)
*/
public synchronized void invoke(Object instance) {
if (m_invoked) {