[jboss-svn-commits] JBL Code SVN: r35657 - in labs/jbossrules/trunk: drools-grid/drools-grid-impl2 and 33 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Oct 21 15:12:10 EDT 2010


Author: salaboy21
Date: 2010-10-21 15:12:06 -0400 (Thu, 21 Oct 2010)
New Revision: 35657

Added:
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/pom.xml
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectionFactoryService.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectorException.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectorType.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/CoreServicesWhitePages.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/DaemonService.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/DistributedServiceLookup.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Grid.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridConnection.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridNode.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridNodeConnection.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridPeerConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridPeerServiceConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridService.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridServiceDescription.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Group.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/MessageReceiverHandlerFactoryService.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/MultiplexSocketService.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/OrganizationalEntity.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Service.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/hazelcast/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/hazelcast/HazelCastServiceLookup.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/ConnectionFactoryServiceImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/DistributedMap.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/HazelCastMap.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/MultiplexSocket.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/MultiplexSocketServerImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/ExecutionNodeClientConnectCommand.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/ExecutionNodeContext.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/LookupCommand.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/RegisterCommand.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/RegisterRemoteWorkItemHandlerCommand.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/SimpleCommand.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/SimpleCommandName.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/UnRegisterCommand.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBaseResponseHandler.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBlockingResponseHandler.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageDirectoryMapRequestResponseHandler.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageResponseHandler.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Acceptor.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/AcceptorFactoryService.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Connector.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Conversation.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/ConversationManager.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/GridConnectionServiceFactory.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/IoWriter.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Message.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/MessageReceiverHandler.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/SocketConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/CollectionClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/CommandImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/ConversationImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/ConversationManagerImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageHandlerImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageIoReceiverImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageSession.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MultiplexSocketServiceCongifuration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/NodeData.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/RequestResponseDispatchListener.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/local/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/local/LocalGridConnection.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaAcceptor.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaAcceptorFactoryService.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaConnector.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaIoWriter.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/Address.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/WhitePages.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/YellowPages.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressJpa.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/JpaWhitePages.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesLocalConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesPeeredConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesRemoteConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesServer.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesSocketConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/time/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/time/impl/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/CoreServicesScheduler.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/Scheduler.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/CoreServicesSchedulerConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/CoreServicesSchedulerImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/ScheduledJob.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/ScheduledJobConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerLocalConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerRemoteConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerServer.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/UuidJobHandle.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/resources/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/GridTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/HazelCastTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/local/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/local/LocalGridNodeTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/DistributedSchedulerTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/MockJob.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/ScheduledJobJpaTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/GridServiceDescriptionJpaTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/JpaWhitePagesTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/MinaTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/RemoteWhitePagesTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/WhitePagesTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/resources/
Modified:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/orm.xml
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml
Log:
JBRULES-2746: Drools Grid Impl2
	- Initial Commit


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2
___________________________________________________________________
Name: svn:ignore
   + .classpath
.project
.settings
target


Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/pom.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/pom.xml	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>drools-grid</artifactId>
+        <groupId>org.drools</groupId>
+        <version>5.2.0.SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>jar</packaging>
+    <name>Drools :: Grid :: Impl2</name>
+    <artifactId>drools-grid-impl2</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+         <!-- Drools Runtime -->
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-core</artifactId>
+        </dependency>
+         <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-compiler</artifactId>
+        </dependency>
+		
+        <dependency>
+            <groupId>org.apache.mina</groupId>
+            <artifactId>mina-core</artifactId>
+            <version>2.0.0-M6</version>
+        </dependency>
+        
+		<dependency>
+		    <groupId>com.hazelcast</groupId>
+		    <artifactId>hazelcast</artifactId>
+		    <version>1.8.5</version>
+		</dependency>
+        
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>	
+        
+   	
+    	<!-- Hibernate -->
+    	<dependency>
+    		<groupId>org.hibernate</groupId>
+    		<artifactId>hibernate-entitymanager</artifactId>
+    	</dependency>
+
+    	<dependency>
+    		<groupId>org.hibernate</groupId>
+    		<artifactId>hibernate-annotations</artifactId>
+    	</dependency>
+
+    	<dependency>
+    		<groupId>org.hibernate</groupId>
+    		<artifactId>hibernate-commons-annotations</artifactId>
+    	</dependency>
+
+    	<dependency>
+    		<groupId>org.hibernate</groupId>
+    		<artifactId>hibernate-core</artifactId>
+    	</dependency>
+
+    	<!-- HSQLDB -->
+    	<dependency>
+    		<groupId>com.h2database</groupId>
+    		<artifactId>h2</artifactId>
+			<scope>test</scope>
+    	</dependency>
+    	
+    	<dependency>
+    		<groupId>javax.persistence</groupId>
+    		<artifactId>persistence-api</artifactId>
+    	</dependency>
+
+    	<dependency>
+    		<groupId>dom4j</groupId>
+    		<artifactId>dom4j</artifactId>
+    	</dependency>
+
+    	<dependency>
+    		<groupId>javassist</groupId>
+    		<artifactId>javassist</artifactId>
+    	</dependency>
+
+    	<dependency>
+    		<groupId>javax.transaction</groupId>
+    		<artifactId>jta</artifactId>
+    	</dependency>
+    	
+    	<dependency>
+		    <groupId>org.codehaus.btm</groupId>
+		    <artifactId>btm</artifactId>
+		    <scope>test</scope>
+    	</dependency>         	
+
+    </dependencies>
+
+
+</project>


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/pom.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectionFactoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectionFactoryService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectionFactoryService.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,7 @@
+package org.drools.grid;
+
+import org.drools.grid.service.directory.Address;
+
+public interface ConnectionFactoryService {
+    GridNodeConnection createConnection(Address address);
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectionFactoryService.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectorException.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectorException.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectorException.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,23 @@
+package org.drools.grid;
+
+public class ConnectorException extends Exception {
+
+    public ConnectorException() {
+    }
+
+    public ConnectorException(String message) {
+        super( message );
+    }
+
+    public ConnectorException(Throwable cause) {
+        super( cause.getMessage(),
+               cause );
+    }
+
+    public ConnectorException(String message,
+                              Throwable cause) {
+        super( message,
+               cause );
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectorException.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectorType.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectorType.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectorType.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,26 @@
+/*
+ *  Copyright 2010 salaboy.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.drools.grid;
+
+/**
+ *
+ * @author salaboy
+ */
+public enum ConnectorType {
+    LOCAL, REMOTE, DISTRIBUTED
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/ConnectorType.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/CoreServicesWhitePages.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/CoreServicesWhitePages.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/CoreServicesWhitePages.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,5 @@
+package org.drools.grid;
+
+public interface CoreServicesWhitePages {
+    GridServiceDescription lookup(Class cls);
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/CoreServicesWhitePages.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/DaemonService.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/DaemonService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/DaemonService.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,7 @@
+package org.drools.grid;
+
+public interface DaemonService extends Service {
+    void start();
+    void stop();    
+    boolean isRunning();
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/DaemonService.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/DistributedServiceLookup.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/DistributedServiceLookup.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/DistributedServiceLookup.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,5 @@
+package org.drools.grid;
+
+public interface DistributedServiceLookup {
+    public <T> T get(Class<T> serviceClass);
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/DistributedServiceLookup.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Grid.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Grid.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Grid.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,12 @@
+package org.drools.grid;
+
+import org.drools.grid.service.directory.Address;
+
+
+public interface Grid {
+    public <T> T get(Class<T> serviceClass);
+
+    public GridNode createGridNode(String id);
+    
+    public GridNodeConnection getGridNodeConnection(GridServiceDescription serviceDescription);        
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Grid.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridConnection.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridConnection.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridConnection.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,5 @@
+package org.drools.grid;
+
+public interface GridConnection {
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridConnection.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridNode.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridNode.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridNode.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,14 @@
+package org.drools.grid;
+
+public interface GridNode extends GridService {
+
+    public <T> T get(String identifier,
+                     Class<T> cls);
+
+    public <T> T get(Class<T> serviceClass);
+
+    public void set(String identifier,
+                    Object object);
+       
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridNode.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridNodeConnection.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridNodeConnection.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridNodeConnection.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,32 @@
+/*
+ *  Copyright 2010 salaboy.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+package org.drools.grid;
+
+import java.util.List;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface GridNodeConnection {
+    
+    public void connect();
+    
+    public void disconnect();
+    
+    public GridNode getGridNode();
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridNodeConnection.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridPeerConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridPeerConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridPeerConfiguration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,27 @@
+/**
+ * 
+ */
+package org.drools.grid;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class GridPeerConfiguration {
+    private List<GridPeerServiceConfiguration> configurations;
+
+    public GridPeerConfiguration() {
+        this.configurations = new ArrayList<GridPeerServiceConfiguration>();
+    }
+
+    public void addConfiguration(GridPeerServiceConfiguration configuration) {
+        this.configurations.add( configuration );
+    }
+
+    public void configure(Grid grid) {
+        for ( GridPeerServiceConfiguration entry : this.configurations ) {
+            entry.configureService( grid );
+        }
+
+    }
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridPeerConfiguration.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridPeerServiceConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridPeerServiceConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridPeerServiceConfiguration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,9 @@
+/**
+ * 
+ */
+package org.drools.grid;
+
+
+public interface GridPeerServiceConfiguration {
+    public void configureService(Grid grid);
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridPeerServiceConfiguration.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridService.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridService.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,5 @@
+package org.drools.grid;
+
+public interface GridService extends Service {
+    public String getId();
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridService.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridServiceDescription.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridServiceDescription.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridServiceDescription.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,20 @@
+package org.drools.grid;
+
+import java.util.Map;
+
+
+import org.drools.grid.service.directory.Address;
+
+    public interface GridServiceDescription {
+    public String getId();
+    
+    public Class getImplementedClass();  
+    
+    public void setImplementedClass(Class cls);
+    
+    public Map<String, Address> getAddresses();
+    
+    public Address addAddress(String transport);
+    
+    public void removeAddress(String transport);
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridServiceDescription.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Group.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Group.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Group.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,5 @@
+package org.drools.grid;
+
+public interface Group {
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Group.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/MessageReceiverHandlerFactoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/MessageReceiverHandlerFactoryService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/MessageReceiverHandlerFactoryService.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,7 @@
+package org.drools.grid;
+
+import org.drools.grid.io.MessageReceiverHandler;
+
+public interface MessageReceiverHandlerFactoryService  {
+    MessageReceiverHandler getMessageReceiverHandler();
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/MessageReceiverHandlerFactoryService.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/MultiplexSocketService.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/MultiplexSocketService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/MultiplexSocketService.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,17 @@
+package org.drools.grid;
+
+import org.drools.grid.io.MessageReceiverHandler;
+
+public interface MultiplexSocketService {
+
+    void addService(int port,
+                    String id,
+                    MessageReceiverHandler receiver);
+
+    void removeService(int port,
+                       String id);
+
+    String getIp();
+    
+    void close();
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/MultiplexSocketService.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/OrganizationalEntity.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/OrganizationalEntity.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/OrganizationalEntity.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,5 @@
+package org.drools.grid;
+
+public interface OrganizationalEntity {
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/OrganizationalEntity.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Service.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Service.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Service.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,6 @@
+package org.drools.grid;
+
+public interface Service {
+    void init(Object context);
+    void dispose();
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Service.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/hazelcast/HazelCastServiceLookup.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/hazelcast/HazelCastServiceLookup.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/hazelcast/HazelCastServiceLookup.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,27 @@
+package org.drools.grid.hazelcast;
+
+import java.net.InetSocketAddress;
+import java.util.Map;
+
+import org.drools.grid.DistributedServiceLookup;
+import org.drools.grid.service.directory.WhitePages;
+
+import com.hazelcast.core.Hazelcast;
+
+public class HazelCastServiceLookup implements DistributedServiceLookup {
+    Map<String, InetSocketAddress[]> serviceAddress;
+
+    public HazelCastServiceLookup() {
+        serviceAddress = Hazelcast.getMap( "grid-services" );
+    }
+    
+    public <T> T get(Class<T> serviceClass) {
+        if ( serviceClass == WhitePages.class ) {
+            
+        }
+        
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/hazelcast/HazelCastServiceLookup.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/ConnectionFactoryServiceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/ConnectionFactoryServiceImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/ConnectionFactoryServiceImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,13 @@
+package org.drools.grid.impl;
+
+import org.drools.grid.ConnectionFactoryService;
+import org.drools.grid.GridNodeConnection;
+import org.drools.grid.service.directory.Address;
+
+public class ConnectionFactoryServiceImpl implements ConnectionFactoryService {
+
+    public GridNodeConnection createConnection(Address address) {
+        return null;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/ConnectionFactoryServiceImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/DistributedMap.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/DistributedMap.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/DistributedMap.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,7 @@
+package org.drools.grid.impl;
+
+import java.util.Map;
+
+public interface DistributedMap<K, V> extends Map<K, V> {
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/DistributedMap.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,108 @@
+package org.drools.grid.impl;
+
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.UnknownHostException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.drools.grid.Grid;
+import org.drools.grid.GridNode;
+import org.drools.grid.GridNodeConnection;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.MessageReceiverHandlerFactoryService;
+import org.drools.grid.MultiplexSocketService;
+import org.drools.grid.local.LocalGridConnection;
+import org.drools.grid.service.directory.Address;
+import org.drools.grid.service.directory.WhitePages;
+import org.drools.grid.service.directory.impl.AddressImpl;
+import org.drools.grid.service.directory.impl.WhitePagesImpl;
+
+public class GridImpl implements Grid {
+    private Map<String, Object> services;
+    private Map<String, Object> localServices;
+    
+    private Map<String, GridNode> localNodes = new HashMap<String, GridNode>();    
+    
+    public GridImpl(Map<String, Object> services) {
+        this.services = services;
+        this.localServices = new ConcurrentHashMap<String, Object>();
+    }
+    
+    public <T> T get(Class<T> serviceClass) {
+        T service = (T) this.localServices.get( serviceClass.getName() );
+        if ( service == null ) {
+            service = (T) services.get( serviceClass.getName() );    
+        }
+        return service;
+    }
+    
+    public void addService(Class cls, Object service) {
+        addService( cls.getName(), service );
+    }
+    public void addService(String id, Object service) {
+        this.localServices.put( id, service );        
+    }
+    
+    
+//    public void configureServiceForSocket(int port, Class cls) {
+//        configureServiceForSocket( port, cls.getName() );
+//    }
+//    
+//    public void configureServiceForSocket(int port, String id) {
+//        Object service = this.localServices.get( id );
+//        if ( service == null ) {
+//            throw new IllegalArgumentException( "Service '" + id + "' could not be found" );
+//        }
+//        this.socketServer.addService( port, id, ((MessageReceiverHandlerFactoryService) service).getMessageReceiverHandler() );        
+//    }
+
+    public GridNodeConnection getGridNodeConnection(GridServiceDescription serviceDescription) {
+        
+        if ( localNodes.containsKey( serviceDescription.getId() ) ) {
+            // see if the serviceDescription is local, if so use it
+            return new LocalGridConnection( localNodes.get( serviceDescription.getId() ) );
+        } else {
+            // by default use socket
+            
+        }
+            
+        return null;
+    }
+    
+    public GridNodeConnection getGridNodeConnection(Address address) {
+        boolean isLocal = false;
+        if ( "socket".equals( address.getTransport() ) ) {
+            InetSocketAddress isAddress = ( InetSocketAddress ) address.getObject();
+            try {
+                if ( InetAddress.getLocalHost().equals( isAddress.getAddress() ) ) {
+                    isLocal = true;
+                }
+            } catch ( UnknownHostException e ) {
+                throw new RuntimeException( "Unable to determine local ip address", e );
+            }
+        }
+        
+        if ( isLocal ) {
+            //new LocalGr
+        } else {
+            
+        }
+        
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public GridNode createGridNode(String id) {
+        GridNodeConnection connection = new LocalGridConnection( id );
+        GridNode gnode = connection.getGridNode();
+        localNodes.put( id, gnode );
+                
+        WhitePages pages = get( WhitePages.class );
+        pages.create( id );
+        
+        return gnode;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,89 @@
+/*
+ *  Copyright 2010 salaboy.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+package org.drools.grid.impl;
+
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.drools.grid.GridNode;
+import org.drools.util.ServiceRegistry;
+import org.drools.util.ServiceRegistryImpl;
+
+/**
+ *
+ * @author salaboy
+ */
+public class GridNodeImpl implements GridNode {
+
+    private String id;
+    private final Map<String, Object> localContext = new ConcurrentHashMap<String, Object>();
+    private final ServiceRegistry serviceRegistry = ServiceRegistryImpl.getInstance();
+
+    public GridNodeImpl() {
+        this.id = UUID.randomUUID().toString();
+    }
+
+    public GridNodeImpl(String id) {
+        this.id = id;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.grid.GridNode#get(java.lang.String, java.lang.Class)
+     */
+    public <T> T get(String identifier, Class<T> cls) {
+        T service = (T) localContext.get(identifier);
+        if ( service == null ) {
+            service = this.serviceRegistry.get( cls );
+        }
+        
+        
+        return service;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.drools.grid.GridNode#get(java.lang.Class)
+     */
+    public <T> T get(Class<T> serviceClass) {
+        return get( serviceClass.getName(), serviceClass );
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.grid.GridNode#set(java.lang.String, java.lang.Object)
+     */
+    public void set(String identifier, Object object) {
+        this.localContext.put( identifier, object );
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.grid.GridNode#getId()
+     */
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public void dispose() {
+    }
+
+    public void init(Object context) {       
+    }
+    
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/HazelCastMap.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/HazelCastMap.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/HazelCastMap.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,71 @@
+package org.drools.grid.impl;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+public class HazelCastMap<K, V> implements DistributedMap<K, V> {
+    private Map<K, V> map;
+    
+    public void clear() {
+        map.clear();
+    }
+
+    public boolean containsKey(Object key) {
+        return map.containsKey( key );
+    }
+
+    public boolean containsValue(Object value) {
+        return map.containsValue( value );
+    }
+    public boolean equals(Object o) {
+        return map.equals( o );
+    }
+    
+    public int hashCode() {
+        return map.hashCode();
+    }
+
+    public boolean isEmpty() {
+        return map.isEmpty();
+    }
+
+
+    public int size() {
+        return map.size();
+    }
+
+
+    public HazelCastMap(Map<K, V>  map) {
+        this.map = map;
+    }
+
+    public Set<java.util.Map.Entry<K, V>> entrySet() {
+        return this.map.entrySet();
+    }
+
+    public V get(Object key) {
+        return this.map.get( key );
+    }
+
+    public Set<K> keySet() {
+        return this.map.keySet();
+    }
+
+    public V put(K key,
+                 V value) {
+        return this.map.put(  key, value );
+    }
+
+    public void putAll(Map< ? extends K, ? extends V> m) {
+        this.map.putAll( m );
+    }
+
+    public V remove(Object key) {
+        return this.map.remove(  key );
+    }
+
+    public Collection<V> values() {
+        return this.map.values();
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/HazelCastMap.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/MultiplexSocket.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/MultiplexSocket.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/MultiplexSocket.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,29 @@
+/**
+ * 
+ */
+package org.drools.grid.impl;
+
+import java.util.Map;
+
+import org.apache.mina.util.CopyOnWriteMap;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+
+public class MultiplexSocket implements MessageReceiverHandler {
+    private Map<String, MessageReceiverHandler> handlers;
+    
+    public MultiplexSocket() {
+        this.handlers = new CopyOnWriteMap<String, MessageReceiverHandler>();
+    }
+    
+    public Map<String, MessageReceiverHandler> getHandlers() {
+        return this.handlers;
+    }
+    
+    public void messageReceived(Conversation conversation,
+                                Message msg) {
+        this.handlers.get( msg.getRecipientId() ).messageReceived( conversation, msg );
+    }
+    
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/MultiplexSocket.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/MultiplexSocketServerImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/MultiplexSocketServerImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/MultiplexSocketServerImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,80 @@
+package org.drools.grid.impl;
+
+import java.net.InetSocketAddress;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.SystemEventListener;
+import org.drools.grid.MultiplexSocketService;
+import org.drools.grid.io.Acceptor;
+import org.drools.grid.io.AcceptorFactoryService;
+import org.drools.grid.io.MessageReceiverHandler;
+
+public class MultiplexSocketServerImpl implements MultiplexSocketService {
+    private AcceptorFactoryService factory;
+    
+    private String ip;
+    
+    private SystemEventListener l;
+    
+    private Map<Integer, Acceptor> acceptors;
+    
+    public MultiplexSocketServerImpl(String ip, AcceptorFactoryService factory, SystemEventListener l ) {
+        this.factory = factory;
+        this.ip = ip;
+        this.l = l;
+        this.acceptors = new HashMap<Integer, Acceptor>();
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.drools.grid.impl.SocketServer#addService(int, java.lang.String, org.drools.grid.io.MessageReceiverHandler)
+     */
+    public synchronized void addService(int socket, String id, MessageReceiverHandler receiver ) {
+        Acceptor acc = this.acceptors.get( socket );
+        
+        if ( acc == null ) {
+            acc = factory.newAcceptor();
+        
+            MultiplexSocket ms = new MultiplexSocket();
+
+            acc.open( new InetSocketAddress( this.ip,
+                                             socket ),
+                                             ms,
+                                             this.l );
+            this.acceptors.put(socket, acc);
+        }
+        
+        MultiplexSocket ms = ( MultiplexSocket ) acc.getMessageReceiverHandler();
+        ms.getHandlers().put( id, receiver );
+    }
+    
+    /* (non-Javadoc)
+     * @see org.drools.grid.impl.SocketServer#removeService(int, java.lang.String)
+     */
+    public synchronized void removeService(int socket, String id) {
+        Acceptor acc = this.acceptors.get( socket );
+        if ( acc != null ) {
+            MultiplexSocket ms = ( MultiplexSocket ) acc.getMessageReceiverHandler();
+            ms.getHandlers().remove( id );   
+            if ( ms.getHandlers().isEmpty() ) {
+                // If there are no more services on this socket, then close it
+                acc.close();
+            }
+        }
+    }
+
+    public void close(){
+        for(Acceptor acc : this.acceptors.values()){
+            if(acc.isOpen()){
+                acc.close();
+            }
+            
+            
+        }
+    }
+
+    public String getIp() {
+        return this.ip;
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/MultiplexSocketServerImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/ExecutionNodeClientConnectCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/ExecutionNodeClientConnectCommand.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/ExecutionNodeClientConnectCommand.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,31 @@
+package org.drools.grid.internal.commands;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.grid.io.impl.NodeData;
+import org.drools.runtime.impl.ExecutionResultImpl;
+
+public class ExecutionNodeClientConnectCommand
+    implements
+    GenericCommand<Integer> {
+
+    private String outIdentifier;
+
+    public ExecutionNodeClientConnectCommand(String outIdentifier) {
+        this.outIdentifier = outIdentifier;
+    }
+
+    public Integer execute(Context context) {
+        NodeData data = (NodeData) context.get( NodeData.NODE_DATA );
+
+        Integer sessionId = data.getSessionIdCounter().getAndIncrement();
+        if ( this.outIdentifier != null ) {
+            ((ExecutionResultImpl) ((KnowledgeCommandContext) context).getExecutionResults()).getResults().put( this.outIdentifier,
+                                                                                                                sessionId );
+        }
+
+        return sessionId;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/ExecutionNodeClientConnectCommand.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/ExecutionNodeContext.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/ExecutionNodeContext.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/ExecutionNodeContext.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,44 @@
+package org.drools.grid.internal.commands;
+
+import org.drools.command.Context;
+import org.drools.command.ContextManager;
+import org.drools.grid.io.impl.NodeData;
+
+public class ExecutionNodeContext
+    implements
+    Context {
+    private Context  context;
+    private NodeData data;
+
+    public ExecutionNodeContext(Context context,
+                                NodeData data) {
+        this.data = data;
+    }
+
+    public NodeData getServiceManagerData() {
+        return this.data;
+    }
+
+    public ContextManager getContextManager() {
+        return this.context.getContextManager();
+    }
+
+    public String getName() {
+        return this.context.getName();
+    }
+
+    public Object get(String identifier) {
+        return this.context.get( identifier );
+    }
+
+    public void set(String identifier,
+                    Object value) {
+        this.context.set( identifier,
+                          value );
+    }
+
+    public void remove(String name) {
+        this.context.remove( name );
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/ExecutionNodeContext.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/LookupCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/LookupCommand.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/LookupCommand.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,39 @@
+package org.drools.grid.internal.commands;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.grid.io.impl.NodeData;
+import org.drools.runtime.impl.ExecutionResultImpl;
+
+public class LookupCommand
+    implements
+    GenericCommand<String> {
+
+    private String identifier;
+
+    private String outIdentifier;
+
+    public LookupCommand(String identfier) {
+        this.identifier = identfier;
+    }
+
+    public LookupCommand(String identfier,
+                         String outIdentifier) {
+        this.identifier = identfier;
+        this.outIdentifier = outIdentifier;
+    }
+
+    public String execute(Context context) {
+        NodeData data = (NodeData) context.get( NodeData.NODE_DATA );
+
+        String instanceId = (String) data.getRoot().get( this.identifier );
+
+        if ( this.outIdentifier != null ) {
+            ((ExecutionResultImpl) ((KnowledgeCommandContext) context).getExecutionResults()).getResults().put( this.outIdentifier,
+                                                                                                                instanceId );
+        }
+        return instanceId;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/LookupCommand.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/RegisterCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/RegisterCommand.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/RegisterCommand.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,32 @@
+package org.drools.grid.internal.commands;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.grid.io.impl.NodeData;
+
+public class RegisterCommand
+    implements
+    GenericCommand<Void> {
+
+    private String identifier;
+    private String instanceId;
+    private int    type;
+
+    public RegisterCommand(String identifier,
+                           String instanceId,
+                           int type) {
+        this.identifier = identifier;
+        this.instanceId = instanceId;
+        this.type = type;
+    }
+
+    public Void execute(Context context) {
+        NodeData data = (NodeData) context.get( NodeData.NODE_DATA );
+
+        data.getRoot().set( this.identifier,
+                            this.type + ":" + this.instanceId );
+
+        return null;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/RegisterCommand.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/RegisterRemoteWorkItemHandlerCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/RegisterRemoteWorkItemHandlerCommand.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/RegisterRemoteWorkItemHandlerCommand.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,94 @@
+package org.drools.grid.internal.commands;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.runtime.KnowledgeRuntime;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.process.WorkItemHandler;
+
+public class RegisterRemoteWorkItemHandlerCommand
+    implements
+    GenericCommand<Object> {
+
+    private String handler;
+    private String workItemName;
+
+    public RegisterRemoteWorkItemHandlerCommand() {
+    }
+
+    public RegisterRemoteWorkItemHandlerCommand(String workItemName,
+                                                String handler) {
+        this.handler = handler;
+        this.workItemName = workItemName;
+    }
+
+    public String getHandler() {
+        return this.handler;
+    }
+
+    public void setHandler(String handler) {
+        this.handler = handler;
+    }
+
+    public String getWorkItemName() {
+        return this.workItemName;
+    }
+
+    public void setWorkItemName(String workItemName) {
+        this.workItemName = workItemName;
+    }
+
+    public Object execute(Context context) {
+        StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
+        WorkItemHandler workItemHandler = null;
+        try {
+            Class t = Class.forName( this.handler );
+            Constructor c = t.getConstructor( KnowledgeRuntime.class );
+            workItemHandler = (WorkItemHandler) c.newInstance( ksession );
+        } catch ( InstantiationException ex ) {
+            Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE,
+                                                                                          null,
+                                                                                          ex );
+        } catch ( IllegalAccessException ex ) {
+            Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE,
+                                                                                          null,
+                                                                                          ex );
+        } catch ( IllegalArgumentException ex ) {
+            Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE,
+                                                                                          null,
+                                                                                          ex );
+        } catch ( InvocationTargetException ex ) {
+            Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE,
+                                                                                          null,
+                                                                                          ex );
+        } catch ( NoSuchMethodException ex ) {
+            Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE,
+                                                                                          null,
+                                                                                          ex );
+        } catch ( SecurityException ex ) {
+            Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE,
+                                                                                          null,
+                                                                                          ex );
+        } catch ( ClassNotFoundException ex ) {
+            Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE,
+                                                                                          null,
+                                                                                          ex );
+        }
+        ksession.getWorkItemManager().registerWorkItemHandler( this.workItemName,
+                                                               workItemHandler );
+        return null;
+    }
+
+    @Override
+    public String toString() {
+        return "session.getWorkItemManager().registerWorkItemHandler("
+               + this.workItemName + ", " + this.handler + ");";
+    }
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/RegisterRemoteWorkItemHandlerCommand.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/SimpleCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/SimpleCommand.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/SimpleCommand.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,49 @@
+package org.drools.grid.internal.commands;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class SimpleCommand
+    implements
+    Serializable {
+
+    private int               id;
+
+    private SimpleCommandName name;
+
+    private List<Object>      arguments;
+
+    public SimpleCommand(int id,
+                         SimpleCommandName name,
+                         List<Object> arguments) {
+        super();
+        this.id = id;
+        this.arguments = arguments;
+        this.name = name;
+    }
+
+    public int getId() {
+        return this.id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public SimpleCommandName getName() {
+        return this.name;
+    }
+
+    public void setName(SimpleCommandName name) {
+        this.name = name;
+    }
+
+    public List<Object> getArguments() {
+        return this.arguments;
+    }
+
+    public void setArguments(List<Object> arguments) {
+        this.arguments = arguments;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/SimpleCommand.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/SimpleCommandName.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/SimpleCommandName.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/SimpleCommandName.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,88 @@
+package org.drools.grid.internal.commands;
+
+public enum SimpleCommandName {
+    OperationRequest,
+    OperationResponse,
+
+    ClaimRequest,
+    ClaimResponse,
+
+    StartRequest,
+    StartResponse,
+
+    StopRequest,
+    StopResponse,
+
+    ReleaseRequest,
+    ReleaseResponse,
+
+    SuspendRequest,
+    SuspendResponse,
+
+    ResumeRequest,
+    ResumeResponse,
+
+    SkipRequest,
+    SkipResponse,
+
+    DelegateRequest,
+    DelegateResponse,
+
+    ForwardRequest,
+    ForwardResponse,
+
+    CompleteRequest,
+    CompleteResponse,
+
+    FailRequest,
+    FailResponse,
+
+    GetTaskRequest,
+    GetTaskResponse,
+
+    AddTaskRequest,
+    AddTaskResponse,
+
+    AddAttachmentRequest,
+    AddAttachmentResponse,
+    DeleteAttachmentRequest,
+    DeleteAttachmentResponse,
+
+    SetDocumentContentRequest,
+    SetDocumentContentResponse,
+    GetContentRequest,
+    GetContentResponse,
+
+    AddCommentRequest,
+    AddCommentResponse,
+    DeleteCommentRequest,
+    DeleteCommentResponse,
+
+    QueryTasksOwned,
+    QueryTasksAssignedAsBusinessAdministrator,
+    QueryTasksAssignedAsExcludedOwner,
+    QueryTasksAssignedAsPotentialOwner,
+    QueryTasksAssignedAsPotentialOwnerWithGroup,
+    QueryTasksAssignedAsPotentialOwnerByGroup,
+    QuerySubTasksAssignedAsPotentialOwner,
+    QueryGetSubTasksByParentTaskId,
+    QueryTasksAssignedAsRecipient,
+    QueryTasksAssignedAsTaskInitiator,
+    QueryTasksAssignedAsTaskStakeholder,
+    QueryTaskSummaryResponse,
+
+    RegisterForEventRequest,
+    EventTriggerResponse,
+
+    RegisterClient,
+
+    RegisterExecutor,
+    UnRegisterExecutor,
+    RegisterKBase,
+    RequestKBaseId,
+    UnRegisterKBase,
+    RequestExecutorsMap,
+    RequestKBasesMap,
+    RequestLookupSessionId,
+    ResponseLookupSession
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/SimpleCommandName.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/UnRegisterCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/UnRegisterCommand.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/UnRegisterCommand.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,26 @@
+package org.drools.grid.internal.commands;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.grid.io.impl.NodeData;
+
+public class UnRegisterCommand
+    implements
+    GenericCommand<Void> {
+
+    private String identifier;
+
+    public UnRegisterCommand(String identifier) {
+        this.identifier = identifier;
+
+    }
+
+    public Void execute(Context context) {
+        NodeData data = (NodeData) context.get( NodeData.NODE_DATA );
+
+        data.getRoot().remove( this.identifier );
+
+        return null;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/commands/UnRegisterCommand.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBaseResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBaseResponseHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBaseResponseHandler.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,69 @@
+package org.drools.grid.internal.responsehandlers;
+
+import java.lang.reflect.Constructor;
+
+import org.drools.grid.io.MessageReceiverHandler;
+
+/**
+ * Abstract base class for client ResponseHandlers. Provides synchonized access to <field>done</field> which represents
+ * if the response is completed. Also has an <field>error</field> which will be set when there is a problem with
+ * a response. Users of this class should check to see if the response completed successfully, via
+ * the <method>isDone</method> and the <method>hasError</method>.
+ * <p/>
+ * Please note that the <field>error</field> is actually the Exception that occured on the server while
+ * processing the request.
+ *
+ * @author <a href="mailto:stampy88 at yahoo.com">dave sinclair</a>
+ */
+public abstract class AbstractBaseResponseHandler
+    implements
+    MessageReceiverHandler {
+    private volatile boolean done;
+    private RuntimeException error;
+
+    public synchronized boolean hasError() {
+        return this.error != null;
+    }
+
+    public synchronized RuntimeException getError() {
+        return this.error;
+    }
+
+    public synchronized void setError(RuntimeException error) {
+        this.error = error;
+        notifyAll();
+    }
+
+    public synchronized boolean isDone() {
+        return this.done;
+    }
+
+    protected synchronized void setDone(boolean done) {
+        this.done = done;
+        notifyAll();
+    }
+
+    /**
+     * This method will take the specified serverSideException, and create a new one for the client based
+     * on the serverSideException. This is done so a proper stack trace can be made for the client, as opposed
+     * to seeing the server side stack.
+     *
+     * @param serverSideException exception used to create client side exception
+     * @return client side exception
+     */
+    protected static RuntimeException createSideException(RuntimeException serverSideException) {
+        RuntimeException clientSideException;
+
+        try {
+            Constructor< ? extends RuntimeException> constructor = serverSideException.getClass().getConstructor( String.class );
+
+            clientSideException = constructor.newInstance( "Server-side Exception: " + serverSideException.getMessage() );
+        } catch ( Exception e ) {
+            // this should never happen - if it does, it is a programming error
+            throw new RuntimeException( "Could not create client side exception",
+                                        e );
+        }
+
+        return clientSideException;
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBaseResponseHandler.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBlockingResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBlockingResponseHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBlockingResponseHandler.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,37 @@
+/**
+ *
+ */
+package org.drools.grid.internal.responsehandlers;
+
+public abstract class AbstractBlockingResponseHandler extends AbstractBaseResponseHandler {
+
+    /**
+     * This method will wait the specified amount of time in milliseconds for the response to
+     * be completed. Completed is determined via the <field>done</field>. Returns true if the
+     * reponse was completed in time, false otherwise. If an error occurs, this method will throw
+     * a subclass of <code>RuntimeException</code> specific to the error.
+     *
+     * @param time max time to wait
+     * @return true if response is available, false otherwise
+     *
+     * @see org.drools.task.service.PermissionDeniedException
+     * @see org.drools.task.service.CannotAddTaskException
+     * @see javax.persistence.PersistenceException
+     */
+    public synchronized boolean waitTillDone(long time) {
+
+        if ( !isDone() ) {
+            try {
+                wait( time );
+            } catch ( InterruptedException e ) {
+                // swallow and return state of done
+            }
+        }
+
+        if ( hasError() ) {
+            throw createSideException( getError() );
+        }
+
+        return isDone();
+    }
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBlockingResponseHandler.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageDirectoryMapRequestResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageDirectoryMapRequestResponseHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageDirectoryMapRequestResponseHandler.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,37 @@
+/**
+ *
+ */
+package org.drools.grid.internal.responsehandlers;
+
+import java.util.Map;
+
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.IoWriter;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+
+public class BlockingMessageDirectoryMapRequestResponseHandler extends AbstractBlockingResponseHandler
+    implements
+    MessageReceiverHandler {
+    private static final int    ATTACHMENT_ID_WAIT_TIME = 100000;
+    private static final int    CONTENT_ID_WAIT_TIME    = 50000;
+    private Map<String, String> directoryMap;
+    private volatile Message    message;
+
+    public synchronized void messageReceived(Conversation conversation, Message message) {
+        this.message = message;
+
+        setDone( true );
+    }
+
+    public Message getMessage() {
+        boolean done = waitTillDone( CONTENT_ID_WAIT_TIME );
+
+        if ( !done ) {
+            throw new RuntimeException( "Timeout : unable to retrieve Object Id" );
+        }
+
+        return this.message;
+    }
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageDirectoryMapRequestResponseHandler.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageResponseHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageResponseHandler.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,38 @@
+/**
+ *
+ */
+package org.drools.grid.internal.responsehandlers;
+
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.IoWriter;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+
+public class BlockingMessageResponseHandler extends AbstractBlockingResponseHandler
+    implements
+    MessageReceiverHandler {
+    private static final int WAIT_TIME    = 60000;
+
+    private volatile Message message;
+
+    public void messageReceived(Conversation conversation,
+                                Message message) {
+        this.message = message;
+        setDone( true );
+    }
+
+    public Message getMessage() {
+        return getMessage( WAIT_TIME );
+    }
+    
+    public Message getMessage(long waitTime) {
+        boolean done = waitTillDone( waitTime );
+
+        if ( !done ) {
+            throw new RuntimeException( "Timeout : unable to retrieve Object Id" );
+        }
+
+        return this.message;
+    }
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageResponseHandler.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Acceptor.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Acceptor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Acceptor.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,12 @@
+package org.drools.grid.io;
+
+import java.net.InetSocketAddress;
+
+import org.drools.SystemEventListener;
+
+public interface Acceptor {
+    boolean isOpen();
+    void open(InetSocketAddress address, MessageReceiverHandler handler, SystemEventListener systemEventListener);
+    void close();
+    MessageReceiverHandler getMessageReceiverHandler();
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Acceptor.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/AcceptorFactoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/AcceptorFactoryService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/AcceptorFactoryService.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,5 @@
+package org.drools.grid.io;
+
+public interface AcceptorFactoryService {
+    Acceptor newAcceptor();
+}   


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/AcceptorFactoryService.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Connector.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Connector.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Connector.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,12 @@
+package org.drools.grid.io;
+
+import java.net.InetSocketAddress;
+
+import org.drools.SystemEventListener;
+
+public interface Connector {
+    public boolean isOpen();
+    public IoWriter open(InetSocketAddress address, MessageReceiverHandler handler, SystemEventListener systemEventListener);
+    public void close();
+}
+


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Connector.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Conversation.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Conversation.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Conversation.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,14 @@
+/**
+ * 
+ */
+package org.drools.grid.io;
+
+
+public interface Conversation {
+    
+    void respond(Object body);
+    
+    void sendMessage(Object body,
+                     MessageReceiverHandler handler);
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Conversation.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/ConversationManager.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/ConversationManager.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/ConversationManager.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,15 @@
+/**
+ * 
+ */
+package org.drools.grid.io;
+
+import java.net.InetSocketAddress;
+
+
+public interface ConversationManager {
+    Conversation startConversation(InetSocketAddress address,
+                                   String recipientId);
+    
+    void endConversation();
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/ConversationManager.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/GridConnectionServiceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/GridConnectionServiceFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/GridConnectionServiceFactory.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,9 @@
+package org.drools.grid.io;
+
+import org.drools.grid.Grid;
+
+public class GridConnectionServiceFactory {
+    public Grid getGrid() {
+        return null;
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/GridConnectionServiceFactory.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/IoWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/IoWriter.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/IoWriter.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,6 @@
+package org.drools.grid.io;
+
+
+public interface IoWriter {    
+    void write(Message msg);
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/IoWriter.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Message.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Message.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Message.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,17 @@
+package org.drools.grid.io;
+
+public interface Message {
+
+    public String getConversationId();
+
+    public String getSenderId();
+
+    public String getRecipientId();
+
+    public int getRequestId();
+    
+    public int getResponseId();
+
+    public Object getBody();
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/Message.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/MessageReceiverHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/MessageReceiverHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/MessageReceiverHandler.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,10 @@
+package org.drools.grid.io;
+
+
+
+public interface MessageReceiverHandler {
+
+    public void messageReceived(Conversation conversation,
+                                Message msg);    
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/MessageReceiverHandler.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/SocketConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/SocketConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/SocketConfiguration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,10 @@
+/**
+ * 
+ */
+package org.drools.grid.io;
+
+public interface SocketConfiguration {
+    int getSocket();
+
+    void setSocket(int socket);
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/SocketConfiguration.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/CollectionClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/CollectionClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/CollectionClient.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,84 @@
+package org.drools.grid.io.impl;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+public class CollectionClient<T>
+    implements
+    Collection {
+    private String parentInstanceId;
+
+    public CollectionClient(String parentInstanceId) {
+        this.parentInstanceId = parentInstanceId;
+    }
+
+    public String getParentInstanceId() {
+        return this.parentInstanceId;
+    }
+
+    public boolean add(Object e) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean addAll(Collection c) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public void clear() {
+        // TODO Auto-generated method stub
+
+    }
+
+    public boolean contains(Object o) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean containsAll(Collection c) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean isEmpty() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public Iterator iterator() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public boolean remove(Object o) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean removeAll(Collection c) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean retainAll(Collection c) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public int size() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public Object[] toArray() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Object[] toArray(Object[] a) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/CollectionClient.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/CommandImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/CommandImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/CommandImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,26 @@
+package org.drools.grid.io.impl;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class CommandImpl implements Serializable {
+    private String name;
+    private List<Object> arguments;
+    
+    public CommandImpl(String name,
+                       List<Object> arguments) {
+        super();
+        this.name = name;
+        this.arguments = arguments;
+    }
+    
+    public String getName() {
+        return name;
+    }
+    
+    public List<Object> getArguments() {
+        return arguments;
+    }
+    
+    
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/CommandImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/ConversationImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/ConversationImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/ConversationImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,90 @@
+/**
+ * 
+ */
+package org.drools.grid.io.impl;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.IoWriter;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+
+public class ConversationImpl
+    implements
+    Conversation {
+
+    private IoWriter                        writer;
+    private String                          conversationId;
+    private String                          senderId;
+    private String                        recipientId;
+    private AtomicInteger                   requestId;
+    private RequestResponseDispatchListener dispathListener;
+    private ConversationManager             conversationManager;
+
+    private Message                         receivedMessage;
+
+    public ConversationImpl(String conversationId,
+                            String senderId,
+                            String recipientId,
+                            RequestResponseDispatchListener dispathListener,
+                            IoWriter writer,
+                            ConversationManager conversationManager) {
+        this( conversationId,
+              senderId,
+              recipientId,
+              dispathListener,
+              null,
+              writer,
+              conversationManager );
+    }
+
+    public ConversationImpl(String conversationId,
+                            String senderId,
+                            String recipientId,
+                            RequestResponseDispatchListener dispathListener,
+                            Message receivedMessage,
+                            IoWriter writer,
+                            ConversationManager conversationManager) {
+
+        this.conversationId = conversationId;
+        this.senderId = senderId;
+        this.recipientId = recipientId;
+        this.dispathListener = dispathListener;
+        this.writer = writer;
+        this.requestId = new AtomicInteger();
+        this.receivedMessage = receivedMessage;
+        this.conversationManager = conversationManager;
+    }
+
+    public void respond(Object body) {
+        Message msg = new MessageImpl( this.conversationId,
+                                       this.senderId,
+                                       recipientId,
+                                       -1,
+                                       receivedMessage.getRequestId(),
+                                       body );
+
+        writer.write( msg );
+    }
+
+    public void sendMessage(Object body,
+                            MessageReceiverHandler handler) {
+        int requestId = -1;
+        if ( handler != null ) {
+            requestId = this.requestId.getAndIncrement();
+        }
+        Message msg = new MessageImpl( this.conversationId,
+                                       this.senderId,
+                                       recipientId,
+                                       requestId,
+                                       -1,
+                                       body );
+
+        this.dispathListener.addMessageReceiverHandler( requestId,
+                                                        handler );
+        writer.write( msg );
+    }
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/ConversationImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/ConversationManagerImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/ConversationManagerImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/ConversationManagerImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,55 @@
+/**
+ * 
+ */
+package org.drools.grid.io.impl;
+
+import java.net.InetSocketAddress;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.drools.SystemEventListener;
+import org.drools.grid.io.Connector;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.IoWriter;
+import org.drools.grid.io.MessageReceiverHandler;
+
+public class ConversationManagerImpl
+    implements
+    ConversationManager {
+
+    private Connector              conn;
+   
+    private SystemEventListener    systemEventListener;
+
+    private String                 senderId;
+
+    private AtomicLong             conversationIdCounter;
+
+    public ConversationManagerImpl(String senderId,
+                                   Connector conn,
+                                   SystemEventListener    systemEventListener) {
+        this.conn = conn;
+        this.senderId = senderId;
+        this.conversationIdCounter = new AtomicLong();
+        this.systemEventListener = systemEventListener;
+    }
+
+    public Conversation startConversation(InetSocketAddress address,
+                                          String recipientId) {
+        RequestResponseDispatchListener dispathListener = new RequestResponseDispatchListener();  
+        IoWriter writer = this.conn.open( address,
+                                          dispathListener,
+                                          systemEventListener );
+        return new ConversationImpl( Long.toString( this.conversationIdCounter.incrementAndGet() ),
+                                     this.senderId,
+                                     recipientId,
+                                     dispathListener,
+                                     writer,
+                                     this );
+    }
+    
+    public void endConversation() {
+        this.conn.close();
+    }
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/ConversationManagerImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageHandlerImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageHandlerImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageHandlerImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,74 @@
+package org.drools.grid.io.impl;
+
+import org.drools.SystemEventListener;
+import org.drools.command.impl.ContextImpl;
+import org.drools.command.impl.GenericCommand;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.IoWriter;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.runtime.impl.ExecutionResultImpl;
+
+public class MessageHandlerImpl
+    implements
+    MessageReceiverHandler {
+
+    private SystemEventListener systemEventListener;
+    private NodeData            data;
+
+    public MessageHandlerImpl(NodeData data,
+                              SystemEventListener systemEventListener) {
+        this.systemEventListener = systemEventListener;
+        this.data = data;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.vsm.GenericMessageHandler#messageReceived(org.drools.vsm.GenericIoWriter, org.drools.vsm.Message)
+     */
+    public void messageReceived(Conversation conversation,
+                                Message msg) {
+        this.systemEventListener.debug( "Message receieved : " + msg );
+
+        // we always need to process a List, for genericity, but don't force a List on the payload
+        //        List<GenericCommand> commands;
+        //        if ( msg.getPayload() instanceof List ) {
+        //            commands = (List<GenericCommand>) msg.getPayload();
+        //        } else {
+        //            commands = new ArrayList<GenericCommand>();
+        //            commands.add( (GenericCommand) msg.getPayload() );
+        //        }
+        GenericCommand command = (GenericCommand) msg.getBody();
+
+        // Setup the evaluation context 
+        ContextImpl localSessionContext = new ContextImpl( "session_" + msg.getConversationId(),
+                                                           this.data.getContextManager(),
+                                                           this.data.getTemp() );
+        ExecutionResultImpl localKresults = new ExecutionResultImpl();
+        localSessionContext.set( "kresults_" + msg.getConversationId(),
+                                 localKresults );
+
+        Object result = command.execute( localSessionContext );
+
+//        session.write( new MessageImpl( msg.getConversationId(),
+//                                    msg.getRequestId(),
+//                                    null,
+//                                    1,
+//                                    result ),
+//                       null );
+
+        //        if ( !msg.isAsync() && localKresults.getIdentifiers().isEmpty() ) {
+        //            // if it's not an async invocation and their are no results, just send a simple notification message
+        //            session.write( new Message( msg.getSessionId(),
+        //                                        msg.getResponseId(),
+        //                                        msg.isAsync(),
+        //                                        new FinishedCommand() ), null );
+        //        } else {
+        //            // return the payload
+        //            session.write( new Message( msg.getSessionId(),
+        //                                        msg.getResponseId(),
+        //                                        msg.isAsync(),
+        //                                        localKresults ), null );
+        //        }
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageHandlerImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,80 @@
+package org.drools.grid.io.impl;
+
+import java.io.Serializable;
+import java.util.Map;
+
+import org.drools.grid.io.Message;
+
+public class MessageImpl
+    implements
+    Serializable,
+    Message {
+    private String   conversationId;
+    private String   senderId;
+    private String recipientId;
+    private int      requestId;
+    private int      responseId;
+    private Object   body;
+
+    public MessageImpl(String conversationId,
+                       String senderId,
+                       String recipientId,
+                       int requestId,
+                       int responseId,
+                       Object body) {
+        this.conversationId = conversationId;
+        this.requestId = requestId;
+        this.recipientId = recipientId;
+        this.responseId = responseId;
+        this.body = body;
+    }
+
+    //    public MessageImpl(String conversationId,
+    //                       Map<String, Integer> contextVars,
+    //                       Object payload) {
+    //        this.conversationId = conversationId;
+    //        this.responseId = -1;
+    //        this.payload = payload;
+    //    }
+
+    /* (non-Javadoc)
+     * @see org.drools.grid.io.impl.Message#getSessionId()
+     */
+    public String getConversationId() {
+        return this.conversationId;
+    }
+    
+    public String getSenderId() {
+        return senderId;
+    }
+
+    public String getRecipientId() {
+        return recipientId;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.grid.io.impl.Message#getResponseId()
+     */
+    public int getRequestId() {
+        return this.requestId;
+    }
+    
+    public int getResponseId() {
+        return this.responseId;
+    }    
+
+    /* (non-Javadoc)
+     * @see org.drools.grid.io.impl.Message#getPayload()
+     */
+    public Object getBody() {
+        return this.body;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.grid.io.impl.Message#toString()
+     */
+    @Override
+    public String toString() {
+        return "[Message conversationId=" + this.conversationId + "senderId=" + this.senderId + " requestId=" + this.requestId + " payload=" + this.body + "]";
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageIoReceiverImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageIoReceiverImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageIoReceiverImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,76 @@
+/**
+ * 
+ */
+package org.drools.grid.io.impl;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.drools.SystemEventListener;
+import org.drools.grid.internal.commands.SimpleCommand;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.IoWriter;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+
+public class MessageIoReceiverImpl
+    implements
+    MessageReceiverHandler {
+    
+//    protected Map<Integer, RequestResponseListener> responseHandlers;
+
+    private MessageReceiverHandler                         handler;
+
+    private final SystemEventListener              systemEventListener;
+
+    public MessageIoReceiverImpl(MessageReceiverHandler handler,
+                                 SystemEventListener systemEventListener) {
+        this.handler = handler;
+//        this.responseHandlers = new ConcurrentHashMap<Integer, RequestResponseListener>();;
+        this.systemEventListener = systemEventListener;
+    }
+
+//    /* (non-Javadoc)
+//     * @see org.drools.vsm.mina.ClientGenericMessageReceiver#addResponseHandler(int, org.drools.vsm.MessageResponseHandler)
+//     */
+//    public void addResponseHandler(int id,
+//                                   RequestResponseListener responseHandler) {
+//        this.responseHandlers.put( id,
+//                                   responseHandler );
+//    }
+
+    public void messageReceived(Conversation conversation,
+                                Message msg) {
+        // TODO Auto-generated method stub
+        
+    }
+
+//    /* (non-Javadoc)
+//     * @see org.drools.vsm.mina.ClientGenericMessageReceiver#messageReceived(org.drools.vsm.mina.MinaIoWriter, org.drools.vsm.Message)
+//     */
+//    public void messageReceived(IoWriter writer,
+//                                Message msg) throws Exception {
+//
+//        this.systemEventListener.debug( "Message receieved : " + msg );
+//
+//        RequestResponseListener responseHandler = this.responseHandlers.remove( msg.getRequestId() );
+//
+//        if ( responseHandler != null ) {
+//            Object payload = msg.getPayload();
+//            if ( payload instanceof SimpleCommand && ((SimpleCommand) msg.getPayload()).getArguments().size() > 0 &&
+//                 ((SimpleCommand) msg.getPayload()).getArguments().get( 0 ) instanceof RuntimeException ) {
+//                payload = ((SimpleCommand) msg.getPayload()).getArguments().get( 0 );
+//            }
+//            if ( (payload != null && payload instanceof RuntimeException) ) {
+//                responseHandler.setError( (RuntimeException) payload );
+//            } else {
+//                responseHandler.receive( msg );
+//            }
+//        } else if ( this.handler != null ) {
+//            this.handler.messageReceived( writer,
+//                                          msg );
+//        } else {
+//            throw new RuntimeException( "Unable to process Message" );
+//        }
+//    }
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageIoReceiverImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageSession.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageSession.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageSession.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,55 @@
+/*
+ *  Copyright 2010 salaboy.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.drools.grid.io.impl;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ *
+ * @author salaboy
+ */
+public class MessageSession {
+
+    public AtomicInteger counter;
+    private int          sessionId = -1;
+
+    public MessageSession() {
+        this.counter = new AtomicInteger();
+    }
+
+    public AtomicInteger getCounter() {
+        return this.counter;
+    }
+
+    public void setCounter(AtomicInteger counter) {
+        this.counter = counter;
+    }
+
+    public int getSessionId() {
+        return this.sessionId;
+    }
+
+    public void setSessionId(int sessionId) {
+        this.sessionId = sessionId;
+    }
+
+    public int getNextId() {
+        return this.counter.incrementAndGet();
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MessageSession.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MultiplexSocketServiceCongifuration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MultiplexSocketServiceCongifuration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MultiplexSocketServiceCongifuration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,25 @@
+/**
+ * 
+ */
+package org.drools.grid.io.impl;
+
+import org.drools.grid.Grid;
+import org.drools.grid.GridPeerServiceConfiguration;
+import org.drools.grid.MultiplexSocketService;
+import org.drools.grid.impl.GridImpl;
+
+public class MultiplexSocketServiceCongifuration
+    implements
+    GridPeerServiceConfiguration {
+    private MultiplexSocketService service;
+
+    public MultiplexSocketServiceCongifuration(MultiplexSocketService service) {
+        this.service = service;
+    }
+
+    public void configureService(Grid grid) {
+        ((GridImpl) grid).addService( MultiplexSocketService.class,
+                                      service );
+    }
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/MultiplexSocketServiceCongifuration.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/NodeData.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/NodeData.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/NodeData.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,67 @@
+package org.drools.grid.io.impl;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.drools.command.Context;
+import org.drools.command.ContextManager;
+import org.drools.command.impl.ContextImpl;
+import org.drools.grid.ContextManagerImpl;
+
+public class NodeData {
+    private ContextManager contextManager;
+
+    private Context        root;
+    private Context        temp;
+
+    public static String   ROOT             = "ROOT";
+    public static String   TEMP             = "__TEMP__";
+    public static String   NODE_DATA        = "__NodeData__";
+
+    private AtomicInteger  sessionIdCounter = new AtomicInteger();
+
+    public NodeData() {
+        // Setup ROOT context, this will hold all long lived intances and instanceIds
+        this.contextManager = new ContextManagerImpl();
+
+        this.root = new ContextImpl( ROOT,
+                                     this.contextManager );
+        ((ContextManagerImpl) this.contextManager).addContext( this.root );
+        this.root.set( NODE_DATA,
+                       this );
+        // Setup TEMP context, this will hold all short lived instanceId and instances
+        // TODO: TEMP context should have a time/utilisation eviction queue added 
+        this.temp = new ContextImpl( TEMP,
+                                     this.contextManager,
+                                     this.root );
+        ((ContextManagerImpl) this.contextManager).addContext( this.temp );
+    }
+
+    public AtomicInteger getSessionIdCounter() {
+        return this.sessionIdCounter;
+    }
+
+    public ContextManager getContextManager() {
+        return this.contextManager;
+    }
+
+    public void setContextManager(ContextManager contextManager) {
+        this.contextManager = contextManager;
+    }
+
+    public Context getRoot() {
+        return this.root;
+    }
+
+    public void setRoot(Context root) {
+        this.root = root;
+    }
+
+    public Context getTemp() {
+        return this.temp;
+    }
+
+    public void setTemp(Context temp) {
+        this.temp = temp;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/NodeData.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/RequestResponseDispatchListener.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/RequestResponseDispatchListener.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/RequestResponseDispatchListener.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,33 @@
+/**
+ * 
+ */
+package org.drools.grid.io.impl;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.IoWriter;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+
+public class RequestResponseDispatchListener implements MessageReceiverHandler {    
+    // Need time based eviction queue, to remove old unreturned requests
+    private Map<Integer, MessageReceiverHandler> msgRecHandlers;
+    
+    public RequestResponseDispatchListener() {
+        this.msgRecHandlers = new ConcurrentHashMap<Integer, MessageReceiverHandler>();
+    }
+    
+    public void addMessageReceiverHandler(int requestId, MessageReceiverHandler msgRecHandler) {
+        this.msgRecHandlers.put(requestId, msgRecHandler);
+    }
+    
+    public void messageReceived(Conversation conversation, Message msg) {
+        MessageReceiverHandler msgRecHandler = this.msgRecHandlers.remove( msg.getResponseId());
+        if ( msgRecHandler != null ) {
+            msgRecHandler.messageReceived( conversation, msg );
+        }
+    }
+    
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/io/impl/RequestResponseDispatchListener.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/local/LocalGridConnection.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/local/LocalGridConnection.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/local/LocalGridConnection.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,30 @@
+package org.drools.grid.local;
+
+import org.drools.grid.GridNode;
+import org.drools.grid.GridNodeConnection;
+import org.drools.grid.impl.GridNodeImpl;
+
+public class LocalGridConnection implements GridNodeConnection {
+    private GridNode gridNode;
+    
+    public LocalGridConnection(GridNode gridNode) {
+        this.gridNode = gridNode;
+    }
+    
+    public LocalGridConnection(String id) {
+        gridNode = new GridNodeImpl(id);
+    }
+
+    public void connect() {
+        // do nothing as it's local
+    }
+
+    public void disconnect() {
+        // do nothing as it's local
+    }
+
+    public GridNode getGridNode() {
+        return this.gridNode;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/local/LocalGridConnection.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaAcceptor.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaAcceptor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaAcceptor.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,84 @@
+package org.drools.grid.remote.mina;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+
+import org.apache.mina.core.service.IoAcceptor;
+import org.apache.mina.core.service.IoHandlerAdapter;
+import org.apache.mina.core.session.IdleStatus;
+import org.apache.mina.filter.codec.ProtocolCodecFilter;
+import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
+import org.apache.mina.filter.logging.LoggingFilter;
+import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
+import org.drools.SystemEventListener;
+import org.drools.grid.DaemonService;
+import org.drools.grid.io.Acceptor;
+import org.drools.grid.io.IoWriter;
+import org.drools.grid.io.MessageReceiverHandler;
+
+public class MinaAcceptor
+    implements
+    Acceptor {
+    private IoAcceptor acceptor;
+    
+    private MessageReceiverHandler handler;
+
+    public MinaAcceptor() {
+    }
+
+    public synchronized void setAcceptor(IoAcceptor acceptor) {
+        this.acceptor = acceptor;
+    }
+
+    public synchronized void open(InetSocketAddress address,
+                                  MessageReceiverHandler handler,
+                                  SystemEventListener systemEventListener) {
+        if ( this.acceptor == null ) {
+            acceptor = new NioSocketAcceptor();
+
+            acceptor.getFilterChain().addLast( "codec",
+                                               new ProtocolCodecFilter( new ObjectSerializationCodecFactory() ) );
+            acceptor.getSessionConfig().setReadBufferSize( 2048 );
+            acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE,
+                                                     10 );
+        }
+        
+        this.handler = handler;
+        acceptor.setHandler( new MinaIoHandler( systemEventListener,
+                                                handler ) );
+
+        try {
+            acceptor.bind( address );
+        } catch ( IOException e ) {
+            throw new RuntimeException( "Unable to bind Mina Acceptor",
+                                        e );
+        }
+    }
+
+    public synchronized void close() {
+        acceptor.unbind();
+        acceptor.dispose();
+        this.acceptor = null;
+    }
+
+    public synchronized boolean isOpen() {
+        if ( this.acceptor != null && this.acceptor.isActive() ) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    public synchronized IoAcceptor getIoAcceptor() {
+        return this.acceptor;
+    }
+
+    public int getCurrentSessions() {
+        return this.acceptor.getManagedSessionCount();
+    }
+
+    public MessageReceiverHandler getMessageReceiverHandler() {
+        return this.handler;
+    }
+    
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaAcceptor.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaAcceptorFactoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaAcceptorFactoryService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaAcceptorFactoryService.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,12 @@
+package org.drools.grid.remote.mina;
+
+import org.drools.grid.io.Acceptor;
+import org.drools.grid.io.AcceptorFactoryService;
+
+public class MinaAcceptorFactoryService implements AcceptorFactoryService {
+
+    public Acceptor newAcceptor() {
+        return new MinaAcceptor();
+    }
+    
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaAcceptorFactoryService.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaConnector.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaConnector.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaConnector.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,119 @@
+/**
+ * 
+ */
+package org.drools.grid.remote.mina;
+
+import java.net.InetSocketAddress;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.mina.core.future.ConnectFuture;
+import org.apache.mina.core.session.IoSession;
+import org.apache.mina.filter.codec.ProtocolCodecFilter;
+import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
+import org.apache.mina.transport.socket.SocketConnector;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.SystemEventListener;
+import org.drools.grid.io.Connector;
+import org.drools.grid.io.IoWriter;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+
+public class MinaConnector
+    implements
+    Connector {
+    
+    protected MinaIoWriter        writer;
+
+    protected SocketConnector     connector;
+
+    public MinaConnector() {        
+    }
+
+    /**
+     * Allow users to cast to impl, so they can set their own Connector.
+     * @param connector
+     */
+    public synchronized void setConnector(SocketConnector connector) {
+        this.connector = connector;
+    }
+
+    public synchronized IoWriter open(InetSocketAddress address,
+                                      MessageReceiverHandler handler,
+                                      SystemEventListener systemEventListener) {
+        if ( this.writer != null && this.writer.getIoSession().isConnected() ) {
+            throw new IllegalStateException( "Already connected. Disconnect first." );
+        } else {
+            this.writer = null;
+        }
+
+        if ( address == null ) {
+            throw new IllegalArgumentException( "Address cannot be null" );
+        }
+
+        if ( this.connector == null ) {
+            // Allow users to pass their own configured SocketConnector
+            this.connector = new NioSocketConnector();
+            this.connector.getFilterChain().addLast(
+                                                     "codec",
+                                                     new ProtocolCodecFilter(
+                                                                              new ObjectSerializationCodecFactory() ) );
+        }
+        
+//        this.handler = new MessageHandler() {
+//            private Map<Integer, MessageResponseHandler> map = new HashMap<Integer, MessageResponseHandler>();
+//            
+//            public void messageReceived(IoWriter session,
+//                                        Message msg) throws Exception {
+//                MessageResponseHandler responseHandler = map.remove( msg.getRequestId() );
+//                if ( responseHandler != null ) {
+//                    responseHandler.receive( msg );
+//                }
+//            }
+//            
+//            public void addResponseHandler(int id,
+//                                           MessageResponseHandler responseHandler) {
+//                map.put( id, responseHandler );
+//            }
+//        };        
+
+        this.connector.setHandler( new MinaIoHandler( systemEventListener,
+                                                      handler ) );
+
+        ConnectFuture future1 = this.connector.connect( address );
+        future1.join();
+        if ( !future1.isConnected() ) {
+            throw new IllegalStateException( "Unnable to connect to " + address );
+        }
+        IoSession session = future1.getSession();
+
+        this.writer = new MinaIoWriter( session );
+
+        return this.writer;
+    }
+
+    public synchronized void close() {
+        if ( this.writer != null ) {
+            IoSession session = this.writer.getIoSession();
+            if ( session != null && session.isConnected() ) {
+                session.close();
+                session.getCloseFuture().join();
+            }
+            this.writer.dispose();
+            this.writer = null;
+            this.connector = null;
+        }
+    }
+
+    public synchronized boolean isOpen() {
+        if ( this.writer != null ) {
+            IoSession session = this.writer.getIoSession();
+            if ( session != null && session.isConnected() ) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaConnector.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,76 @@
+package org.drools.grid.remote.mina;
+
+import org.apache.mina.core.service.IoHandlerAdapter;
+import org.apache.mina.core.session.IdleStatus;
+import org.apache.mina.core.session.IoSession;
+import org.drools.SystemEventListener;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.grid.io.impl.ConversationImpl;
+import org.drools.grid.io.impl.MessageIoReceiverImpl;
+import org.drools.grid.io.impl.RequestResponseDispatchListener;
+
+public class MinaIoHandler extends IoHandlerAdapter {
+    /**
+     * Listener used for logging
+     */
+    private final SystemEventListener       systemEventListener;
+
+    private MessageReceiverHandler          messageHandler;
+
+    private String                          senderId;
+
+    private RequestResponseDispatchListener dispathListener;
+
+    public MinaIoHandler(SystemEventListener systemEventListener) {
+        this( systemEventListener,
+              null );
+
+    }
+
+    public MinaIoHandler(SystemEventListener systemEventListener,
+                         MessageReceiverHandler messageHandler) {
+        this.systemEventListener = systemEventListener;
+        //        this.messageHandler = new MessageIoReceiverImpl( handler,
+        //                                                         systemEventListener );
+        this.messageHandler = messageHandler;
+
+    }
+
+    //    public void addResponseHandler(int id,
+    //                                   MessageResponseHandler responseHandler) {
+    //        this.messageHandler.addResponseHandler( id,
+    //                                                responseHandler );
+    //    }
+
+    @Override
+    public void exceptionCaught(IoSession session,
+                                Throwable cause) throws Exception {
+        this.systemEventListener.exception( "Uncaught exception on Server",
+                                            cause );
+    }
+
+    @Override
+    public void messageReceived(IoSession session,
+                                Object object) throws Exception {
+        Message msg = (Message) object;
+        Conversation conversation = new ConversationImpl( msg.getConversationId(),
+                                                          this.senderId,
+                                                          msg.getSenderId(),
+                                                          this.dispathListener,
+                                                          msg,
+                                                          new MinaIoWriter( session ),
+                                                          null );
+
+        this.messageHandler.messageReceived( conversation,
+                                             msg );
+    }
+
+    @Override
+    public void sessionIdle(IoSession session,
+                            IdleStatus status) throws Exception {
+        this.systemEventListener.debug( "Server IDLE " + session.getIdleCount( status ) );
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaIoWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaIoWriter.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaIoWriter.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,85 @@
+/**
+ * 
+ */
+package org.drools.grid.remote.mina;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.mina.core.session.IoSession;
+import org.drools.grid.ConnectorException;
+import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
+import org.drools.grid.io.IoWriter;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.grid.io.impl.MessageImpl;
+
+public class MinaIoWriter
+    implements
+    IoWriter {
+//    protected final String         id;
+//    protected final MessageHandler handler;
+    private IoSession            session;
+//    private RequestResponseDispatchListener reqResDisListener;
+
+//    protected String                 conversationId;
+//    protected final AtomicInteger  requestIdCounter;
+
+    public MinaIoWriter(
+//                        String id,
+//                        String conversationId,
+                        IoSession session
+//                        MessageHandler handler
+                        ) {
+//        this.id = id;
+//        this.conversationId = conversationId;
+        this.session = session;
+//        this.reqResDisListener = new RequestResponseDispatchListener(this);
+//        this.handler = handler;
+//        this.requestIdCounter = new AtomicInteger();
+    }
+
+//    public String getId() {
+//        return this.id;
+//    }
+    
+    public IoSession getIoSession() {
+        return this.session;
+    }
+
+    public void dispose() {
+        this.session = null;
+    }
+
+//    private void addResponseHandler(int id,
+//                                    MessageReceiverHandler responseHandler) {
+//        this.handler.addResponseHandler( id,
+//                                         responseHandler );
+//    }
+
+    public void write(Message msg) {
+        if ( this.session == null || !this.session.isConnected() ) {
+            throw new IllegalStateException( "Cannot write message and socket is not open" );
+        }
+
+        
+//        int requestId = msg.getRequestId();
+//        if ( requestId != -1 ) {
+//            this.reqResDisListener.addMessageReceiverHandler( requestId, responseHandler );
+//        }
+//        int requestId = -1;
+//        if ( responseHandler != null ) {
+//            requestId = this.requestIdCounter.getAndIncrement();
+//            addResponseHandler( requestId,
+//                                responseHandler );            
+//        }
+//        Message msg = new MessageImpl( this.conversationId,
+//                                       this.id,
+//                                       
+//                                       requestId,
+//                                       null,
+//                                       body );
+
+        this.session.write( msg );
+    }
+     
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/mina/MinaIoWriter.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/Address.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/Address.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/Address.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,17 @@
+package org.drools.grid.service.directory;
+
+import java.net.URL;
+
+import javax.persistence.Entity;
+
+import org.drools.grid.GridServiceDescription;
+
+public interface Address {
+    public GridServiceDescription getGridServiceDescription();
+    
+    public String getTransport();
+    
+    public Object getObject();
+    public void setObject(Object object);
+    
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/Address.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/WhitePages.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/WhitePages.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/WhitePages.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,12 @@
+package org.drools.grid.service.directory;
+
+import org.drools.grid.GridServiceDescription;
+
+public interface WhitePages {
+    public GridServiceDescription create(String serviceDescriptionId);  
+    
+    public void remove(String serviceDescriptionId);
+            
+    public GridServiceDescription lookup(String serviceDescriptionId);
+    
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/WhitePages.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/YellowPages.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/YellowPages.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/YellowPages.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,5 @@
+package org.drools.grid.service.directory;
+
+public interface YellowPages {
+    
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/YellowPages.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressClient.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,54 @@
+package org.drools.grid.service.directory.impl;
+
+import static org.drools.grid.service.directory.impl.WhitePagesClient.sendMessage;
+
+import java.net.InetSocketAddress;
+import java.util.Arrays;
+
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.impl.CommandImpl;
+import org.drools.grid.service.directory.Address;
+
+public class AddressClient
+    implements
+    Address {
+    private Address                detachedLocal;
+
+    private GridServiceDescription whitePagesGsd;
+
+    private ConversationManager    conversationManager;
+
+    public AddressClient(Address detachedLocal,
+                         GridServiceDescription gsd,
+                         ConversationManager conversationManager) {
+        this.detachedLocal = detachedLocal;
+        this.whitePagesGsd = gsd;
+        this.conversationManager = conversationManager;
+    }
+
+    public GridServiceDescription getGridServiceDescription() {
+        return new GridServiceDescriptionClient( this.detachedLocal.getGridServiceDescription(),
+                                                 this.whitePagesGsd,
+                                                 this.conversationManager );
+    }
+
+    public Object getObject() {
+        return this.detachedLocal.getObject();
+    }
+
+    public String getTransport() {
+        return this.detachedLocal.getTransport();
+    }
+
+    public void setObject(Object object) {
+        InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+        CommandImpl cmd = new CommandImpl( "Address.setObject",
+                                           Arrays.asList( new Object[]{ this.detachedLocal.getGridServiceDescription().getId(), this.detachedLocal.getTransport(), object } ) );
+        sendMessage( this.conversationManager,
+                     sockets,
+                     this.whitePagesGsd.getId(),
+                     cmd );
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressClient.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,90 @@
+package org.drools.grid.service.directory.impl;
+
+import java.io.Serializable;
+
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.service.directory.Address;
+
+public class AddressImpl
+    implements
+    Address,
+    Serializable {
+    private String                 id;
+
+    private GridServiceDescription gridServiceDescription;
+
+    private String                 transport;
+
+    private Serializable           object;
+
+    public AddressImpl() {
+
+    }
+
+    public AddressImpl(GridServiceDescription gridServiceDescription,
+                       String transport,
+                       Serializable object) {
+        this.gridServiceDescription = gridServiceDescription;
+        this.transport = transport;
+        this.object = object;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public GridServiceDescription getGridServiceDescription() {
+        return gridServiceDescription;
+    }
+
+    public String getTransport() {
+        return transport;
+    }
+
+    public Serializable getObject() {
+        return object;
+    }
+
+    public void setObject(Object object) {
+        this.object = (Serializable) object;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result
+                 + ((gridServiceDescription == null) ? 0 : gridServiceDescription.getId().hashCode());
+        result = prime * result + ((object == null) ? 0 : object.hashCode());
+        result = prime * result
+                 + ((transport == null) ? 0 : transport.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( getClass() != obj.getClass() ) return false;
+        AddressImpl other = (AddressImpl) obj;
+        if ( gridServiceDescription == null ) {
+            if ( other.gridServiceDescription != null ) return false;
+        } else if ( !gridServiceDescription.getId().equals( other.gridServiceDescription.getId() ) ) return false;
+        if ( object == null ) {
+            if ( other.object != null ) return false;
+        } else if ( !object.equals( other.object ) ) return false;
+        if ( transport == null ) {
+            if ( other.transport != null ) return false;
+        } else if ( !transport.equals( other.transport ) ) return false;
+        return true;
+    }
+
+    public String toString() {
+        return "Address id=" + id + " tranport=" + transport + " object=" + object;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressJpa.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressJpa.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressJpa.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,48 @@
+package org.drools.grid.service.directory.impl;
+
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.service.directory.Address;
+
+public class AddressJpa implements Address, Serializable {
+    private Address detached;
+    
+    transient
+    private EntityManagerFactory emf;
+    
+    public AddressJpa(Address detached,
+                      EntityManagerFactory emf) {
+        this.detached = detached;
+        this.emf = emf;
+    }
+    
+    public GridServiceDescription getGridServiceDescription() {
+        return this.detached.getGridServiceDescription();
+    }
+    
+    public Object getObject() {
+        return this.detached.getObject();
+    }
+    
+    public String getTransport() {
+        return this.detached.getTransport();
+    }
+    
+    public void setObject(Object object) {
+        EntityManager em = this.emf.createEntityManager();
+        em.getTransaction().begin();
+        this.detached = em.find( AddressImpl.class, ((AddressImpl)this.detached).getId() );
+        this.detached.setObject( object );        
+        em.getTransaction().commit();
+        em.close();        
+    }
+    
+    private Object readResolve() throws ObjectStreamException {
+        return this.detached;
+    }    
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/AddressJpa.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesConfiguration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,28 @@
+/**
+ * 
+ */
+package org.drools.grid.service.directory.impl;
+
+import java.util.Map;
+
+import org.drools.grid.CoreServicesWhitePages;
+import org.drools.grid.Grid;
+import org.drools.grid.GridPeerServiceConfiguration;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.impl.GridImpl;
+import org.drools.grid.service.directory.impl.CoreServicesWhitePagesImpl;
+
+public class CoreServicesWhitePagesConfiguration
+    implements
+    GridPeerServiceConfiguration {
+    private Map<String, GridServiceDescription> services;
+
+    public CoreServicesWhitePagesConfiguration(Map<String, GridServiceDescription> services) {
+        this.services = services;
+    }
+
+    public void configureService(Grid grid) {
+        ((GridImpl) grid).addService( CoreServicesWhitePages.class,
+                                      new CoreServicesWhitePagesImpl( this.services ) );
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,23 @@
+package org.drools.grid.service.directory.impl;
+
+import java.util.Map;
+
+import org.drools.grid.CoreServicesWhitePages;
+import org.drools.grid.GridServiceDescription;
+
+public class CoreServicesWhitePagesImpl implements CoreServicesWhitePages {
+    private Map<String, GridServiceDescription> services;
+    
+    public CoreServicesWhitePagesImpl(Map<String, GridServiceDescription> services) {
+        this.services = services;
+    }
+    
+    public Map<String, GridServiceDescription> getServices() {
+        return services;
+    }
+
+    public GridServiceDescription lookup(Class cls) {
+        return this.services.get( cls.getName() );
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionClient.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,111 @@
+package org.drools.grid.service.directory.impl;
+
+import java.net.InetSocketAddress;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.impl.CommandImpl;
+import org.drools.grid.service.directory.Address;
+
+import static org.drools.grid.service.directory.impl.WhitePagesClient.sendMessage;
+
+public class GridServiceDescriptionClient
+    implements
+    GridServiceDescription {
+    private GridServiceDescription whitePagesGsd;
+
+    private ConversationManager    conversationManager;
+
+    private GridServiceDescription detachedLocal;
+
+    public GridServiceDescriptionClient(GridServiceDescription detachedLocal,
+                                        GridServiceDescription whitePagesGsd,
+                                        ConversationManager conversationManager) {
+        this.detachedLocal = detachedLocal;
+        this.whitePagesGsd = whitePagesGsd;
+        this.conversationManager = conversationManager;
+    }
+
+    public Address addAddress(String transport) {
+        InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+        CommandImpl cmd = new CommandImpl( "GridServiceDescription.addAddress",
+                                           Arrays.asList( new Object[]{ detachedLocal.getId(), transport } ) );
+        Address address = (Address) sendMessage( this.conversationManager,
+                                                 sockets,
+                                                 whitePagesGsd.getId(),
+                                                 cmd );
+        return new AddressClient( address,
+                                  whitePagesGsd,
+                                  this.conversationManager );
+    }
+
+    public Map<String, Address> getAddresses() {
+        Map<String, Address> addresses = new HashMap<String, Address>();
+        for ( Address address : this.detachedLocal.getAddresses().values() ) {
+            addresses.put( address.getTransport(), new AddressClient( address,
+                                                                      this.whitePagesGsd,
+                                                                      this.conversationManager ) );
+        }
+        return Collections.unmodifiableMap( addresses );
+    }
+
+    public String getId() {
+        return this.detachedLocal.getId();
+    }
+
+    public Class getImplementedClass() {
+        return this.detachedLocal.getImplementedClass();
+    }
+
+    public void removeAddress(String transport) {
+        InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+        CommandImpl cmd = new CommandImpl( "GridServiceDescription.removeAddress",
+                                           Arrays.asList( new Object[]{ detachedLocal.getId(), transport } ) );
+        sendMessage( this.conversationManager,
+                     sockets,
+                     whitePagesGsd.getId(),
+                     cmd );
+    }
+
+    public void setImplementedClass(Class cls) {
+        InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+        CommandImpl cmd = new CommandImpl( "GridServiceDescription.setImplementedClass",
+                                           Arrays.asList( new Object[]{ detachedLocal.getId(), cls } ) );
+        sendMessage( this.conversationManager,
+                     sockets,
+                     whitePagesGsd.getId(),
+                     cmd );
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        //@TODO: improve equals comparision
+        final GridServiceDescription other = (GridServiceDescription) obj;
+        if (!this.getId().equals(other.getId() )) {
+            return false;
+        }
+        return true;
+    }
+
+
+    
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 47 * hash + (this.whitePagesGsd != null ? this.whitePagesGsd.hashCode() : 0);
+        hash = 47 * hash + (this.conversationManager != null ? this.conversationManager.hashCode() : 0);
+        hash = 47 * hash + (this.detachedLocal != null ? this.detachedLocal.hashCode() : 0);
+        return hash;
+    }
+
+    
+    
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionClient.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,86 @@
+package org.drools.grid.service.directory.impl;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.service.directory.Address;
+
+public class GridServiceDescriptionImpl
+    implements
+    GridServiceDescription,
+    Serializable {
+	
+    private String               id;
+
+    private Class                implementedClass;
+  
+    private Map<String, Address> addresses = new HashMap<String, Address>();
+    
+    public GridServiceDescriptionImpl() {
+    	
+    }
+
+    public GridServiceDescriptionImpl(Class cls) {
+        this( cls.getName() );
+    }
+    
+    public GridServiceDescriptionImpl(String id) {
+        this.id = id;
+    }
+
+    public String getId() {
+        return id;
+    }
+    
+    public void setId(String id) {
+    	this.id = id;
+    }
+
+    public Class getImplementedClass() {
+        return implementedClass;
+    }
+
+    public void setImplementedClass(Class implementedClass) {
+        this.implementedClass = implementedClass;
+    }
+
+    public synchronized Address addAddress(String protocol) {
+        AddressImpl address = new AddressImpl( this, protocol, null );
+        this.addresses.put( address.getTransport(),
+                            address );
+        return address;
+    }
+
+    public synchronized Map<String, Address> getAddresses() {
+        return Collections.unmodifiableMap( addresses );
+    }
+
+    public synchronized void removeAddress(String transport) {
+        this.addresses.remove( transport );
+    }
+   
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((addresses == null) ? 0 : addresses.hashCode());
+        result = prime * result + ((id == null) ? 0 : id.hashCode());
+        result = prime * result + ((implementedClass == null) ? 0 : implementedClass.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        //@TODO: improve equals comparision
+        final GridServiceDescription other = (GridServiceDescription) obj;
+        if (!this.getId().equals(other.getId() )) {
+            return false;
+        }
+        return true;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,103 @@
+package org.drools.grid.service.directory.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.service.directory.Address;
+
+public class GridServiceDescriptionJpa
+    implements
+    GridServiceDescription, Serializable {
+    private GridServiceDescription detached;
+    
+    private EntityManagerFactory   emf;
+
+    public GridServiceDescriptionJpa(GridServiceDescription detached,
+                                     EntityManagerFactory emf) {
+        this.detached = detached;
+        this.emf = emf;
+    }
+
+    public Map<String, Address> getAddresses() {
+        EntityManager em = this.emf.createEntityManager();
+        Map<String, Address> addresses = new HashMap<String, Address>();
+        for ( Address address : this.detached.getAddresses().values() ) {
+            addresses.put( address.getTransport(), new AddressJpa( address,
+                                                                   this.emf ) );
+        }
+        em.close();
+        return Collections.unmodifiableMap( addresses );
+    }
+
+    public Address addAddress(String transport) {
+        EntityManager em = this.emf.createEntityManager();
+        em.getTransaction().begin();
+        this.detached = em.find( GridServiceDescriptionImpl.class, this.detached.getId() );
+        Address address = this.detached.addAddress( transport );
+        em.getTransaction().commit();
+        em.close();
+        return new AddressJpa( address, this.emf );
+    }
+
+    public void removeAddress(String transport) {
+        EntityManager em = this.emf.createEntityManager();
+
+        em.getTransaction().begin();        
+        this.detached = em.find( GridServiceDescriptionImpl.class, this.detached.getId() );        
+        Address address = this.detached.getAddresses().get( transport );
+        this.detached.removeAddress( transport );
+        em.remove( address ); //because jpa does not automatically remove orphans
+        em.getTransaction().commit();
+        em.close();
+    }
+
+    public String getId() {
+        return this.detached.getId();
+    }
+
+    public Class getImplementedClass() {
+        return this.detached.getImplementedClass();
+    }
+
+    public void setImplementedClass(Class cls) {
+        EntityManager em = this.emf.createEntityManager();
+        em.getTransaction().begin();
+        this.detached = em.find( GridServiceDescriptionImpl.class, this.detached.getId() );
+        this.detached.setImplementedClass( cls );
+        em.getTransaction().commit();
+        em.close();
+    }
+
+    private Object readResolve() throws ObjectStreamException {
+        return this.detached;
+    }
+
+   @Override
+    public boolean equals(Object obj) {
+        //@TODO: improve equals comparision
+        final GridServiceDescription other = (GridServiceDescription) obj;
+        if (!this.getId().equals(other.getId() )) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 89 * hash + (this.detached != null ? this.detached.hashCode() : 0);
+        return hash;
+    }
+     
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/JpaWhitePages.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/JpaWhitePages.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/JpaWhitePages.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,106 @@
+package org.drools.grid.service.directory.impl;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.MessageReceiverHandlerFactoryService;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.grid.service.directory.Address;
+import org.drools.grid.service.directory.WhitePages;
+
+public class JpaWhitePages
+    implements
+    WhitePages,
+    MessageReceiverHandlerFactoryService {
+    private EntityManagerFactory emf;
+
+    public JpaWhitePages(EntityManagerFactory emf) {
+        this.emf = emf;
+    }
+
+    public GridServiceDescription create(String serviceDescriptionId) {
+        EntityManager em = emf.createEntityManager();
+        em.getTransaction().begin();
+        GridServiceDescription gsd = new GridServiceDescriptionImpl( serviceDescriptionId );
+        em.persist( gsd );
+        em.getTransaction().commit();
+        em.close();
+        return new GridServiceDescriptionJpa( gsd, emf );
+    }
+
+    public GridServiceDescription lookup(String serviceDescriptionId) {
+        GridServiceDescription gsd = this.emf.createEntityManager().find( GridServiceDescriptionImpl.class,
+                                                                          serviceDescriptionId );
+        return ( gsd == null ) ? null : new GridServiceDescriptionJpa( gsd, emf );
+    }
+
+    public void remove(String serviceDescriptionId) {
+        EntityManager em = emf.createEntityManager();
+        em.getTransaction().begin();
+        GridServiceDescription gsd = em.find( GridServiceDescriptionImpl.class, serviceDescriptionId );
+        for ( Address address :gsd.getAddresses().values() ) { // because JPA won't cascade delete to orphans
+            em.remove( address );
+        }
+        em.remove( gsd );
+        em.getTransaction().commit();
+        em.close();
+    }
+
+    public MessageReceiverHandler getMessageReceiverHandler() {
+        return new WhitePagesServer( this );
+    }
+
+    //    public GridServiceDescription create(GridServiceDescription serviceDescription) {
+    //        EntityManager em = emf.createEntityManager();
+    //        em.getTransaction().begin();
+    //        em.persist( serviceDescription );
+    //        em.getTransaction().commit();
+    //        em.close();
+    //    }
+    //
+    //    public void remove(String id) {
+    //        EntityManager em = emf.createEntityManager();
+    //        em.getTransaction().begin();
+    //        em.remove( new GridServiceDescriptionImpl( id ) );
+    //        em.getTransaction().commit();
+    //        em.close();
+    //    }
+    //
+    //    public GridServiceDescription lookup(String id) {
+    //        GridServiceDescription gsd = this.emf.createEntityManager().find( GridServiceDescriptionImpl.class, id );
+    //        return gsd;
+    //    }
+    //
+    //    public void addAddress(String id,
+    //                           Address address) {
+    //        EntityManager em = emf.createEntityManager();
+    //        
+    //        GridServiceDescriptionImpl gsd = em.find( GridServiceDescriptionImpl.class, id );
+    //        em.getTransaction().begin();
+    //        gsd.addAddress( address );
+    //        em.getTransaction().commit();
+    //        em.close();
+    //    }
+    //
+    //    public void removeAddress(String id,
+    //                              String protocol) {
+    //        EntityManager em = emf.createEntityManager();
+    //        
+    //        GridServiceDescriptionImpl gsd = em.find( GridServiceDescriptionImpl.class, id );
+    //        em.getTransaction().begin();
+    //        Address address = gsd.getAddresses().get( protocol );
+    //        gsd.removeAddress( protocol );
+    //        em.remove( address ); //because jpa does not automatically remove orphans
+    //        em.getTransaction().commit();
+    //        em.close();
+    //    }
+    //
+    //    public MessageReceiverHandler getMessageReceiverHandler() {
+    //        return new WhitePagesServer( this );
+    //    }
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/JpaWhitePages.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesClient.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,134 @@
+package org.drools.grid.service.directory.impl;
+
+import java.net.InetSocketAddress;
+import java.util.Arrays;
+
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.MessageReceiverHandlerFactoryService;
+import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.grid.io.impl.CommandImpl;
+import org.drools.grid.service.directory.Address;
+import org.drools.grid.service.directory.WhitePages;
+
+public class WhitePagesClient
+    implements
+    WhitePages,
+    MessageReceiverHandlerFactoryService {
+    private GridServiceDescription whitePagesGsd;
+
+    private ConversationManager    conversationManager;
+
+    public WhitePagesClient(GridServiceDescription gsd,
+                            ConversationManager conversationManager) {
+        this.whitePagesGsd = gsd;
+        this.conversationManager = conversationManager;
+    }
+
+    public static Object sendMessage(ConversationManager conversationManager,
+                                     InetSocketAddress[] sockets,
+                                     String id,
+                                     Object body) {
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+        Exception exception = null;
+        for ( InetSocketAddress socket : sockets ) {
+            try {
+                Conversation conv = conversationManager.startConversation( sockets[0],
+                                                                           id );
+                conv.sendMessage( body,
+                                  handler );
+                exception = null;
+            } catch ( Exception e ) {
+                exception = e;
+                conversationManager.endConversation();
+            }
+            if ( exception == null ) {
+                break;
+            }
+        }
+        if ( exception != null ) {
+            throw new RuntimeException( "Unable to send message",
+                                        exception );
+        }
+        try {
+            return handler.getMessage().getBody();
+        } finally {
+            conversationManager.endConversation();
+        }
+    }
+
+    public GridServiceDescription create(String serviceDescriptionId) {
+        InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+        CommandImpl cmd = new CommandImpl( "WhitePages.create",
+                                           Arrays.asList( new Object[]{ serviceDescriptionId } ) );
+        GridServiceDescription gsd = ( GridServiceDescription ) sendMessage( this.conversationManager,
+                     sockets,
+                     this.whitePagesGsd.getId(),
+                     cmd );
+        return new GridServiceDescriptionClient(gsd,
+                                                this.whitePagesGsd,
+                                                this.conversationManager );
+    }
+
+    public GridServiceDescription lookup(String serviceDescriptionId) {
+        InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+        CommandImpl cmd = new CommandImpl( "WhitePages.lookup",
+                                           Arrays.asList( new Object[]{ serviceDescriptionId } ) );
+        GridServiceDescription gsd = ( GridServiceDescription ) sendMessage( this.conversationManager,
+                                                                             sockets,
+                                                                             this.whitePagesGsd.getId(),
+                                                                             cmd );
+        return (gsd == null ) ? gsd : new GridServiceDescriptionClient(gsd,
+                                                                       this.whitePagesGsd,
+                                                                       this.conversationManager );
+    }
+
+    public void remove(String serviceDescriptionId) {
+        InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+        CommandImpl cmd = new CommandImpl( "WhitePages.remove",
+                                           Arrays.asList( new Object[]{ serviceDescriptionId } ) ); 
+        sendMessage( this.conversationManager,
+                     sockets,
+                     this.whitePagesGsd.getId(),
+                     cmd );        
+    }
+
+    public MessageReceiverHandler getMessageReceiverHandler() {
+        return new WhitePagesServer( this );
+    }
+
+    //    public void addAddress(String id,
+    //                           Address address) {               
+    //        InetSocketAddress[] sockets = ( InetSocketAddress[] ) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+    //        CommandImpl cmd = new CommandImpl( "addAddress", Arrays.asList( new Object[] { id, address } ) );
+    //        sendMessage( sockets, cmd );
+    //    }
+    //
+    //    public GridServiceDescription lookup(String id) {
+    //        InetSocketAddress[] sockets = ( InetSocketAddress[] ) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+    //        CommandImpl cmd = new CommandImpl( "lookup", Arrays.asList( new Object[] { id } ) );
+    //        return ( GridServiceDescription ) sendMessage( sockets, cmd );
+    //    }
+    //
+    //    public GridServiceDescription create(GridServiceDescription serviceDescription) {
+    //        InetSocketAddress[] sockets = ( InetSocketAddress[] ) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+    //        CommandImpl cmd = new CommandImpl( "register", Arrays.asList( new Object[] { serviceDescription } ) );
+    //        sendMessage( sockets, cmd );        
+    //    }
+    //
+    //    public void removeAddress(String id,
+    //                              Address address) {
+    //        InetSocketAddress[] sockets = ( InetSocketAddress[] ) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+    //        CommandImpl cmd = new CommandImpl( "removeAddress", Arrays.asList( new Object[] { id, address } ) );
+    //        sendMessage( sockets, cmd );
+    //    }
+    //
+    //    public void remove(String id) {
+    //        InetSocketAddress[] sockets = ( InetSocketAddress[] ) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+    //        CommandImpl cmd = new CommandImpl( "unregister", Arrays.asList( new Object[] { id } ) );
+    //        sendMessage( sockets, cmd );      
+    //    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesClient.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,33 @@
+package org.drools.grid.service.directory.impl;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.MessageReceiverHandlerFactoryService;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.grid.service.directory.Address;
+import org.drools.grid.service.directory.WhitePages;
+
+public class WhitePagesImpl implements WhitePages, MessageReceiverHandlerFactoryService {
+    private Map<String, GridServiceDescription> directory = new ConcurrentHashMap<String, GridServiceDescription>();
+
+    public GridServiceDescription create(String serviceDescriptionId) {
+        GridServiceDescription gsd = new GridServiceDescriptionImpl( serviceDescriptionId );
+        this.directory.put( serviceDescriptionId, gsd );
+        return gsd;
+    }
+
+    public GridServiceDescription lookup(String serviceDescriptionId) {
+        return this.directory.get( serviceDescriptionId );
+    }
+
+    public void remove(String serviceDescriptionId) {
+        this.directory.remove( serviceDescriptionId );
+    }
+
+    public MessageReceiverHandler getMessageReceiverHandler() {
+        return new WhitePagesServer( this );
+    }
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesImpl.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesLocalConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesLocalConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesLocalConfiguration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,32 @@
+/**
+ * 
+ */
+package org.drools.grid.service.directory.impl;
+
+import org.drools.grid.Grid;
+import org.drools.grid.GridPeerServiceConfiguration;
+import org.drools.grid.impl.GridImpl;
+import org.drools.grid.service.directory.WhitePages;
+
+public class WhitePagesLocalConfiguration
+    implements
+    GridPeerServiceConfiguration {
+
+    private WhitePages whitePages;
+
+    public WhitePagesLocalConfiguration() {
+
+    }
+
+    public void setWhitePages(WhitePages whitePages) {
+        this.whitePages = whitePages;
+    }
+
+    public void configureService(Grid grid) {
+        WhitePages wp = (this.whitePages != null) ? this.whitePages : new WhitePagesImpl();
+        ((GridImpl) grid).addService( WhitePages.class,
+                                      wp );
+
+    }
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesLocalConfiguration.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesPeeredConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesPeeredConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesPeeredConfiguration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,15 @@
+/**
+ * 
+ */
+package org.drools.grid.service.directory.impl;
+
+import org.drools.grid.Grid;
+import org.drools.grid.GridPeerServiceConfiguration;
+
+public class WhitePagesPeeredConfiguration
+    implements
+    GridPeerServiceConfiguration {
+    public void configureService(Grid grid) {
+
+    }
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesPeeredConfiguration.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesRemoteConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesRemoteConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesRemoteConfiguration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,32 @@
+/**
+ * 
+ */
+package org.drools.grid.service.directory.impl;
+
+import org.drools.grid.CoreServicesWhitePages;
+import org.drools.grid.Grid;
+import org.drools.grid.GridPeerServiceConfiguration;
+import org.drools.grid.impl.GridImpl;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.service.directory.WhitePages;
+
+public class WhitePagesRemoteConfiguration
+    implements
+    GridPeerServiceConfiguration {
+    ConversationManager cm;
+
+    public WhitePagesRemoteConfiguration(ConversationManager cm) {
+        this.cm = cm;
+    }
+
+    public void configureService(Grid grid) {
+        CoreServicesWhitePagesImpl coreServices = (CoreServicesWhitePagesImpl) grid.get( CoreServicesWhitePages.class );
+
+        GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServices.lookup( WhitePages.class );
+
+        WhitePages wp = new WhitePagesClient( gsd,
+                                              cm );
+        ((GridImpl) grid).addService( WhitePages.class,
+                                      wp );
+    }
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesRemoteConfiguration.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesServer.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesServer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesServer.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,136 @@
+package org.drools.grid.service.directory.impl;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.collections.map.HashedMap;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.IoWriter;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.grid.io.impl.CommandImpl;
+import org.drools.grid.service.directory.Address;
+import org.drools.grid.service.directory.WhitePages;
+
+public class WhitePagesServer
+    implements
+    MessageReceiverHandler {
+    private WhitePages whitePages;
+
+    public WhitePagesServer(WhitePages whitePages) {
+        this.whitePages = whitePages;
+    }
+
+    public void messageReceived(Conversation conversation,
+                                Message msg) {
+        final CommandImpl cmd = (CommandImpl) msg.getBody();
+        this.execs.get( cmd.getName() ).execute( whitePages,
+                                                 conversation,
+                                                 msg,
+                                                 cmd );
+    }
+
+    private Map<String, Exec> execs = new HashMap<String, Exec>() {
+                                        {
+                                            put( "WhitePages.create",
+                                                 new Exec() {
+                                                     public void execute(Object object,
+                                                                         Conversation con,
+                                                                         Message msg,
+                                                                         CommandImpl cmd) {
+                                                         WhitePages whitePages = (WhitePages) object;
+                                                         final List list = cmd.getArguments();
+                                                         GridServiceDescription gsd = whitePages.create( (String) list.get( 0 ) );
+                                                         con.respond( gsd );
+                                                     }
+                                                 } );
+                                            put( "WhitePages.remove",
+                                                 new Exec() {
+                                                     public void execute(Object object,
+                                                                         Conversation con,
+                                                                         Message msg,
+                                                                         CommandImpl cmd) {
+                                                         WhitePages whitePages = (WhitePages) object;
+                                                         final List list = cmd.getArguments();
+                                                         whitePages.remove( (String) list.get( 0 ) );
+                                                         con.respond( null );
+                                                     }
+                                                 } );
+                                            put( "WhitePages.lookup",
+                                                 new Exec() {
+                                                     public void execute(Object object,
+                                                                         Conversation con,
+                                                                         Message msg,
+                                                                         CommandImpl cmd) {
+                                                         WhitePages whitePages = (WhitePages) object;
+                                                         final List list = cmd.getArguments();
+                                                         GridServiceDescription gsd = whitePages.lookup( (String) list.get( 0 ) );
+                                                         con.respond( gsd );
+                                                     }
+                                                 } );
+                                            put( "GridServiceDescription.addAddress",
+                                                 new Exec() {
+                                                     public void execute(Object object,
+                                                                         Conversation con,
+                                                                         Message msg,
+                                                                         CommandImpl cmd) {
+                                                         WhitePages whitePages = (WhitePages) object;
+                                                         final List list = cmd.getArguments();
+                                                         GridServiceDescription gsd = whitePages.lookup( (String) list.get( 0 ) );
+                                                         Address address = gsd.addAddress( (String) list.get( 1 ) );
+                                                         con.respond( address );
+                                                     }
+                                                 } );
+                                            put( "GridServiceDescription.removeAddress",
+                                                 new Exec() {
+                                                     public void execute(Object object,
+                                                                         Conversation con,
+                                                                         Message msg,
+                                                                         CommandImpl cmd) {
+                                                         WhitePages whitePages = (WhitePages) object;
+                                                         final List list = cmd.getArguments();
+                                                         GridServiceDescription gsd = whitePages.lookup( (String) list.get( 0 ) );
+                                                         gsd.removeAddress( (String) list.get( 1 ) );
+                                                         con.respond( null );
+                                                     }
+                                                 } );
+                                            put( "GridServiceDescription.setImplementedClass",
+                                                 new Exec() {
+                                                     public void execute(Object object,
+                                                                         Conversation con,
+                                                                         Message msg,
+                                                                         CommandImpl cmd) {
+                                                         WhitePages whitePages = (WhitePages) object;
+                                                         final List list = cmd.getArguments();
+                                                         GridServiceDescription gsd = whitePages.lookup( (String) list.get( 0 ) );
+                                                         gsd.setImplementedClass( (Class) list.get( 1 ) );
+                                                         con.respond( null );
+                                                     }
+                                                 } );
+                                            put( "Address.setObject",
+                                                 new Exec() {
+                                                     public void execute(Object object,
+                                                                         Conversation con,
+                                                                         Message msg,
+                                                                         CommandImpl cmd) {
+                                                         WhitePages whitePages = (WhitePages) object;
+                                                         final List list = cmd.getArguments();
+                                                         GridServiceDescription gsd = whitePages.lookup( (String) list.get( 0 ) );
+                                                         Address address = gsd.getAddresses().get( (String) list.get( 1 ) );
+                                                         address.setObject( list.get( 2 ) );
+                                                         con.respond( null );
+                                                     }
+                                                 } );
+                                        }
+                                    };
+
+    public static interface Exec {
+        void execute(Object object,
+                     Conversation con,
+                     Message msg,
+                     CommandImpl cmd);
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesServer.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesSocketConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesSocketConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesSocketConfiguration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,54 @@
+/**
+ * 
+ */
+package org.drools.grid.service.directory.impl;
+
+import java.net.InetSocketAddress;
+
+import org.drools.grid.CoreServicesWhitePages;
+import org.drools.grid.Grid;
+import org.drools.grid.GridPeerServiceConfiguration;
+import org.drools.grid.MessageReceiverHandlerFactoryService;
+import org.drools.grid.MultiplexSocketService;
+import org.drools.grid.service.directory.Address;
+import org.drools.grid.service.directory.WhitePages;
+
+public class WhitePagesSocketConfiguration
+implements
+GridPeerServiceConfiguration {
+    private int port = -1;
+    
+    public WhitePagesSocketConfiguration(int port) {
+        this.port = port;
+    }
+
+    public int getPort() {
+        return port;
+    }
+    
+    public void configureService(Grid grid) {
+        WhitePages wp = grid.get( WhitePages.class );
+
+        if ( port != -1 ) {
+            CoreServicesWhitePagesImpl coreServices = (CoreServicesWhitePagesImpl) grid.get( CoreServicesWhitePages.class );
+
+            GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServices.lookup( WhitePages.class );
+            if ( gsd == null ) {
+                gsd = new GridServiceDescriptionImpl( WhitePages.class );
+            }
+
+            MultiplexSocketService mss = grid.get( MultiplexSocketService.class );
+
+            Address address = gsd.addAddress( "socket" );
+            address.setObject(  new InetSocketAddress[]{ new InetSocketAddress( mss.getIp(),
+                                                         this.port ) } );
+
+            coreServices.getServices().put( WhitePages.class.getName(),
+                                            gsd );
+
+            mss.addService( this.port,
+                            WhitePages.class.getName(),
+                            ((MessageReceiverHandlerFactoryService) wp).getMessageReceiverHandler() );
+        }
+    }
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesSocketConfiguration.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/CoreServicesScheduler.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/CoreServicesScheduler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/CoreServicesScheduler.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.timer;
+
+import org.drools.grid.timer.impl.ScheduledJob;
+
+/**
+ *
+ * @author salaboy
+ */
+
+
+public interface CoreServicesScheduler {
+    public void scheduleJob(ScheduledJob job);
+    
+}

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/Scheduler.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/Scheduler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/Scheduler.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.timer;
+
+import org.drools.grid.timer.impl.ScheduledJob;
+
+
+
+
+/**
+ *
+ * @author salaboy
+ */
+public interface Scheduler {
+    public void scheduleJob(ScheduledJob job);
+    public void removeJob(String jobId);
+    
+}

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/CoreServicesSchedulerConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/CoreServicesSchedulerConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/CoreServicesSchedulerConfiguration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,27 @@
+/**
+ * 
+ */
+package org.drools.grid.timer.impl;
+
+
+import java.util.Map;
+import org.drools.grid.Grid;
+import org.drools.grid.GridPeerServiceConfiguration;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.impl.GridImpl;
+import org.drools.grid.timer.CoreServicesScheduler;
+
+public class CoreServicesSchedulerConfiguration
+    implements
+    GridPeerServiceConfiguration {
+    private Map<String, GridServiceDescription> services;
+
+    public CoreServicesSchedulerConfiguration(Map<String, GridServiceDescription> services) {
+        this.services = services;
+    }
+
+    public void configureService(Grid grid) {
+        ((GridImpl) grid).addService( CoreServicesScheduler.class,
+                                      new CoreServicesSchedulerImpl( new SchedulerImpl(grid) ) );
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/CoreServicesSchedulerImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/CoreServicesSchedulerImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/CoreServicesSchedulerImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.timer.impl;
+
+import org.drools.grid.timer.CoreServicesScheduler;
+import org.drools.grid.timer.Scheduler;
+
+/**
+ *
+ * @author salaboy
+ */
+public class CoreServicesSchedulerImpl implements CoreServicesScheduler {
+
+    
+    private Scheduler scheduler;
+    
+    
+    public CoreServicesSchedulerImpl(Scheduler scheduler) {
+        this.scheduler = scheduler;
+    }
+
+    public void scheduleJob(ScheduledJob job) {
+        this.scheduler.scheduleJob(job);
+    }
+
+}

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/ScheduledJob.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/ScheduledJob.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/ScheduledJob.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,126 @@
+/**
+ * 
+ */
+package org.drools.grid.timer.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.UUID;
+
+import org.drools.time.Job;
+import org.drools.time.JobContext;
+import org.drools.time.JobHandle;
+import org.drools.time.Trigger;
+
+public class ScheduledJob implements Externalizable {
+    private static final long serialVersionUID = 510l;
+
+    private String            id;
+    private UuidJobHandle     jobHandle;
+    private Class             jobClass;
+    private Serializable      trigger;
+    private Date              nextFireTime;
+    private ScheduledJobConfiguration configuration;
+    private Serializable      ctx;
+    
+    public ScheduledJob() {
+        
+    }
+
+    
+    public ScheduledJob(UuidJobHandle jobHandle,
+                        final Job job,
+                        final JobContext context,
+                        final Trigger trigger) {
+        this.jobHandle = jobHandle;
+        this.id = jobHandle.getUuid().toString();
+        this.jobClass = job.getClass();
+        this.ctx = (Serializable) context;
+        this.trigger = (Serializable) trigger;
+        this.nextFireTime = trigger.hasNextFireTime();
+        
+    }
+    /**
+     * @param jhandle 
+     * @param timestamp
+     * @param behavior
+     * @param behaviorContext 
+     */
+    public ScheduledJob(UuidJobHandle jobHandle,
+                        final Job job,
+                        final JobContext context,
+                        final Trigger trigger,
+                        final ScheduledJobConfiguration conf) {
+        this(jobHandle, job, context, trigger);
+        this.configuration = conf;
+    }
+
+    public JobHandle getJobHandle() {
+        if ( this.jobHandle == null ) {
+            // it's transient on persistence, so restore on demand
+            this.jobHandle = new UuidJobHandle( UUID.fromString( this.id ));
+        }
+        return this.jobHandle;
+    }
+
+    public Job getJob() {
+        try {
+            return (Job) jobClass.newInstance();
+        } catch ( Exception e ) {
+            throw new RuntimeException( e );
+        }
+    }
+    
+    public String getId() {
+        return this.id;
+    }
+    
+    public Date getNextFireTime() {
+        return this.nextFireTime;
+    }
+
+    public Trigger getTrigger() {
+        return (Trigger) trigger;
+    }
+
+    public JobContext getJobContext() {
+        return (JobContext) ctx;
+    }
+
+    public ScheduledJobConfiguration getConfiguration() {
+        return configuration;
+    }
+
+    public void setConfiguration(ScheduledJobConfiguration configuration) {
+        this.configuration = configuration;
+    }
+    
+    
+
+    public String toString() {
+        return "ScheduledJob( job=" + jobClass.getName() + " trigger=" + trigger + " context=" + ctx + " )";
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeUTF( this.id );
+        out.writeUTF( this.jobClass.getCanonicalName() );
+        out.writeObject( this.trigger );
+        out.writeLong( this.nextFireTime.getTime() );
+        out.writeObject( this.ctx );
+    }
+    
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        this.id = in.readUTF();
+        this.jobClass = ( Class ) Class.forName(in.readUTF());
+        this.trigger = ( Serializable ) in.readObject();
+        this.nextFireTime = new Date( in.readLong() );
+        this.ctx = ( Serializable ) in.readObject();
+    }
+
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/ScheduledJobConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/ScheduledJobConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/ScheduledJobConfiguration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.timer.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+/**
+ *
+ * @author salaboy
+ */
+public class ScheduledJobConfiguration implements Externalizable {
+    private int redundancy = 1;
+
+    public ScheduledJobConfiguration(int redundancy) {
+        this.redundancy = redundancy;
+    }
+
+    public int getRedundancy() {
+        return redundancy;
+    }
+
+    public void setRedundancy(int redundancy) {
+        this.redundancy = redundancy;
+    }
+    
+    
+    
+    public void writeExternal(ObjectOutput out) throws IOException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.timer.impl;
+
+import java.net.InetSocketAddress;
+import java.util.Arrays;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.MessageReceiverHandlerFactoryService;
+import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.grid.io.impl.CommandImpl;
+import org.drools.grid.service.directory.Address;
+import org.drools.grid.timer.Scheduler;
+
+/**
+ *
+ * @author salaboy
+ */
+public class SchedulerClient implements Scheduler,
+    MessageReceiverHandlerFactoryService{
+
+    private GridServiceDescription schedulerGsd;
+
+    private ConversationManager    conversationManager;
+
+    public SchedulerClient(GridServiceDescription schedulerGsd, ConversationManager conversationManager) {
+        this.schedulerGsd = schedulerGsd;
+        this.conversationManager = conversationManager;
+    }
+    
+    
+    
+    public void scheduleJob(ScheduledJob job) {
+        InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) schedulerGsd.getAddresses().get( "socket" )).getObject();
+        CommandImpl cmd = new CommandImpl( "Scheduler.scheduleJob",
+                                           Arrays.asList( new Object[]{ job } ) ); 
+        sendMessage( this.conversationManager,
+                     sockets,
+                     this.schedulerGsd.getId(),
+                     cmd );        
+    }
+
+    public void removeJob(String jobId) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+    
+    public static Object sendMessage(ConversationManager conversationManager,
+                                     InetSocketAddress[] sockets,
+                                     String id,
+                                     Object body) {
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+        Exception exception = null;
+        for ( InetSocketAddress socket : sockets ) {
+            try {
+                Conversation conv = conversationManager.startConversation( sockets[0],
+                                                                           id );
+                conv.sendMessage( body,
+                                  handler );
+                exception = null;
+            } catch ( Exception e ) {
+                exception = e;
+                conversationManager.endConversation();
+            }
+            if ( exception == null ) {
+                break;
+            }
+        }
+        if ( exception != null ) {
+            throw new RuntimeException( "Unable to send message",
+                                        exception );
+        }
+        try {
+            return handler.getMessage().getBody();
+        } finally {
+            conversationManager.endConversation();
+        }
+    }
+
+
+    public MessageReceiverHandler getMessageReceiverHandler() {
+        return new SchedulerServer( this );
+    }
+
+}

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerImpl.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.timer.impl;
+
+import java.util.Map;
+import org.drools.grid.CoreServicesWhitePages;
+import org.drools.grid.Grid;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.MessageReceiverHandlerFactoryService;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.grid.service.directory.impl.CoreServicesWhitePagesImpl;
+import org.drools.grid.timer.Scheduler;
+import org.drools.time.TimerService;
+import org.drools.time.impl.JDKTimerService;
+
+/**
+ *
+ * @author salaboy
+ */
+public class SchedulerImpl implements Scheduler, MessageReceiverHandlerFactoryService{
+    private TimerService timer =  new JDKTimerService();
+    private Grid grid; 
+    
+    public SchedulerImpl(Grid grid){
+        this.grid = grid;
+    }
+    
+    public void scheduleJob(ScheduledJob job) {
+      //  if(job.getConfiguration().getRedundancy() == 1){
+            timer.scheduleJob(job.getJob(), job.getJobContext(), job.getTrigger());
+        
+//        }else if(job.getConfiguration().getRedundancy() > 1){
+//           CoreServicesWhitePagesImpl coreWhitePages = (CoreServicesWhitePagesImpl)grid.get(CoreServicesWhitePages.class);
+//           Map<String, GridServiceDescription> services = coreWhitePages.getServices();
+//           services.get(Scheduler)
+//        }
+        
+    }
+
+    public void removeJob(String jobId) {
+        
+    }
+
+    public MessageReceiverHandler getMessageReceiverHandler() {
+        return new SchedulerServer(this);
+    }
+    
+    
+   
+    
+    
+    
+    
+}

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerLocalConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerLocalConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerLocalConfiguration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,32 @@
+/**
+ * 
+ */
+package org.drools.grid.timer.impl;
+
+import org.drools.grid.Grid;
+import org.drools.grid.GridPeerServiceConfiguration;
+import org.drools.grid.impl.GridImpl;
+import org.drools.grid.timer.Scheduler;
+
+public class SchedulerLocalConfiguration
+    implements
+    GridPeerServiceConfiguration {
+
+    private Scheduler scheduler;
+
+    public SchedulerLocalConfiguration() {
+
+    }
+
+    public void setScheduler(Scheduler scheduler) {
+        this.scheduler = scheduler;
+    }
+
+    public void configureService(Grid grid) {
+        Scheduler sched = (this.scheduler != null) ? this.scheduler : new SchedulerImpl(grid);
+        ((GridImpl) grid).addService( Scheduler.class,
+                                      sched );
+
+    }
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerRemoteConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerRemoteConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerRemoteConfiguration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,34 @@
+/**
+ * 
+ */
+package org.drools.grid.timer.impl;
+
+import org.drools.grid.CoreServicesWhitePages;
+import org.drools.grid.service.directory.impl.*;
+import org.drools.grid.Grid;
+import org.drools.grid.GridPeerServiceConfiguration;
+import org.drools.grid.impl.GridImpl;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.timer.Scheduler;
+
+public class SchedulerRemoteConfiguration
+    implements
+    GridPeerServiceConfiguration {
+    ConversationManager cm;
+
+    public SchedulerRemoteConfiguration(ConversationManager cm) {
+        this.cm = cm;
+    }
+
+    public void configureService(Grid grid) {
+        CoreServicesWhitePagesImpl coreServices = (CoreServicesWhitePagesImpl) grid.get( CoreServicesWhitePages.class );
+
+        GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServices.lookup( Scheduler.class );
+
+        Scheduler scheduler = new SchedulerClient( gsd, 
+                                              cm );
+        ((GridImpl) grid).addService( Scheduler.class,
+                                      scheduler );
+        
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerServer.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerServer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerServer.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.timer.impl;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.grid.io.impl.CommandImpl;
+import org.drools.grid.timer.Scheduler;
+
+/**
+ *
+ * @author salaboy
+ */
+public class SchedulerServer implements
+    MessageReceiverHandler{
+    private Scheduler scheduler = null; 
+
+    public SchedulerServer(Scheduler scheduler) {
+        this.scheduler = scheduler;
+    }
+    
+    public void messageReceived(Conversation conversation, Message msg) {
+        final CommandImpl cmd = (CommandImpl) msg.getBody();
+        this.execs.get( cmd.getName() ).execute( scheduler,
+                                                 conversation,
+                                                 msg,
+                                                 cmd );
+    }
+    
+    private Map<String, Exec> execs = new HashMap<String, Exec>() {
+                                        {
+                                            put( "Scheduler.scheduleJob",
+                                                 new Exec() {
+                                                     public void execute(Object object,
+                                                                         Conversation con,
+                                                                         Message msg,
+                                                                         CommandImpl cmd) {
+                                                         Scheduler scheduler = (Scheduler) object;
+                                                         final List list = cmd.getArguments();
+                                                         scheduler.scheduleJob((ScheduledJob)list.get(0));
+                                                         con.respond( true );
+                                                     }
+                                                 } );
+                                        }
+                                    };
+
+    public static interface Exec {
+        void execute(Object object,
+                     Conversation con,
+                     Message msg,
+                     CommandImpl cmd);
+    }
+
+
+}

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,57 @@
+/**
+ * 
+ */
+package org.drools.grid.timer.impl;
+
+import org.drools.grid.service.directory.impl.*;
+import java.net.InetSocketAddress;
+import org.drools.grid.CoreServicesWhitePages;
+
+import org.drools.grid.Grid;
+import org.drools.grid.GridPeerServiceConfiguration;
+import org.drools.grid.MessageReceiverHandlerFactoryService;
+import org.drools.grid.MultiplexSocketService;
+import org.drools.grid.service.directory.Address;
+import org.drools.grid.service.directory.WhitePages;
+import org.drools.grid.timer.CoreServicesScheduler;
+import org.drools.grid.timer.Scheduler;
+
+public class SchedulerSocketConfiguration
+implements
+GridPeerServiceConfiguration {
+    private int port = -1;
+    
+    public SchedulerSocketConfiguration(int port) {
+        this.port = port;
+    }
+
+    public int getPort() {
+        return port;
+    }
+    
+    public void configureService(Grid grid) {
+        Scheduler sched = grid.get( Scheduler.class );
+
+        if ( port != -1 ) {
+            CoreServicesWhitePagesImpl coreServicesWP = (CoreServicesWhitePagesImpl) grid.get( CoreServicesWhitePages.class );
+
+            GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServicesWP.lookup(Scheduler.class);
+            if ( gsd == null ) {
+                gsd = new GridServiceDescriptionImpl( Scheduler.class );
+            }
+
+            MultiplexSocketService mss = grid.get( MultiplexSocketService.class );
+
+            Address address = gsd.addAddress( "socket" );
+            address.setObject(  new InetSocketAddress[]{ new InetSocketAddress( mss.getIp(),
+                                                         this.port ) } );
+
+            coreServicesWP.getServices().put( Scheduler.class.getName(),
+                                            gsd );
+
+            mss.addService( this.port,
+                            Scheduler.class.getName(),
+                            ((MessageReceiverHandlerFactoryService) sched   ).getMessageReceiverHandler() );
+        }
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/UuidJobHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/UuidJobHandle.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/UuidJobHandle.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,46 @@
+/**
+ * 
+ */
+package org.drools.grid.timer.impl;
+
+import java.util.UUID;
+
+import org.drools.time.JobHandle;
+
+public class UuidJobHandle
+    implements
+    JobHandle {
+    private UUID uuid;
+
+    public UuidJobHandle() {
+        this.uuid = UUID.randomUUID();
+    }
+    
+    public UuidJobHandle(UUID uuid) {
+        this.uuid = uuid;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((uuid == null) ? 0 : uuid.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( getClass() != obj.getClass() ) return false;
+        UuidJobHandle other = (UuidJobHandle) obj;
+        if ( uuid == null ) {
+            if ( other.uuid != null ) return false;
+        } else if ( !uuid.equals( other.uuid ) ) return false;
+        return true;
+    }
+    
+    public UUID getUuid() {
+        return this.uuid;
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/GridTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/GridTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/GridTest.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,25 @@
+package org.drools.grid;
+
+import junit.framework.TestCase;
+
+import org.drools.grid.impl.GridImpl;
+import org.drools.grid.service.directory.WhitePages;
+
+public class GridTest extends TestCase {
+    public void testNodeCreationAndWhitePagesRegistration() {
+        
+        // GridConnectionService.getGrid()
+        
+//        Grid grid = new GridImpl();
+//
+//        GridNode gnode = grid.createGridNode( "test1 at domain.com" );
+//
+//        WhitePages pages = grid.get( WhitePages.class );
+//        GridServiceDescription serviceDescription = pages.lookup( "test1 at domain.com" );
+//
+//        GridNodeConnection connection = grid.getGridNodeConnection( serviceDescription );
+//        connection.connect();
+//        assertSame( gnode,
+//                    connection.getGridNode() );
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/GridTest.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/HazelCastTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/HazelCastTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/HazelCastTest.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,28 @@
+package org.drools.grid;
+
+import junit.framework.TestCase;
+
+import com.hazelcast.config.Config;
+import com.hazelcast.config.XmlConfigBuilder;
+import com.hazelcast.core.Hazelcast;
+import com.hazelcast.core.HazelcastInstance;
+
+public class HazelCastTest extends TestCase {
+    public void test1() {
+        Config c1 = new XmlConfigBuilder().build();
+//        c1.setPortAutoIncrement(false);
+//        c1.setPort(5709);
+
+        
+        HazelcastInstance hci1 = Hazelcast.newHazelcastInstance( null );
+        //hci1.
+        System.out.println( hci1.getConfig().getPort() );
+        
+        Config c2 = new XmlConfigBuilder().build();
+//        c2.setPortAutoIncrement(false);
+//        c2.setPort(5710);
+        HazelcastInstance hci2 = Hazelcast.newHazelcastInstance( null );
+        System.out.println( hci2.getConfig().getPort() );
+        //System.out.println( hci1.getConfig().get);
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/HazelCastTest.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/local/LocalGridNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/local/LocalGridNodeTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/local/LocalGridNodeTest.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,115 @@
+package org.drools.grid.local;
+
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.UnknownHostException;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.grid.Grid;
+import org.drools.grid.GridNode;
+import org.drools.grid.GridNodeConnection;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.impl.GridImpl;
+import org.drools.grid.impl.GridNodeImpl;
+import org.drools.grid.service.directory.Address;
+import org.drools.grid.service.directory.WhitePages;
+import org.drools.grid.service.directory.impl.AddressImpl;
+
+public class LocalGridNodeTest extends TestCase { 
+    
+    public void test(){
+    
+    }
+//    public void testConnectWithId() {
+//        GridNodeConnection connection = new LocalGridConnection( "test-id" );
+//        GridNode gnode = connection.getGridNode();
+//        assertNotNull( gnode );
+//    }
+//
+//    public void testConnectWithGivenGridNode() {
+//        GridNode gnode = new GridNodeImpl();
+//        GridNodeConnection connection = new LocalGridConnection( gnode );
+//        assertSame( gnode,
+//                    connection.getGridNode() );
+//    }
+//
+//    public void testGetFactoryService() {
+//        GridNodeConnection connection = new LocalGridConnection( "test-id" );
+//        GridNode gnode = connection.getGridNode();
+//        KnowledgeBuilderFactoryService kbfService = gnode.get( KnowledgeBuilderFactoryService.class );
+//        assertNotNull( kbfService );
+//    }
+//
+//    public void testSetObject() {
+//        GridNodeConnection connection = new LocalGridConnection( "test-id" );
+//        GridNode gnode = connection.getGridNode();
+//
+//        KnowledgeBaseFactoryService kbfService = gnode.get( KnowledgeBaseFactoryService.class );
+//        KnowledgeBase kbase = kbfService.newKnowledgeBase();
+//        gnode.set( "id1",
+//                   kbase );
+//        assertSame( kbase,
+//                    gnode.get( "id1",
+//                               KnowledgeBase.class ) );
+//    }
+//
+//    public void testNodeCreationAndWhitePagesRegistration() {
+//        Grid grid = new GridImpl();
+//
+//        GridNode gnode = grid.createGridNode( "test1 at domain.com" );
+//
+//        WhitePages pages = grid.get( WhitePages.class );
+//        GridServiceDescription serviceDescription = pages.lookup( "test1 at domain.com" );
+//
+//        GridNodeConnection connection = grid.getGridNodeConnection( serviceDescription );
+//        connection.connect();
+//        assertSame( gnode,
+//                    connection.getGridNode() );
+//    }
+//
+//    public void testWhitePagesAddRemoveAddresss() {
+//        Grid grid = new GridImpl();
+//
+//        GridNode gnode = grid.createGridNode( "test1 at domain.com" );
+//        assertNotNull( gnode );
+//
+//        WhitePages pages = grid.get( WhitePages.class );
+//        GridServiceDescription serviceDescription = pages.lookup( "test1 at domain.com" );
+//
+//        assertEquals( 0,
+//                      serviceDescription.getAddresses().size() );
+//
+//        Address address = new AddressImpl( "test1 at domain.com",
+//                                           "socket",
+//                                           new InetSocketAddress( getLocalAddress(),
+//                                                                  9201 ) );
+//        pages.addAddress( "test1 at domain.com",
+//                          address );
+//
+//        assertEquals( 1,
+//                      serviceDescription.getAddresses().size() );
+//        assertSame( address,
+//                    serviceDescription.getAddresses().get( "socket" ) );
+//
+//        pages.removeAddress( "test1 at domain.com",
+//                             address );
+//        assertEquals( 0,
+//                      serviceDescription.getAddresses().size() );
+//
+//    }
+//
+//    private InetAddress getLocalAddress() {
+//        try {
+//            return InetAddress.getLocalHost();
+//        } catch ( UnknownHostException e ) {
+//            throw new RuntimeException( "Unable to lookup local address",
+//                                        e );
+//        }
+//
+//    }
+
+}

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/DistributedSchedulerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/DistributedSchedulerTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/DistributedSchedulerTest.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,336 @@
+package org.drools.grid.time.impl;
+
+import java.io.Serializable;
+import org.drools.grid.timer.impl.UuidJobHandle;
+import org.drools.grid.timer.impl.ScheduledJob;
+import java.net.InetSocketAddress;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.drools.SystemEventListener;
+import org.drools.SystemEventListenerFactory;
+import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
+import org.drools.grid.io.Acceptor;
+import org.drools.grid.io.Connector;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.grid.io.impl.ConversationManagerImpl;
+import org.drools.grid.remote.mina.MinaAcceptor;
+import org.drools.grid.remote.mina.MinaConnector;
+import org.drools.time.Job;
+import org.drools.time.JobContext;
+import org.drools.time.JobHandle;
+import org.drools.time.TimerService;
+import org.drools.time.Trigger;
+
+import junit.framework.TestCase;
+import org.drools.grid.GridPeerConfiguration;
+import org.drools.grid.GridPeerServiceConfiguration;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.MultiplexSocketService;
+import org.drools.grid.impl.GridImpl;
+import org.drools.grid.impl.MultiplexSocketServerImpl;
+import org.drools.grid.io.impl.MultiplexSocketServiceCongifuration;
+import org.drools.grid.remote.mina.MinaAcceptorFactoryService;
+import org.drools.grid.service.directory.impl.CoreServicesWhitePagesConfiguration;
+import org.drools.grid.service.directory.impl.WhitePagesLocalConfiguration;
+import org.drools.grid.service.directory.impl.WhitePagesRemoteConfiguration;
+import org.drools.grid.service.directory.impl.WhitePagesSocketConfiguration;
+import org.drools.grid.timer.Scheduler;
+import org.drools.grid.timer.impl.CoreServicesSchedulerConfiguration;
+import org.drools.grid.timer.impl.SchedulerImpl;
+import org.drools.grid.timer.impl.SchedulerLocalConfiguration;
+import org.drools.grid.timer.impl.SchedulerRemoteConfiguration;
+import org.drools.grid.timer.impl.SchedulerSocketConfiguration;
+
+public class DistributedSchedulerTest extends TestCase {
+
+    private Acceptor acc = new MinaAcceptor();
+    private SystemEventListener l = SystemEventListenerFactory.getSystemEventListener();
+
+    @Override
+    public void setUp() {
+    }
+
+    @Override
+    public void tearDown() {
+    }
+
+    public void test1() throws Exception {
+
+
+
+        MessageReceiverHandler accHandler = new MessageReceiverHandler() {
+
+            private String id;
+            private AtomicLong counter = new AtomicLong();
+
+            public void messageReceived(Conversation conversation,
+                    Message msgIn) {
+                conversation.respond("echo: " + msgIn.getBody());
+            }
+        };
+
+        acc.open(new InetSocketAddress("127.0.0.1",
+                5012),
+                accHandler,
+                l);
+
+
+        Connector conn = new MinaConnector();
+
+        ConversationManager cm = new ConversationManagerImpl("s1",
+                conn,
+                l);
+
+        Conversation cv = cm.startConversation(new InetSocketAddress("127.0.0.1",
+                5012),
+                "r1");
+
+        BlockingMessageResponseHandler blockHandler = new BlockingMessageResponseHandler();
+
+        cv.sendMessage("hello",
+                blockHandler);
+
+        Message msg = blockHandler.getMessage(5000);
+        System.out.println(msg.getBody());
+        conn.close();
+        acc.close();
+    }
+
+    public void testDistributedJobSchedullingLocal() {
+
+        GridImpl grid = new GridImpl(new ConcurrentHashMap<String, Object>());
+        grid.addService(Scheduler.class, new SchedulerImpl(grid));
+
+        Scheduler scheduler = grid.get(Scheduler.class);
+
+        UuidJobHandle handle = new UuidJobHandle();
+        ScheduledJob sj1 = new ScheduledJob(handle, new MockJob(), new MockJobContext("xxx"), new MockTrigger(new Date(1000)));
+        ScheduledJob sj2 = new ScheduledJob(handle, new MockJob(), new MockJobContext("xxx"), new MockTrigger(new Date(1000)));
+
+        scheduler.scheduleJob(sj1);
+
+
+
+    }
+
+    public void testDistributedJobSchedulingRemote() {
+        //Core services Map Definition
+        Map<String, GridServiceDescription> coreServicesMap = new HashMap<String, GridServiceDescription>();//Hazelcast.newHazelcastInstance( null ).getMap( CoreServicesWhitePages.class.getName() );
+        //SystemEvent Listener
+        SystemEventListener l = SystemEventListenerFactory.getSystemEventListener();
+
+
+        //Grid View 
+        GridImpl grid = new GridImpl(new ConcurrentHashMap<String, Object>());
+
+        //Local Grid Configuration, for our client
+        GridPeerConfiguration conf = new GridPeerConfiguration();
+
+        //Configuring the Core Services White Pages
+        GridPeerServiceConfiguration coreSeviceWPConf = new CoreServicesWhitePagesConfiguration(coreServicesMap);
+        conf.addConfiguration(coreSeviceWPConf);
+
+        //Configuring the Core Services Scheduler
+        GridPeerServiceConfiguration coreSeviceSchedulerConf = new CoreServicesSchedulerConfiguration(coreServicesMap);
+        conf.addConfiguration(coreSeviceSchedulerConf);
+
+        
+        GridPeerServiceConfiguration socketConf = new MultiplexSocketServiceCongifuration(new MultiplexSocketServerImpl("127.0.0.1",
+                new MinaAcceptorFactoryService(),
+                l));
+        conf.addConfiguration(socketConf);
+
+        GridPeerServiceConfiguration wplConf = new WhitePagesLocalConfiguration();
+        conf.addConfiguration(wplConf);
+
+        GridPeerServiceConfiguration wpsc = new WhitePagesSocketConfiguration(5012);
+        conf.addConfiguration(wpsc);
+
+
+        //Create a Local Scheduler
+        GridPeerServiceConfiguration schlConf = new SchedulerLocalConfiguration();
+        conf.addConfiguration(schlConf);
+
+        //Expose it to the Grid so it can be accesed by different nodes
+        // I need to use the same port to reuse the service multiplexer
+        GridPeerServiceConfiguration schlsc = new SchedulerSocketConfiguration(5012);
+        conf.addConfiguration(schlsc);
+
+        conf.configure(grid);
+
+
+
+        GridImpl grid2 = new GridImpl(new ConcurrentHashMap<String, Object>());
+        conf = new GridPeerConfiguration();
+
+        coreSeviceWPConf = new CoreServicesWhitePagesConfiguration(coreServicesMap);
+        conf.addConfiguration(coreSeviceWPConf);
+
+        Connector conn = new MinaConnector();
+
+        ConversationManager cm = new ConversationManagerImpl("s1",
+                conn,
+                l);
+
+        GridPeerServiceConfiguration wprConf = new WhitePagesRemoteConfiguration(cm);
+        conf.addConfiguration(wprConf);
+
+        GridPeerServiceConfiguration schedRemoteClientConf = new SchedulerRemoteConfiguration(cm);
+        conf.addConfiguration(schedRemoteClientConf);
+
+        conf.configure(grid2);
+
+        UuidJobHandle handle = new UuidJobHandle();
+        ScheduledJob sj1 = new ScheduledJob(handle, new MockJob(), new MockJobContext("xxx"), new MockTrigger(new Date(1000)));
+
+        Scheduler scheduler = grid2.get(Scheduler.class);
+
+        scheduler.scheduleJob(sj1);
+        //Close the peer connection
+        conn.close();
+        //Shutdown the MultiplexSocketService 
+        grid.get(MultiplexSocketService.class).close();
+
+
+
+
+    }
+
+    public static class MockJobContext implements JobContext, Serializable {
+
+        private String text;
+
+        public MockJobContext() {
+        }
+
+        public MockJobContext(String text) {
+            this.text = text;
+        }
+
+        public JobHandle getJobHandle() {
+            return null;
+        }
+
+        public void setJobHandle(JobHandle jobHandle) {
+        }
+
+        public String getText() {
+            return this.text;
+        }
+    }
+
+    public static class MockTrigger implements Trigger, Serializable {
+
+        private Date date;
+
+        public MockTrigger() {
+        }
+
+        public MockTrigger(Date date) {
+            this.date = date;
+
+        }
+
+        public Date hasNextFireTime() {
+            return this.date;
+        }
+
+        public Date nextFireTime() {
+            Date tmp = new Date();
+            tmp.setTime(this.date.getTime());
+            this.date = null;
+            return tmp;
+        }
+    }
+
+    public static class DisTimerService
+            implements
+            TimerService {
+
+        public long getCurrentTime() {
+            // TODO Auto-generated method stub
+            return 0;
+        }
+
+        public long getTimeToNextJob() {
+            // TODO Auto-generated method stub
+            return 0;
+        }
+
+        public boolean removeJob(JobHandle jobHandle) {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+        public JobHandle scheduleJob(Job job,
+                JobContext ctx,
+                Trigger trigger) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public void shutdown() {
+            // TODO Auto-generated method stub
+        }
+    }
+
+    public static class TimerServiceClusterManager {
+
+        private String[] ids;
+        private int redundancyCount;
+
+        public void configure(String[] ids,
+                int redundancyCount) {
+            this.ids = ids;
+            this.redundancyCount = redundancyCount;
+            if (redundancyCount >= ids.length) {
+                throw new IllegalArgumentException("Redundancy must be less than or equal to to total-1");
+            }
+        }
+
+        private int indexOf(final int hashCode,
+                final int dataSize) {
+            return hashCode & (dataSize - 1);
+        }
+    }
+
+    public static class RemoteTimerService
+            implements
+            TimerService {
+
+        public long getCurrentTime() {
+            throw new UnsupportedOperationException("not supported");
+        }
+
+        public long getTimeToNextJob() {
+            throw new UnsupportedOperationException("not supported");
+        }
+
+        public boolean removeJob(JobHandle jobHandle) {
+            return false;
+        }
+
+        public JobHandle scheduleJob(Job job,
+                JobContext ctx,
+                Trigger trigger) {
+            UuidJobHandle jhandle = new UuidJobHandle();
+
+            ScheduledJob sj = new ScheduledJob(jhandle,
+                    job,
+                    ctx,
+                    trigger);
+            return jhandle;
+        }
+
+        public void shutdown() {
+            throw new UnsupportedOperationException("not supported");
+        }
+    }
+}

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/MockJob.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/MockJob.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/MockJob.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.time.impl;
+
+import org.drools.time.Job;
+import org.drools.time.JobContext;
+
+/**
+ *
+ * @author salaboy
+ */
+ public class MockJob implements Job {
+        public void execute(JobContext ctx) {
+            System.out.println("Job Executed!");
+        }        
+    }

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/ScheduledJobJpaTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/ScheduledJobJpaTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/ScheduledJobJpaTest.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,99 @@
+package org.drools.grid.time.impl;
+
+import java.io.Serializable;
+import org.drools.grid.timer.impl.UuidJobHandle;
+import org.drools.grid.timer.impl.ScheduledJob;
+import java.util.Date;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.drools.time.Job;
+import org.drools.time.JobContext;
+import org.drools.time.JobHandle;
+import org.drools.time.Trigger;
+
+import junit.framework.TestCase;
+
+
+public class ScheduledJobJpaTest extends TestCase {
+    
+    public void test1()  {
+        EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.drools.grid");
+        
+        UuidJobHandle handle = new UuidJobHandle();
+        ScheduledJob sj1 = new ScheduledJob( handle, new MockJob(), new MockJobContext("xxx"), new MockTrigger( new Date(1000 ) ) );
+        ScheduledJob sj2 = new ScheduledJob( handle, new MockJob(), new MockJobContext("xxx"), new MockTrigger( new Date(1000 ) ) );
+        
+        EntityManager em = emf.createEntityManager();
+        em.getTransaction().begin();
+        em.persist( sj1 );
+        em.getTransaction().commit();
+        em.close();
+        
+        em = emf.createEntityManager();
+        
+        sj1 = em.find( ScheduledJob.class, sj1.getId() );
+        
+        assertEquals( sj2.getId(), sj1.getId() );
+        assertEquals( sj2.getJob().getClass(), sj1.getJob().getClass() );
+        assertEquals( "xxx", ((MockJobContext) sj1.getJobContext()).getText() );
+        assertEquals( new Date(1000), ((MockTrigger) sj1.getTrigger()).hasNextFireTime() );
+        assertEquals( new Date(1000), ((MockTrigger) sj1.getTrigger()).nextFireTime() );
+ 
+    }
+    
+    public static class MockJob implements Job, Serializable {
+        public void execute(JobContext ctx) {
+        }        
+    }
+    
+    public static class MockJobContext implements JobContext, Serializable {
+        private String text;
+
+        public MockJobContext() {
+            
+        }
+        
+        public MockJobContext(String text) {
+            this.text = text;
+        }
+        
+        public JobHandle getJobHandle() {
+            return null;
+        }
+
+        public void setJobHandle(JobHandle jobHandle) {
+                       
+        }        
+        
+        public String getText() {
+            return this.text;
+        }
+                
+    }
+    
+    public static class MockTrigger implements Trigger, Serializable {
+        
+        private Date date;
+        
+        public MockTrigger() {
+            
+        }
+        
+        public MockTrigger(Date date) {
+            this.date = date;
+        }
+
+        public Date hasNextFireTime() {
+            return this.date;
+        }
+
+        public Date nextFireTime() {
+            return this.date;
+        }
+        
+    }
+    
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/ScheduledJobJpaTest.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/GridServiceDescriptionJpaTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/GridServiceDescriptionJpaTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/GridServiceDescriptionJpaTest.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,60 @@
+package org.drools.io.mina;
+
+import java.net.InetSocketAddress;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.service.directory.WhitePages;
+import org.drools.grid.service.directory.impl.AddressImpl;
+import org.drools.grid.service.directory.impl.GridServiceDescriptionImpl;
+import org.drools.grid.service.directory.impl.WhitePagesImpl;
+
+import junit.framework.TestCase;
+
+
+public class GridServiceDescriptionJpaTest extends TestCase {
+	public void test1() {
+		EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.drools.grid");		
+		WhitePages wp = new WhitePagesImpl();
+		
+		
+		
+		GridServiceDescription gsd1 = wp.create( WhitePages.class.getName() );
+		gsd1.setImplementedClass(WhitePages.class);
+		gsd1.addAddress(  "socket" ).setObject( new InetSocketAddress("127.0.0.1", 5011));
+		gsd1.addAddress("p1").setObject( "v1" );
+		
+		EntityManager em = emf.createEntityManager();
+        em.getTransaction().begin();
+        em.persist(gsd1);
+        em.getTransaction().commit();
+        em.close();
+        
+        GridServiceDescriptionImpl gsd2 = new GridServiceDescriptionImpl("s1");
+        gsd2.setImplementedClass(WhitePages.class);
+        gsd2.addAddress( "socket" ).setObject( new InetSocketAddress("127.0.0.1", 5012));
+        gsd2.addAddress( "p2" ).setObject( "v2" );		
+		
+        em = emf.createEntityManager();
+		em.getTransaction().begin();
+		em.persist(gsd2);
+		em.getTransaction().commit();
+		em.close();
+		
+		em = emf.createEntityManager();
+		GridServiceDescription gsd1r = em.find( GridServiceDescriptionImpl.class, WhitePages.class.getName() );
+		assertNotNull( gsd1r );
+		assertEquals( gsd1, gsd1r );
+		assertEquals(  new InetSocketAddress("127.0.0.1", 5011), gsd1.getAddresses().get( "socket" ).getObject() );
+		assertEquals(  "v1", gsd1.getAddresses().get( "p1" ).getObject() );
+		
+		GridServiceDescription gsd2r = em.find( GridServiceDescriptionImpl.class, "s1" );
+        assertNotNull( gsd2r );
+        assertEquals( gsd2, gsd2r );
+        assertEquals(  new InetSocketAddress("127.0.0.1", 5012), gsd2.getAddresses().get( "socket" ).getObject() );
+        assertEquals(  "v2", gsd2.getAddresses().get( "p2" ).getObject() );        
+	}
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/GridServiceDescriptionJpaTest.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/JpaWhitePagesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/JpaWhitePagesTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/JpaWhitePagesTest.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,51 @@
+package org.drools.io.mina;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import junit.framework.TestCase;
+
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.service.directory.WhitePages;
+import org.drools.grid.service.directory.impl.JpaWhitePages;
+
+public class JpaWhitePagesTest extends TestCase {
+
+    public void test1() {
+        EntityManagerFactory emf = Persistence.createEntityManagerFactory( "org.drools.grid" );
+        WhitePages wp = new JpaWhitePages( emf );
+
+        wp.create( "s1" );
+        wp.create( "s2" );
+        wp.create( "s3" );
+
+        GridServiceDescription gs1 = wp.lookup( "s1" );
+
+        gs1.addAddress( "p1" ).setObject( "v1" );
+        gs1.addAddress( "p2" ).setObject( "v2" );
+
+        gs1 = wp.lookup( "s1" );
+        assertEquals( 2,
+                      gs1.getAddresses().size() );
+        assertEquals( "v1",
+                      gs1.getAddresses().get( "p1" ).getObject() );
+        assertEquals( "v2",
+                      gs1.getAddresses().get( "p2" ).getObject() );
+
+        gs1.removeAddress( "p2" );
+
+        gs1 = wp.lookup( "s1" );
+        assertEquals( 1,
+                      gs1.getAddresses().size() );
+        assertEquals( "v1",
+                      gs1.getAddresses().get( "p1" ).getObject() );
+        
+        wp.remove( "s1" );
+        
+        assertNull( wp.lookup( "s1" ) );
+        
+        GridServiceDescription gs2 = wp.lookup( "s2" );
+        assertNotNull( gs2 );
+
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/JpaWhitePagesTest.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/MinaTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/MinaTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/MinaTest.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,77 @@
+package org.drools.io.mina;
+
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.drools.SystemEventListener;
+import org.drools.SystemEventListenerFactory;
+import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
+import org.drools.grid.io.Acceptor;
+import org.drools.grid.io.Connector;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.IoWriter;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.grid.io.impl.ConversationManagerImpl;
+import org.drools.grid.io.impl.MessageHandlerImpl;
+import org.drools.grid.io.impl.MessageImpl;
+import org.drools.grid.remote.mina.MinaAcceptor;
+import org.drools.grid.remote.mina.MinaConnector;
+import org.drools.grid.service.directory.WhitePages;
+
+import junit.framework.TestCase;
+
+public class MinaTest extends TestCase {
+
+    public void test1() throws Exception {
+        SystemEventListener l = SystemEventListenerFactory.getSystemEventListener();
+
+        MessageReceiverHandler accHandler = new MessageReceiverHandler() {
+
+            private String     id;
+            private AtomicLong counter = new AtomicLong();
+
+            public void messageReceived(Conversation conversation,
+                                        Message msgIn) {
+                conversation.respond(  "echo: " + msgIn.getBody() );
+            }
+
+        };
+
+        Acceptor acc = new MinaAcceptor();
+        acc.open( new InetSocketAddress( "127.0.0.1",
+                                         5012 ),
+                  accHandler,
+                  l );
+
+        Connector conn = new MinaConnector();
+
+        ConversationManager cm = new ConversationManagerImpl( "s1",
+                                                              conn,
+                                                              l);
+
+        Conversation cv = cm.startConversation( new InetSocketAddress( "127.0.0.1",
+                                                                       5012 ),
+                                                                       "r1" );
+        
+        BlockingMessageResponseHandler blockHandler = new BlockingMessageResponseHandler();
+
+        cv.sendMessage( "hello",
+                        blockHandler );
+        
+        Message msg = blockHandler.getMessage( 5000 );
+        System.out.println( msg.getBody() );
+        
+        conn.close();
+        if(acc.isOpen()){
+            acc.close();
+        }
+        assertEquals(false, acc.isOpen());
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/MinaTest.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/RemoteWhitePagesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/RemoteWhitePagesTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/RemoteWhitePagesTest.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,120 @@
+package org.drools.io.mina;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.persistence.Persistence;
+
+import junit.framework.TestCase;
+
+import org.drools.SystemEventListener;
+import org.drools.SystemEventListenerFactory;
+import org.drools.grid.GridPeerConfiguration;
+import org.drools.grid.GridPeerServiceConfiguration;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.MultiplexSocketService;
+import org.drools.grid.impl.GridImpl;
+import org.drools.grid.impl.MultiplexSocketServerImpl;
+import org.drools.grid.io.Connector;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.impl.ConversationManagerImpl;
+import org.drools.grid.service.directory.impl.CoreServicesWhitePagesConfiguration;
+import org.drools.grid.io.impl.MultiplexSocketServiceCongifuration;
+import org.drools.grid.remote.mina.MinaAcceptorFactoryService;
+import org.drools.grid.remote.mina.MinaConnector;
+import org.drools.grid.service.directory.WhitePages;
+import org.drools.grid.service.directory.impl.JpaWhitePages;
+import org.drools.grid.service.directory.impl.WhitePagesLocalConfiguration;
+import org.drools.grid.service.directory.impl.WhitePagesRemoteConfiguration;
+import org.drools.grid.service.directory.impl.WhitePagesSocketConfiguration;
+
+public class RemoteWhitePagesTest extends TestCase {
+
+    public void test1() {
+        
+        Map<String, GridServiceDescription> coreServicesMap = new HashMap<String, GridServiceDescription>();//Hazelcast.newHazelcastInstance( null ).getMap( CoreServicesWhitePages.class.getName() );
+
+        SystemEventListener l = SystemEventListenerFactory.getSystemEventListener();
+
+        GridImpl grid1 = new GridImpl( new ConcurrentHashMap<String, Object>() );
+
+        GridPeerConfiguration conf = new GridPeerConfiguration();
+
+        GridPeerServiceConfiguration coreSeviceConf = new CoreServicesWhitePagesConfiguration( coreServicesMap );
+        conf.addConfiguration( coreSeviceConf );
+
+        GridPeerServiceConfiguration socketConf = new MultiplexSocketServiceCongifuration( new MultiplexSocketServerImpl( "127.0.0.1",
+                                                                                                                          new MinaAcceptorFactoryService(),
+                                                                                                                          l ) );
+        conf.addConfiguration( socketConf );
+
+        WhitePagesLocalConfiguration wplConf = new WhitePagesLocalConfiguration();
+        wplConf.setWhitePages( new JpaWhitePages( Persistence.createEntityManagerFactory( "org.drools.grid" ) ) );
+        conf.addConfiguration( wplConf );
+        
+        GridPeerServiceConfiguration wpsc = new WhitePagesSocketConfiguration(5012);
+        conf.addConfiguration( wpsc );
+
+        conf.configure( grid1 );
+
+        GridImpl grid2 = new GridImpl( new ConcurrentHashMap<String, Object>() );
+        conf = new GridPeerConfiguration();
+
+        //coreServicesMap = Hazelcast.newHazelcastInstance( null ).getMap( CoreServicesWhitePages.class.getName() );
+        coreSeviceConf = new CoreServicesWhitePagesConfiguration( coreServicesMap );
+        conf.addConfiguration( coreSeviceConf );
+
+        Connector conn = new MinaConnector();
+
+        ConversationManager cm = new ConversationManagerImpl( "s1",
+                                                              conn,
+                                                              l );
+
+        GridPeerServiceConfiguration wprConf = new WhitePagesRemoteConfiguration( cm );
+        conf.addConfiguration( wprConf );
+
+        conf.configure( grid2 );
+
+        WhitePages wp = grid2.get( WhitePages.class );
+
+        wp.create( "s1" );
+        wp.create( "s2" );
+        wp.create( "s3" );
+
+        GridServiceDescription gs1 = wp.lookup( "s1" );
+
+        gs1.addAddress( "p1" ).setObject( "v1" );
+        gs1.addAddress( "p2" ).setObject( "v2" );
+
+        gs1 = wp.lookup( "s1" );
+        assertEquals( 2,
+                      gs1.getAddresses().size() );
+        assertEquals( "v1",
+                      gs1.getAddresses().get( "p1" ).getObject() );
+        assertEquals( "v2",
+                      gs1.getAddresses().get( "p2" ).getObject() );
+
+        gs1.removeAddress( "p2" );
+
+        gs1 = wp.lookup( "s1" );
+        assertEquals( 1,
+                      gs1.getAddresses().size() );
+        assertEquals( "v1",
+                      gs1.getAddresses().get( "p1" ).getObject() );
+        
+        wp.remove( "s1" );
+        
+        assertNull( wp.lookup( "s1" ) );
+
+        GridServiceDescription gs2 = wp.lookup( "s2" );
+        assertNotNull( gs2 );
+        
+        conn.close();
+        
+        grid1.get( MultiplexSocketService.class ).close();
+        
+        
+        
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/RemoteWhitePagesTest.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/WhitePagesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/WhitePagesTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/WhitePagesTest.java	2010-10-21 19:12:06 UTC (rev 35657)
@@ -0,0 +1,98 @@
+package org.drools.io.mina;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import junit.framework.TestCase;
+
+import org.drools.SystemEventListener;
+import org.drools.SystemEventListenerFactory;
+import org.drools.grid.GridPeerConfiguration;
+import org.drools.grid.GridPeerServiceConfiguration;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.MultiplexSocketService;
+import org.drools.grid.impl.GridImpl;
+import org.drools.grid.impl.MultiplexSocketServerImpl;
+import org.drools.grid.io.Connector;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.impl.ConversationManagerImpl;
+import org.drools.grid.service.directory.impl.CoreServicesWhitePagesConfiguration;
+import org.drools.grid.io.impl.MultiplexSocketServiceCongifuration;
+import org.drools.grid.remote.mina.MinaAcceptorFactoryService;
+import org.drools.grid.remote.mina.MinaConnector;
+import org.drools.grid.service.directory.WhitePages;
+import org.drools.grid.service.directory.impl.WhitePagesLocalConfiguration;
+import org.drools.grid.service.directory.impl.WhitePagesRemoteConfiguration;
+import org.drools.grid.service.directory.impl.WhitePagesSocketConfiguration;
+
+
+public class WhitePagesTest extends TestCase {
+
+    public void test1() throws Exception {
+        Map<String, GridServiceDescription> coreServicesMap = new HashMap<String, GridServiceDescription>();//Hazelcast.newHazelcastInstance( null ).getMap( CoreServicesWhitePages.class.getName() );
+
+        SystemEventListener l = SystemEventListenerFactory.getSystemEventListener();
+
+        GridImpl grid1 = new GridImpl( new ConcurrentHashMap<String, Object>() );
+
+        GridPeerConfiguration conf = new GridPeerConfiguration();
+
+        GridPeerServiceConfiguration coreSeviceConf = new CoreServicesWhitePagesConfiguration( coreServicesMap );
+        conf.addConfiguration( coreSeviceConf );
+
+        GridPeerServiceConfiguration socketConf = new MultiplexSocketServiceCongifuration( new MultiplexSocketServerImpl( "127.0.0.1",
+                                                                                                                          new MinaAcceptorFactoryService(),
+                                                                                                                          l ) );
+        conf.addConfiguration( socketConf );
+
+        GridPeerServiceConfiguration wplConf = new WhitePagesLocalConfiguration();
+        conf.addConfiguration( wplConf );
+        
+        GridPeerServiceConfiguration wpsc = new WhitePagesSocketConfiguration(5012);
+        conf.addConfiguration( wpsc );
+
+        conf.configure( grid1 );
+        
+        
+
+        GridImpl grid2 = new GridImpl( new ConcurrentHashMap<String, Object>() );
+        conf = new GridPeerConfiguration();
+
+        //coreServicesMap = Hazelcast.newHazelcastInstance( null ).getMap( CoreServicesWhitePages.class.getName() );
+        coreSeviceConf = new CoreServicesWhitePagesConfiguration( coreServicesMap );
+        conf.addConfiguration( coreSeviceConf );
+
+        Connector conn = new MinaConnector();
+
+        ConversationManager cm = new ConversationManagerImpl( "s1",
+                                                              conn,
+                                                              l );
+
+        GridPeerServiceConfiguration wprConf = new WhitePagesRemoteConfiguration( cm );
+        conf.addConfiguration( wprConf );
+
+        conf.configure( grid2 );
+
+        WhitePages wpClient = grid2.get( WhitePages.class );
+
+        GridServiceDescription test1Gsd  = wpClient.create( "test1 at domain1" );
+
+        GridServiceDescription testGsd_2 = wpClient.lookup( "test1 at domain1" );
+        assertEquals( test1Gsd,
+                      testGsd_2 );
+        assertNotSame( test1Gsd,
+                       testGsd_2 );
+
+        WhitePages localWhitePages = grid1.get( WhitePages.class );
+        GridServiceDescription testGsd_3 = localWhitePages.lookup( "test1 at domain1" );
+
+        assertEquals( test1Gsd,
+                      testGsd_3 );
+        assertNotSame( test1Gsd,
+                      testGsd_3 );
+        conn.close();
+        grid1.get(MultiplexSocketService.class).close();
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/WhitePagesTest.java
___________________________________________________________________
Name: svn:executable
   + *

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/orm.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/orm.xml	2010-10-21 18:59:05 UTC (rev 35656)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/orm.xml	2010-10-21 19:12:06 UTC (rev 35657)
@@ -1,546 +1,41 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
-               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-               xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"
-               version="1.0">
-      <named-query name="TasksAssignedAsBusinessAdministrator">
-          <query>
-select
-     new org.drools.task.query.TaskSummary(
-     t.id,
-     names.text,
-     subjects.text,
-     descriptions.text,
-     t.taskData.status,
-     t.priority,
-     t.taskData.skipable,
-     t.taskData.actualOwner,
-     t.taskData.createdBy,
-     t.taskData.createdOn,
-     t.taskData.activationTime,
-     t.taskData.expirationTime)
-from
-    Task t left join t.taskData.createdBy,
-    I18NText names,
-    I18NText subjects,
-    I18NText descriptions,
-    OrganizationalEntity businessAdministrator
-where
-    businessAdministrator.id = :userId and
-    businessAdministrator in elements ( t.peopleAssignments.businessAdministrators  )  and
-
-    names.language = :language and
-    names in elements( t.names) and
-
-    (
-    subjects.language = :language and
-    subjects in elements( t.subjects)
-    or t.subjects.size = 0
-    ) and
-
-    (
-    descriptions.language = :language and
-    descriptions in elements( t.descriptions)
-    or t.descriptions.size = 0
-    ) and
-
-    t.taskData.expirationTime is null
-          </query>
-          <!-- hint name="org.hibernate.timeout" value="200"/ -->
-      </named-query>
-      <named-query name="TasksAssignedAsExcludedOwner">
-          <query>
-select
-     new org.drools.task.query.TaskSummary(
-     t.id,
-     names.text,
-     subjects.text,
-     descriptions.text,
-     t.taskData.status,
-     t.priority,
-     t.taskData.skipable,
-     t.taskData.actualOwner,
-     t.taskData.createdBy,
-     t.taskData.createdOn,
-     t.taskData.activationTime,
-     t.taskData.expirationTime)
-from
-    Task t left join t.taskData.createdBy,
-    I18NText names,
-    I18NText subjects,
-    I18NText descriptions,
-    OrganizationalEntity excludedOwners
-where
-    excludedOwners.id = :userId and
-    excludedOwners in elements ( t.peopleAssignments.excludedOwners  )  and
-
-    names.language = :language and
-    names in elements( t.names) and
-
-    (
-    subjects.language = :language and
-    subjects in elements( t.subjects)
-    or t.subjects.size = 0
-    ) and
-
-    (
-    descriptions.language = :language and
-    descriptions in elements( t.descriptions)
-    or t.descriptions.size = 0
-    ) and
-
-    t.taskData.expirationTime is null
-          </query>
-          <!-- hint name="org.hibernate.timeout" value="200"/ -->
-      </named-query>
-      <named-query name="TasksAssignedAsPotentialOwner">
-          <query>
-select
-     new org.drools.task.query.TaskSummary(
-     t.id,
-     names.text,
-     subject.text,
-     descriptions.text,
-     t.taskData.status,
-     t.priority,
-     t.taskData.skipable,
-     t.taskData.actualOwner,
-     t.taskData.createdBy,
-     t.taskData.createdOn,
-     t.taskData.activationTime,
-     t.taskData.expirationTime)
-from
-    Task t
-    left join t.taskData.createdBy
-    left join t.taskData.actualOwner
-    left join t.subjects as subject,
-    I18NText names,
-    I18NText descriptions,
-    OrganizationalEntity potentialOwners
-where
-    potentialOwners.id = :userId and
-    potentialOwners in elements ( t.peopleAssignments.potentialOwners  )  and
-
-    names.language = :language and
-    names in elements( t.names) and
-
-    (
-    subject.language = :language
-    or t.subjects.size = 0
-    ) and
-
-    (
-    descriptions.language = :language and
-    descriptions in elements( t.descriptions)
-    or t.descriptions.size = 0
-    ) and
-
-
-
-
-    t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
-
-    t.taskData.expirationTime is null
-          </query>
-          <!-- hint name="org.hibernate.timeout" value="200"/ -->
-      </named-query>
-            <named-query name="TasksAssignedAsPotentialOwnerWithGroups">
-          <query>
-select
-     new org.drools.task.query.TaskSummary(
-     t.id,
-     names.text,
-     subjects.text,
-     descriptions.text,
-     t.taskData.status,
-     t.priority,
-     t.taskData.skipable,
-     t.taskData.actualOwner,
-     t.taskData.createdBy,
-     t.taskData.createdOn,
-     t.taskData.activationTime,
-     t.taskData.expirationTime)
-from
-    Task t left join t.taskData.createdBy left join t.taskData.actualOwner,
-    I18NText names,
-    I18NText subjects,
-    I18NText descriptions,
-    OrganizationalEntity potentialOwners
-where
-    ( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and
-    potentialOwners in elements ( t.peopleAssignments.potentialOwners )  and
-
-    names.language = :language and
-    names in elements( t.names) and
-
-
-    (
-    subjects.language = :language and
-    subjects in elements( t.subjects)
-    or t.subjects.size = 0
-    ) and
-
-    (
-    descriptions.language = :language and
-    descriptions in elements( t.descriptions)
-    or t.descriptions.size = 0
-    ) and
-
-    t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
-
-    t.taskData.expirationTime is null
-          </query>
-          <!-- hint name="org.hibernate.timeout" value="200"/ -->
-      </named-query>
-
-       <named-query name="TasksAssignedAsPotentialOwnerByGroup">
-          <query>
-select
-     new org.drools.task.query.TaskSummary(
-     t.id,
-     names.text,
-     subjects.text,
-     descriptions.text,
-     t.taskData.status,
-     t.priority,
-     t.taskData.skipable,
-     t.taskData.actualOwner,
-     t.taskData.createdBy,
-     t.taskData.createdOn,
-     t.taskData.activationTime,
-     t.taskData.expirationTime)
-from
-    Task t left join t.taskData.createdBy left join t.taskData.actualOwner,
-    I18NText names,
-    I18NText subjects,
-    I18NText descriptions,
-    OrganizationalEntity potentialOwners
-where
-    potentialOwners.id = :groupId and
-    potentialOwners in elements ( t.peopleAssignments.potentialOwners  )  and
-
-    names.language = :language and
-    names in elements( t.names) and
-
-    (
-    subjects.language = :language and
-    subjects in elements( t.subjects)
-    or t.subjects.size = 0
-    ) and
-
-    (
-    descriptions.language = :language and
-    descriptions in elements( t.descriptions)
-    or t.descriptions.size = 0
-    ) and
-
-    t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
-
-    t.taskData.expirationTime is null
-          </query>
-          <!-- hint name="org.hibernate.timeout" value="200"/ -->
-      </named-query>
-
-      <named-query name="SubTasksAssignedAsPotentialOwner">
-          <query>
-select
-     new org.drools.task.query.TaskSummary(
-     t.id,
-     names.text,
-     subjects.text,
-     descriptions.text,
-     t.taskData.status,
-     t.priority,
-     t.taskData.skipable,
-     t.taskData.actualOwner,
-     t.taskData.createdBy,
-     t.taskData.createdOn,
-     t.taskData.activationTime,
-     t.taskData.expirationTime)
-from
-    Task t left join t.taskData.createdBy left join t.taskData.actualOwner,
-    I18NText names,
-    I18NText subjects,
-    I18NText descriptions,
-    OrganizationalEntity potentialOwners
-where
-    t.taskData.parentId = :parentId and
-    potentialOwners.id = :userId and
-    potentialOwners in elements ( t.peopleAssignments.potentialOwners  )  and
-
-    names.language = :language and
-    names in elements( t.names) and
-
-    (
-    subjects.language = :language and
-    subjects in elements( t.subjects)
-    or t.subjects.size = 0
-    ) and
-
-    (
-    descriptions.language = :language and
-    descriptions in elements( t.descriptions)
-    or t.descriptions.size = 0
-    ) and
-
-    t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
-
-    t.taskData.expirationTime is null
-          </query>
-          <!-- hint name="org.hibernate.timeout" value="200"/ -->
-      </named-query>
-
-<named-query name="GetSubTasksByParentTaskId">
-          <query>
-select
-     new org.drools.task.query.TaskSummary(
-     t.id,
-     names.text,
-     subjects.text,
-     descriptions.text,
-     t.taskData.status,
-     t.priority,
-     t.taskData.skipable,
-     t.taskData.actualOwner,
-     t.taskData.createdBy,
-     t.taskData.createdOn,
-     t.taskData.activationTime,
-     t.taskData.expirationTime)
-from
-    Task t,
-    I18NText names,
-    I18NText subjects,
-    I18NText descriptions
-
-where
-    t.taskData.parentId = :parentId and
-    names.language = :language and
-    names in elements( t.names) and
-
-    (
-    subjects.language = :language and
-    subjects in elements( t.subjects)
-    or t.subjects.size = 0
-    ) and
-
-    (
-    descriptions.language = :language and
-    descriptions in elements( t.descriptions)
-    or t.descriptions.size = 0
-    ) and
-
-    t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
-
-    t.taskData.expirationTime is null
-          </query>
-          <!-- hint name="org.hibernate.timeout" value="200"/ -->
-      </named-query>
-
-
-      <named-query name="TasksAssignedAsRecipient">
-          <query>
-select
-     new org.drools.task.query.TaskSummary(
-     t.id,
-     names.text,
-     subjects.text,
-     descriptions.text,
-     t.taskData.status,
-     t.priority,
-     t.taskData.skipable,
-     t.taskData.actualOwner,
-     t.taskData.createdBy,
-     t.taskData.createdOn,
-     t.taskData.activationTime,
-     t.taskData.expirationTime)
-from
-    Task t left join t.taskData.createdBy,
-    I18NText names,
-    I18NText subjects,
-    I18NText descriptions,
-    OrganizationalEntity recipients
-where
-    recipients.id = :userId and
-    recipients in elements ( t.peopleAssignments.recipients  )  and
-
-    names.language = :language and
-    names in elements( t.names) and
-
-    (
-    subjects.language = :language and
-    subjects in elements( t.subjects)
-    or t.subjects.size = 0
-    ) and
-
-    (
-    descriptions.language = :language and
-    descriptions in elements( t.descriptions)
-    or t.descriptions.size = 0
-    ) and
-
-    t.taskData.expirationTime is null
-          </query>
-          <!-- hint name="org.hibernate.timeout" value="200"/ -->
-      </named-query>
-      <named-query name="TasksAssignedAsTaskInitiator">
-          <query>
-select
-     new org.drools.task.query.TaskSummary(
-     t.id,
-     names.text,
-     subjects.text,
-     descriptions.text,
-     t.taskData.status,
-     t.priority,
-     t.taskData.skipable,
-     t.taskData.actualOwner,
-     t.taskData.createdBy,
-     t.taskData.createdOn,
-     t.taskData.activationTime,
-     t.taskData.expirationTime)
-from
-    Task t left join t.taskData.createdBy,
-    I18NText names,
-    I18NText subjects,
-    I18NText descriptions,
-    OrganizationalEntity taskInitiator
-where
-    taskInitiator.id = :userId and
-    taskInitiator = t.peopleAssignments.taskInitiator and
-
-    names.language = :language and
-    names in elements( t.names) and
-
-    (
-    subjects.language = :language and
-    subjects in elements( t.subjects)
-    or t.subjects.size = 0
-    ) and
-
-    (
-    descriptions.language = :language and
-    descriptions in elements( t.descriptions)
-    or t.descriptions.size = 0
-    ) and
-
-    t.taskData.expirationTime is null
-          </query>
-          <!-- hint name="org.hibernate.timeout" value="200"/ -->
-      </named-query>
-      <named-query name="TasksAssignedAsTaskStakeholder">
-          <query>
-select
-     new org.drools.task.query.TaskSummary(
-     t.id,
-     names.text,
-     subjects.text,
-     descriptions.text,
-     t.taskData.status,
-     t.priority,
-     t.taskData.skipable,
-     t.taskData.actualOwner,
-     t.taskData.createdBy,
-     t.taskData.createdOn,
-     t.taskData.activationTime,
-     t.taskData.expirationTime)
-from
-    Task t left join t.taskData.createdBy,
-    I18NText names,
-    I18NText subjects,
-    I18NText descriptions,
-    OrganizationalEntity taskStakeholder
-where
-    taskStakeholder.id = :userId and
-    taskStakeholder in elements ( t.peopleAssignments.taskStakeholders  )  and
-
-    names.language = :language and
-    names in elements( t.names) and
-
-    (
-    subjects.language = :language and
-    subjects in elements( t.subjects)
-    or t.subjects.size = 0
-    ) and
-
-    (
-    descriptions.language = :language and
-    descriptions in elements( t.descriptions)
-    or t.descriptions.size = 0
-    ) and
-
-    t.taskData.expirationTime is null
-          </query>
-          <!-- hint name="org.hibernate.timeout" value="200"/ -->
-      </named-query>
-      <named-query name="TasksOwned">
-          <query>
-select
-    new org.drools.task.query.TaskSummary(
-    t.id,
-    names.text,
-    subjects.text,
-    descriptions.text,
-    t.taskData.status,
-    t.priority,
-    t.taskData.skipable,
-    t.taskData.actualOwner,
-    t.taskData.createdBy,
-    t.taskData.createdOn,
-    t.taskData.activationTime,
-    t.taskData.expirationTime)
-from
-    Task t left join t.taskData.createdBy,
-    I18NText names,
-    I18NText subjects,
-    I18NText descriptions
-where
-    t.taskData.actualOwner.id = :userId and
-    names in elements( t.names) and
-    names.language = :language and
-              
-    (
-    subjects.language = :language and
-    subjects in elements( t.subjects)
-    or t.subjects.size = 0
-    ) and
-
-    (
-    descriptions.language = :language and
-    descriptions in elements( t.descriptions)
-    or t.descriptions.size = 0
-    ) and
-
-    t.taskData.expirationTime is null
-          </query>
-          <!-- hint name="org.hibernate.timeout" value="200"/ -->
-      </named-query>
-	  <named-query name="UnescalatedDeadlines">
-          <query>
-select
-     new org.drools.task.query.DeadlineSummary(
-     t.id,
-     d.id,
-     d.date)
-from
-    Task t,
-    Deadline d
-where
-    (d in elements( t.deadlines.startDeadlines ) or d in elements( t.deadlines.endDeadlines ) ) and
-    d.escalated = false
-order by
-    d.date
-          </query>
-          <!-- hint name="org.hibernate.timeout" value="200"/ -->
-      </named-query>
-      <named-query name="TaskByWorkItemId">
-          <query>
-select
-    t
-from
-    Task t
-where
-    t.taskData.workItemId = :workItemId
-          </query>
-          <!-- hint name="org.hibernate.timeout" value="200"/ -->
-      </named-query>
-</entity-mappings>
+<?xml version="1.0" encoding="UTF-8"?>
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                 xmlns:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"
+                 version="1.0">
+  <entity class="org.drools.grid.service.directory.impl.AddressImpl" access="FIELD">
+      <table name="Address"/>
+
+      <attributes>
+          <id name="id">
+              <generated-value strategy="AUTO"/>
+          </id>
+          <many-to-one name="gridServiceDescription" target-entity="org.drools.grid.service.directory.impl.GridServiceDescriptionImpl" />
+      </attributes>
+  </entity>
+  
+  <entity class="org.drools.grid.service.directory.impl.GridServiceDescriptionImpl" access="FIELD">
+      <table name="GridServiceDescription"/>
+
+      <attributes>
+          <id name="id" />        
+          
+          <one-to-many name="addresses" mapped-by="gridServiceDescription" target-entity="org.drools.grid.service.directory.impl.AddressImpl" fetch="EAGER" >
+              <map-key name="transport" /> 
+              <cascade>
+                  <cascade-all/>
+              </cascade>
+          </one-to-many>     
+                      
+      </attributes>
+  </entity>  
+  
+  <entity class="org.drools.grid.timer.impl.ScheduledJob" access="FIELD">
+      <table name="ScheduledJob"/>
+
+      <attributes>
+          <id name="id" />        
+          <transient name="jobHandle" />                      
+      </attributes>
+  </entity>    
+</entity-mappings>

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml	2010-10-21 18:59:05 UTC (rev 35656)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml	2010-10-21 19:12:06 UTC (rev 35657)
@@ -1,51 +1,26 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<persistence version="1.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd
-http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/persistence">
-    <persistence-unit name="org.drools.task">
-        <provider>org.hibernate.ejb.HibernatePersistence</provider>
-        <class>org.drools.task.Attachment</class>
-        <class>org.drools.task.Content</class>
-        <class>org.drools.task.BooleanExpression</class>
-        <class>org.drools.task.Comment</class>
-        <class>org.drools.task.Deadline</class>
-        <class>org.drools.task.Comment</class>
-        <class>org.drools.task.Deadline</class>
-        <class>org.drools.task.Delegation</class>
-        <class>org.drools.task.Escalation</class>
-        <class>org.drools.task.Group</class>
-        <class>org.drools.task.I18NText</class>
-        <class>org.drools.task.Notification</class>
-        <class>org.drools.task.EmailNotification</class>
-        <class>org.drools.task.EmailNotificationHeader</class>
-        <class>org.drools.task.PeopleAssignments</class>
-        <class>org.drools.task.Reassignment</class>
-        <class>org.drools.task.Status</class>
-        <class>org.drools.task.Task</class>
-        <class>org.drools.task.TaskData</class>
-        <class>org.drools.task.SubTasksStrategy</class>
-        <class>org.drools.task.OnParentAbortAllSubTasksEndStrategy</class>
-        <class>org.drools.task.OnAllSubTasksEndParentEndStrategy</class>
-
-        <class>org.drools.task.User</class>
-
-	    <properties>
-	        <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
-	        <property name="hibernate.connection.driver_class" value="org.h2.Driver"/>
-	        <property name="hibernate.connection.url" value="jdbc:h2:mem:mydb" />
-	        <!--  property name="hibernate.connection.url" value="jdbc:h2:file:\dev\drools\trunk7\drools-process\drools-process-task\mydb"/ -->
-
-<!--			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>-->
-<!--	        <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>	  	        -->
-<!--	        <property name="hibernate.connection.url" value="jdbc:postgresql://localhost/postgres"/>-->
-
-
-	        <property name="hibernate.connection.username" value="sa"/>
-	        <property name="hibernate.connection.password" value="sasa"/>
-	        <property name="hibernate.connection.autocommit" value="false" />
-	        <property name="hibernate.max_fetch_depth" value="3"/>
-		    <property name="hibernate.hbm2ddl.auto" value="create" />
-            <property name="hibernate.show_sql" value="false" />
-	    </properties>
-    </persistence-unit>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd">
+  <persistence-unit name="org.drools.grid">
+    <provider>org.hibernate.ejb.HibernatePersistence</provider>
+    <class>org.drools.grid.service.directory.impl.GridServiceDescriptionImpl</class>
+    <class>org.drools.grid.service.directory.impl.AddressImpl</class>
+    <class>java.lang.String</class>
+    <class>org.drools.grid.timer.impl.ScheduledJob</class>
+    <properties>
+      <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
+      <property name="hibernate.connection.driver_class" value="org.h2.Driver"/>
+      <property name="hibernate.connection.url" value="jdbc:h2:mem:mydb"/>
+      <!--property name="hibernate.connection.url" value="jdbc:h2:file:/h2/test;AUTO_SERVER=TRUE" /-->
+      <!--  property name="hibernate.connection.url" value="jdbc:h2:file:\dev\drools\trunk7\drools-process\drools-process-task\mydb"/ -->
+      <!--			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>-->
+      <!--	        <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>	  	        -->
+      <!--	        <property name="hibernate.connection.url" value="jdbc:postgresql://localhost/postgres"/>-->
+      <property name="hibernate.connection.username" value="sa"/>
+      <property name="hibernate.connection.password" value="sasa"/>
+      <property name="hibernate.connection.autocommit" value="false"/>
+      <property name="hibernate.max_fetch_depth" value="3"/>
+      <property name="hibernate.hbm2ddl.auto" value="create"/>
+      <property name="hibernate.show_sql" value="true"/>
+    </properties>
+  </persistence-unit>
 </persistence>



More information about the jboss-svn-commits mailing list