Author: [email protected]
Date: Mon Dec  5 17:04:19 2011
New Revision: 1808

Log:
AMDATU-472 Using a pid alias to recognize previously created factory pids

Modified:
   
trunk/amdatu-core/fileinstall-metatype/src/main/java/org/amdatu/core/fileinstall/metatype/internal/MetaTypeFileInstall.java
   
trunk/amdatu-core/fileinstall-metatype/src/main/java/org/amdatu/core/fileinstall/metatype/internal/MetatypeArtifactInstaller.java

Modified: 
trunk/amdatu-core/fileinstall-metatype/src/main/java/org/amdatu/core/fileinstall/metatype/internal/MetaTypeFileInstall.java
==============================================================================
--- 
trunk/amdatu-core/fileinstall-metatype/src/main/java/org/amdatu/core/fileinstall/metatype/internal/MetaTypeFileInstall.java
 (original)
+++ 
trunk/amdatu-core/fileinstall-metatype/src/main/java/org/amdatu/core/fileinstall/metatype/internal/MetaTypeFileInstall.java
 Mon Dec  5 17:04:19 2011
@@ -38,6 +38,7 @@
 public final class MetaTypeFileInstall implements BundleActivator {
 
     public static final String FILENAME_KEY = 
"org.apache.felix.fileinstall.metatype.file";
+    public static final String ORIGINAL_PID_KEY = 
"org.apache.felix.fileinstall.metatype.orgPid";
 
     interface Logger {
         public void log(int level, String message);

Modified: 
trunk/amdatu-core/fileinstall-metatype/src/main/java/org/amdatu/core/fileinstall/metatype/internal/MetatypeArtifactInstaller.java
==============================================================================
--- 
trunk/amdatu-core/fileinstall-metatype/src/main/java/org/amdatu/core/fileinstall/metatype/internal/MetatypeArtifactInstaller.java
   (original)
+++ 
trunk/amdatu-core/fileinstall-metatype/src/main/java/org/amdatu/core/fileinstall/metatype/internal/MetatypeArtifactInstaller.java
   Mon Dec  5 17:04:19 2011
@@ -90,6 +90,7 @@
         if (designates == null) {
             m_logger.log(LogService.LOG_WARNING,
                 "No designates found in metatype configuration file " + 
artifact.getName());
+            return;
         }
 
         Map localOcds = metaData.getObjectClassDefinitions();
@@ -129,9 +130,30 @@
             }
 
             Configuration configuration = null;
-            if (!(designate.getFactoryPid() == null || 
"".equals(designate.getFactoryPid()))) {
-                configuration =
-                    
m_configAdmin.createFactoryConfiguration(designate.getFactoryPid(), null);
+            if (isFactoryConfig(designate)) {
+
+                Configuration[] configurations =
+                    m_configAdmin.listConfigurations("(" + 
MetaTypeFileInstall.ORIGINAL_PID_KEY + "="
+                        + designate.getPid() + ")");
+                if (configurations != null && configurations.length > 0) {
+
+                    m_logger.log(
+                        LogService.LOG_DEBUG,
+                        "Using existing factory configuration " + 
configuration.getPid() + " for designate with pid "
+                            + designate.getPid());
+                    configuration = configurations[0];
+                }
+                else {
+
+                    m_logger.log(
+                        LogService.LOG_DEBUG,
+                        "Creating new factory configuration for designate with 
pid " + designate.getPid());
+
+                    configuration =
+                        
m_configAdmin.createFactoryConfiguration(designate.getFactoryPid(), null);
+                    dict.put(MetaTypeFileInstall.ORIGINAL_PID_KEY, 
designate.getPid());
+                }
+
             }
             else {
                 configuration = 
m_configAdmin.getConfiguration(designate.getPid(), null);
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to