[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