Author: timothyjward
Date: Fri Jul 29 16:31:23 2011
New Revision: 1152296
URL: http://svn.apache.org/viewvc?rev=1152296&view=rev
Log:
ARIES-716 : Allow extensions to the modelling code
Modified:
aries/trunk/application/application-modeller-standalone/src/main/java/org/apache/aries/application/modelling/standalone/OfflineModellingFactory.java
Modified: aries/trunk/application/application-modeller-standalone/src/main/java/org/apache/aries/application/modelling/standalone/OfflineModellingFactory.java
URL: http://svn.apache.org/viewvc/aries/trunk/application/application-modeller-standalone/src/main/java/org/apache/aries/application/modelling/standalone/OfflineModellingFactory.java?rev=1152296&r1=1152295&r2=1152296&view=diff
==============================================================================
--- aries/trunk/application/application-modeller-standalone/src/main/java/org/apache/aries/application/modelling/standalone/OfflineModellingFactory.java
(original)
+++ aries/trunk/application/application-modeller-standalone/src/main/java/org/apache/aries/application/modelling/standalone/OfflineModellingFactory.java
Fri Jul 29 16:31:23 2011
@@ -1,10 +1,14 @@
package org.apache.aries.application.modelling.standalone;
+import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.net.URI;
import java.net.URL;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.Enumeration;
import java.util.List;
import java.util.Set;
@@ -12,6 +16,7 @@ import javax.xml.validation.Schema;
import org.apache.aries.application.modelling.ModelledResourceManager;
import org.apache.aries.application.modelling.ParserProxy;
+import org.apache.aries.application.modelling.ServiceModeller;
import org.apache.aries.application.modelling.impl.AbstractParserProxy;
import org.apache.aries.application.modelling.impl.ModelledResourceManagerImpl;
import org.apache.aries.application.modelling.impl.ModellingManagerImpl;
@@ -108,6 +113,27 @@ public class OfflineModellingFactory {
result.setModellingManager(modellingManager);
result.setParserProxy(parserProxy);
+ List<ServiceModeller> plugins = new ArrayList<ServiceModeller>();
+
+ ClassLoader cl = OfflineModellingFactory.class.getClassLoader();
+ try {
+ Enumeration<URL> e = cl.getResources(
+ "META-INF/services/" + ServiceModeller.class.getName());
+
+ while(e.hasMoreElements()) {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(
+ e.nextElement().openStream()));
+ try {
+ plugins.add((ServiceModeller) Class.forName(reader.readLine(), true, cl).newInstance());
+ } catch (Exception e1) {
+ e1.printStackTrace(System.err);
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace(System.err);
+ }
+
+ result.setModellingPlugins(plugins);
return result;
}
}
|