[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