[jboss-svn-commits] JBL Code SVN: r33664 - labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Jun 26 16:39:30 EDT 2010
Author: diegoll
Date: 2010-06-26 16:39:30 -0400 (Sat, 26 Jun 2010)
New Revision: 33664
Added:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerBuilder.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerFactoryHelper.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GridTopologyFactory.java
Modified:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/DirectoryInstanceFactory.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/ExecutionEnvironmentFactory.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/TaskServerInstanceFactory.java
Log:
refactor to isolate instanceofs
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/DirectoryInstanceFactory.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/DirectoryInstanceFactory.java 2010-06-26 20:38:08 UTC (rev 33663)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/DirectoryInstanceFactory.java 2010-06-26 20:39:30 UTC (rev 33664)
@@ -23,46 +23,49 @@
import org.drools.grid.remote.directory.RemoteMinaDirectoryConnector;
import org.drools.grid.services.DirectoryInstance;
-import org.drools.grid.services.GenericProvider;
-import org.drools.grid.services.remote.MinaProvider;
-/**
- *
- * @author salaboy
- */
+import org.drools.grid.services.configuration.GenericProvider;
+import org.drools.grid.services.configuration.MinaProvider;
public class DirectoryInstanceFactory {
public static DirectoryInstance newDirectoryInstance(String name, GenericProvider provider){
- DirectoryInstance directoryInstance = null;
- switch (provider.getProviderType()){
- case Local: {
- directoryInstance = new DirectoryInstance(name, new LocalDirectoryConnector(new DirectoryNodeLocalImpl()));
+ return GenericProviderContainerFactoryHelper.doOnGenericProvider(provider, new DirectoryInstanceBuilder(name));
+ }
+
+ private static class DirectoryInstanceBuilder implements GenericProviderContainerBuilder<DirectoryInstance>{
- break;
- }
- case RemoteMina: {
- directoryInstance = new DirectoryInstance(name,
- new RemoteMinaDirectoryConnector(name,
- ((MinaProvider)provider).getProviderAddress(),
- ((MinaProvider)provider).getProviderPort(),
- SystemEventListenerFactory.getSystemEventListener()));
+ private String name;
+
+ /**
+ * @param directoryInstanceName the name for all directory instances created by this builder
+ */
+ public DirectoryInstanceBuilder(String directoryInstanceName) {
+ this.name = directoryInstanceName;
+ }
+
+ @Override
+ public DirectoryInstance onLocalProvider() {
+ return new DirectoryInstance(name, new LocalDirectoryConnector(new DirectoryNodeLocalImpl()));
+ }
- break;
- }
- case RemoteHornetQ: {
+ @Override
+ public DirectoryInstance onMinaProvider(MinaProvider provider) {
+ return new DirectoryInstance(name,
+ new RemoteMinaDirectoryConnector(name,
+ ((MinaProvider)provider).getProviderAddress(),
+ ((MinaProvider)provider).getProviderPort(),
+ SystemEventListenerFactory.getSystemEventListener()));
+ }
-
- break;
- }
- case DistributedRio: {
-// directoryInstance = new DirectoryInstance(name,
-// new DistributedRioDirectoryConnector(name);
-
- break;
- }
-
- }
-
- return directoryInstance;
+ @Override
+ public DirectoryInstance onRioProvider() {
+// return new DirectoryInstance(name, new DistributedRioDirectoryConnector(name);
+ return null;
+ }
+
+ @Override
+ public DirectoryInstance onHornetQProvider() {
+ return null;
+ }
}
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/ExecutionEnvironmentFactory.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/ExecutionEnvironmentFactory.java 2010-06-26 20:38:08 UTC (rev 33663)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/ExecutionEnvironmentFactory.java 2010-06-26 20:39:30 UTC (rev 33664)
@@ -21,49 +21,47 @@
import org.drools.grid.local.LocalNodeConnector;
import org.drools.grid.remote.mina.RemoteMinaNodeConnector;
import org.drools.grid.services.ExecutionEnvironment;
-import org.drools.grid.services.GenericProvider;
-import org.drools.grid.services.remote.MinaProvider;
-/**
- *
- * @author salaboy
- */
+import org.drools.grid.services.configuration.GenericProvider;
+import org.drools.grid.services.configuration.MinaProvider;
-
public class ExecutionEnvironmentFactory {
public static ExecutionEnvironment newExecutionEnvironment(String name, GenericProvider provider){
- ExecutionEnvironment executionEnvironment = null;
- switch (provider.getProviderType()){
- case Local: {
- executionEnvironment = new ExecutionEnvironment(name, new LocalNodeConnector());
+ return GenericProviderContainerFactoryHelper.doOnGenericProvider(provider, new ExecutionEnvironmentBuilder(name));
+ }
+
+ private static class ExecutionEnvironmentBuilder implements GenericProviderContainerBuilder<ExecutionEnvironment>{
- break;
- }
- case RemoteMina: {
- executionEnvironment = new ExecutionEnvironment(name,
- new RemoteMinaNodeConnector(name,
- ((MinaProvider)provider).getProviderAddress(),
- ((MinaProvider)provider).getProviderPort(),
- SystemEventListenerFactory.getSystemEventListener()));
+ private String name;
- break;
- }
- case RemoteHornetQ: {
+ /**
+ * @param executionEnvironmentName the name for all execution environments created by this builder
+ */
+ public ExecutionEnvironmentBuilder(String executionEnvironmentName) {
+ this.name = executionEnvironmentName;
+ }
+
+ @Override
+ public ExecutionEnvironment onLocalProvider() {
+ return new ExecutionEnvironment(name, new LocalNodeConnector());
+ }
+ @Override
+ public ExecutionEnvironment onMinaProvider(MinaProvider provider) {
+ return new ExecutionEnvironment(name,
+ new RemoteMinaNodeConnector(name,
+ ((MinaProvider)provider).getProviderAddress(),
+ ((MinaProvider)provider).getProviderPort(),
+ SystemEventListenerFactory.getSystemEventListener()));
+ }
- break;
- }
- case DistributedRio: {
- executionEnvironment = new ExecutionEnvironment(name,
- new RemoteMinaNodeConnector(name,
- ((MinaProvider)provider).getProviderAddress(),
- ((MinaProvider)provider).getProviderPort(),
- SystemEventListenerFactory.getSystemEventListener()));
+ @Override
+ public ExecutionEnvironment onRioProvider() {
+ return null;
+ }
- break;
- }
-
- }
-
- return executionEnvironment;
+ @Override
+ public ExecutionEnvironment onHornetQProvider() {
+ return null;
+ }
}
}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerBuilder.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerBuilder.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerBuilder.java 2010-06-26 20:39:30 UTC (rev 33664)
@@ -0,0 +1,15 @@
+package org.drools.grid.services.factory;
+
+import org.drools.grid.services.configuration.MinaProvider;
+
+public interface GenericProviderContainerBuilder<T> {
+
+ T onLocalProvider();
+
+ T onMinaProvider(MinaProvider provider);
+
+ T onHornetQProvider();
+
+ T onRioProvider();
+
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerFactoryHelper.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerFactoryHelper.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerFactoryHelper.java 2010-06-26 20:39:30 UTC (rev 33664)
@@ -0,0 +1,26 @@
+package org.drools.grid.services.factory;
+
+import org.drools.grid.services.configuration.GenericProvider;
+import org.drools.grid.services.configuration.MinaProvider;
+
+public class GenericProviderContainerFactoryHelper {
+
+ public static <T> T doOnGenericProvider(GenericProvider provider, GenericProviderContainerBuilder<T> builder){
+ switch (provider.getProviderType()){
+ case Local: {
+ return builder.onLocalProvider();
+ }
+ case RemoteMina: {
+ return builder.onMinaProvider((MinaProvider)provider);
+ }
+ case RemoteHornetQ: {
+ return builder.onHornetQProvider();
+ }
+ case DistributedRio: {
+ return builder.onRioProvider();
+ }
+ }
+ throw new IllegalArgumentException("Unmatcheable provider " + provider.getProviderType().name());
+ }
+
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GridTopologyFactory.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GridTopologyFactory.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GridTopologyFactory.java 2010-06-26 20:39:30 UTC (rev 33664)
@@ -0,0 +1,26 @@
+package org.drools.grid.services.factory;
+
+import org.drools.grid.services.GridTopology;
+import org.drools.grid.services.configuration.DirectoryInstanceView;
+import org.drools.grid.services.configuration.ExecutionEnvironmentView;
+import org.drools.grid.services.configuration.GridTopologyView;
+import org.drools.grid.services.configuration.TaskServerInstanceView;
+
+public class GridTopologyFactory {
+
+ public static GridTopology build(GridTopologyView gridConfiguration){
+ GridTopology topology = new GridTopology(gridConfiguration.getName());
+ for (DirectoryInstanceView directoryInstanceView : gridConfiguration.getDirectoryInstances()) {
+ topology.registerDirectoryInstance(directoryInstanceView.getName(), directoryInstanceView.getProvider());
+ }
+ for (ExecutionEnvironmentView executionEnvironmentView : gridConfiguration.getExecutionEnvironments()) {
+ topology.registerExecutionEnvironment(executionEnvironmentView.getName(), executionEnvironmentView.getProvider());
+ }
+ for (TaskServerInstanceView taskServerInstanceView : gridConfiguration.getTaskServers()) {
+ topology.registerTaskServerInstance(taskServerInstanceView.getName(), taskServerInstanceView.getProvider());
+ }
+
+ return topology;
+ }
+
+}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/TaskServerInstanceFactory.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/TaskServerInstanceFactory.java 2010-06-26 20:38:08 UTC (rev 33663)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/TaskServerInstanceFactory.java 2010-06-26 20:39:30 UTC (rev 33664)
@@ -18,49 +18,47 @@
package org.drools.grid.services.factory;
import org.drools.SystemEventListenerFactory;
-import org.drools.grid.services.GenericProvider;
import org.drools.grid.services.TaskServerInstance;
-import org.drools.grid.services.remote.MinaProvider;
+import org.drools.grid.services.configuration.GenericProvider;
+import org.drools.grid.services.configuration.MinaProvider;
import org.drools.grid.task.RemoteMinaHumanTaskConnector;
-/**
- *
- * @author salaboy
- */
-
public class TaskServerInstanceFactory {
public static TaskServerInstance newTaskServerInstance(String name, GenericProvider provider){
- TaskServerInstance taskServerInstance = null;
- switch (provider.getProviderType()){
- case Local: {
- throw new UnsupportedOperationException("We don't have a local implementation for the Task Service. Yet!");
+ return GenericProviderContainerFactoryHelper.doOnGenericProvider(provider, new TaskServerInstanceBuilder(name));
+ }
+
+ private static class TaskServerInstanceBuilder implements GenericProviderContainerBuilder<TaskServerInstance>{
-
- }
- case RemoteMina: {
- taskServerInstance = new TaskServerInstance(name,
- new RemoteMinaHumanTaskConnector(name,
- ((MinaProvider)provider).getProviderAddress(),
- ((MinaProvider)provider).getProviderPort(),
- SystemEventListenerFactory.getSystemEventListener()));
+ private String name;
- break;
- }
- case RemoteHornetQ: {
- throw new UnsupportedOperationException("We don't have a HortnetQ implementation for the Task Service. Yet!");
+ public TaskServerInstanceBuilder(String taskServerInstanceName) {
+ this.name = taskServerInstanceName;
+ }
+
+ @Override
+ public TaskServerInstance onHornetQProvider() {
+ throw new UnsupportedOperationException("We don't have a HortnetQ implementation for the Task Service. Yet!");
+ }
- //break;
- }
- case DistributedRio: {
- throw new UnsupportedOperationException("We don't have a Distributed Rio implementation for the Task Service. Yet!");
-// directoryInstance = new DirectoryInstance(name,
-// new DistributedRioDirectoryConnector(name);
+ @Override
+ public TaskServerInstance onLocalProvider() {
+ throw new UnsupportedOperationException("We don't have a local implementation for the Task Service. Yet!");
+ }
- // break;
- }
+ @Override
+ public TaskServerInstance onMinaProvider(MinaProvider provider) {
+ return new TaskServerInstance(name,
+ new RemoteMinaHumanTaskConnector(name,
+ ((MinaProvider)provider).getProviderAddress(),
+ ((MinaProvider)provider).getProviderPort(),
+ SystemEventListenerFactory.getSystemEventListener()));
+ }
- }
-
- return taskServerInstance;
+ @Override
+ public TaskServerInstance onRioProvider() {
+ throw new UnsupportedOperationException("We don't have a Distributed Rio implementation for the Task Service. Yet!");
+ }
+
}
}
More information about the jboss-svn-commits
mailing list