You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gu...@apache.org on 2013/01/07 19:22:18 UTC

svn commit: r1429929 - /felix/trunk/ipojo/manipulator/bnd-ipojo-plugin/src/main/java/org/apache/felix/ipojo/bnd/PojoizationPlugin.java

Author: guillaume
Date: Mon Jan  7 18:22:17 2013
New Revision: 1429929

URL: http://svn.apache.org/viewvc?rev=1429929&view=rev
Log:
FELIX-3837 PojoizationPlugin should be more extensible

* Refactored to introduce more protected methods to ease extensibility

Modified:
    felix/trunk/ipojo/manipulator/bnd-ipojo-plugin/src/main/java/org/apache/felix/ipojo/bnd/PojoizationPlugin.java

Modified: felix/trunk/ipojo/manipulator/bnd-ipojo-plugin/src/main/java/org/apache/felix/ipojo/bnd/PojoizationPlugin.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/manipulator/bnd-ipojo-plugin/src/main/java/org/apache/felix/ipojo/bnd/PojoizationPlugin.java?rev=1429929&r1=1429928&r2=1429929&view=diff
==============================================================================
--- felix/trunk/ipojo/manipulator/bnd-ipojo-plugin/src/main/java/org/apache/felix/ipojo/bnd/PojoizationPlugin.java (original)
+++ felix/trunk/ipojo/manipulator/bnd-ipojo-plugin/src/main/java/org/apache/felix/ipojo/bnd/PojoizationPlugin.java Mon Jan  7 18:22:17 2013
@@ -95,6 +95,38 @@ public class PojoizationPlugin implement
         BndJarResourceStore store = new BndJarResourceStore(analyzer, this.m_reporter);
         store.setIncludeEmbedComponents(m_includeEmbedBundles);
 
+        CompositeMetadataProvider provider = buildMetadataProvider(analyzer, reporter, store);
+
+        // Quick exit
+        CacheableMetadataProvider cache = new CacheableMetadataProvider(provider);
+        if (cache.getMetadatas().isEmpty() && !hasEmbedComponents(analyzer)) {
+            return false;
+        }
+
+        manipulateComponents(reporter, store, cache);
+
+        int nbComponents = findElements(cache.getMetadatas(), "component").size();
+        int nbHandlers = findElements(cache.getMetadatas(), "handler").size();
+        this.m_reporter.progress("iPOJO manipulation performed performed in %s ms (%d components, %d handlers).",
+                               (System.currentTimeMillis() - start),
+                               nbComponents,
+                               nbHandlers);
+
+        // Return true if a new run should be performed after the analyze
+        return false;
+    }
+
+    protected void manipulateComponents(BndReporter reporter, BndJarResourceStore store, CacheableMetadataProvider cache) {
+        Pojoization pojoization = new Pojoization(reporter);
+        pojoization.disableAnnotationProcessing();
+        if (m_useLocalSchemas) {
+            pojoization.setUseLocalXSD();
+        }
+
+        pojoization.pojoization(store, cache, createVisitor(store, reporter));
+    }
+
+    protected CompositeMetadataProvider buildMetadataProvider(Analyzer analyzer, BndReporter reporter, BndJarResourceStore store) {
         // Build MetadataProvider
         CompositeMetadataProvider provider = new CompositeMetadataProvider(reporter);
 
@@ -114,29 +146,7 @@ public class PojoizationPlugin implement
             }
         }
         provider.addMetadataProvider(new AnnotationMetadataProvider(store, reporter));
-
-        CacheableMetadataProvider cache = new CacheableMetadataProvider(provider);
-        if (cache.getMetadatas().isEmpty() && !hasEmbedComponents(analyzer)) {
-            return false;
-        }
-
-        Pojoization pojoization = new Pojoization(reporter);
-        pojoization.disableAnnotationProcessing();
-        if (m_useLocalSchemas) {
-            pojoization.setUseLocalXSD();
-        }
-
-        pojoization.pojoization(store, cache, createVisitor(store, reporter));
-
-        int nbComponents = findElements(cache.getMetadatas(), "component").size();
-        int nbHandlers = findElements(cache.getMetadatas(), "handler").size();
-        this.m_reporter.progress("iPOJO manipulation performed performed in %s ms (%d components, %d handlers).",
-                               (System.currentTimeMillis() - start),
-                               nbComponents,
-                               nbHandlers);
-
-        // Return true if a new run should be performed after the analyze
-        return false;
+        return provider;
     }
 
     private boolean hasEmbedComponents(Analyzer analyzer) throws Exception {
@@ -155,7 +165,7 @@ public class PojoizationPlugin implement
         return found;
     }
 
-    private ManipulationVisitor createVisitor(ResourceStore store, BndReporter reporter) {
+    protected ManipulationVisitor createVisitor(ResourceStore store, BndReporter reporter) {
         ManipulatedResourcesWriter writer = new ManipulatedResourcesWriter();
         writer.setReporter(reporter);
         writer.setResourceStore(store);
@@ -163,7 +173,6 @@ public class PojoizationPlugin implement
         CheckFieldConsistencyVisitor checkFieldConsistencyVisitor = new CheckFieldConsistencyVisitor(writer);
         checkFieldConsistencyVisitor.setReporter(reporter);
         return checkFieldConsistencyVisitor;
-
     }
 
 }