[jboss-svn-commits] JBL Code SVN: r31866 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools/util and 8 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Feb 28 00:08:27 EST 2010


Author: mark.proctor at jboss.com
Date: 2010-02-28 00:08:26 -0500 (Sun, 28 Feb 2010)
New Revision: 31866

Added:
   labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/osgi/Activator.java
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/osgi/api/Activator.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ServiceRegistry.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ServiceRegistryImpl.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/BPMN2ProcessFactory.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableFactory.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/osgi/compiler/Activator.java
   labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/osgi/decisiontables/Activator.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/.classpath
   labs/jbossrules/trunk/drools-process/drools-bpmn2/META-INF/MANIFEST.MF
   labs/jbossrules/trunk/drools-process/drools-bpmn2/pom.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/osgi/bpmn2/Activator.java
   labs/jbossrules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests/BPMN2OsgiTest.java
Log:
JBRULES-2351 OSGi Ready 
-BPMN2 and DecisionTables providers are now registered properly
-ServiceRegistry now does not add defaults to the main registry, instead it uses those as a fallback if nothing is registered.

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/osgi/api/Activator.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/osgi/api/Activator.java	2010-02-28 00:15:42 UTC (rev 31865)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/osgi/api/Activator.java	2010-02-28 05:08:26 UTC (rev 31866)
@@ -54,7 +54,7 @@
 
         public Object addingService(ServiceReference ref) {
             Service service = (Service) this.bc.getService( ref );
-            System.out.println( "registering : " + service + " : " + service.getClass().getInterfaces()[0] );
+            System.out.println( "registering api : " + service + " : " + service.getClass().getInterfaces()[0] );
 
             Dictionary dic = new Hashtable();
             ServiceReference regServiceRef = this.activator.serviceRegistry.getReference();

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ServiceRegistry.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ServiceRegistry.java	2010-02-28 00:15:42 UTC (rev 31865)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ServiceRegistry.java	2010-02-28 05:08:26 UTC (rev 31866)
@@ -16,5 +16,8 @@
 //  public void unregisterInstance(Service service);    
     
     public <T> T get(Class<T> cls);
+    
+    public void addDefault(Class cls,
+                           String impl);
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ServiceRegistryImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ServiceRegistryImpl.java	2010-02-28 00:15:42 UTC (rev 31865)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ServiceRegistryImpl.java	2010-02-28 05:08:26 UTC (rev 31866)
@@ -152,7 +152,13 @@
                                                     e );
             }
         } else {
-            throw new IllegalArgumentException( "Unable to locate a service for Class '" + (cls != null ? cls.getName() : null) + "'" );
+            cal = this.defaultServices.get( cls.getName() );
+            try {
+                return cls.cast( cal.call() );
+            } catch ( Exception e ) {
+                throw new IllegalArgumentException( "Unable to instantiate service for Class '" + (cls != null ? cls.getName() : null) + "'",
+                                                    e );
+            }            
         }
     }
 
@@ -169,16 +175,13 @@
         addDefault(  SystemEventListenerService.class,
                      "org.drools.impl.SystemEventListenerServiceImpl" );
         
-        
 //        addDefault( SystemE.class,
 //        "org.drools.io.impl.ResourceFactoryServiceImpl" );        
     }
 
-    private void addDefault(Class cls,
-                            String impl) {
+    public synchronized void addDefault(Class cls,
+                           String impl) {
         ReflectionInstantiator<Service> resourceRi = new ReflectionInstantiator<Service>( impl );
-        registry.put( cls.getName(),
-                      resourceRi );
         defaultServices.put( cls.getName(),
                              resourceRi );
     }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/BPMN2ProcessFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/BPMN2ProcessFactory.java	2010-02-28 00:15:42 UTC (rev 31865)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/BPMN2ProcessFactory.java	2010-02-28 05:08:26 UTC (rev 31866)
@@ -1,6 +1,9 @@
 package org.drools.compiler;
 
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.util.ServiceRegistryImpl;
 
+
 public class BPMN2ProcessFactory {
 
 	private static BPMN2ProcessProvider provider;
@@ -21,16 +24,9 @@
 	}
 
 	@SuppressWarnings("unchecked")
-	private static void loadProvider() {
-		try {
-			// we didn't find anything in properties so lets try and us reflection
-			Class<BPMN2ProcessProvider> cls = (Class<BPMN2ProcessProvider>)
-				Class.forName("org.drools.bpmn2.BPMN2ProcessProviderImpl");
-			setBPMN2ProcessProvider(cls.newInstance());
-		} catch (Exception e2) {
-			throw new RuntimeException(
-				"Provider org.drools.bpmn2.BPMN2ProcessProviderImpl could not be set.", e2);
-		}
+	private static void loadProvider() {	    	    	    
+        ServiceRegistryImpl.getInstance().addDefault( BPMN2ProcessProvider.class,  "org.drools.bpmn2.BPMN2ProcessProviderImpl" );            
+        setBPMN2ProcessProvider(ServiceRegistryImpl.getInstance().get( BPMN2ProcessProvider.class ) );	    
 	}
 	
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableFactory.java	2010-02-28 00:15:42 UTC (rev 31865)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableFactory.java	2010-02-28 05:08:26 UTC (rev 31866)
@@ -3,8 +3,10 @@
 import java.io.InputStream;
 import java.io.Reader;
 
+import org.drools.SystemEventListenerService;
 import org.drools.builder.DecisionTableConfiguration;
 import org.drools.osgi.compiler.Activator;
+import org.drools.util.ServiceRegistryImpl;
 
 public class DecisionTableFactory {
     private static DecisionTableProvider provider;
@@ -28,12 +30,7 @@
     }
     
     private static void loadProvider() {
-        try {
-            // we didn't find anything in properties so lets try and us reflection
-            Class<DecisionTableProvider> cls = ( Class<DecisionTableProvider> ) Class.forName( "org.drools.decisiontable.DecisionTableProviderImpl" );            
-            setDecisionTableProvider( cls.newInstance() );
-        } catch ( Exception e2 ) {
-            throw new RuntimeException( "Provider org.drools.decisiontable.DecisionTableProviderImpl could not be set.", e2);
-        }
+        ServiceRegistryImpl.getInstance().addDefault( DecisionTableProvider.class,  "org.drools.decisiontable.DecisionTableProviderImpl" );            
+        setDecisionTableProvider(ServiceRegistryImpl.getInstance().get( DecisionTableProvider.class ) );
     }       
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/osgi/compiler/Activator.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/osgi/compiler/Activator.java	2010-02-28 00:15:42 UTC (rev 31865)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/osgi/compiler/Activator.java	2010-02-28 05:08:26 UTC (rev 31866)
@@ -6,11 +6,14 @@
 import org.drools.Service;
 import org.drools.builder.KnowledgeBuilderFactoryService;
 import org.drools.builder.impl.KnowledgeBuilderFactoryServiceImpl;
+import org.drools.compiler.BPMN2ProcessFactory;
+import org.drools.compiler.BPMN2ProcessProvider;
 import org.drools.compiler.DecisionTableProvider;
 import org.drools.osgi.api.Activator.BundleContextInstantiator;
 import org.drools.util.ServiceRegistryImpl;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.util.tracker.ServiceTracker;
@@ -30,7 +33,11 @@
                                                new Hashtable() );
 
         this.dtableTracker = new ServiceTracker( bc,
-                                                 DecisionTableProvider.class.getName(),
+                                                 bc.createFilter( "(|(" + 
+                                                                  Constants.OBJECTCLASS + "=" + 
+                                                                  DecisionTableProvider.class.getName() + ")(" + 
+                                                                  Constants.OBJECTCLASS + "=" + 
+                                                                  BPMN2ProcessProvider.class.getName() +") )"),
                                                  new DroolsServiceTracker( bc,
                                                                            this ) );
         this.dtableTracker.open();
@@ -57,7 +64,7 @@
 
         public Object addingService(ServiceReference ref) {
             Service service = (Service) this.bc.getService( ref );
-            System.out.println( "registering : " + service + " : " + service.getClass().getInterfaces()[0] );
+            System.out.println( "registering compiler : " + service + " : " + service.getClass().getInterfaces()[0] );
 
             Dictionary dic = new Hashtable();
             ServiceReference regServiceRef = this.activator.kbuilderReg.getReference();
@@ -84,6 +91,7 @@
                                    Object arg1) {
             Service service = (Service) bc.getService( ref );
             ServiceRegistryImpl.getInstance().unregisterLocator( service.getClass().getInterfaces()[0] );
+            System.out.println( "unregistering compiler : " + service + " : " + service.getClass().getInterfaces()[0] );            
         }
     }
 

Modified: labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/osgi/decisiontables/Activator.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/osgi/decisiontables/Activator.java	2010-02-28 00:15:42 UTC (rev 31865)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/osgi/decisiontables/Activator.java	2010-02-28 05:08:26 UTC (rev 31866)
@@ -9,6 +9,7 @@
 //import org.drools.impl.KnowledgeBaseFactoryServiceImpl;
 //import org.drools.io.ResourceFactoryService;
 //import org.drools.io.impl.ResourceFactoryServiceImpl;
+import org.drools.Service;
 import org.drools.compiler.DecisionTableProvider;
 import org.drools.decisiontable.DecisionTableProviderImpl;
 import org.osgi.framework.BundleActivator;
@@ -22,7 +23,7 @@
 
     public void start(BundleContext bc) throws Exception {
     	System.out.println( "registering decision tables drools services" );
-        this.kdtableReg = bc.registerService(  DecisionTableProvider.class.getName(),
+        this.kdtableReg = bc.registerService(  new String[]{ DecisionTableProvider.class.getName(), Service.class.getName()},
                                                new DecisionTableProviderImpl(),
                                                new Hashtable() );
         System.out.println( "drools decision tables services registered" );

Added: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/osgi/Activator.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/osgi/Activator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/osgi/Activator.java	2010-02-28 05:08:26 UTC (rev 31866)
@@ -0,0 +1,18 @@
+package org.drools.persistence.osgi;
+
+import org.hibernate.ejb.HibernatePersistence;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator
+    implements
+    BundleActivator {
+
+    public void start(BundleContext bc) throws Exception {
+        System.out.println( "In Activator : " + HibernatePersistence.class );
+    }
+
+    public void stop(BundleContext bc) throws Exception {
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/.classpath	2010-02-28 00:15:42 UTC (rev 31865)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/.classpath	2010-02-28 05:08:26 UTC (rev 31866)
@@ -41,6 +41,7 @@
 	<classpathentry kind="var" path="M2_REPO/junit/junit/4.6/junit-4.6.jar"/>
 	<classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16.jar"/>
 	<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/felix/org.osgi.compendium/1.4.0/org.osgi.compendium-1.4.0.jar"/>
 	<classpathentry kind="var" path="M2_REPO/org/apache/felix/org.osgi.core/1.4.0/org.osgi.core-1.4.0.jar"/>
 	<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.5.10/slf4j-api-1.5.10.jar"/>
 	<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-jdk14/1.5.2/slf4j-jdk14-1.5.2.jar"/>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/META-INF/MANIFEST.MF	2010-02-28 00:15:42 UTC (rev 31865)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/META-INF/MANIFEST.MF	2010-02-28 05:08:26 UTC (rev 31866)
@@ -1,14 +1,18 @@
 Manifest-Version: 1.0
+Bundle-Activator: org.drools.osgi.bpmn2.Activator
 Created-By: 1.5.0_21 (Sun Microsystems Inc.)
 Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Import-Package: org.w3c.dom,org.xml.sax
-Bnd-LastModified: 1266547541398
-Export-Package: org.drools.bpmn2.core;version="5.1.0.SNAPSHOT",org.dro
- ols.bpmn2.xpath;version="5.1.0.SNAPSHOT",org.drools.bpmn2.handler;ver
- sion="5.1.0.SNAPSHOT",org.drools.bpmn2.xml;uses:="org.drools.bpmn2.co
- re,org.xml.sax,org.w3c.dom,org.drools.bpmn2.xml.di";version="5.1.0.SN
- APSHOT",org.drools.bpmn2.xml.di;uses:="org.xml.sax,org.w3c.dom";versi
- on="5.1.0.SNAPSHOT"
+Import-Package: org.osgi.framework;version="1.5",org.w3c.dom,org.xml.s
+ ax
+Bnd-LastModified: 1267333501253
+Export-Package: org.drools.bpmn2;uses:="org.drools.bpmn2.xml";version=
+ "5.1.0.SNAPSHOT",org.drools.bpmn2.core;version="5.1.0.SNAPSHOT",org.d
+ rools.bpmn2.xpath;version="5.1.0.SNAPSHOT",org.drools.bpmn2.handler;v
+ ersion="5.1.0.SNAPSHOT",org.drools.bpmn2.xml;uses:="org.drools.bpmn2.
+ core,org.xml.sax,org.w3c.dom,org.drools.bpmn2.xml.di";version="5.1.0.
+ SNAPSHOT",org.drools.bpmn2.xml.di;uses:="org.xml.sax,org.w3c.dom";ver
+ sion="5.1.0.SNAPSHOT",org.drools.osgi.bpmn2;uses:="org.drools.bpmn2,o
+ rg.osgi.framework";version="5.1.0.SNAPSHOT"
 Bundle-Version: 5.1.0.SNAPSHOT
 Bundle-Name: Drools :: Process :: BPMN2
 Bundle-Description: A rule production system

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/pom.xml	2010-02-28 00:15:42 UTC (rev 31865)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/pom.xml	2010-02-28 05:08:26 UTC (rev 31866)
@@ -90,6 +90,17 @@
       <version>1.3.3</version>    	
       <scope>test</scope>
     </dependency>    	
+    
+      <dependency>
+         <groupId>org.apache.felix</groupId>
+         <artifactId>org.osgi.core</artifactId>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>org.apache.felix</groupId>
+         <artifactId>org.osgi.compendium</artifactId>
+         <scope>provided</scope>
+      </dependency>    
 
   </dependencies>
 

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/osgi/bpmn2/Activator.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/osgi/bpmn2/Activator.java	2010-02-28 00:15:42 UTC (rev 31865)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/osgi/bpmn2/Activator.java	2010-02-28 05:08:26 UTC (rev 31866)
@@ -2,6 +2,7 @@
 
 import java.util.Hashtable;
 
+import org.drools.Service;
 import org.drools.bpmn2.BPMN2ProcessProviderImpl;
 import org.drools.compiler.BPMN2ProcessProvider;
 import org.osgi.framework.BundleActivator;
@@ -14,14 +15,16 @@
     private ServiceRegistration bpmn2ProcessReg;
 
     public void start(BundleContext bc) throws Exception {
-    	System.out.println( "registering BPMN2 process drools services" );
-        this.bpmn2ProcessReg = bc.registerService( BPMN2ProcessProvider.class.getName(),
-                                               new BPMN2ProcessProviderImpl(),
-                                               new Hashtable() );
+        System.out.println( "registering BPMN2 process drools services" );
+        this.bpmn2ProcessReg = bc.registerService( new String[]{ BPMN2ProcessProvider.class.getName(), Service.class.getName()},
+                                                   new BPMN2ProcessProviderImpl(),
+                                                   new Hashtable() );
+
         System.out.println( "drools BPMN2 process services registered" );
     }
 
     public void stop(BundleContext bc) throws Exception {
         this.bpmn2ProcessReg.unregister();
     }
+
 }

Modified: labs/jbossrules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests/BPMN2OsgiTest.java
===================================================================
--- labs/jbossrules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests/BPMN2OsgiTest.java	2010-02-28 00:15:42 UTC (rev 31865)
+++ labs/jbossrules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests/BPMN2OsgiTest.java	2010-02-28 05:08:26 UTC (rev 31866)
@@ -50,22 +50,26 @@
         KnowledgeBaseFactoryService knowledgeBaseFactoryService = registry.get( KnowledgeBaseFactoryService.class );
         ResourceFactoryService resourceFactoryService = registry.get( ResourceFactoryService.class );
         
-        KnowledgeBuilderConfiguration conf = knowledgeBuilderFactoryService.newKnowledgeBuilderConfiguration();
-        ((PackageBuilderConfiguration) conf).initSemanticModules();
-        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNSemanticModule());
-        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMN2SemanticModule());
-        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNDISemanticModule());
-        ((PackageBuilderConfiguration) conf).addDialect("XPath", new XPathDialectConfiguration());        
+        KnowledgeBuilder kbuilder = knowledgeBuilderFactoryService.newKnowledgeBuilder();
+        kbuilder.add(resourceFactoryService.newClassPathResource(process, BPMN2OsgiTest.class), ResourceType.BPMN2);
         
-        XmlProcessReader processReader = new XmlProcessReader(
-            ((PackageBuilderConfiguration) conf).getSemanticModules());
-        RuleFlowProcess p = (RuleFlowProcess)
-            processReader.read(BPMN2OsgiTest.class.getResourceAsStream(process));               
+//        KnowledgeBuilderConfiguration conf = knowledgeBuilderFactoryService.newKnowledgeBuilderConfiguration();
+//        ((PackageBuilderConfiguration) conf).initSemanticModules();
+//        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNSemanticModule());
+//        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMN2SemanticModule());
+//        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNDISemanticModule());
+//        ((PackageBuilderConfiguration) conf).addDialect("XPath", new XPathDialectConfiguration());        
+//        
+//        XmlProcessReader processReader = new XmlProcessReader(
+//            ((PackageBuilderConfiguration) conf).getSemanticModules());
+//        RuleFlowProcess p = (RuleFlowProcess)
+//            processReader.read(BPMN2OsgiTest.class.getResourceAsStream(process));               
+//        
+//        KnowledgeBuilder kbuilder = knowledgeBuilderFactoryService.newKnowledgeBuilder(conf);
+//        
+//        kbuilder.add(resourceFactoryService.newReaderResource(
+//            new StringReader(XmlBPMNProcessDumper.INSTANCE.dump(p))), ResourceType.DRF);
         
-        KnowledgeBuilder kbuilder = knowledgeBuilderFactoryService.newKnowledgeBuilder(conf);
-        
-        kbuilder.add(resourceFactoryService.newReaderResource(
-            new StringReader(XmlBPMNProcessDumper.INSTANCE.dump(p))), ResourceType.DRF);
         if (!kbuilder.getErrors().isEmpty()) {
             for (KnowledgeBuilderError error: kbuilder.getErrors()) {
                 System.err.println(error);



More information about the jboss-svn-commits mailing list