[jboss-cvs] JBossAS SVN: r65865 - in projects/ejb3/trunk/locator: src/main/java/org/jboss/ejb3/locator/client and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Oct 4 20:16:36 EDT 2007


Author: ALRubinger
Date: 2007-10-04 20:16:36 -0400 (Thu, 04 Oct 2007)
New Revision: 65865

Added:
   projects/ejb3/trunk/locator/src/test/java/org/jboss/ejb3/test/locator/client/jndihostconfigparsing/
   projects/ejb3/trunk/locator/src/test/java/org/jboss/ejb3/test/locator/client/jndihostconfigparsing/JndiHostParsingTestCase.java
   projects/ejb3/trunk/locator/src/test/resources/
   projects/ejb3/trunk/locator/src/test/resources/jboss-ejb3-servicelocator.xml
   projects/ejb3/trunk/locator/src/test/resources/log4j.xml
Modified:
   projects/ejb3/trunk/locator/pom.xml
   projects/ejb3/trunk/locator/src/main/java/org/jboss/ejb3/locator/client/CachingServiceLocator.java
   projects/ejb3/trunk/locator/src/main/java/org/jboss/ejb3/locator/client/JndiHostMetadataParser.java
Log:
Further Maven integration, some JNDI Host configuration parsing work and tests

Modified: projects/ejb3/trunk/locator/pom.xml
===================================================================
--- projects/ejb3/trunk/locator/pom.xml	2007-10-04 23:40:40 UTC (rev 65864)
+++ projects/ejb3/trunk/locator/pom.xml	2007-10-05 00:16:36 UTC (rev 65865)
@@ -9,9 +9,23 @@
 		<relativePath>../build/pom.xml</relativePath>
 	</parent>
 	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.jboss</groupId>
 	<artifactId>jboss-ejb3-locator</artifactId>
+	<version>0.1-SNAPSHOT</version>
+	<packaging>jar</packaging>
 	<name>JBoss EJB 3 Service Locator</name>
 	<description>JBoss EJB 3 Client-Side Service Locator</description>
+	<scm>
+		<connection>
+			scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/ejb3/trunk/
+		</connection>
+		<developerConnection>
+			scm:svn:https://svn.jboss.org/repos/jbossas/projects/ejb/trunk/
+		</developerConnection>
+		<url>
+			http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbossas/projects/ejb3/trunk/
+		</url>
+	</scm>
 	<url>http://www.jboss.org</url>
 	<dependencies>
 		<dependency>
@@ -20,6 +34,17 @@
 			<version>1.1</version>
 		</dependency>
 		<dependency>
+			<groupId>jboss</groupId>
+			<artifactId>jboss-common-logging-spi</artifactId>
+			<version>2.0.4.GA</version>
+		</dependency>
+		<dependency>
+			<groupId>jboss</groupId>
+			<artifactId>jboss-common-logging-log4j</artifactId>
+			<version>2.0.4.GA</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
 			<groupId>commons-validator</groupId>
 			<artifactId>commons-validator</artifactId>
 			<version>1.3.1</version>

Modified: projects/ejb3/trunk/locator/src/main/java/org/jboss/ejb3/locator/client/CachingServiceLocator.java
===================================================================
--- projects/ejb3/trunk/locator/src/main/java/org/jboss/ejb3/locator/client/CachingServiceLocator.java	2007-10-04 23:40:40 UTC (rev 65864)
+++ projects/ejb3/trunk/locator/src/main/java/org/jboss/ejb3/locator/client/CachingServiceLocator.java	2007-10-05 00:16:36 UTC (rev 65865)
@@ -157,7 +157,7 @@
          T obj = this.getObjectFromCache(clazz);
 
          // Ensure implements specified interface
-         if (!objectImplementsInterface(obj, clazz))
+         if (!clazz.isAssignableFrom(obj.getClass()))
          {
             // Object was placed into cache under incorrect key; integrity of cache broken
             throw new ServiceLocatorException("Object in cache under key " + clazz.getName()
@@ -220,29 +220,6 @@
    }
 
    /**
-    * Returns whether the specified object implements the specified interface
-    * 
-    * @param obj
-    * @param interfaze
-    * @return
-    */
-   protected boolean objectImplementsInterface(Object obj, Class<?> interfaze)
-   {
-      // Loop through all implemented interfaces, looking for specified
-      for (Class<?> ifaze : obj.getClass().getInterfaces())
-      {
-         // Specified interface found
-         if (interfaze.equals(ifaze))
-         {
-            return true;
-         }
-      }
-
-      // Specified interface was not found
-      return false;
-   }
-
-   /**
     * Adds the specified class and all superclasses to the cache of bound
     * objects
     * 

Modified: projects/ejb3/trunk/locator/src/main/java/org/jboss/ejb3/locator/client/JndiHostMetadataParser.java
===================================================================
--- projects/ejb3/trunk/locator/src/main/java/org/jboss/ejb3/locator/client/JndiHostMetadataParser.java	2007-10-04 23:40:40 UTC (rev 65864)
+++ projects/ejb3/trunk/locator/src/main/java/org/jboss/ejb3/locator/client/JndiHostMetadataParser.java	2007-10-05 00:16:36 UTC (rev 65865)
@@ -27,14 +27,21 @@
 import java.util.List;
 
 import org.apache.commons.digester.Digester;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.validator.GenericValidator;
 import org.xml.sax.SAXException;
 
 public class JndiHostMetadataParser
 {
 
    // Class Members
+   private static final Log logger = LogFactory.getLog(JndiHostMetadataParser.class);
+
    private static JndiHostMetadataParser instance = null;
 
+   private static final String DEFAULT_JNDI_HOST_ID_PREFIX = "JNDIHOST-";
+
    // Internal Constructor
    private JndiHostMetadataParser()
    {
@@ -64,11 +71,12 @@
       // Add Rules for parsing configuration
       this.addJnpHostDefinitionsParsingRules(jndiHostDefinitionsDigester);
 
-      //TODO Assign each JNDI Host a unique ID
       // Parse
+      List<JndiHost> jndiHosts = null;
       try
       {
-         return (List<JndiHost>) jndiHostDefinitionsDigester.parse(inStream);
+         // Parse
+         jndiHosts = (List<JndiHost>) jndiHostDefinitionsDigester.parse(inStream);
       }
       catch (IOException e)
       {
@@ -78,6 +86,31 @@
       {
          throw new ServiceLocatorException(e);
       }
+
+      // Assign each JNDI Host a unique ID, if not assigned
+      int id = 0;
+      List<String> ids = new ArrayList<String>();
+      for (JndiHost jndiHost : jndiHosts)
+      {
+         // No ID specified for this host, assign one
+         if (GenericValidator.isBlankOrNull(jndiHost.getId()))
+         {
+            jndiHost.setId(JndiHostMetadataParser.DEFAULT_JNDI_HOST_ID_PREFIX + Integer.toString((id++)));
+         }
+
+         // Check for multiple IDs
+         if (ids.contains(jndiHost.getId()))
+         {
+            throw new ServiceLocatorException("JNDI Host with address " + jndiHost.getAddress()
+                  + " has conflicting/duplicate ID of " + jndiHost.getId());
+         }
+         else
+         {
+            // Add to list of IDs
+            ids.add(jndiHost.getId());
+         }
+      }
+      return jndiHosts;
    }
 
    // Internal Helper Methods
@@ -89,30 +122,31 @@
     */
    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);
+      digester.addObjectCreate("service-locator/jndi-hosts", ArrayList.class);
 
       // When a new host definition is encountered,
       // create a new JNP Host
-      digester.addObjectCreate("jndi-hosts/host", JndiHost.class);
+      digester.addObjectCreate("service-locator/jndi-hosts/jndi-host", JndiHost.class);
 
       // Set all properties (in this case, "name")
       // from the "host" entry to the "JnpHost.name"
       // object
-      digester.addSetProperties("jndi-hosts/host");
+      digester.addSetProperties("service-locator/jndi-hosts/jndi-host");
 
       // Set the address
-      digester.addCallMethod("jndi-hosts/host/address", "setAddress", 1);
-      digester.addCallParam("jndi-hosts/host/address", 0);
+      digester.addCallMethod("service-locator/jndi-hosts/jndi-host/address", "setAddress", 1);
+      digester.addCallParam("service-locator/jndi-hosts/jndi-host/address", 0);
 
       // Set the port
-      digester.addCallMethod("jndi-hosts/host/port", "setPort", 1, new Class[]
+      digester.addCallMethod("service-locator/jndi-hosts/jndi-host/port", "setPort", 1, new Class[]
       {Integer.class});
-      digester.addCallParam("jndi-hosts/host/port", 0);
+      digester.addCallParam("service-locator/jndi-hosts/jndi-host/port", 0);
 
       // Add the JNP Host to the List
-      digester.addSetNext("jndi-hosts/host", "add");
+      digester.addSetNext("service-locator/jndi-hosts/jndi-host", "add");
 
    }
 

Added: projects/ejb3/trunk/locator/src/test/java/org/jboss/ejb3/test/locator/client/jndihostconfigparsing/JndiHostParsingTestCase.java
===================================================================
--- projects/ejb3/trunk/locator/src/test/java/org/jboss/ejb3/test/locator/client/jndihostconfigparsing/JndiHostParsingTestCase.java	                        (rev 0)
+++ projects/ejb3/trunk/locator/src/test/java/org/jboss/ejb3/test/locator/client/jndihostconfigparsing/JndiHostParsingTestCase.java	2007-10-05 00:16:36 UTC (rev 65865)
@@ -0,0 +1,66 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.ejb3.test.locator.client.jndihostconfigparsing;
+
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.ejb3.locator.client.JndiHost;
+import org.jboss.ejb3.locator.client.JndiHostMetadataParser;
+
+public class JndiHostParsingTestCase extends TestCase
+{
+   // Class Members
+
+   private static final Log logger = LogFactory.getLog(JndiHostParsingTestCase.class);
+
+   private static final String FILE_NAME_CONFIGURATION_DEFAULT = "jboss-ejb3-servicelocator.xml";
+
+   // Overridden Implementations
+   /**
+    * Setup
+    */
+   @Override
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+   }
+
+   // Test Methods
+   public void testParse()
+   {
+      // Initialize
+      boolean noParseErrors = true;
+
+      try
+      {
+         // Parse
+         this.getConfigurationFromConfigFile(JndiHostParsingTestCase.FILE_NAME_CONFIGURATION_DEFAULT);
+      }
+      catch (Exception e)
+      {
+         logger.error(e);
+         noParseErrors = false;
+      }
+
+      // Test
+      assertTrue(noParseErrors);
+   }
+
+   // Internal Helper Methods
+   /**
+    * Obtains the configuration parsed from the specified file name
+    */
+   private List<JndiHost> getConfigurationFromConfigFile(String fileName)
+   {
+      return JndiHostMetadataParser.getInstance().parse(
+            Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName));
+   }
+}


Property changes on: projects/ejb3/trunk/locator/src/test/java/org/jboss/ejb3/test/locator/client/jndihostconfigparsing/JndiHostParsingTestCase.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/ejb3/trunk/locator/src/test/resources/jboss-ejb3-servicelocator.xml
===================================================================
--- projects/ejb3/trunk/locator/src/test/resources/jboss-ejb3-servicelocator.xml	                        (rev 0)
+++ projects/ejb3/trunk/locator/src/test/resources/jboss-ejb3-servicelocator.xml	2007-10-05 00:16:36 UTC (rev 65865)
@@ -0,0 +1,12 @@
+<service-locator>
+
+	<jndi-hosts>
+
+		<jndi-host>
+			<address>localhost</address>
+			<port>1099</port>
+		</jndi-host>
+
+	</jndi-hosts>
+
+</service-locator>
\ No newline at end of file


Property changes on: projects/ejb3/trunk/locator/src/test/resources/jboss-ejb3-servicelocator.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/ejb3/trunk/locator/src/test/resources/log4j.xml
===================================================================
--- projects/ejb3/trunk/locator/src/test/resources/log4j.xml	                        (rev 0)
+++ projects/ejb3/trunk/locator/src/test/resources/log4j.xml	2007-10-05 00:16:36 UTC (rev 65865)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- ===================================================================== -->
+<!--                                                                       -->
+<!--  Log4j Configuration                                                  -->
+<!--                                                                       -->
+<!-- ===================================================================== -->
+
+<!-- $Id: log4j.xml 65339 2007-09-12 16:21:48Z wolfc $ -->
+
+<!--
+	| For more configuration infromation and examples see the Jakarta Log4j
+	| owebsite: http://jakarta.apache.org/log4j
+-->
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
+	debug="false">
+
+	<!-- ================================= -->
+	<!-- Preserve messages in a local file -->
+	<!-- ================================= -->
+
+	<!-- A time/date based rolling appender -->
+	<appender name="FILE"
+		class="org.jboss.logging.appender.DailyRollingFileAppender">
+		<param name="File" value="target/test.log" />
+		<param name="Append" value="false" />
+
+		<!-- Rollover at midnight each day -->
+		<param name="DatePattern" value="'.'yyyy-MM-dd" />
+
+		<!-- Rollover at the top of each hour
+			<param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
+		-->
+
+		<layout class="org.apache.log4j.PatternLayout">
+			<!-- The default pattern: Date Priority [Category] Message\n -->
+			<param name="ConversionPattern" value="%d %-5p [%c] %m%n" />
+
+			<!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
+				<param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
+			-->
+		</layout>
+	</appender>
+
+
+	<!-- ============================== -->
+	<!-- Append messages to the console -->
+	<!-- ============================== -->
+
+	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+		<!--param name="Threshold" value="FATAL"/-->
+		<param name="Target" value="System.out" />
+
+		<layout class="org.apache.log4j.PatternLayout">
+			<!-- The default pattern: Date Priority [Category] Message\n -->
+			<param name="ConversionPattern"
+				value="%d{ABSOLUTE} %-5p [%c{1}] %m%n" />
+		</layout>
+	</appender>
+
+	<!-- ================ -->
+	<!-- Limit categories -->
+	<!-- ================ -->
+
+
+	<!-- ======================= -->
+	<!-- Setup the Root category -->
+	<!-- ======================= -->
+
+	<root>
+		<priority value="WARN" />
+		<appender-ref ref="CONSOLE" />
+		<appender-ref ref="FILE" />
+	</root>
+
+</log4j:configuration>


Property changes on: projects/ejb3/trunk/locator/src/test/resources/log4j.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain




More information about the jboss-cvs-commits mailing list