[jboss-svn-commits] JBL Code SVN: r5110 - in labs/jbossrules/trunk: . drools-server drools-server/.settings drools-server/src drools-server/src/main drools-server/src/main/java drools-server/src/main/java/org drools-server/src/main/java/org/drools drools-server/src/test drools-server/src/test/java drools-server/src/test/java/org drools-server/src/test/java/org/drools

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Jul 15 08:46:30 EDT 2006


Author: mark.proctor at jboss.com
Date: 2006-07-15 08:46:22 -0400 (Sat, 15 Jul 2006)
New Revision: 5110

Added:
   labs/jbossrules/trunk/drools-server/
   labs/jbossrules/trunk/drools-server/.classpath
   labs/jbossrules/trunk/drools-server/.project
   labs/jbossrules/trunk/drools-server/.settings/
   labs/jbossrules/trunk/drools-server/.settings/org.eclipse.jdt.core.prefs
   labs/jbossrules/trunk/drools-server/.settings/org.eclipse.jdt.ui.prefs
   labs/jbossrules/trunk/drools-server/.settings/org.eclipse.ltk.core.refactoring.prefs
   labs/jbossrules/trunk/drools-server/pom.xml
   labs/jbossrules/trunk/drools-server/src/
   labs/jbossrules/trunk/drools-server/src/main/
   labs/jbossrules/trunk/drools-server/src/main/java/
   labs/jbossrules/trunk/drools-server/src/main/java/org/
   labs/jbossrules/trunk/drools-server/src/main/java/org/drools/
   labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsClient.java
   labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsServer.java
   labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsServerImpl.java
   labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsService.java
   labs/jbossrules/trunk/drools-server/src/main/java/org/drools/HelloWorld.java
   labs/jbossrules/trunk/drools-server/src/main/java/org/drools/Message.java
   labs/jbossrules/trunk/drools-server/src/main/java/org/drools/RuleBaseInfo.java
   labs/jbossrules/trunk/drools-server/src/main/java/org/drools/RuleBaseManager.java
   labs/jbossrules/trunk/drools-server/src/main/java/org/drools/WorkingMemoryManager.java
   labs/jbossrules/trunk/drools-server/src/main/resources/
   labs/jbossrules/trunk/drools-server/src/test/
   labs/jbossrules/trunk/drools-server/src/test/java/
   labs/jbossrules/trunk/drools-server/src/test/java/org/
   labs/jbossrules/trunk/drools-server/src/test/java/org/drools/
   labs/jbossrules/trunk/drools-server/src/test/java/org/drools/DroolsClientServerTest.java
   labs/jbossrules/trunk/drools-server/src/test/resources/
Modified:
   labs/jbossrules/trunk/build.xml
   labs/jbossrules/trunk/pom.xml
Log:
JBRULES-374 Initial import of drools-server

Modified: labs/jbossrules/trunk/build.xml
===================================================================
--- labs/jbossrules/trunk/build.xml	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/build.xml	2006-07-15 12:46:22 UTC (rev 5110)
@@ -8,6 +8,7 @@
       <echo level="info" message="The build process is for the following four modules:" />
       <echo level="info" message="drools-core" />
       <echo level="info" message="drools-compiler" />
+      <echo level="info" message="drools-server" />      
       <echo level="info" message="drools-decisiontables" />
       <echo level="info" message="drools-jsr94" />
       <echo level="info" message=" " />
@@ -114,6 +115,10 @@
       <artifact:dependencies filesetId="drools-compiler.dependency.fileset" verbose="false">
         <pom file="drools-compiler/pom.xml"/>
       </artifact:dependencies>   
+
+      <artifact:dependencies filesetId="drools-server.dependency.fileset" verbose="false">
+        <pom file="drools-server/pom.xml"/>
+      </artifact:dependencies>   
       
       <artifact:dependencies filesetId="drools-decisiontables.dependency.fileset" verbose="false">
         <pom file="drools-decisiontables/pom.xml"/>
@@ -126,6 +131,7 @@
       <copy todir="repository">
         <fileset refid="drools-core.dependency.fileset"/>
         <fileset refid="drools-compiler.dependency.fileset"/>
+        <fileset refid="drools-server.dependency.fileset"/>        
         <fileset refid="drools-decisiontables.dependency.fileset"/>
         <fileset refid="drools-jsr94.dependency.fileset"/>
       </copy>   
@@ -142,6 +148,7 @@
 		<!-- copy the drools module jars for the plug in. We will remove the version number from them -->
 		<copy tofile="drools-ide/lib/drools-core.jar" flatten="true" file="target/drools-core-${version}.jar" />
 		<copy tofile="drools-ide/lib/drools-compiler.jar" flatten="true" file="target/drools-compiler-${version}.jar" />
+		<copy tofile="drools-ide/lib/drools-server.jar" flatten="true" file="target/drools-server-${version}.jar" />
 		<copy tofile="drools-ide/lib/drools-decisiontables.jar" flatten="true" file="target/drools-decisiontables-${version}.jar" />
 		<copy tofile="drools-ide/lib/drools-jsr94.jar" flatten="true" file="target/drools-jsr94-${version}.jar" />
 
@@ -351,7 +358,34 @@
     <target name="clean-compiler">
       <delete dir="drools-compiler/target"/>
     </target>
+    
+   <!--
+     **************************************************  
+     * drools-compiler
+     **************************************************
+     -->              
+    <target name="compile-server" depends="build-core">
+      <antcall target="compile-module">   
+        <param name="module" value="drools-server"/>
+      </antcall>
+    </target>
 
+    <target name="test-server" depends="compile-server">
+      <antcall target="test-module">
+        <param name="module" value="drools-server"/>
+      </antcall>
+    </target>
+    
+    <target name="build-server" depends="test-server">
+      <antcall target="build-module">
+        <param name="module" value="drools-server"/>
+      </antcall>    
+    </target>
+
+    <target name="clean-server">
+      <delete dir="drools-server/target"/>
+    </target>    
+
    <!--
      **************************************************  
      * drools-decisiontables
@@ -414,16 +448,16 @@
      **************************************************
      -->      
     
-    <target name="compile-all" depends="compile-core, compile-compiler, compile-decisiontables, compile-jsr94">
+    <target name="compile-all" depends="compile-core, compile-compiler, compile-server, compile-decisiontables, compile-jsr94">
     </target>
     
-    <target name="test-all" depends="test-core, test-compiler, test-decisiontables, test-jsr94">
+    <target name="test-all" depends="test-core, test-compiler, test-server, test-decisiontables, test-jsr94">
     </target>   
     
-    <target name="build-all" depends="build-core, build-compiler, build-decisiontables, build-jsr94, copy-deps">
+    <target name="build-all" depends="build-core, build-compiler, build-server, build-decisiontables, build-jsr94, copy-deps">
     </target>                  
     
-    <target name="clean-all" depends="clean-core, clean-compiler, clean-decisiontables, clean-jsr94">
+    <target name="clean-all" depends="clean-core, clean-compiler, clean-server, clean-decisiontables, clean-jsr94">
       <delete dir="target" />
       
       <delete>        

Added: labs/jbossrules/trunk/drools-server/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-server/.classpath	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/.classpath	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,23 @@
+<classpath>
+  <classpathentry kind="src" path="src/main/java"/>
+  <classpathentry kind="src" path="src/main/resources"/>
+  <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+  <classpathentry kind="src" path="src/test/resources" output="target/test-classes"/>
+  <classpathentry kind="output" path="target/classes"/>
+  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+  <classpathentry kind="var" path="M2_REPO/jung/jung/1.7.2/jung-1.7.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/jboss/jboss-common/4.0.4/jboss-common-4.0.4.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6/dom4j-1.6.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
+  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/jboss/jboss-remoting/1.4.1/jboss-remoting-1.4.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
+  <classpathentry kind="var" path="M2_REPO/colt/colt/1.2.0/colt-1.2.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/jboss/jboss-serialization/1.0.0.RC2/jboss-serialization-1.0.0.RC2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/drools/drools-core/3.0.2/drools-core-3.0.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/jboss/jboss-jmx/4.0.4/jboss-jmx-4.0.4.jar"/>
+</classpath>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-server/.project
===================================================================
--- labs/jbossrules/trunk/drools-server/.project	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/.project	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,28 @@
+<projectDescription>
+  <name>drools-server</name>
+  <comment/>
+  <projects/>
+  <buildSpec>
+    <buildCommand>
+      <name>org.eclipse.wst.common.modulecore.ComponentStructuralBuilder</name>
+      <arguments/>
+    </buildCommand>
+    <buildCommand>
+      <name>org.eclipse.jdt.core.javabuilder</name>
+      <arguments/>
+    </buildCommand>
+    <buildCommand>
+      <name>org.eclipse.wst.validation.validationbuilder</name>
+      <arguments/>
+    </buildCommand>
+    <buildCommand>
+      <name>org.eclipse.wst.common.modulecore.ComponentStructuralBuilderDependencyResolver</name>
+      <arguments/>
+    </buildCommand>
+  </buildSpec>
+  <natures>
+    <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+    <nature>org.eclipse.jdt.core.javanature</nature>
+    <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+  </natures>
+</projectDescription>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-server/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- labs/jbossrules/trunk/drools-server/.settings/org.eclipse.jdt.core.prefs	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/.settings/org.eclipse.jdt.core.prefs	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,12 @@
+#Thu Jul 13 02:32:39 BST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3

Added: labs/jbossrules/trunk/drools-server/.settings/org.eclipse.jdt.ui.prefs
===================================================================
--- labs/jbossrules/trunk/drools-server/.settings/org.eclipse.jdt.ui.prefs	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/.settings/org.eclipse.jdt.ui.prefs	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,3 @@
+#Sun Jul 02 16:26:07 BST 2006
+eclipse.preferences.version=1
+internal.default.compliance=default

Added: labs/jbossrules/trunk/drools-server/.settings/org.eclipse.ltk.core.refactoring.prefs
===================================================================
--- labs/jbossrules/trunk/drools-server/.settings/org.eclipse.ltk.core.refactoring.prefs	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/.settings/org.eclipse.ltk.core.refactoring.prefs	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,3 @@
+#Sun Jul 02 16:27:26 BST 2006
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false

Added: labs/jbossrules/trunk/drools-server/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-server/pom.xml	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/pom.xml	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,43 @@
+<project>
+  <parent>
+    <artifactId>drools</artifactId>
+    <groupId>org.drools</groupId>
+	  <version>3.0.2</version>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>drools-server</artifactId>
+
+  <name>Drools :: Server</name>
+  <version>3.0.2</version>
+
+  <repositories>
+    <repository>
+      <id>basedir</id>
+      <url>file://${basedir}/../repository</url>
+    </repository>
+  </repositories>  
+
+  <dependencies>   
+    <dependency>
+      <groupId>org.drools</groupId>
+      <artifactId>drools-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>jboss</groupId>
+      <artifactId>jboss-remoting</artifactId>
+      <version>1.4.1</version>
+    </dependency>  
+           
+  </dependencies>
+
+  <!-- This is needed to copy the generated jars into the IDE/Plugs lib directory -->
+  <build>
+    <plugins>     
+    </plugins>
+  </build>
+
+</project>

Added: labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsClient.java
===================================================================
--- labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsClient.java	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsClient.java	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,132 @@
+package org.drools;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.Notification;
+import javax.management.NotificationListener;
+import javax.management.ObjectName;
+
+import org.jboss.remoting.InvokerLocator;
+import org.jboss.remoting.detection.multicast.MulticastDetector;
+import org.jboss.remoting.network.NetworkNotification;
+import org.jboss.remoting.network.NetworkRegistry;
+import org.jboss.remoting.transporter.TransporterClient;
+
+public class DroolsClient
+    implements
+    NotificationListener {
+    
+    private String locatorURI = "rmi://localhost:5400/?" + InvokerLocator.BYVALUE + "=" + Boolean.TRUE.toString();
+    
+    private Set       servers = new HashSet();
+    MBeanServer       server;
+    MulticastDetector detector;
+
+    /**
+     * Sets up NetworkRegistry and MulticastDetector so we can listen for any additions or removals of remoting
+     * servers on the network.
+     *
+     * @throws Exception
+     */
+    public void start() throws Exception {
+        if ( this.detector != null ) {
+            return;
+        }
+
+        // we need an MBeanServer to store our network registry and multicast detector services
+        server = MBeanServerFactory.createMBeanServer();
+
+        // the registry will house all remoting servers discovered
+        NetworkRegistry registry = NetworkRegistry.getInstance();
+        server.registerMBean( registry,
+                              new ObjectName( "remoting:type=NetworkRegistry" ) );
+        System.out.println( "NetworkRegistry has been created" );
+
+        // register class as listener, so know when new server found
+        registry.addNotificationListener( this,
+                                          null,
+                                          null );
+        System.out.println( "NetworkRegistry has added the client as a listener" );
+
+        // multicast detector will detect new network registries that come online
+        detector = new MulticastDetector();
+        server.registerMBean( detector,
+                              new ObjectName( "remoting:type=MulticastDetector" ) );
+        detector.start();
+        System.out.println( "MulticastDetector has been created and is listening for new NetworkRegistries to come online" );
+    }
+
+    public void stop() throws Exception {
+        this.detector.stop();
+    }
+
+    public void reset() throws Exception {
+        this.detector.stop();
+        this.servers.clear();
+        this.detector.start();
+    }
+
+    //    public static void main(String[] args) {
+    //        DroolsClient client = new DroolsClient();
+    //        try {
+    //            client.start();
+    //            Thread.sleep( 1000 );
+    //            
+    //            client.connect();
+    //            
+    //            client.stop();
+    //
+    //        } catch ( Exception e ) {
+    //            e.printStackTrace();
+    //        }
+    //    }   
+
+    public DroolsServer connect() throws Exception {
+//        InvokerLocator locator = (InvokerLocator) this.servers.toArray()[0];
+//        DroolsServer server = (DroolsServer) TransporterClient.createTransporterClient( locator.getLocatorURI(),
+//                                                                                        DroolsServer.class );
+        
+        DroolsServer server = (DroolsServer) TransporterClient.createTransporterClient( this.locatorURI,
+                                                                                        DroolsServer.class );        
+        return server;
+    }
+
+    public void disconnect(DroolsServer server) {
+        TransporterClient.destroyTransporterClient( server );
+    }
+
+    /**
+     * Callback method from the broadcaster MBean this listener implementation is registered to. When a new server
+     * is detected, a welcome message will immediately be sent to the newly discovered server.
+     *
+     * @param notification the notification object
+     * @param handback     the handback object given to the broadcaster upon listener registration
+     */
+    public void handleNotification(Notification notification,
+                                   Object handback) {
+        if ( notification instanceof NetworkNotification ) {
+            System.out.println( "GOT A NETWORK-REGISTRY NOTIFICATION: " + notification.getType() );
+
+            NetworkNotification networkNotification = (NetworkNotification) notification;
+
+            if ( NetworkNotification.SERVER_ADDED.equals( networkNotification.getType() ) ) { // notification is for new servers being added
+                System.out.println( "New server(s) have been detected - getting locators and sending welcome messages" );
+                InvokerLocator[] locators = networkNotification.getLocator();
+                for ( int i = 0; i < locators.length; i++ ) {
+                    this.servers.add( locators[i] );
+                }
+            } else if ( NetworkNotification.SERVER_REMOVED.equals( networkNotification.getType() ) ) {
+                System.out.println( "Server(s) have gone offline - getting locators and sending welcome messages" );
+                InvokerLocator[] locators = networkNotification.getLocator();
+                for ( int i = 0; i < locators.length; i++ ) {
+                    this.servers.remove( locators[i] );
+                }
+            }
+        }
+
+        return;
+    }
+}

Added: labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsServer.java
===================================================================
--- labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsServer.java	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsServer.java	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,12 @@
+package org.drools;
+
+public interface DroolsServer {
+    public boolean registerRuleBase(RuleBase ruleBase,
+                                    RuleBaseInfo info);
+    
+    public boolean deregisterRuleBase(String id);
+    
+    public boolean isRegistered(String id);
+    
+    public RuleBaseInfo[] listRuleBases();            
+}

Added: labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsServerImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsServerImpl.java	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsServerImpl.java	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,22 @@
+package org.drools;
+
+public class DroolsServerImpl implements DroolsServer {
+    private RuleBaseManager ruleBaseManager = new RuleBaseManager();
+
+    public boolean registerRuleBase(RuleBase ruleBase,
+                                    RuleBaseInfo info) {        
+        return this.ruleBaseManager.registerRuleBase( ruleBase, info );
+    }
+    
+    public boolean deregisterRuleBase(String id) {
+        return this.ruleBaseManager.deregisterRuleBase( id );
+    }
+
+    public boolean isRegistered(String id) {
+        return this.ruleBaseManager.isRegistered( id );
+    }
+
+    public RuleBaseInfo[] listRuleBases() {
+        return this.ruleBaseManager.listRuleBases();
+    }      
+}

Added: labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsService.java
===================================================================
--- labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsService.java	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/src/main/java/org/drools/DroolsService.java	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,72 @@
+package org.drools;
+
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
+
+import org.jboss.remoting.InvokerLocator;
+import org.jboss.remoting.detection.multicast.MulticastDetector;
+import org.jboss.remoting.transporter.TransporterServer;
+import org.jboss.util.id.UID;
+
+import sun.security.x509.UniqueIdentity;
+
+public class DroolsService implements Runnable
+{
+   // Default locator values
+    private String locatorURI = "rmi://localhost:5400/?" + InvokerLocator.BYVALUE + "=" + Boolean.TRUE.toString();
+    private TransporterServer server = null;
+    private MulticastDetector detector;       
+
+   public void start() throws Exception
+   {       
+      Thread thread = new Thread( this );
+      thread.run();       
+      server = TransporterServer.createTransporterServer(locatorURI, new DroolsServerImpl() );
+      
+      // we need an MBeanServer to store our network registry and multicast detector services
+      MBeanServer mbeanServer = MBeanServerFactory.createMBeanServer();
+
+      // multicast detector will detect new network registries that come online
+      detector = new MulticastDetector();
+      mbeanServer.registerMBean(detector, new ObjectName("remoting:type=MulticastDetector"));
+      detector.start();
+      System.out.println("MulticastDetector has been created and is listening for new NetworkRegistries to come online");      
+   }
+
+   public void stop() throws Exception
+   {
+      if(server != null)
+      {
+          detector.stop();
+          server.stop();
+      }
+   }
+   
+   public void exit() throws Exception {
+       stop();
+       this.server = null;
+       this.detector = null;
+   }
+
+    public void run() {
+        try
+        {
+            while ( this.server != null ) {
+                Thread.sleep( 200 );
+            }
+        }
+        catch(Exception e)
+        {
+           e.printStackTrace();
+        }
+        finally
+        {
+           try {
+               stop();
+           } catch ( Exception e ) {
+               e.printStackTrace();
+           }
+        }
+    }
+}

Added: labs/jbossrules/trunk/drools-server/src/main/java/org/drools/HelloWorld.java
===================================================================
--- labs/jbossrules/trunk/drools-server/src/main/java/org/drools/HelloWorld.java	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/src/main/java/org/drools/HelloWorld.java	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,14 @@
+package org.drools;
+
+import java.io.Serializable;
+
+public class HelloWorld implements Message, Serializable {
+    
+    public HelloWorld() {
+        
+    }
+    
+    public String getMessage() {
+        return "Hello World";
+    }
+}

Added: labs/jbossrules/trunk/drools-server/src/main/java/org/drools/Message.java
===================================================================
--- labs/jbossrules/trunk/drools-server/src/main/java/org/drools/Message.java	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/src/main/java/org/drools/Message.java	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,5 @@
+package org.drools;
+
+public interface Message {
+    public String getMessage();
+}

Added: labs/jbossrules/trunk/drools-server/src/main/java/org/drools/RuleBaseInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-server/src/main/java/org/drools/RuleBaseInfo.java	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/src/main/java/org/drools/RuleBaseInfo.java	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,55 @@
+package org.drools;
+
+import java.io.Serializable;
+
+import org.drools.rule.LiteralConstraint;
+
+public class RuleBaseInfo
+    implements
+    Serializable {
+    private String id;
+    private String name;
+
+    public RuleBaseInfo() {
+    }
+
+    /**
+     * @return the name
+     */
+    public String getName() {
+        return this.name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * @return the uuid
+     */
+    public String getId() {
+        return this.id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public int hashCode() {
+        return this.id.hashCode();
+    }
+
+    public boolean equals(final Object object) {
+        if ( this == object ) {
+            return true;
+        }
+
+        if ( object == null || object.getClass() != RuleBaseInfo.class ) {
+            return false;
+        }
+
+        final RuleBaseInfo other = (RuleBaseInfo) object;
+
+        return this.id.equals( other.id ) && this.name.equals( other.name );
+    }
+}

Added: labs/jbossrules/trunk/drools-server/src/main/java/org/drools/RuleBaseManager.java
===================================================================
--- labs/jbossrules/trunk/drools-server/src/main/java/org/drools/RuleBaseManager.java	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/src/main/java/org/drools/RuleBaseManager.java	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,49 @@
+package org.drools;
+
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.drools.common.InternalRuleBase;
+
+public class RuleBaseManager {
+    private Map ruleBases = new LinkedHashMap();
+    private Map info = new LinkedHashMap();    
+    
+    public RuleBaseManager() {
+        
+    }
+    
+    public boolean registerRuleBase(RuleBase ruleBase,
+                                    RuleBaseInfo info) {        
+        
+        InternalRuleBase internalRuleBase = ( InternalRuleBase ) ruleBase;
+        if ( internalRuleBase.getId().equals( "default" ) ) {
+            // We cannot register a RuleBase that has been created without a UUID
+            return false;
+        }
+        info.setId( internalRuleBase.getId() );
+        this.ruleBases.put( internalRuleBase.getId(), ruleBase );
+        this.info.put(  internalRuleBase.getId(), info );
+        return true;
+    }
+    
+    public boolean deregisterRuleBase(String id) {
+        InternalRuleBase ruleBase = ( InternalRuleBase ) this.ruleBases.remove( id );
+        if ( ruleBase != null ) {
+            this.info.remove( id );
+        }
+        
+        return ( ruleBase != null );
+    }   
+    
+    public boolean isRegistered(String id) {
+        InternalRuleBase ruleBase = ( InternalRuleBase ) this.ruleBases.get( id );
+        return this.ruleBases.containsKey( ruleBase.getId() );
+    }
+    
+    public RuleBaseInfo[] listRuleBases() {
+        return ( RuleBaseInfo[] ) info.values().toArray( new RuleBaseInfo[ info.size() ] );
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-server/src/main/java/org/drools/WorkingMemoryManager.java
===================================================================
--- labs/jbossrules/trunk/drools-server/src/main/java/org/drools/WorkingMemoryManager.java	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/src/main/java/org/drools/WorkingMemoryManager.java	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,5 @@
+package org.drools;
+
+public class WorkingMemoryManager {
+
+}

Added: labs/jbossrules/trunk/drools-server/src/test/java/org/drools/DroolsClientServerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-server/src/test/java/org/drools/DroolsClientServerTest.java	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/drools-server/src/test/java/org/drools/DroolsClientServerTest.java	2006-07-15 12:46:22 UTC (rev 5110)
@@ -0,0 +1,56 @@
+package org.drools;
+
+import org.drools.common.InternalRuleBase;
+
+import junit.framework.TestCase;
+
+public class DroolsClientServerTest extends TestCase {
+    private DroolsClient client;
+    private DroolsService service;
+    
+    protected void setUp() throws Exception {
+        this.service = new DroolsService();
+        this.service.start();
+        
+        client = new DroolsClient();
+        this.client.start();        
+        Thread.sleep( 1000 );
+    }
+
+    public void test1() throws Exception {
+        DroolsServer server = client.connect();
+        
+        InternalRuleBase ruleBase1 = ( InternalRuleBase ) RuleBaseFactory.newRuleBase();               
+        RuleBaseInfo info1 = new RuleBaseInfo();
+        info1.setName( "test 1" );                
+        server.registerRuleBase( ruleBase1, info1 );
+        
+        InternalRuleBase ruleBase2 = ( InternalRuleBase ) RuleBaseFactory.newRuleBase();               
+        RuleBaseInfo info2 = new RuleBaseInfo();
+        info2.setName( "test 2" );                
+        server.registerRuleBase( ruleBase2, info2 );        
+        
+        RuleBaseInfo[] infos = server.listRuleBases();
+        
+        assertEquals( 2, infos.length );
+        
+        assertNotSame( info1, infos[0] );
+        assertNotSame( info2, infos[1] );
+        assertNotSame( infos[1], infos[0] );
+                
+        info1 = infos[0];
+        assertEquals(info1.getId(), ruleBase1.getId());
+        assertEquals(info1.getName(), "test 1");
+
+        info2 = infos[1];
+        assertEquals(info2.getId(), ruleBase2.getId());
+        assertEquals(info2.getName(), "test 2");        
+        
+        client.disconnect( server );
+    }
+    
+    protected void tearDown() throws Exception {
+        this.client.stop();
+        this.service.exit();
+    }
+}

Modified: labs/jbossrules/trunk/pom.xml
===================================================================
--- labs/jbossrules/trunk/pom.xml	2006-07-15 10:27:37 UTC (rev 5109)
+++ labs/jbossrules/trunk/pom.xml	2006-07-15 12:46:22 UTC (rev 5110)
@@ -190,35 +190,7 @@
   </reporting>
 
   <build>
-   <plugins>
-            <plugin>
-                 <artifactId>maven-assembly-plugin</artifactId>
-                 <version>2.0-beta-1</version>
-                 <configuration>
-                   <descriptor>bin.xml</descriptor>
-                   <finalName>final_name</finalName>
-                   <outputDirectory>output/directory</outputDirectory>
-                   <workDirectory>target/assembly/work</workDirectory>
-                 </configuration>
-            </plugin>   
-   
-     <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>dependency-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>copy-dependencies</id>
-            <phase>package</phase>
-            <goals>
-              <goal>copy-dependencies</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>../drools-ide/lib</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      
+   <plugins>      
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-javadoc-plugin</artifactId>
@@ -249,6 +221,7 @@
   <modules>
     <module>drools-core</module>    
     <module>drools-compiler</module>       
+    <module>drools-server</module>     
     <module>drools-jsr94</module> 
     <module>drools-decisiontables</module>
   </modules>




More information about the jboss-svn-commits mailing list