FELIX-1225 : Set factoryPid attribute of Designate element if component is a factory.

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@784057 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scrplugin/pom.xml b/scrplugin/pom.xml
index 3e4342a..1402dc5 100644
--- a/scrplugin/pom.xml
+++ b/scrplugin/pom.xml
@@ -109,7 +109,7 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.scr.annotations</artifactId>
-			<version>0.9.1-SNAPSHOT</version>
+			<version>0.9.0</version>
 		</dependency>
 		
 	</dependencies>
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
index a8e4a73..2c01c23 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
@@ -434,7 +434,11 @@
             // designate
             final Designate designate = new Designate();
             metaData.addDesignate(designate);
-            designate.setPid(component.getName());
+            if ( component.getFactory() != null ) {
+                designate.setFactoryPid(component.getName());
+            } else {
+                designate.setPid(component.getName());
+            }
             // designate.object
             final MTObject mtobject = new MTObject();
             designate.setObject(mtobject);
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/om/metatype/Designate.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/om/metatype/Designate.java
index d558065..6354505 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/om/metatype/Designate.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/om/metatype/Designate.java
@@ -22,6 +22,8 @@
 
     protected String pid;
 
+    protected String factoryPid;
+
     protected MTObject object;
 
     public String getPid() {
@@ -32,6 +34,14 @@
         this.pid = pid;
     }
 
+    public String getFactoryPid() {
+        return this.factoryPid;
+    }
+
+    public void setFactoryPid(String pid) {
+        this.factoryPid = pid;
+    }
+
     public MTObject getObject() {
         return this.object;
     }
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/xml/MetaTypeIO.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/xml/MetaTypeIO.java
index 978a7a7..7bb4f36 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/xml/MetaTypeIO.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/xml/MetaTypeIO.java
@@ -178,6 +178,7 @@
     throws SAXException {
         final AttributesImpl ai = new AttributesImpl();
         IOUtils.addAttribute(ai, "pid", designate.getPid());
+        IOUtils.addAttribute(ai, "factoryPid", designate.getFactoryPid());
         IOUtils.indent(contentHandler, 1);
         contentHandler.startElement(INNER_NAMESPACE_URI, DESIGNATE_ELEMENT, DESIGNATE_ELEMENT_QNAME, ai);
         IOUtils.newline(contentHandler);