[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