[jboss-cvs] JBossAS SVN: r65591 - in projects/ejb3/trunk/locator/src: main/org/jboss/ejb3/servicelocator and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Sep 24 23:44:23 EDT 2007


Author: ALRubinger
Date: 2007-09-24 23:44:23 -0400 (Mon, 24 Sep 2007)
New Revision: 65591

Added:
   projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiHost.java
   projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiHostMetadataParser.java
   projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/ServiceLocatorFactory.java
Removed:
   projects/ejb3/trunk/locator/src/legacy/JndiHost.java
Modified:
   projects/ejb3/trunk/locator/src/legacy/ServiceContextProximityBindManagerOld.java
   projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiCachingServiceLocator.java
Log:
Further refactoring in client library for ServiceLocator; began to address configuration of N JNDI Hosts and implemented Factory Pattern for obtaining ServiceLocator

Deleted: projects/ejb3/trunk/locator/src/legacy/JndiHost.java
===================================================================
--- projects/ejb3/trunk/locator/src/legacy/JndiHost.java	2007-09-24 17:57:13 UTC (rev 65590)
+++ projects/ejb3/trunk/locator/src/legacy/JndiHost.java	2007-09-25 03:44:23 UTC (rev 65591)
@@ -1,66 +0,0 @@
-
-
-import java.io.Serializable;
-
-/**
- * Represents a JNDI Host location on which remote and local services may be
- * deployed.
- * 
- * @author ALR
- */
-public class JndiHost implements Serializable
-{
-   // Class Members
-   private static final long serialVersionUID = 4367726854123681529L;
-
-   // Instance Members
-   private String id;
-
-   private String address;
-
-   private int port;
-
-   // Constructors
-   public JndiHost()
-   {
-   }
-
-   public JndiHost(String name, String address, int port)
-   {
-      this.setId(name);
-      this.setAddress(address);
-      this.setPort(port);
-   }
-
-   // Accessors/Mutators
-   public String getAddress()
-   {
-      return address;
-   }
-
-   public void setAddress(String address)
-   {
-      this.address = address;
-   }
-
-   public String getId()
-   {
-      return id;
-   }
-
-   public void setId(String id)
-   {
-      this.id = id;
-   }
-
-   public int getPort()
-   {
-      return port;
-   }
-
-   public void setPort(int port)
-   {
-      this.port = port;
-   }
-
-}

Modified: projects/ejb3/trunk/locator/src/legacy/ServiceContextProximityBindManagerOld.java
===================================================================
--- projects/ejb3/trunk/locator/src/legacy/ServiceContextProximityBindManagerOld.java	2007-09-24 17:57:13 UTC (rev 65590)
+++ projects/ejb3/trunk/locator/src/legacy/ServiceContextProximityBindManagerOld.java	2007-09-25 03:44:23 UTC (rev 65591)
@@ -20,6 +20,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.commons.validator.GenericValidator;
 import org.jboss.ejb3.servicelocator.Ejb3NotFoundException;
+import org.jboss.ejb3.servicelocator.JndiHost;
 import org.jboss.ejb3.servicelocator.ServiceLocatorException;
 import org.xml.sax.SAXException;
 

Modified: projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiCachingServiceLocator.java
===================================================================
--- projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiCachingServiceLocator.java	2007-09-24 17:57:13 UTC (rev 65590)
+++ projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiCachingServiceLocator.java	2007-09-25 03:44:23 UTC (rev 65591)
@@ -1,5 +1,12 @@
 package org.jboss.ejb3.servicelocator;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 /**
  * JndiCachingServiceLocator
  * 
@@ -10,10 +17,35 @@
  * @version $Revision $
  * @author <a href="mailto:alr at alrubinger.com">ALR</a>
  */
-public class JndiCachingServiceLocator extends CachingServiceLocator
+public final class JndiCachingServiceLocator extends CachingServiceLocator
 {
 
+   // Class Members
+   private static final Log logger = LogFactory.getLog(JndiCachingServiceLocator.class);
+
+   private static JndiCachingServiceLocator instance = null;
+
+   // Instance Members
+
    /**
+    * List of JNDI Hosts on which Services may be bound
+    */
+   private List<JndiHost> jndiHosts = Collections.synchronizedList(new ArrayList<JndiHost>());
+
+   // Constructor
+
+   /**
+    * Constructor
+    */
+   JndiCachingServiceLocator(List<JndiHost> jndiHosts)
+   {
+      super();
+      this.jndiHosts = jndiHosts;
+   }
+
+   // Contracts
+
+   /**
     * Obtains the object associated with the specified business interface 
     * from one of the configured remote hosts.
     * 

Copied: projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiHost.java (from rev 65474, projects/ejb3/trunk/locator/src/legacy/JndiHost.java)
===================================================================
--- projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiHost.java	                        (rev 0)
+++ projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiHost.java	2007-09-25 03:44:23 UTC (rev 65591)
@@ -0,0 +1,67 @@
+package org.jboss.ejb3.servicelocator;
+
+
+import java.io.Serializable;
+
+/**
+ * Represents a JNDI Host location on which remote and local services may be
+ * deployed.
+ * 
+ * @author ALR
+ */
+public class JndiHost implements Serializable
+{
+   // Class Members
+   private static final long serialVersionUID = 4367726854123681529L;
+
+   // Instance Members
+   private String id;
+
+   private String address;
+
+   private int port;
+
+   // Constructors
+   public JndiHost()
+   {
+   }
+
+   public JndiHost(String name, String address, int port)
+   {
+      this.setId(name);
+      this.setAddress(address);
+      this.setPort(port);
+   }
+
+   // Accessors/Mutators
+   public String getAddress()
+   {
+      return address;
+   }
+
+   public void setAddress(String address)
+   {
+      this.address = address;
+   }
+
+   public String getId()
+   {
+      return id;
+   }
+
+   public void setId(String id)
+   {
+      this.id = id;
+   }
+
+   public int getPort()
+   {
+      return port;
+   }
+
+   public void setPort(int port)
+   {
+      this.port = port;
+   }
+
+}


Property changes on: projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiHost.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiHostMetadataParser.java
===================================================================
--- projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiHostMetadataParser.java	                        (rev 0)
+++ projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiHostMetadataParser.java	2007-09-25 03:44:23 UTC (rev 65591)
@@ -0,0 +1,98 @@
+package org.jboss.ejb3.servicelocator;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.digester.Digester;
+import org.xml.sax.SAXException;
+
+public class JndiHostMetadataParser
+{
+
+   // Class Members
+   private static JndiHostMetadataParser instance = null;
+
+   // Internal Constructor
+   private JndiHostMetadataParser()
+   {
+
+   }
+
+   // Singleton Accessor
+   public static synchronized JndiHostMetadataParser getInstance()
+   {
+      // Ensure instanciated
+      if (JndiHostMetadataParser.instance == null)
+      {
+         JndiHostMetadataParser.instance = new JndiHostMetadataParser();
+      }
+
+      // Return
+      return JndiHostMetadataParser.instance;
+   }
+
+   // Functional Methods
+
+   @SuppressWarnings(value = "unchecked")
+   public List<JndiHost> parse(InputStream inStream)
+   {
+      // Initialize
+      Digester jndiHostDefinitionsDigester = new Digester();
+      // Add Rules for parsing configuration
+      this.addJnpHostDefinitionsParsingRules(jndiHostDefinitionsDigester);
+
+      //TODO Assign each JNDI Host a unique ID
+      // Parse
+      try
+      {
+         return (List<JndiHost>) jndiHostDefinitionsDigester.parse(inStream);
+      }
+      catch (IOException e)
+      {
+         throw new ServiceLocatorException(e);
+      }
+      catch (SAXException e)
+      {
+         throw new ServiceLocatorException(e);
+      }
+   }
+
+   // Internal Helper Methods
+
+   /**
+    * Adds parsing rules for reading configuration specifying JNDI Hosts
+    * 
+    * @param digester
+    */
+   private void addJnpHostDefinitionsParsingRules(Digester digester)
+   {
+      // When the root is encountered, create a List
+      // to hold the JNP Host Definitions
+      digester.addObjectCreate("jndi-hosts", ArrayList.class);
+
+      // When a new host definition is encountered,
+      // create a new JNP Host
+      digester.addObjectCreate("jndi-hosts/host", JndiHost.class);
+
+      // Set all properties (in this case, "name")
+      // from the "host" entry to the "JnpHost.name"
+      // object
+      digester.addSetProperties("jndi-hosts/host");
+
+      // Set the address
+      digester.addCallMethod("jndi-hosts/host/address", "setAddress", 1);
+      digester.addCallParam("jndi-hosts/host/address", 0);
+
+      // Set the port
+      digester.addCallMethod("jndi-hosts/host/port", "setPort", 1, new Class[]
+      {Integer.class});
+      digester.addCallParam("jndi-hosts/host/port", 0);
+
+      // Add the JNP Host to the List
+      digester.addSetNext("jndi-hosts/host", "add");
+
+   }
+
+}


Property changes on: projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/JndiHostMetadataParser.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/ServiceLocatorFactory.java
===================================================================
--- projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/ServiceLocatorFactory.java	                        (rev 0)
+++ projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/ServiceLocatorFactory.java	2007-09-25 03:44:23 UTC (rev 65591)
@@ -0,0 +1,43 @@
+package org.jboss.ejb3.servicelocator;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+public class ServiceLocatorFactory
+{
+
+   // Class Members
+   private static ServiceLocator serviceLocator = null;
+
+   /*
+    * Initialize Service Locator depending upon 
+    * external configuration of JNDI Hosts
+    */
+   static
+   {
+      // Obatin Metadata and parse
+      //TODO Needs to follow rules, order of finding config file
+      File jndiHostConfigFile = new File("IMPLEMENT.xml");
+      try
+      {
+         ServiceLocatorFactory.serviceLocator = new JndiCachingServiceLocator(JndiHostMetadataParser.getInstance()
+               .parse(new FileInputStream(jndiHostConfigFile)));
+      }
+      catch (FileNotFoundException e)
+      {
+         //TODO Add more elegant error message
+         throw new ServiceLocatorException(e);
+      }
+
+   }
+
+   /**
+    * Obtains the Service Locator configured for this application
+    * @return
+    */
+   public ServiceLocator getServiceLocator()
+   {
+      return ServiceLocatorFactory.serviceLocator;
+   }
+}


Property changes on: projects/ejb3/trunk/locator/src/main/org/jboss/ejb3/servicelocator/ServiceLocatorFactory.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain




More information about the jboss-cvs-commits mailing list