You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ps...@apache.org on 2004/12/27 07:01:15 UTC
svn commit: r123389 - in incubator/directory/naming/trunk: . config/src/java/org/apache/naming/config config/src/test/org/apache/naming/config factory xdocs
Author: psteitz
Date: Sun Dec 26 22:01:14 2004
New Revision: 123389
URL: http://svn.apache.org/viewcvs?view=rev&rev=123389
Log:
servlet.
Modified:
incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java
incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java
incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java
incubator/directory/naming/trunk/factory/project.xml
incubator/directory/naming/trunk/project.xml
incubator/directory/naming/trunk/xdocs/using.xml
Modified: incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java
Url: http://svn.apache.org/viewcvs/incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java?view=diff&rev=123389&p1=incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java&r1=123388&p2=incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java&r2=123389
==============================================================================
--- incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java (original)
+++ incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java Sun Dec 26 22:01:14 2004
@@ -92,7 +92,7 @@
*/
public void addSubContextNames(Set sortedSubcontextNameSet) throws InvalidNameException
{
- if (name != null)
+ if ((name != null) && !environmentList.iterator().hasNext() && !resourceList.iterator().hasNext())
{
sortedSubcontextNameSet.add(name);
}
Modified: incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java
Url: http://svn.apache.org/viewcvs/incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java?view=diff&rev=123389&p1=incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java&r1=123388&p2=incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java&r2=123389
==============================================================================
--- incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java (original)
+++ incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java Sun Dec 26 22:01:14 2004
@@ -24,6 +24,9 @@
import javax.naming.Context;
import javax.naming.InitialContext;
+import javax.naming.Name;
+import javax.naming.NameClassPair;
+import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import org.apache.commons.digester.Digester;
@@ -61,10 +64,11 @@
public static synchronized void destroyInitialContext() throws NamingException {
Context initialContext = new InitialContext();
- Context ctx = (Context) initialContext.lookup(COMP_CONTEXT_NAME);
- ctx.destroySubcontext(ENV_CONTEXT_NAME);
- envContext = null;
- initialContext.destroySubcontext(COMP_CONTEXT_NAME);
+ NamingEnumeration contexts = initialContext.list("");
+ while (contexts.hasMore()) {
+ initialContext.destroySubcontext(((NameClassPair) contexts.next()).getName());
+ }
+ envContext = null;
initialContext = null;
}
@@ -102,7 +106,6 @@
LOG.debug("XML configuration loaded: " + naming.toString());
}
- precreateSubcontextTree(envContext, naming.generateSortedSubcontextNameSet());
for (Iterator i = naming.getContextList().iterator(); i.hasNext();)
{
@@ -110,8 +113,16 @@
Context jndiCtx = envContext;
if (ctx.getName() != null)
{
- jndiCtx = (Context) jndiCtx.lookup(ctx.getName());
+ destroyInitialContext();
+ Context initialContext = new InitialContext();
+ Name nm = initialContext.getNameParser("").parse(ctx.getName());
+ envContext = initialContext.createSubcontext(nm.get(0));
+ jndiCtx = envContext;
+ for (int k = 1; k < nm.size(); k++) {
+ jndiCtx = jndiCtx.createSubcontext(nm.get(k));
+ }
}
+ precreateSubcontextTree(jndiCtx, naming.generateSortedSubcontextNameSet());
for (Iterator j = ctx.getEnvironmentList().iterator(); j.hasNext();)
{
Modified: incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java
Url: http://svn.apache.org/viewcvs/incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java?view=diff&rev=123389&p1=incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java&r1=123388&p2=incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java&r2=123389
==============================================================================
--- incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java (original)
+++ incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java Sun Dec 26 22:01:14 2004
@@ -45,7 +45,6 @@
*/
protected void setUp() throws Exception {
super.setUp();
- XmlConfigurator.loadConfiguration(getClass().getResourceAsStream("/test-jndi.xml"));
}
/*
@@ -54,76 +53,113 @@
protected void tearDown() throws Exception {
super.tearDown();
XmlConfigurator.destroyInitialContext();
- }
-
- /**
- * Test for correctly configured environment entries.
- * @throws Exception as tests do
- */
- public void testEnvironment() throws Exception {
- Context ctx = new InitialContext();
- Context env = (Context) ctx.lookup("java:comp/env");
- String host = (String) env.lookup("config/host");
- Integer port = (Integer) env.lookup("config/port");
-
- assertEquals("Check host", "www.apache.org", host);
- assertEquals("Check port", new Integer(80), port);
-
- Boolean trueBool = (Boolean) env.lookup("config/mytruebool");
- Boolean falseBool = (Boolean) env.lookup("config/myfalsebool");
-
- assertTrue("Check true boolean value", trueBool.booleanValue());
- assertTrue("Check false boolean value", !falseBool.booleanValue());
- }
-
- /**
- * Test config as a subcontext of a different root.
- * @throws Exception if it fails
- */
- public void testDuplicateSubcontextName() throws Exception {
- Context ctx = new InitialContext();
- Context env = (Context) ctx.lookup("java:comp/env");
- String user = (String) env.lookup("jdbc/config/pool/user");
-
- assertEquals("Check user", "dbuser", user);
- }
-
- /**
- * Test for correctly configured and operational database connection
- * resource factories.
- * @throws Exception as tests do
- */
- public void testJdbc() throws Exception {
- Context ctx = new InitialContext();
- Context env = (Context) ctx.lookup("java:comp/env");
- System.err.println("foo: "+env.lookup("jdbc/pool"));
- System.err.println("foc: "+env.lookup("jdbc/pool").getClass());
- DataSource ds = (DataSource) env.lookup("jdbc/pool");
- Connection con = null;
- Statement stat = null;
- ResultSet rs = null;
- try {
- con = ds.getConnection();
- stat = con.createStatement();
- stat.executeUpdate("DROP TABLE DUAL IF EXISTS");
- stat.executeUpdate("CREATE TABLE DUAL(value char(50))");
- stat.executeUpdate("INSERT INTO DUAL VALUES(1)");
- rs = stat.executeQuery("SELECT * FROM DUAL");
- while (rs.next()) {
- assertEquals("Check you get back what you put into the DB", 1, rs.getInt(1));
- }
- }
- finally {
- if (rs != null) {
- rs.close();
- }
- if (stat != null) {
- stat.close();
- }
- if (con != null) {
- con.close();
- }
- }
+ }
+
+ /**
+ * Default root context name -- what XmlConfigurator assumes if root context
+ * element in xml config file does not have a name attribute, as in
+ * test-jndi.xml
+ */
+ protected static String DEFAULT_ROOT="java:comp/env";
+
+ /**
+ * Alternate root context name specified in test-jndi2.xml. Must match
+ * name attribute of top-level context element in test-jndi2.xml
+ */
+ protected static String ALT_ROOT="alt/root/context";
+
+ /**
+ * Test for correctly configured environment entries.
+ * @throws Exception as tests do
+ */
+ public void testEnvironment() throws Exception {
+ XmlConfigurator.loadConfiguration(getClass().getResourceAsStream("/test-jndi.xml"));
+ checkEnvironment(DEFAULT_ROOT);
+ XmlConfigurator.destroyInitialContext();
+ XmlConfigurator.loadConfiguration(getClass().getResourceAsStream("/test-jndi2.xml"));
+ checkEnvironment(ALT_ROOT);
+ }
+
+ protected void checkEnvironment(String root) throws Exception {
+ Context ctx = new InitialContext();
+ Context env = (Context) ctx.lookup(root);
+ String host = (String) env.lookup("config/host");
+ Integer port = (Integer) env.lookup("config/port");
+
+ assertEquals("Check host", "www.apache.org", host);
+ assertEquals("Check port", new Integer(80), port);
+
+ Boolean trueBool = (Boolean) env.lookup("config/mytruebool");
+ Boolean falseBool = (Boolean) env.lookup("config/myfalsebool");
+
+ assertTrue("Check true boolean value", trueBool.booleanValue());
+ assertTrue("Check false boolean value", !falseBool.booleanValue());
+
+ trueBool = (Boolean) ctx.lookup(root + "/config/mytruebool");
+ assertTrue("Check true boolean value -- root lookup", trueBool.booleanValue());
+
+ }
+
+ /**
+ * Test config as a subcontext of a different root.
+ * @throws Exception if it fails
+ */
+ public void testDuplicateSubcontextName() throws Exception{
+ XmlConfigurator.loadConfiguration(getClass().getResourceAsStream("/test-jndi.xml"));
+ checkDuplicateSubcontextName(DEFAULT_ROOT);
+ }
+
+ protected void checkDuplicateSubcontextName(String root) throws Exception {
+ Context ctx = new InitialContext();
+ Context env = (Context) ctx.lookup(root);
+ String user = (String) env.lookup("jdbc/config/pool/user");
+ assertEquals("Check user", "dbuser", user);
+ user = (String) ctx.lookup(root + "/jdbc/config/pool/user");
+ assertEquals("Check user -- root lookup", "dbuser", user);
+ }
+
+ /**
+ * Test for correctly configured and operational database connection
+ * resource factories.
+ * @throws Exception as tests do
+ */
+ public void testJdbc() throws Exception {
+ XmlConfigurator.loadConfiguration(getClass().getResourceAsStream("/test-jndi.xml"));
+ checkJdbc(DEFAULT_ROOT);
+ XmlConfigurator.destroyInitialContext();
+ XmlConfigurator.loadConfiguration(getClass().getResourceAsStream("/test-jndi2.xml"));
+ checkJdbc(ALT_ROOT);
+ }
+
+ protected void checkJdbc(String root) throws Exception {
+ Context ctx = new InitialContext();
+ Context env = (Context) ctx.lookup(root);
+ DataSource ds = (DataSource) env.lookup("jdbc/pool");
+ Connection con = null;
+ Statement stat = null;
+ ResultSet rs = null;
+ try {
+ con = ds.getConnection();
+ stat = con.createStatement();
+ stat.executeUpdate("DROP TABLE DUAL IF EXISTS");
+ stat.executeUpdate("CREATE TABLE DUAL(value char(50))");
+ stat.executeUpdate("INSERT INTO DUAL VALUES(1)");
+ rs = stat.executeQuery("SELECT * FROM DUAL");
+ while (rs.next()) {
+ assertEquals("Check you get back what you put into the DB", 1, rs.getInt(1));
+ }
+ }
+ finally {
+ if (rs != null) {
+ rs.close();
+ }
+ if (stat != null) {
+ stat.close();
+ }
+ if (con != null) {
+ con.close();
+ }
+ }
}
}
Modified: incubator/directory/naming/trunk/factory/project.xml
Url: http://svn.apache.org/viewcvs/incubator/directory/naming/trunk/factory/project.xml?view=diff&rev=123389&p1=incubator/directory/naming/trunk/factory/project.xml&r1=123388&p2=incubator/directory/naming/trunk/factory/project.xml&r2=123389
==============================================================================
--- incubator/directory/naming/trunk/factory/project.xml (original)
+++ incubator/directory/naming/trunk/factory/project.xml Sun Dec 26 22:01:14 2004
@@ -19,10 +19,24 @@
<version>1.0.1B-rc1</version>
</dependency>
+ <!--
<dependency>
<groupId>geronimo-spec</groupId>
<artifactId>geronimo-spec-javamail</artifactId>
<version>1.3.1-rc1</version>
+ </dependency>
+ -->
+
+ <dependency>
+ <groupId>javamail</groupId>
+ <artifactId>javamail</artifactId>
+ <version>1.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>javamail</groupId>
+ <artifactId>activation</artifactId>
+ <version>1.2</version>
</dependency>
<dependency>
Modified: incubator/directory/naming/trunk/project.xml
Url: http://svn.apache.org/viewcvs/incubator/directory/naming/trunk/project.xml?view=diff&rev=123389&p1=incubator/directory/naming/trunk/project.xml&r1=123388&p2=incubator/directory/naming/trunk/project.xml&r2=123389
==============================================================================
--- incubator/directory/naming/trunk/project.xml (original)
+++ incubator/directory/naming/trunk/project.xml Sun Dec 26 22:01:14 2004
@@ -150,8 +150,8 @@
<reports>
<!-- <report>maven-changelog-plugin</report> -->
<!-- <report>maven-changes-plugin</report> -->
- <!-- breaks for me <report>maven-checkstyle-plugin</report> -->
- <!-- <report>maven-clover-plugin</report> -->
+ <report>maven-checkstyle-plugin</report>
+ <report>maven-clover-plugin</report>
<!-- <report>maven-developer-activity-plugin</report> -->
<!-- <report>maven-file-activity-plugin</report> -->
<report>maven-javadoc-plugin</report>
@@ -159,7 +159,7 @@
<report>maven-junit-report-plugin</report>
<report>maven-jxr-plugin</report>
<!-- <report>maven-license-plugin</report> -->
- <!-- <report>maven-linkcheck-plugin</report> -->
+ <report>maven-linkcheck-plugin</report>
<!-- <report>maven-statcvs-plugin</report> -->
<report>maven-tasklist-plugin</report>
</reports>
Modified: incubator/directory/naming/trunk/xdocs/using.xml
Url: http://svn.apache.org/viewcvs/incubator/directory/naming/trunk/xdocs/using.xml?view=diff&rev=123389&p1=incubator/directory/naming/trunk/xdocs/using.xml&r1=123388&p2=incubator/directory/naming/trunk/xdocs/using.xml&r2=123389
==============================================================================
--- incubator/directory/naming/trunk/xdocs/using.xml (original)
+++ incubator/directory/naming/trunk/xdocs/using.xml Sun Dec 26 22:01:14 2004
@@ -19,12 +19,42 @@
<section name="Examples">
<subsection name="Configuring JNDI resources using XMLConfigurator">
<p>
- The <code>XMLConfigurator</code> allows you to configure and load JNDI
- resources using xml configuration files using a syntax very similar to that
- used by Jakarta Tomcat's server.xml file. [FIXME -- add schema/dtd reference.]
- For a full introduction to JNDI resources and resource factories, see
+ The <code>XMLConfigurator</code> allows you set JNDI environment entries
+ and to configure and load JNDI resources in the "java:comp/env" namespace
+ using xml configuration files. The xml syntax is similar to that used by
+ Jakarta Tomcat's <code>server.xml</code> and the J2EE <code>web.xml</code>
+ configuration files. For a full introduction to JNDI resources and resource factories, see
<a href="http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-resources-howto.html">
Tomcat JNDI Resources HOW-TO</a>
+ </p>
+ <p>
+ The structure of the configuation file is
+ <source><![CDATA[
+<naming>
+ <context>
+ <environment name="..." value="..." type="..." />
+ ...
+ <resource name="..." type="...">
+ <parameter>
+ <name>...</name>
+ <value>...</value>
+ </parameter>
+ ...
+ </resource>
+ </context>
+</naming>
+ ]]>
+ </source>
+ </p>
+ <p>
+ The <code>environment</code> entries achieve the same effect as
+ <code>env-entry</code> elements in <code>web.xml</code>. The
+ <code>resource</code> elements behave like <code>Resource</code> elements
+ in <code>server.xml</code>. Note that here "resource" starts with a
+ lower case "r" and the <code>parameter</code> elements are its content
+ (In Tomcat's <code>server.xml</code>, <code>Resource</code> is an empty
+ tag and the parameters are included in a <code>ResourceParams</code>
+ element.)
</p>
<p>
Here is an example, showing how to configure a database connection pool and
Re: svn commit: r123389 - in incubator/directory/naming/trunk: .
config/src/java/org/apache/naming/config config/src/test/org/apache/naming/config
factory xdocs
Posted by Phil Steitz <ph...@steitz.com>.
Aaaarhg! This commit was a mistake!
I have reverted the project.xml changes. The other changes are to apply
the patch referenced in
http://nagoya.apache.org/jira/browse/DIRNAMING-9. I will roll back
these changes if others do not like the patch / approach.
Phil
psteitz@apache.org wrote:
> Author: psteitz
> Date: Sun Dec 26 22:01:14 2004
> New Revision: 123389
>
> URL: http://svn.apache.org/viewcvs?view=rev&rev=123389
> Log:
> servlet.
> Modified:
> incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java
> incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java
> incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java
> incubator/directory/naming/trunk/factory/project.xml
> incubator/directory/naming/trunk/project.xml
> incubator/directory/naming/trunk/xdocs/using.xml
>
> Modified: incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java
> Url: http://svn.apache.org/viewcvs/incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java?view=diff&rev=123389&p1=incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java&r1=123388&p2=incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java&r2=123389
> ==============================================================================
> --- incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java (original)
> +++ incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/Config.java Sun Dec 26 22:01:14 2004
> @@ -92,7 +92,7 @@
> */
> public void addSubContextNames(Set sortedSubcontextNameSet) throws InvalidNameException
> {
> - if (name != null)
> + if ((name != null) && !environmentList.iterator().hasNext() && !resourceList.iterator().hasNext())
> {
> sortedSubcontextNameSet.add(name);
> }
>
> Modified: incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java
> Url: http://svn.apache.org/viewcvs/incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java?view=diff&rev=123389&p1=incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java&r1=123388&p2=incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java&r2=123389
> ==============================================================================
> --- incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java (original)
> +++ incubator/directory/naming/trunk/config/src/java/org/apache/naming/config/XmlConfigurator.java Sun Dec 26 22:01:14 2004
> @@ -24,6 +24,9 @@
>
> import javax.naming.Context;
> import javax.naming.InitialContext;
> +import javax.naming.Name;
> +import javax.naming.NameClassPair;
> +import javax.naming.NamingEnumeration;
> import javax.naming.NamingException;
>
> import org.apache.commons.digester.Digester;
> @@ -61,10 +64,11 @@
>
> public static synchronized void destroyInitialContext() throws NamingException {
> Context initialContext = new InitialContext();
> - Context ctx = (Context) initialContext.lookup(COMP_CONTEXT_NAME);
> - ctx.destroySubcontext(ENV_CONTEXT_NAME);
> - envContext = null;
> - initialContext.destroySubcontext(COMP_CONTEXT_NAME);
> + NamingEnumeration contexts = initialContext.list("");
> + while (contexts.hasMore()) {
> + initialContext.destroySubcontext(((NameClassPair) contexts.next()).getName());
> + }
> + envContext = null;
> initialContext = null;
> }
>
> @@ -102,7 +106,6 @@
> LOG.debug("XML configuration loaded: " + naming.toString());
> }
>
> - precreateSubcontextTree(envContext, naming.generateSortedSubcontextNameSet());
>
> for (Iterator i = naming.getContextList().iterator(); i.hasNext();)
> {
> @@ -110,8 +113,16 @@
> Context jndiCtx = envContext;
> if (ctx.getName() != null)
> {
> - jndiCtx = (Context) jndiCtx.lookup(ctx.getName());
> + destroyInitialContext();
> + Context initialContext = new InitialContext();
> + Name nm = initialContext.getNameParser("").parse(ctx.getName());
> + envContext = initialContext.createSubcontext(nm.get(0));
> + jndiCtx = envContext;
> + for (int k = 1; k < nm.size(); k++) {
> + jndiCtx = jndiCtx.createSubcontext(nm.get(k));
> + }
> }
> + precreateSubcontextTree(jndiCtx, naming.generateSortedSubcontextNameSet());
>
> for (Iterator j = ctx.getEnvironmentList().iterator(); j.hasNext();)
> {
>
> Modified: incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java
> Url: http://svn.apache.org/viewcvs/incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java?view=diff&rev=123389&p1=incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java&r1=123388&p2=incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java&r2=123389
> ==============================================================================
> --- incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java (original)
> +++ incubator/directory/naming/trunk/config/src/test/org/apache/naming/config/XmlConfiguratorTest.java Sun Dec 26 22:01:14 2004
> @@ -45,7 +45,6 @@
> */
> protected void setUp() throws Exception {
> super.setUp();
> - XmlConfigurator.loadConfiguration(getClass().getResourceAsStream("/test-jndi.xml"));
> }
>
> /*
> @@ -54,76 +53,113 @@
> protected void tearDown() throws Exception {
> super.tearDown();
> XmlConfigurator.destroyInitialContext();
> - }
> -
> - /**
> - * Test for correctly configured environment entries.
> - * @throws Exception as tests do
> - */
> - public void testEnvironment() throws Exception {
> - Context ctx = new InitialContext();
> - Context env = (Context) ctx.lookup("java:comp/env");
> - String host = (String) env.lookup("config/host");
> - Integer port = (Integer) env.lookup("config/port");
> -
> - assertEquals("Check host", "www.apache.org", host);
> - assertEquals("Check port", new Integer(80), port);
> -
> - Boolean trueBool = (Boolean) env.lookup("config/mytruebool");
> - Boolean falseBool = (Boolean) env.lookup("config/myfalsebool");
> -
> - assertTrue("Check true boolean value", trueBool.booleanValue());
> - assertTrue("Check false boolean value", !falseBool.booleanValue());
> - }
> -
> - /**
> - * Test config as a subcontext of a different root.
> - * @throws Exception if it fails
> - */
> - public void testDuplicateSubcontextName() throws Exception {
> - Context ctx = new InitialContext();
> - Context env = (Context) ctx.lookup("java:comp/env");
> - String user = (String) env.lookup("jdbc/config/pool/user");
> -
> - assertEquals("Check user", "dbuser", user);
> - }
> -
> - /**
> - * Test for correctly configured and operational database connection
> - * resource factories.
> - * @throws Exception as tests do
> - */
> - public void testJdbc() throws Exception {
> - Context ctx = new InitialContext();
> - Context env = (Context) ctx.lookup("java:comp/env");
> - System.err.println("foo: "+env.lookup("jdbc/pool"));
> - System.err.println("foc: "+env.lookup("jdbc/pool").getClass());
> - DataSource ds = (DataSource) env.lookup("jdbc/pool");
> - Connection con = null;
> - Statement stat = null;
> - ResultSet rs = null;
> - try {
> - con = ds.getConnection();
> - stat = con.createStatement();
> - stat.executeUpdate("DROP TABLE DUAL IF EXISTS");
> - stat.executeUpdate("CREATE TABLE DUAL(value char(50))");
> - stat.executeUpdate("INSERT INTO DUAL VALUES(1)");
> - rs = stat.executeQuery("SELECT * FROM DUAL");
> - while (rs.next()) {
> - assertEquals("Check you get back what you put into the DB", 1, rs.getInt(1));
> - }
> - }
> - finally {
> - if (rs != null) {
> - rs.close();
> - }
> - if (stat != null) {
> - stat.close();
> - }
> - if (con != null) {
> - con.close();
> - }
> - }
> + }
> +
> + /**
> + * Default root context name -- what XmlConfigurator assumes if root context
> + * element in xml config file does not have a name attribute, as in
> + * test-jndi.xml
> + */
> + protected static String DEFAULT_ROOT="java:comp/env";
> +
> + /**
> + * Alternate root context name specified in test-jndi2.xml. Must match
> + * name attribute of top-level context element in test-jndi2.xml
> + */
> + protected static String ALT_ROOT="alt/root/context";
> +
> + /**
> + * Test for correctly configured environment entries.
> + * @throws Exception as tests do
> + */
> + public void testEnvironment() throws Exception {
> + XmlConfigurator.loadConfiguration(getClass().getResourceAsStream("/test-jndi.xml"));
> + checkEnvironment(DEFAULT_ROOT);
> + XmlConfigurator.destroyInitialContext();
> + XmlConfigurator.loadConfiguration(getClass().getResourceAsStream("/test-jndi2.xml"));
> + checkEnvironment(ALT_ROOT);
> + }
> +
> + protected void checkEnvironment(String root) throws Exception {
> + Context ctx = new InitialContext();
> + Context env = (Context) ctx.lookup(root);
> + String host = (String) env.lookup("config/host");
> + Integer port = (Integer) env.lookup("config/port");
> +
> + assertEquals("Check host", "www.apache.org", host);
> + assertEquals("Check port", new Integer(80), port);
> +
> + Boolean trueBool = (Boolean) env.lookup("config/mytruebool");
> + Boolean falseBool = (Boolean) env.lookup("config/myfalsebool");
> +
> + assertTrue("Check true boolean value", trueBool.booleanValue());
> + assertTrue("Check false boolean value", !falseBool.booleanValue());
> +
> + trueBool = (Boolean) ctx.lookup(root + "/config/mytruebool");
> + assertTrue("Check true boolean value -- root lookup", trueBool.booleanValue());
> +
> + }
> +
> + /**
> + * Test config as a subcontext of a different root.
> + * @throws Exception if it fails
> + */
> + public void testDuplicateSubcontextName() throws Exception{
> + XmlConfigurator.loadConfiguration(getClass().getResourceAsStream("/test-jndi.xml"));
> + checkDuplicateSubcontextName(DEFAULT_ROOT);
> + }
> +
> + protected void checkDuplicateSubcontextName(String root) throws Exception {
> + Context ctx = new InitialContext();
> + Context env = (Context) ctx.lookup(root);
> + String user = (String) env.lookup("jdbc/config/pool/user");
> + assertEquals("Check user", "dbuser", user);
> + user = (String) ctx.lookup(root + "/jdbc/config/pool/user");
> + assertEquals("Check user -- root lookup", "dbuser", user);
> + }
> +
> + /**
> + * Test for correctly configured and operational database connection
> + * resource factories.
> + * @throws Exception as tests do
> + */
> + public void testJdbc() throws Exception {
> + XmlConfigurator.loadConfiguration(getClass().getResourceAsStream("/test-jndi.xml"));
> + checkJdbc(DEFAULT_ROOT);
> + XmlConfigurator.destroyInitialContext();
> + XmlConfigurator.loadConfiguration(getClass().getResourceAsStream("/test-jndi2.xml"));
> + checkJdbc(ALT_ROOT);
> + }
> +
> + protected void checkJdbc(String root) throws Exception {
> + Context ctx = new InitialContext();
> + Context env = (Context) ctx.lookup(root);
> + DataSource ds = (DataSource) env.lookup("jdbc/pool");
> + Connection con = null;
> + Statement stat = null;
> + ResultSet rs = null;
> + try {
> + con = ds.getConnection();
> + stat = con.createStatement();
> + stat.executeUpdate("DROP TABLE DUAL IF EXISTS");
> + stat.executeUpdate("CREATE TABLE DUAL(value char(50))");
> + stat.executeUpdate("INSERT INTO DUAL VALUES(1)");
> + rs = stat.executeQuery("SELECT * FROM DUAL");
> + while (rs.next()) {
> + assertEquals("Check you get back what you put into the DB", 1, rs.getInt(1));
> + }
> + }
> + finally {
> + if (rs != null) {
> + rs.close();
> + }
> + if (stat != null) {
> + stat.close();
> + }
> + if (con != null) {
> + con.close();
> + }
> + }
> }
> }
>
>
> Modified: incubator/directory/naming/trunk/factory/project.xml
> Url: http://svn.apache.org/viewcvs/incubator/directory/naming/trunk/factory/project.xml?view=diff&rev=123389&p1=incubator/directory/naming/trunk/factory/project.xml&r1=123388&p2=incubator/directory/naming/trunk/factory/project.xml&r2=123389
> ==============================================================================
> --- incubator/directory/naming/trunk/factory/project.xml (original)
> +++ incubator/directory/naming/trunk/factory/project.xml Sun Dec 26 22:01:14 2004
> @@ -19,10 +19,24 @@
> <version>1.0.1B-rc1</version>
> </dependency>
>
> + <!--
> <dependency>
> <groupId>geronimo-spec</groupId>
> <artifactId>geronimo-spec-javamail</artifactId>
> <version>1.3.1-rc1</version>
> + </dependency>
> + -->
> +
> + <dependency>
> + <groupId>javamail</groupId>
> + <artifactId>javamail</artifactId>
> + <version>1.2</version>
> + </dependency>
> +
> + <dependency>
> + <groupId>javamail</groupId>
> + <artifactId>activation</artifactId>
> + <version>1.2</version>
> </dependency>
>
> <dependency>
>
> Modified: incubator/directory/naming/trunk/project.xml
> Url: http://svn.apache.org/viewcvs/incubator/directory/naming/trunk/project.xml?view=diff&rev=123389&p1=incubator/directory/naming/trunk/project.xml&r1=123388&p2=incubator/directory/naming/trunk/project.xml&r2=123389
> ==============================================================================
> --- incubator/directory/naming/trunk/project.xml (original)
> +++ incubator/directory/naming/trunk/project.xml Sun Dec 26 22:01:14 2004
> @@ -150,8 +150,8 @@
> <reports>
> <!-- <report>maven-changelog-plugin</report> -->
> <!-- <report>maven-changes-plugin</report> -->
> - <!-- breaks for me <report>maven-checkstyle-plugin</report> -->
> - <!-- <report>maven-clover-plugin</report> -->
> + <report>maven-checkstyle-plugin</report>
> + <report>maven-clover-plugin</report>
> <!-- <report>maven-developer-activity-plugin</report> -->
> <!-- <report>maven-file-activity-plugin</report> -->
> <report>maven-javadoc-plugin</report>
> @@ -159,7 +159,7 @@
> <report>maven-junit-report-plugin</report>
> <report>maven-jxr-plugin</report>
> <!-- <report>maven-license-plugin</report> -->
> - <!-- <report>maven-linkcheck-plugin</report> -->
> + <report>maven-linkcheck-plugin</report>
> <!-- <report>maven-statcvs-plugin</report> -->
> <report>maven-tasklist-plugin</report>
> </reports>
>
> Modified: incubator/directory/naming/trunk/xdocs/using.xml
> Url: http://svn.apache.org/viewcvs/incubator/directory/naming/trunk/xdocs/using.xml?view=diff&rev=123389&p1=incubator/directory/naming/trunk/xdocs/using.xml&r1=123388&p2=incubator/directory/naming/trunk/xdocs/using.xml&r2=123389
> ==============================================================================
> --- incubator/directory/naming/trunk/xdocs/using.xml (original)
> +++ incubator/directory/naming/trunk/xdocs/using.xml Sun Dec 26 22:01:14 2004
> @@ -19,12 +19,42 @@
> <section name="Examples">
> <subsection name="Configuring JNDI resources using XMLConfigurator">
> <p>
> - The <code>XMLConfigurator</code> allows you to configure and load JNDI
> - resources using xml configuration files using a syntax very similar to that
> - used by Jakarta Tomcat's server.xml file. [FIXME -- add schema/dtd reference.]
> - For a full introduction to JNDI resources and resource factories, see
> + The <code>XMLConfigurator</code> allows you set JNDI environment entries
> + and to configure and load JNDI resources in the "java:comp/env" namespace
> + using xml configuration files. The xml syntax is similar to that used by
> + Jakarta Tomcat's <code>server.xml</code> and the J2EE <code>web.xml</code>
> + configuration files. For a full introduction to JNDI resources and resource factories, see
> <a href="http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-resources-howto.html">
> Tomcat JNDI Resources HOW-TO</a>
> + </p>
> + <p>
> + The structure of the configuation file is
> + <source><![CDATA[
> +<naming>
> + <context>
> + <environment name="..." value="..." type="..." />
> + ...
> + <resource name="..." type="...">
> + <parameter>
> + <name>...</name>
> + <value>...</value>
> + </parameter>
> + ...
> + </resource>
> + </context>
> +</naming>
> + ]]>
> + </source>
> + </p>
> + <p>
> + The <code>environment</code> entries achieve the same effect as
> + <code>env-entry</code> elements in <code>web.xml</code>. The
> + <code>resource</code> elements behave like <code>Resource</code> elements
> + in <code>server.xml</code>. Note that here "resource" starts with a
> + lower case "r" and the <code>parameter</code> elements are its content
> + (In Tomcat's <code>server.xml</code>, <code>Resource</code> is an empty
> + tag and the parameters are included in a <code>ResourceParams</code>
> + element.)
> </p>
> <p>
> Here is an example, showing how to configure a database connection pool and