[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