geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Genender <jgenen...@savoirtech.com>
Subject Re: LDAP Change
Date Sun, 28 Aug 2005 17:54:12 GMT
I'll submit it to ibiblio and leave it to the author to submit his other 
jars that do not affect us.  In the mean time, I will add it to my 
apache public repo and temporarily add this URL to the 
etc/project.properties.  I can remove the url as soon as the jar is in 
ibiblio.  This sound ok?

Jeff

Aaron Mulder wrote:
> 	Ahh, if only I read on before answering.  Thanks Jeff.
> 
> Aaron
> 
> On Sun, 28 Aug 2005, Aaron Mulder wrote:
> 
>>	Supposedly the recently released beta 7 fixes this issue.  They 
>>don't know how to get it into the Maven repo at ibiblio, which is where 
>>we seem to be getting beta 4 from.  Any ideas?
>>
>>http://bugzilla.slf4j.org/show_bug.cgi?id=3
>>
>>Aaron
>>
>>On Sun, 28 Aug 2005, Jeff Genender wrote:
>>
>>>Aaron Mulder wrote:
>>>
>>>>	I don't mind if we get the source, recompile that one class, and 
>>>>then distribute the JAR ourselves as a Geronimo modified JAR.
>>>>
>>>>	Though for the benefit of those not on IRC, I submitted this as 
>>>>bug #3 at SLF4J.
>>>>
>>>>	Jeff, if you know exactly where the output comes from, can you 
>>>>either update the bug at SLF4J or tell me and I'll update it?
>>>
>>>Its in the src/filtered-java/org/slf4j/LoggerFactory.java.  This class 
>>>actually has several locations where they do a System.out.println.  All 
>>>of those should be removed as they are especially not appropriate for a 
>>>logger facade.
>>>
>>>It looks like Ceki (the author) has been receptive as he has alluded to 
>>>the fact its fixed.  My only concern is he said "It spurred a number of 
>>>refactorings in SLF4J code. I think the resulting code is both easier to 
>>>understand and modify."  I hope he didn't change the API, but only 
>>>removed the System.out.println.  At worst case, yes, I can pull in his 
>>>source as its only a handful of classes and remove the Sysouts myself.
>>>
>>>Jeff
>>>
>>>
>>>>Thanks,
>>>>	Aaron
>>>>
>>>>On Sat, 27 Aug 2005, Jeff Genender wrote:
>>>>
>>>>
>>>>>We'll have to get a little creative here...thats deep in the SLF4J.  We 
>>>>>may need to AOP it or override it with package visibility.  I'll find a 
>>>>>solution.
>>>>>
>>>>>Jeff
>>>>>
>>>>>Aaron Mulder wrote:
>>>>>
>>>>>
>>>>>>	Also, the progress bar is interrupted by the following output:
>>>>>>
>>>>>>SLF4J built for org.slf4j.impl.SimpleLoggerFA
>>>>>>
>>>>>>	We need to find a way to disable that.
>>>>>>
>>>>>>Aaron
>>>>>>
>>>>>>On Sat, 27 Aug 2005, Aaron Mulder wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>>Jeff,
>>>>>>>	This looks like a neat change, but there are several things that
>>>>>>>need to be done.  It introduces a hardcoded port number.  Further, the
>>>>>>>port is not marked as manageable.  And finally, it doesn't list itself in
>>>>>>>the progress bar port list.  Please:
>>>>>>>
>>>>>>>- replace the 1389 with a substitution variable in the plan
>>>>>>>
>>>>>>>- add the variable to assembly/maven.xml (line 255 or so)
>>>>>>>
>>>>>>>- mark the port property as manageable (add ", true" to the end of
>>>>>>> the info builder addAttribute call)
>>>>>>>
>>>>>>>- add an attribute of type InetSocketAddress, returning a host of 
>>>>>>> "0.0.0.0" and the proper port, for now.
>>>>>>>
>>>>>>>- add a block on this GBean to assembly/src/var/config/config.xml 
>>>>>>> including the substitution variable
>>>>>>>
>>>>>>>	Also, I'll want to see if we can add a listen host attribute and 
>>>>>>>add the configurable properties to the installer.
>>>>>>>
>>>>>>>Thanks,
>>>>>>>	Aaron
>>>>>>>
>>>>>>>On Sat, 27 Aug 2005 jgenender@apache.org wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>Author: jgenender
>>>>>>>>Date: Sat Aug 27 16:56:19 2005
>>>>>>>>New Revision: 247522
>>>>>>>>
>>>>>>>>URL: http://svn.apache.org/viewcvs?rev=247522&view=rev
>>>>>>>>Log:
>>>>>>>>New addition - Apache Directory Server
>>>>>>>>
>>>>>>>>Added:
>>>>>>>>  geronimo/trunk/modules/assembly/src/plan/directory-server-plan.xml
>>>>>>>>  geronimo/trunk/modules/directory/
>>>>>>>>  geronimo/trunk/modules/directory/maven.xml
>>>>>>>>  geronimo/trunk/modules/directory/project.properties
>>>>>>>>  geronimo/trunk/modules/directory/project.xml
>>>>>>>>  geronimo/trunk/modules/directory/src/
>>>>>>>>  geronimo/trunk/modules/directory/src/java/
>>>>>>>>  geronimo/trunk/modules/directory/src/java/org/
>>>>>>>>  geronimo/trunk/modules/directory/src/java/org/apache/
>>>>>>>>  geronimo/trunk/modules/directory/src/java/org/apache/geronimo/
>>>>>>>>  geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/
>>>>>>>>  geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/DirectoryGBean.java
>>>>>>>>  geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/MutableServerStartupConfiguration.java
>>>>>>>>  geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/ServerContextFactory.java
>>>>>>>>  geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/ServerStartupConfiguration.java
>>>>>>>>  geronimo/trunk/modules/directory/src/test/
>>>>>>>>  geronimo/trunk/modules/directory/src/test/org/
>>>>>>>>  geronimo/trunk/modules/directory/src/test/org/apache/
>>>>>>>>  geronimo/trunk/modules/directory/src/test/org/apache/geronimo/
>>>>>>>>  geronimo/trunk/modules/directory/src/test/org/apache/geronimo/directory/
>>>>>>>>  geronimo/trunk/modules/directory/src/test/org/apache/geronimo/directory/RunningTest.java
>>>>>>>>Modified:
>>>>>>>>  geronimo/trunk/modules/assembly/maven.xml
>>>>>>>>  geronimo/trunk/modules/assembly/project.xml
>>>>>>>>
>>>>>>>>Modified: geronimo/trunk/modules/assembly/maven.xml
>>>>>>>>URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/maven.xml?rev=247522&r1=247521&r2=247522&view=diff
>>>>>>>>==============================================================================
>>>>>>>>--- geronimo/trunk/modules/assembly/maven.xml (original)
>>>>>>>>+++ geronimo/trunk/modules/assembly/maven.xml Sat Aug 27 16:56:19 2005
>>>>>>>>@@ -181,6 +181,9 @@
>>>>>>>>           <ant:fileset dir="src/var"/>
>>>>>>>>       </ant:copy>
>>>>>>>>
>>>>>>>>+        <!-- For LDAP -->
>>>>>>>>+        <ant:mkdir dir="${distDir}/var/ldap"/>
>>>>>>>>+
>>>>>>>>       <j:if test="${context.getVariable('geronimo.web.container').equals('tomcat')}">
>>>>>>>>           <ant:copy todir="${distDir}/var/catalina/conf" file="${project.root}/modules/tomcat/src/var/web.xml"/>
>>>>>>>>           <ant:copy todir="${distDir}/var/catalina/ROOT">
>>>>>>>>@@ -513,6 +516,18 @@
>>>>>>>>               <ant:arg value="manager"/>
>>>>>>>>               <ant:arg value="distribute"/>
>>>>>>>>               <ant:arg value="target/plan/j2ee-client-plan.xml"/>
>>>>>>>>+            </ant:java>
>>>>>>>>+
>>>>>>>>+            <!-- build the directory server configuration -->
>>>>>>>>+            <ant:echo>Building directory server configuration</ant:echo>
>>>>>>>>+            <ant:java fork="true" jar="${distDir}/bin/deployer.jar" failonerror="true">
>>>>>>>>+                <ant:jvmarg value="-ea"/>
>>>>>>>>+                <ant:arg value="--user"/>
>>>>>>>>+                <ant:arg value="system"/>
>>>>>>>>+                <ant:arg value="--password"/>
>>>>>>>>+                <ant:arg value="manager"/>
>>>>>>>>+                <ant:arg value="distribute"/>
>>>>>>>>+                <ant:arg value="target/plan/directory-server-plan.xml"/>
>>>>>>>>           </ant:java>
>>>>>>>>
>>>>>>>>           <!-- build the Demo configuration -->
>>>>>>>>
>>>>>>>>Modified: geronimo/trunk/modules/assembly/project.xml
>>>>>>>>URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/project.xml?rev=247522&r1=247521&r2=247522&view=diff
>>>>>>>>==============================================================================
>>>>>>>>--- geronimo/trunk/modules/assembly/project.xml (original)
>>>>>>>>+++ geronimo/trunk/modules/assembly/project.xml Sat Aug 27 16:56:19 2005
>>>>>>>>@@ -205,6 +205,15 @@
>>>>>>>>       </dependency>
>>>>>>>>
>>>>>>>>       <dependency>
>>>>>>>>+            <groupId>geronimo</groupId>
>>>>>>>>+            <artifactId>geronimo-directory</artifactId>
>>>>>>>>+            <version>${pom.currentVersion}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>           <groupId>geronimo-spec</groupId>
>>>>>>>>           <artifactId>geronimo-spec-corba</artifactId>
>>>>>>>>           <version>${geronimo_spec_corba_version}</version>
>>>>>>>>@@ -1095,6 +1104,144 @@
>>>>>>>>                <repository>true</repository>
>>>>>>>>            </properties>
>>>>>>>>        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory</groupId>
>>>>>>>>+            <artifactId>apacheds-core</artifactId>
>>>>>>>>+            <version>${apacheds_version}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory</groupId>
>>>>>>>>+            <artifactId>apacheds-shared</artifactId>
>>>>>>>>+            <version>${apacheds_version}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-asn1</groupId>
>>>>>>>>+            <artifactId>asn1-codec</artifactId>
>>>>>>>>+            <version>${asn1_version}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-shared</groupId>
>>>>>>>>+            <artifactId>apache-ldapber-provider</artifactId>
>>>>>>>>+            <version>${apacheds_version}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-asn1</groupId>
>>>>>>>>+            <artifactId>asn1-ber</artifactId>
>>>>>>>>+            <version>${asn1_version}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-asn1</groupId>
>>>>>>>>+            <artifactId>asn1-der</artifactId>
>>>>>>>>+            <version>${asn1_version}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>org.slf4j</groupId>
>>>>>>>>+            <artifactId>slf4j-simple</artifactId>
>>>>>>>>+            <version>${slf4j_version}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-shared</groupId>
>>>>>>>>+            <artifactId>ldap-common</artifactId>
>>>>>>>>+            <version>${apacheds_version}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-shared</groupId>
>>>>>>>>+            <artifactId>kerberos-common</artifactId>
>>>>>>>>+            <version>${kerberos_common_version}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-network</groupId>
>>>>>>>>+            <artifactId>mina</artifactId>
>>>>>>>>+            <version>${mina_version}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-protocols</groupId>
>>>>>>>>+            <artifactId>kerberos-protocol</artifactId>
>>>>>>>>+            <version>${kerberos_protocols_version}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-protocols</groupId>
>>>>>>>>+            <artifactId>ldap-protocol</artifactId>
>>>>>>>>+            <version>${ldap_protocols_version}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>jdbm</groupId>
>>>>>>>>+            <artifactId>jdbm</artifactId>
>>>>>>>>+            <version>${jdbm_version}</version>
>>>>>>>>+            <url>http://jdbm.sourceforge.net</url>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>commons-lang</groupId>
>>>>>>>>+            <artifactId>commons-lang</artifactId>
>>>>>>>>+            <version>${commons_lang_version}</version>
>>>>>>>>+            <url>http://jakarta.apache.org/commons/lang/api</url>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>commons-io</groupId>
>>>>>>>>+            <artifactId>commons-io</artifactId>
>>>>>>>>+            <version>${commons_io_version}</version>
>>>>>>>>+            <url>http://jakarta.apache.org/commons/io</url>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>
>>>>>>>>       <dependency>
>>>>>>>>           <groupId>axis</groupId>
>>>>>>>>
>>>>>>>>Added: geronimo/trunk/modules/assembly/src/plan/directory-server-plan.xml
>>>>>>>>URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/src/plan/directory-server-plan.xml?rev=247522&view=auto
>>>>>>>>==============================================================================
>>>>>>>>--- geronimo/trunk/modules/assembly/src/plan/directory-server-plan.xml (added)
>>>>>>>>+++ geronimo/trunk/modules/assembly/src/plan/directory-server-plan.xml Sat Aug 27 16:56:19 2005
>>>>>>>>@@ -0,0 +1,112 @@
>>>>>>>>+<?xml version="1.0" encoding="UTF-8"?>
>>>>>>>>+<!--
>>>>>>>>+
>>>>>>>>+    Copyright 2004 The Apache Software Foundation
>>>>>>>>+
>>>>>>>>+    Licensed under the Apache License, Version 2.0 (the "License");
>>>>>>>>+    you may not use this file except in compliance with the License.
>>>>>>>>+    You may obtain a copy of the License at
>>>>>>>>+
>>>>>>>>+       http://www.apache.org/licenses/LICENSE-2.0
>>>>>>>>+
>>>>>>>>+    Unless required by applicable law or agreed to in writing, software
>>>>>>>>+    distributed under the License is distributed on an "AS IS" BASIS,
>>>>>>>>+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>>>>>>>+    See the License for the specific language governing permissions and
>>>>>>>>+    limitations under the License.
>>>>>>>>+-->
>>>>>>>>+
>>>>>>>>+<!-- $Rev: 239926 $ $Date: 2005-08-24 15:05:38 -0600 (Wed, 24 Aug 2005) $ -->
>>>>>>>>+
>>>>>>>>+<!--
>>>>>>>>+Configuration for the main ring of a Geronimo server.
>>>>>>>>+
>>>>>>>>+This configuration should contain those services normally provided
>>>>>>>>+by the server.
>>>>>>>>+-->
>>>>>>>>+<configuration
>>>>>>>>+    xmlns="http://geronimo.apache.org/xml/ns/deployment"
>>>>>>>>+    configId="org/apache/geronimo/Directory"
>>>>>>>>+    parentId="org/apache/geronimo/Server"
>>>>>>>>+    >
>>>>>>>>+
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>antlr/jars/antlr-${antlr_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+
>>>>>>>>+    <!-- required for rar 1.5 to load realms -->
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>regexp/jars/regexp-${regexp_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+
>>>>>>>>+    <!-- Directory -->
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>geronimo/jars/geronimo-directory-${geronimo_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>org.slf4j/jars/slf4j-simple-${slf4j_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>directory/jars/apacheds-core-${apacheds_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>directory/jars/apacheds-shared-${apacheds_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>directory-protocols/jars/ldap-protocol-${ldap_protocols_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>directory-protocols/jars/kerberos-protocol-${kerberos_protocols_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>directory-network/jars/mina-${mina_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>directory-asn1/jars/asn1-ber-${asn1_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>directory-asn1/jars/asn1-codec-${asn1_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>directory-asn1/jars/asn1-der-${asn1_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>directory-shared/jars/apache-ldapber-provider-${apacheds_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>directory-shared/jars/kerberos-common-${kerberos_common_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>directory-shared/jars/ldap-common-${apacheds_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>commons-io/jars/commons-io-${commons_io_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>commons-primitives/jars/commons-primitives-${commons_primitives_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>commons-collections/jars/commons-collections-${commons_collections_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>commons-lang/jars/commons-lang-${commons_lang_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>oro/jars/oro-${oro_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+    <dependency>
>>>>>>>>+        <uri>jdbm/jars/jdbm-${jdbm_version}.jar</uri>
>>>>>>>>+    </dependency>
>>>>>>>>+
>>>>>>>>+    <gbean gbeanName="geronimo.server:type=Server,name=Directory" class="org.apache.geronimo.directory.DirectoryGBean">
>>>>>>>>+        <attribute name="providerURL">ou=system</attribute>
>>>>>>>>+        <attribute name="securityAuthentication">simple</attribute>
>>>>>>>>+        <attribute name="securityPrincipal">uid=admin,ou=system</attribute>
>>>>>>>>+        <attribute name="securityCredentials">secret</attribute>
>>>>>>>>+        <attribute name="anonymousAccess">true</attribute>
>>>>>>>>+        <attribute name="enableNetworking">true</attribute>
>>>>>>>>+        <attribute name="ldapPort">1389</attribute>
>>>>>>>>+        <reference name="ServerInfo"><module>org/apache/geronimo/System</module><name>ServerInfo</name></reference>
>>>>>>>>+    </gbean>
>>>>>>>>+
>>>>>>>>+</configuration>
>>>>>>>>
>>>>>>>>Added: geronimo/trunk/modules/directory/maven.xml
>>>>>>>>URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/directory/maven.xml?rev=247522&view=auto
>>>>>>>>==============================================================================
>>>>>>>>--- geronimo/trunk/modules/directory/maven.xml (added)
>>>>>>>>+++ geronimo/trunk/modules/directory/maven.xml Sat Aug 27 16:56:19 2005
>>>>>>>>@@ -0,0 +1,48 @@
>>>>>>>>+<?xml version="1.0" encoding="ISO-8859-1"?>
>>>>>>>>+<!--
>>>>>>>>+
>>>>>>>>+    Copyright 2004 The Apache Software Foundation
>>>>>>>>+
>>>>>>>>+    Licensed under the Apache License, Version 2.0 (the "License");
>>>>>>>>+    you may not use this file except in compliance with the License.
>>>>>>>>+    You may obtain a copy of the License at
>>>>>>>>+
>>>>>>>>+       http://www.apache.org/licenses/LICENSE-2.0
>>>>>>>>+
>>>>>>>>+    Unless required by applicable law or agreed to in writing, software
>>>>>>>>+    distributed under the License is distributed on an "AS IS" BASIS,
>>>>>>>>+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>>>>>>>+    See the License for the specific language governing permissions and
>>>>>>>>+    limitations under the License.
>>>>>>>>+-->
>>>>>>>>+
>>>>>>>>+<!-- $Rev: 219424 $ $Date: 2005-07-17 17:19:16 -0600 (Sun, 17 Jul 2005) $ -->
>>>>>>>>+
>>>>>>>>+<project default="default"
>>>>>>>>+    xmlns:j="jelly:core"
>>>>>>>>+    xmlns:define="jelly:define"
>>>>>>>>+    xmlns:velocity="jelly:velocity">
>>>>>>>>+
>>>>>>>>+    <!-- ==================== -->
>>>>>>>>+    <!-- Default Global Goals -->
>>>>>>>>+    <!-- ==================== -->
>>>>>>>>+
>>>>>>>>+    <goal name="default">
>>>>>>>>+        <attainGoal name="build"/>
>>>>>>>>+    </goal>
>>>>>>>>+
>>>>>>>>+    <goal name="build">
>>>>>>>>+        <attainGoal name="jar:install"/>
>>>>>>>>+    </goal>
>>>>>>>>+
>>>>>>>>+    <goal name="rebuild">
>>>>>>>>+        <attainGoal name="clean"/>
>>>>>>>>+        <attainGoal name="build"/>
>>>>>>>>+    </goal>
>>>>>>>>+
>>>>>>>>+    <preGoal name="test:test">
>>>>>>>>+        <mkdir dir="${maven.build.dir}/var"/>
>>>>>>>>+        <mkdir dir="${maven.build.dir}/var/ldap"/>
>>>>>>>>+    </preGoal>
>>>>>>>>+
>>>>>>>>+</project>
>>>>>>>>
>>>>>>>>Added: geronimo/trunk/modules/directory/project.properties
>>>>>>>>URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/directory/project.properties?rev=247522&view=auto
>>>>>>>>==============================================================================
>>>>>>>>--- geronimo/trunk/modules/directory/project.properties (added)
>>>>>>>>+++ geronimo/trunk/modules/directory/project.properties Sat Aug 27 16:56:19 2005
>>>>>>>>@@ -0,0 +1,6 @@
>>>>>>>>+##
>>>>>>>>+## $Rev: 219424 $ $Date: 2005-07-17 17:19:16 -0600 (Sun, 17 Jul 2005) $
>>>>>>>>+##
>>>>>>>>+
>>>>>>>>+maven.junit.jvmargs=-Djava.endorsed.dirs=${maven.build.dir}/endorsed -ea 
>>>>>>>>+maven.junit.fork=true
>>>>>>>>
>>>>>>>>Added: geronimo/trunk/modules/directory/project.xml
>>>>>>>>URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/directory/project.xml?rev=247522&view=auto
>>>>>>>>==============================================================================
>>>>>>>>--- geronimo/trunk/modules/directory/project.xml (added)
>>>>>>>>+++ geronimo/trunk/modules/directory/project.xml Sat Aug 27 16:56:19 2005
>>>>>>>>@@ -0,0 +1,230 @@
>>>>>>>>+<?xml version="1.0" encoding="UTF-8"?>
>>>>>>>>+<!--
>>>>>>>>+
>>>>>>>>+Copyright 2003-2004 The Apache Software Foundation
>>>>>>>>+
>>>>>>>>+Licensed under the Apache License, Version 2.0 (the "License");
>>>>>>>>+you may not use this file except in compliance with the License.
>>>>>>>>+You may obtain a copy of the License at
>>>>>>>>+
>>>>>>>>+http://www.apache.org/licenses/LICENSE-2.0
>>>>>>>>+
>>>>>>>>+Unless required by applicable law or agreed to in writing, software
>>>>>>>>+distributed under the License is distributed on an "AS IS" BASIS,
>>>>>>>>+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>>>>>>>+See the License for the specific language governing permissions and
>>>>>>>>+limitations under the License.
>>>>>>>>+-->
>>>>>>>>+
>>>>>>>>+<!-- $Rev: 233346 $ $Date: 2005-08-18 12:08:26 -0600 (Thu, 18 Aug 2005) $ -->
>>>>>>>>+
>>>>>>>>+<project>
>>>>>>>>+    <pomVersion>3</pomVersion>
>>>>>>>>+    <extend>../../etc/project.xml</extend>
>>>>>>>>+
>>>>>>>>+    <!-- ===================== -->
>>>>>>>>+    <!-- Module Identification -->
>>>>>>>>+    <!-- ===================== -->
>>>>>>>>+
>>>>>>>>+    <name>Geronimo :: Directory</name>
>>>>>>>>+    <id>geronimo-directory</id>
>>>>>>>>+    <shortDescription>Geronimo Directory</shortDescription>
>>>>>>>>+    <description>Geronimo Directory integration</description>
>>>>>>>>+    <url>http://geronimo.apache.org/modules/directory</url>
>>>>>>>>+    <siteDirectory>/www/geronimo.apache.org/modules/directory</siteDirectory>
>>>>>>>>+    <distributionDirectory>/www/www.apache.org/projects/geronimo/builds/directory</distributionDirectory>
>>>>>>>>+
>>>>>>>>+    <package>org.apache.geronimo.directory</package>
>>>>>>>>+
>>>>>>>>+    <!-- ============ -->
>>>>>>>>+    <!-- Dependencies -->
>>>>>>>>+    <!-- ============ -->
>>>>>>>>+
>>>>>>>>+    <dependencies>
>>>>>>>>+        <!-- temporary solution until appropriate xmlbeans code is ready -->
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>cglib</groupId>
>>>>>>>>+            <artifactId>cglib-nodep</artifactId>
>>>>>>>>+            <version>${cglib_version}</version>
>>>>>>>>+            <url>http://cglib.sf.net/</url>
>>>>>>>>+        </dependency>
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>concurrent</groupId>
>>>>>>>>+            <artifactId>concurrent</artifactId>
>>>>>>>>+            <version>${concurrent_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <!-- Used for preprocessing our plans -->
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>commons-jelly</groupId>
>>>>>>>>+            <artifactId>commons-jelly-tags-velocity</artifactId>
>>>>>>>>+            <version>${jelly_velocity_tags_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId> velocity</groupId>
>>>>>>>>+            <artifactId>velocity</artifactId>
>>>>>>>>+            <version>${velocity_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>geronimo</groupId>
>>>>>>>>+            <artifactId>geronimo-common</artifactId>
>>>>>>>>+            <version>${pom.currentVersion}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>geronimo</groupId>
>>>>>>>>+            <artifactId>geronimo-kernel</artifactId>
>>>>>>>>+            <version>${pom.currentVersion}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>geronimo</groupId>
>>>>>>>>+            <artifactId>geronimo-system</artifactId>
>>>>>>>>+            <version>${pom.currentVersion}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory</groupId>
>>>>>>>>+            <artifactId>apacheds-core</artifactId>
>>>>>>>>+            <version>${apacheds_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory</groupId>
>>>>>>>>+            <artifactId>apacheds-shared</artifactId>
>>>>>>>>+            <version>${apacheds_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-asn1</groupId>
>>>>>>>>+            <artifactId>asn1-codec</artifactId>
>>>>>>>>+            <version>${asn1_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-shared</groupId>
>>>>>>>>+            <artifactId>apache-ldapber-provider</artifactId>
>>>>>>>>+            <version>${apacheds_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-asn1</groupId>
>>>>>>>>+            <artifactId>asn1-ber</artifactId>
>>>>>>>>+            <version>${asn1_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-asn1</groupId>
>>>>>>>>+            <artifactId>asn1-der</artifactId>
>>>>>>>>+            <version>${asn1_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>jdbm</groupId>
>>>>>>>>+            <artifactId>jdbm</artifactId>
>>>>>>>>+            <version>${jdbm_version}</version>
>>>>>>>>+            <url>http://jdbm.sourceforge.net</url>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>regexp</groupId>
>>>>>>>>+            <artifactId>regexp</artifactId>
>>>>>>>>+            <version>${regexp_version}</version>
>>>>>>>>+            <url>http://jakarta.apache.org/regexp/index.html</url>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>oro</groupId>
>>>>>>>>+            <artifactId>oro</artifactId>
>>>>>>>>+            <version>${oro_version}</version>
>>>>>>>>+            <url>http://jakarta.apache.org/oro</url>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>commons-lang</groupId>
>>>>>>>>+            <artifactId>commons-lang</artifactId>
>>>>>>>>+            <version>${commons_lang_version}</version>
>>>>>>>>+            <url>http://jakarta.apache.org/commons/lang/api</url>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>commons-collections</groupId>
>>>>>>>>+            <artifactId>commons-collections</artifactId>
>>>>>>>>+            <version>${commons_collections_version}</version>
>>>>>>>>+            <url>http://jakarta.apache.org/commons/collections</url>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>commons-io</groupId>
>>>>>>>>+            <artifactId>commons-io</artifactId>
>>>>>>>>+            <version>${commons_io_version}</version>
>>>>>>>>+            <url>http://jakarta.apache.org/commons/io</url>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>commons-primitives</groupId>
>>>>>>>>+            <artifactId>commons-primitives</artifactId>
>>>>>>>>+            <version>${commons_primitives_version}</version>
>>>>>>>>+            <url>http://jakarta.apache.org/commons/primitives</url>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-shared</groupId>
>>>>>>>>+            <artifactId>ldap-common</artifactId>
>>>>>>>>+            <version>${apacheds_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-shared</groupId>
>>>>>>>>+            <artifactId>kerberos-common</artifactId>
>>>>>>>>+            <version>${kerberos_common_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-network</groupId>
>>>>>>>>+            <artifactId>mina</artifactId>
>>>>>>>>+            <version>${mina_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-protocols</groupId>
>>>>>>>>+            <artifactId>kerberos-protocol</artifactId>
>>>>>>>>+            <version>${kerberos_protocols_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>directory-protocols</groupId>
>>>>>>>>+            <artifactId>ldap-protocol</artifactId>
>>>>>>>>+            <version>${ldap_protocols_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>antlr</groupId>
>>>>>>>>+            <artifactId>antlr</artifactId>
>>>>>>>>+            <version>${antlr_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>org.slf4j</groupId>
>>>>>>>>+            <artifactId>slf4j-simple</artifactId>
>>>>>>>>+            <version>${slf4j_version}</version>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>commons-logging</groupId>
>>>>>>>>+            <artifactId>commons-logging</artifactId>
>>>>>>>>+            <version>${commons_logging_version}</version>
>>>>>>>>+            <url>http://jakarta.apache.org/commons/logging</url>
>>>>>>>>+        </dependency>
>>>>>>>>+
>>>>>>>>+        <dependency>
>>>>>>>>+            <groupId>mx4j</groupId>
>>>>>>>>+            <artifactId>mx4j</artifactId>
>>>>>>>>+            <version>${mx4j_version}</version>
>>>>>>>>+            <properties>
>>>>>>>>+                <repository>true</repository>
>>>>>>>>+            </properties>
>>>>>>>>+        </dependency>
>>>>>>>>+    </dependencies>
>>>>>>>>+</project>
>>>>>>>>
>>>>>>>>Added: geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/DirectoryGBean.java
>>>>>>>>URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/DirectoryGBean.java?rev=247522&view=auto
>>>>>>>>==============================================================================
>>>>>>>>--- geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/DirectoryGBean.java (added)
>>>>>>>>+++ geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/DirectoryGBean.java Sat Aug 27 16:56:19 2005
>>>>>>>>@@ -0,0 +1,220 @@
>>>>>>>>+/**
>>>>>>>>+ *
>>>>>>>>+ * Copyright 2003-2004 The Apache Software Foundation
>>>>>>>>+ *
>>>>>>>>+ *  Licensed under the Apache License, Version 2.0 (the "License");
>>>>>>>>+ *  you may not use this file except in compliance with the License.
>>>>>>>>+ *  You may obtain a copy of the License at
>>>>>>>>+ *
>>>>>>>>+ *     http://www.apache.org/licenses/LICENSE-2.0
>>>>>>>>+ *
>>>>>>>>+ *  Unless required by applicable law or agreed to in writing, software
>>>>>>>>+ *  distributed under the License is distributed on an "AS IS" BASIS,
>>>>>>>>+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>>>>>>>+ *  See the License for the specific language governing permissions and
>>>>>>>>+ *  limitations under the License.
>>>>>>>>+ */
>>>>>>>>+
>>>>>>>>+package org.apache.geronimo.directory;
>>>>>>>>+
>>>>>>>>+import java.util.Properties;
>>>>>>>>+
>>>>>>>>+import javax.naming.Context;
>>>>>>>>+import javax.naming.directory.InitialDirContext;
>>>>>>>>+
>>>>>>>>+import org.apache.commons.logging.Log;
>>>>>>>>+import org.apache.commons.logging.LogFactory;
>>>>>>>>+import org.apache.geronimo.gbean.GBeanInfo;
>>>>>>>>+import org.apache.geronimo.gbean.GBeanInfoBuilder;
>>>>>>>>+import org.apache.geronimo.gbean.GBeanLifecycle;
>>>>>>>>+import org.apache.geronimo.system.serverinfo.ServerInfo;
>>>>>>>>+import org.apache.ldap.server.configuration.ShutdownConfiguration;
>>>>>>>>+import org.apache.ldap.server.jndi.CoreContextFactory;
>>>>>>>>+
>>>>>>>>+/**
>>>>>>>>+ * Directory GBean
>>>>>>>>+ *
>>>>>>>>+ * @version $Rev: 233391 $ $Date: 2005-08-18 16:38:47 -0600 (Thu, 18 Aug 2005) $
>>>>>>>>+ */
>>>>>>>>+public class DirectoryGBean implements GBeanLifecycle {
>>>>>>>>+
>>>>>>>>+    private static final Log log = LogFactory.getLog(DirectoryGBean.class);
>>>>>>>>+    
>>>>>>>>+    private final ServerInfo serverInfo;
>>>>>>>>+    private final String workingDir;
>>>>>>>>+    private final boolean anonymousAccess;
>>>>>>>>+    private String providerURL;
>>>>>>>>+    private String securityPrincipal;
>>>>>>>>+    private String securityCredentials;
>>>>>>>>+    private String securityAuthentication;
>>>>>>>>+    private int ldapPort = 389;
>>>>>>>>+    private boolean enableNetworking;
>>>>>>>>+    
>>>>>>>>+    /**
>>>>>>>>+     * Geronimo class loader
>>>>>>>>+     **/
>>>>>>>>+    private ClassLoader classLoader;
>>>>>>>>+
>>>>>>>>+    public DirectoryGBean(ClassLoader classLoader, String workingDir, 
>>>>>>>>+            boolean anonymousAccess, 
>>>>>>>>+            ServerInfo serverInfo) {
>>>>>>>>+        
>>>>>>>>+        if (serverInfo == null)
>>>>>>>>+            throw new IllegalArgumentException("Must have a ServerInfo value in initParams.");
>>>>>>>>+        
>>>>>>>>+        if (workingDir == null)
>>>>>>>>+            this.workingDir = "var/ldap";
>>>>>>>>+        else
>>>>>>>>+            this.workingDir = workingDir;
>>>>>>>>+        
>>>>>>>>+        this.classLoader = classLoader;
>>>>>>>>+        this.anonymousAccess = anonymousAccess;
>>>>>>>>+        this.serverInfo = serverInfo;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public String getProviderURL() {
>>>>>>>>+        return providerURL;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setProviderURL(String providerURL) {
>>>>>>>>+        this.providerURL = providerURL;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public String getSecurityAuthentication() {
>>>>>>>>+        return securityAuthentication;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setSecurityAuthentication(String securityAuthentication) {
>>>>>>>>+        this.securityAuthentication = securityAuthentication;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public String getSecurityCredentials() {
>>>>>>>>+        return securityCredentials;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setSecurityCredentials(String securityCredentials) {
>>>>>>>>+        this.securityCredentials = securityCredentials;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public String getSecurityPrincipal() {
>>>>>>>>+        return securityPrincipal;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setSecurityPrincipal(String securityPrincipal) {
>>>>>>>>+        this.securityPrincipal = securityPrincipal;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public boolean isEnableNetworking() {
>>>>>>>>+        return enableNetworking;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setEnableNetworking(boolean enableNetworking) {
>>>>>>>>+        this.enableNetworking = enableNetworking;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public int getLdapPort() {
>>>>>>>>+        return ldapPort;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setLdapPort(int ldapPort) {
>>>>>>>>+        this.ldapPort = ldapPort;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void doFail() {
>>>>>>>>+        log.info("Service failed");
>>>>>>>>+        //Insert failure code here
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    private void setEnvironment(Properties env){
>>>>>>>>+
>>>>>>>>+        if (providerURL != null){
>>>>>>>>+            env.put( Context.PROVIDER_URL, providerURL);
>>>>>>>>+        }       
>>>>>>>>+
>>>>>>>>+        if (securityAuthentication != null){
>>>>>>>>+            env.put( Context.SECURITY_AUTHENTICATION, securityAuthentication);
>>>>>>>>+        }
>>>>>>>>+
>>>>>>>>+        if (securityPrincipal != null){
>>>>>>>>+            env.put( Context.SECURITY_PRINCIPAL, securityPrincipal);
>>>>>>>>+        }
>>>>>>>>+
>>>>>>>>+        if (securityCredentials != null){
>>>>>>>>+            env.put( Context.SECURITY_CREDENTIALS, securityCredentials);
>>>>>>>>+        }
>>>>>>>>+    }
>>>>>>>>+    
>>>>>>>>+    public void doStart() throws Exception {
>>>>>>>>+        log.info("Starting LDAP Directory service");
>>>>>>>>+        
>>>>>>>>+        MutableServerStartupConfiguration startup = new MutableServerStartupConfiguration();
>>>>>>>>+        // put some mandatory JNDI properties here
>>>>>>>>+        startup.setWorkingDirectory(serverInfo.resolve(workingDir));
>>>>>>>>+        startup.setAllowAnonymousAccess(anonymousAccess);
>>>>>>>>+        startup.setLdapPort(ldapPort);
>>>>>>>>+        startup.setEnableNetworking(enableNetworking);
>>>>>>>>+        
>>>>>>>>+        Properties env = new Properties();
>>>>>>>>+        env.putAll(startup.toJndiEnvironment());
>>>>>>>>+        env.put( Context.INITIAL_CONTEXT_FACTORY, ServerContextFactory.class.getName());
>>>>>>>>+        setEnvironment(env);
>>>>>>>>+        
>>>>>>>>+        //Load the proper class for th Context Loader
>>>>>>>>+        ClassLoader oldCL = Thread.currentThread().getContextClassLoader();
>>>>>>>>+        Thread.currentThread().setContextClassLoader(classLoader);
>>>>>>>>+        
>>>>>>>>+        //Fire it up
>>>>>>>>+        new InitialDirContext( env );
>>>>>>>>+        
>>>>>>>>+        //Set it back
>>>>>>>>+        Thread.currentThread().setContextClassLoader(oldCL);
>>>>>>>>+        log.info("LDAP Directory service started.");
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void doStop() throws Exception {
>>>>>>>>+        log.info("Stopping LDAP Directory service");
>>>>>>>>+        //Insert stopping code here
>>>>>>>>+        Properties env = new Properties();
>>>>>>>>+        env.putAll(new ShutdownConfiguration().toJndiEnvironment());
>>>>>>>>+        env.put( Context.INITIAL_CONTEXT_FACTORY, CoreContextFactory.class.getName() );
>>>>>>>>+        setEnvironment(env);
>>>>>>>>+        
>>>>>>>>+        //Load the proper class for th Context Loader
>>>>>>>>+        ClassLoader oldCL = Thread.currentThread().getContextClassLoader();
>>>>>>>>+        Thread.currentThread().setContextClassLoader(classLoader);
>>>>>>>>+
>>>>>>>>+        //Shut it down
>>>>>>>>+        new InitialDirContext( env );
>>>>>>>>+
>>>>>>>>+        //Set it back
>>>>>>>>+        Thread.currentThread().setContextClassLoader(oldCL);
>>>>>>>>+
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public static final GBeanInfo GBEAN_INFO;
>>>>>>>>+
>>>>>>>>+    static {
>>>>>>>>+        GBeanInfoBuilder infoFactory = new GBeanInfoBuilder("DirectoryGBean",
>>>>>>>>+                DirectoryGBean.class);
>>>>>>>>+
>>>>>>>>+        infoFactory.addAttribute("classLoader", ClassLoader.class, false);
>>>>>>>>+        infoFactory.addAttribute("providerURL", String.class, true);
>>>>>>>>+        infoFactory.addAttribute("securityAuthentication", String.class, true);
>>>>>>>>+        infoFactory.addAttribute("securityPrincipal", String.class, true);
>>>>>>>>+        infoFactory.addAttribute("securityCredentials", String.class, true);
>>>>>>>>+        infoFactory.addAttribute("ldapPort", int.class, true);
>>>>>>>>+        infoFactory.addAttribute("enableNetworking", boolean.class, true);
>>>>>>>>+        
>>>>>>>>+        infoFactory.addAttribute("workingDir", String.class, true);
>>>>>>>>+        infoFactory.addAttribute("anonymousAccess", boolean.class, true);
>>>>>>>>+        infoFactory.addReference("ServerInfo", ServerInfo.class, "GBean");
>>>>>>>>+
>>>>>>>>+        infoFactory.setConstructor(new String[] { "classLoader", "workingDir", "anonymousAccess", "ServerInfo" });
>>>>>>>>+        GBEAN_INFO = infoFactory.getBeanInfo();
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public static GBeanInfo getGBeanInfo() {
>>>>>>>>+        return GBEAN_INFO;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+}
>>>>>>>>
>>>>>>>>Added: geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/MutableServerStartupConfiguration.java
>>>>>>>>URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/MutableServerStartupConfiguration.java?rev=247522&view=auto
>>>>>>>>==============================================================================
>>>>>>>>--- geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/MutableServerStartupConfiguration.java (added)
>>>>>>>>+++ geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/MutableServerStartupConfiguration.java Sat Aug 27 16:56:19 2005
>>>>>>>>@@ -0,0 +1,95 @@
>>>>>>>>+/**
>>>>>>>>+ *
>>>>>>>>+ * Copyright 2003-2004 The Apache Software Foundation
>>>>>>>>+ *
>>>>>>>>+ *  Licensed under the Apache License, Version 2.0 (the "License");
>>>>>>>>+ *  you may not use this file except in compliance with the License.
>>>>>>>>+ *  You may obtain a copy of the License at
>>>>>>>>+ *
>>>>>>>>+ *     http://www.apache.org/licenses/LICENSE-2.0
>>>>>>>>+ *
>>>>>>>>+ *  Unless required by applicable law or agreed to in writing, software
>>>>>>>>+ *  distributed under the License is distributed on an "AS IS" BASIS,
>>>>>>>>+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>>>>>>>+ *  See the License for the specific language governing permissions and
>>>>>>>>+ *  limitations under the License.
>>>>>>>>+ */
>>>>>>>>+
>>>>>>>>+package org.apache.geronimo.directory;
>>>>>>>>+
>>>>>>>>+import java.io.File;
>>>>>>>>+import java.util.List;
>>>>>>>>+import java.util.Set;
>>>>>>>>+
>>>>>>>>+import org.apache.mina.registry.ServiceRegistry;
>>>>>>>>+
>>>>>>>>+/**
>>>>>>>>+ * A mutable version of {@link ServerStartupConfiguration}.
>>>>>>>>+ *
>>>>>>>>+ * @version $Rev: 233391 $ $Date: 2005-08-18 16:38:47 -0600 (Thu, 18 Aug 2005) $
>>>>>>>>+ */
>>>>>>>>+public class MutableServerStartupConfiguration extends
>>>>>>>>+        ServerStartupConfiguration
>>>>>>>>+{
>>>>>>>>+    private static final long serialVersionUID = 515104910980600099L;
>>>>>>>>+
>>>>>>>>+    public MutableServerStartupConfiguration()
>>>>>>>>+    {
>>>>>>>>+        super();
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setAllowAnonymousAccess( boolean arg0 )
>>>>>>>>+    {
>>>>>>>>+        super.setAllowAnonymousAccess( arg0 );
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setAuthenticatorConfigurations( Set arg0 )
>>>>>>>>+    {
>>>>>>>>+        super.setAuthenticatorConfigurations( arg0 );
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setBootstrapSchemas( Set arg0 )
>>>>>>>>+    {
>>>>>>>>+        super.setBootstrapSchemas( arg0 );
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setContextPartitionConfigurations( Set arg0 )
>>>>>>>>+    {
>>>>>>>>+        super.setContextPartitionConfigurations( arg0 );
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setInterceptorConfigurations( List arg0 )
>>>>>>>>+    {
>>>>>>>>+        super.setInterceptorConfigurations( arg0 );
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setTestEntries( List arg0 )
>>>>>>>>+    {
>>>>>>>>+        super.setTestEntries( arg0 );
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setWorkingDirectory( File arg0 )
>>>>>>>>+    {
>>>>>>>>+        super.setWorkingDirectory( arg0 );
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setEnableKerberos( boolean enableKerberos )
>>>>>>>>+    {
>>>>>>>>+        super.setEnableKerberos( enableKerberos );
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setLdapPort( int ldapPort )
>>>>>>>>+    {
>>>>>>>>+        super.setLdapPort( ldapPort );
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setLdapsPort( int ldapsPort )
>>>>>>>>+    {
>>>>>>>>+        super.setLdapsPort( ldapsPort );
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void setMinaServiceRegistry( ServiceRegistry minaServiceRegistry )
>>>>>>>>+    {
>>>>>>>>+        super.setMinaServiceRegistry( minaServiceRegistry );
>>>>>>>>+    }
>>>>>>>>+}
>>>>>>>>\ No newline at end of file
>>>>>>>>
>>>>>>>>Added: geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/ServerContextFactory.java
>>>>>>>>URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/ServerContextFactory.java?rev=247522&view=auto
>>>>>>>>==============================================================================
>>>>>>>>--- geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/ServerContextFactory.java (added)
>>>>>>>>+++ geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/ServerContextFactory.java Sat Aug 27 16:56:19 2005
>>>>>>>>@@ -0,0 +1,223 @@
>>>>>>>>+/**
>>>>>>>>+ *
>>>>>>>>+ * Copyright 2003-2004 The Apache Software Foundation
>>>>>>>>+ *
>>>>>>>>+ *  Licensed under the Apache License, Version 2.0 (the "License");
>>>>>>>>+ *  you may not use this file except in compliance with the License.
>>>>>>>>+ *  You may obtain a copy of the License at
>>>>>>>>+ *
>>>>>>>>+ *     http://www.apache.org/licenses/LICENSE-2.0
>>>>>>>>+ *
>>>>>>>>+ *  Unless required by applicable law or agreed to in writing, software
>>>>>>>>+ *  distributed under the License is distributed on an "AS IS" BASIS,
>>>>>>>>+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>>>>>>>+ *  See the License for the specific language governing permissions and
>>>>>>>>+ *  limitations under the License.
>>>>>>>>+ */
>>>>>>>>+package org.apache.geronimo.directory;
>>>>>>>>+
>>>>>>>>+import java.io.IOException;
>>>>>>>>+import java.net.InetSocketAddress;
>>>>>>>>+import java.util.Hashtable;
>>>>>>>>+import java.util.Iterator;
>>>>>>>>+import java.util.Properties;
>>>>>>>>+
>>>>>>>>+import javax.naming.NamingException;
>>>>>>>>+import javax.naming.Context;
>>>>>>>>+import javax.naming.directory.DirContext;
>>>>>>>>+import javax.naming.ldap.Control;
>>>>>>>>+import javax.naming.ldap.InitialLdapContext;
>>>>>>>>+import javax.naming.ldap.LdapContext;
>>>>>>>>+
>>>>>>>>+import org.apache.commons.logging.Log;
>>>>>>>>+import org.apache.commons.logging.LogFactory;
>>>>>>>>+import org.apache.kerberos.protocol.KerberosProtocolProvider;
>>>>>>>>+import org.apache.kerberos.service.KdcConfiguration;
>>>>>>>>+import org.apache.kerberos.store.JndiPrincipalStoreImpl;
>>>>>>>>+import org.apache.kerberos.store.PrincipalStore;
>>>>>>>>+import org.apache.kerberos.sam.SamSubsystem;
>>>>>>>>+import org.apache.ldap.common.exception.LdapConfigurationException;
>>>>>>>>+import org.apache.ldap.common.name.LdapName;
>>>>>>>>+import org.apache.ldap.common.util.PropertiesUtils;
>>>>>>>>+import org.apache.ldap.common.util.NamespaceTools;
>>>>>>>>+import org.apache.ldap.server.jndi.ContextFactoryService;
>>>>>>>>+import org.apache.ldap.server.jndi.CoreContextFactory;
>>>>>>>>+import org.apache.ldap.server.protocol.LdapProtocolProvider;
>>>>>>>>+import org.apache.mina.common.TransportType;
>>>>>>>>+import org.apache.mina.registry.Service;
>>>>>>>>+import org.apache.mina.registry.ServiceRegistry;
>>>>>>>>+
>>>>>>>>+
>>>>>>>>+/**
>>>>>>>>+ * Adds additional bootstrapping for server socket listeners when firing
>>>>>>>>+ * up the server.
>>>>>>>>+ *
>>>>>>>>+ * @version $Rev: 233391 $ $Date: 2005-08-18 16:38:47 -0600 (Thu, 18 Aug 2005) $
>>>>>>>>+ * @see javax.naming.spi.InitialContextFactory
>>>>>>>>+ */
>>>>>>>>+public class ServerContextFactory extends CoreContextFactory
>>>>>>>>+{
>>>>>>>>+    private static final Log log = LogFactory.getLog(ServerContextFactory.class);
>>>>>>>>+    private static Service ldapService;
>>>>>>>>+    private static Service kerberosService;
>>>>>>>>+    private static ServiceRegistry minaRegistry;
>>>>>>>>+
>>>>>>>>+    protected ServiceRegistry getMinaRegistry()
>>>>>>>>+    {
>>>>>>>>+        return minaRegistry;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    public void afterShutdown( ContextFactoryService service )
>>>>>>>>+    {
>>>>>>>>+        if ( minaRegistry != null )
>>>>>>>>+        {
>>>>>>>>+            if ( ldapService != null )
>>>>>>>>+            {
>>>>>>>>+                minaRegistry.unbind( ldapService );
>>>>>>>>+                if ( log.isInfoEnabled() )
>>>>>>>>+                {
>>>>>>>>+                    log.info( "Unbind of LDAP Service complete: " + ldapService );
>>>>>>>>+                }
>>>>>>>>+                ldapService = null;
>>>>>>>>+            }
>>>>>>>>+
>>>>>>>>+            if ( kerberosService != null )
>>>>>>>>+            {
>>>>>>>>+                minaRegistry.unbind( kerberosService );
>>>>>>>>+                if ( log.isInfoEnabled() )
>>>>>>>>+                {
>>>>>>>>+                    log.info( "Unbind of KRB5 Service complete: " + kerberosService );
>>>>>>>>+                }
>>>>>>>>+                kerberosService = null;
>>>>>>>>+            }
>>>>>>>>+        }
>>>>>>>>+    }
>>>>>>>>+    
>>>>>>>>+    public void afterStartup( ContextFactoryService service ) throws NamingException
>>>>>>>>+    {
>>>>>>>>+        ServerStartupConfiguration cfg =
>>>>>>>>+            ( ServerStartupConfiguration ) service.getConfiguration().getStartupConfiguration();
>>>>>>>>+        Hashtable env = service.getConfiguration().getEnvironment();
>>>>>>>>+
>>>>>>>>+        if ( cfg.isEnableNetworking() )
>>>>>>>>+        {
>>>>>>>>+            setupRegistry( cfg );
>>>>>>>>+            startLdapProtocol( cfg, env );
>>>>>>>>+
>>>>>>>>+            if ( cfg.isEnableKerberos() )
>>>>>>>>+            {
>>>>>>>>+                startKerberosProtocol( env );
>>>>>>>>+            }
>>>>>>>>+        }
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Starts up the MINA registry so various protocol providers can be started.
>>>>>>>>+     */
>>>>>>>>+    private void setupRegistry( ServerStartupConfiguration cfg )
>>>>>>>>+    {
>>>>>>>>+        minaRegistry = cfg.getMinaServiceRegistry();
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Starts the Kerberos protocol provider which is backed by the LDAP store.
>>>>>>>>+     *
>>>>>>>>+     * @throws NamingException if there are problems starting up the Kerberos provider
>>>>>>>>+     */
>>>>>>>>+    private void startKerberosProtocol( Hashtable env ) throws NamingException
>>>>>>>>+    {
>>>>>>>>+        /*
>>>>>>>>+         * Looks like KdcConfiguration takes properties and we use Hashtable for JNDI
>>>>>>>>+         * so I'm copying over the String based properties into a new Properties obj.
>>>>>>>>+         */
>>>>>>>>+        Properties props = new Properties();
>>>>>>>>+        Iterator list = env.keySet().iterator();
>>>>>>>>+        while ( list.hasNext() )
>>>>>>>>+        {
>>>>>>>>+            String key = ( String ) list.next();
>>>>>>>>+
>>>>>>>>+            if ( env.get( key ) instanceof String )
>>>>>>>>+            {
>>>>>>>>+                props.setProperty( key, ( String ) env.get( key ) );
>>>>>>>>+            }
>>>>>>>>+        }
>>>>>>>>+
>>>>>>>>+        // construct the configuration, get the port, create the service, and prepare kdc objects
>>>>>>>>+        KdcConfiguration config = new KdcConfiguration( props );
>>>>>>>>+        int port = PropertiesUtils.get( env, KdcConfiguration.KERBEROS_PORT_KEY, KdcConfiguration.DEFAULT_KERBEROS_PORT );
>>>>>>>>+        Service service= new Service( "kerberos", TransportType.DATAGRAM, new InetSocketAddress( port ) );
>>>>>>>>+        LdapContext ctx = getBaseRealmContext( config, env );
>>>>>>>>+        PrincipalStore store = new JndiPrincipalStoreImpl( ctx, new LdapName( "ou=Users" ) );
>>>>>>>>+        SamSubsystem.getInstance().setUserContext( ( DirContext ) ctx, "ou=Users" );
>>>>>>>>+
>>>>>>>>+        try
>>>>>>>>+        {
>>>>>>>>+            minaRegistry.bind( service, new KerberosProtocolProvider( config, store ) );
>>>>>>>>+            kerberosService = service;
>>>>>>>>+            if ( log.isInfoEnabled() )
>>>>>>>>+            {
>>>>>>>>+                log.info( "Successful bind of KRB5 Service completed: " + kerberosService );
>>>>>>>>+            }
>>>>>>>>+        }
>>>>>>>>+        catch ( IOException e )
>>>>>>>>+        {
>>>>>>>>+            log.error( "Could not start the kerberos service on port " +
>>>>>>>>+                    KdcConfiguration.DEFAULT_KERBEROS_PORT, e );
>>>>>>>>+        }
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Maps a Kerberos Realm name to a position within the DIT.  The primary realm of
>>>>>>>>+     * the KDC will use this area for configuration and for storing user entries.
>>>>>>>>+     *
>>>>>>>>+     * @param config the KDC's configuration
>>>>>>>>+     * @param env the JNDI environment properties
>>>>>>>>+     * @return the base context for the primary realm of the KDC
>>>>>>>>+     * @throws NamingException
>>>>>>>>+     */
>>>>>>>>+    private LdapContext getBaseRealmContext( KdcConfiguration config, Hashtable env ) throws NamingException
>>>>>>>>+    {
>>>>>>>>+        Hashtable cloned = ( Hashtable ) env.clone();
>>>>>>>>+        String dn = NamespaceTools.inferLdapName( config.getPrimaryRealm() );
>>>>>>>>+        cloned.put( Context.PROVIDER_URL, dn );
>>>>>>>>+
>>>>>>>>+        if ( log.isInfoEnabled() )
>>>>>>>>+        {
>>>>>>>>+            log.info( "Getting initial context for realm base at " + dn + " for " + config.getPrimaryRealm() );
>>>>>>>>+        }
>>>>>>>>+
>>>>>>>>+        return new InitialLdapContext( cloned, new Control[]{} );
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Starts up the LDAP protocol provider to service LDAP requests
>>>>>>>>+     *
>>>>>>>>+     * @throws NamingException if there are problems starting the LDAP provider
>>>>>>>>+     */
>>>>>>>>+    private void startLdapProtocol( ServerStartupConfiguration cfg, Hashtable env ) throws NamingException
>>>>>>>>+    {
>>>>>>>>+        int port = cfg.getLdapPort();
>>>>>>>>+        Service service = new Service( "ldap", TransportType.SOCKET, new InetSocketAddress( port ) );
>>>>>>>>+
>>>>>>>>+        try
>>>>>>>>+        {
>>>>>>>>+            minaRegistry.bind( service, new LdapProtocolProvider( ( Hashtable ) env.clone() ) );
>>>>>>>>+            ldapService = service;
>>>>>>>>+            if ( log.isInfoEnabled() )
>>>>>>>>+            {
>>>>>>>>+                log.info( "Successful bind of LDAP Service completed: " + ldapService );
>>>>>>>>+            }
>>>>>>>>+        }
>>>>>>>>+        catch ( IOException e )
>>>>>>>>+        {
>>>>>>>>+            String msg = "Failed to bind the LDAP protocol service to the service registry: " + service;
>>>>>>>>+            LdapConfigurationException lce = new LdapConfigurationException( msg );
>>>>>>>>+            lce.setRootCause( e );
>>>>>>>>+            log.error( msg, e );
>>>>>>>>+            throw lce;
>>>>>>>>+        }
>>>>>>>>+    }
>>>>>>>>+}
>>>>>>>>\ No newline at end of file
>>>>>>>>
>>>>>>>>Added: geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/ServerStartupConfiguration.java
>>>>>>>>URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/ServerStartupConfiguration.java?rev=247522&view=auto
>>>>>>>>==============================================================================
>>>>>>>>--- geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/ServerStartupConfiguration.java (added)
>>>>>>>>+++ geronimo/trunk/modules/directory/src/java/org/apache/geronimo/directory/ServerStartupConfiguration.java Sat Aug 27 16:56:19 2005
>>>>>>>>@@ -0,0 +1,128 @@
>>>>>>>>+/**
>>>>>>>>+ *
>>>>>>>>+ * Copyright 2003-2004 The Apache Software Foundation
>>>>>>>>+ *
>>>>>>>>+ *  Licensed under the Apache License, Version 2.0 (the "License");
>>>>>>>>+ *  you may not use this file except in compliance with the License.
>>>>>>>>+ *  You may obtain a copy of the License at
>>>>>>>>+ *
>>>>>>>>+ *     http://www.apache.org/licenses/LICENSE-2.0
>>>>>>>>+ *
>>>>>>>>+ *  Unless required by applicable law or agreed to in writing, software
>>>>>>>>+ *  distributed under the License is distributed on an "AS IS" BASIS,
>>>>>>>>+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>>>>>>>+ *  See the License for the specific language governing permissions and
>>>>>>>>+ *  limitations under the License.
>>>>>>>>+ */
>>>>>>>>+package org.apache.geronimo.directory;
>>>>>>>>+
>>>>>>>>+import org.apache.ldap.server.configuration.ConfigurationException;
>>>>>>>>+import org.apache.ldap.server.configuration.StartupConfiguration;
>>>>>>>>+import org.apache.mina.registry.ServiceRegistry;
>>>>>>>>+import org.apache.mina.registry.SimpleServiceRegistry;
>>>>>>>>+
>>>>>>>>+/**
>>>>>>>>+ * A {@link StartupConfiguration} that starts up ApacheDS with network layer support.
>>>>>>>>+ *
>>>>>>>>+ * @version $Rev: 233391 $ $Date: 2005-08-18 16:38:47 -0600 (Thu, 18 Aug 2005) $
>>>>>>>>+ */
>>>>>>>>+public class ServerStartupConfiguration extends StartupConfiguration
>>>>>>>>+{
>>>>>>>>+    private static final long serialVersionUID = -7138616822614155454L;
>>>>>>>>+
>>>>>>>>+    private boolean enableNetworking = true;
>>>>>>>>+    private ServiceRegistry minaServiceRegistry = new SimpleServiceRegistry();
>>>>>>>>+    private int ldapPort = 389;
>>>>>>>>+    private int ldapsPort = 636;
>>>>>>>>+    private boolean enableKerberos;
>>>>>>>>+
>>>>>>>>+    protected ServerStartupConfiguration()
>>>>>>>>+    {
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Returns <tt>true</tt> if networking (LDAP, LDAPS, and Kerberos) is enabled.
>>>>>>>>+     */
>>>>>>>>+    public boolean isEnableNetworking()
>>>>>>>>+    {
>>>>>>>>+        return enableNetworking;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Sets whether to enable networking (LDAP, LDAPS, and Kerberos) or not.
>>>>>>>>+     */
>>>>>>>>+    public void setEnableNetworking( boolean enableNetworking )
>>>>>>>>+    {
>>>>>>>>+        this.enableNetworking = enableNetworking;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Returns <tt>true</tt> if Kerberos support is enabled.
>>>>>>>>+     */
>>>>>>>>+    public boolean isEnableKerberos()
>>>>>>>>+    {
>>>>>>>>+        return enableKerberos;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Sets whether to enable Kerberos support or not.
>>>>>>>>+     */
>>>>>>>>+    protected void setEnableKerberos( boolean enableKerberos )
>>>>>>>>+    {
>>>>>>>>+        this.enableKerberos = enableKerberos;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Returns LDAP TCP/IP port number to listen to.
>>>>>>>>+     */
>>>>>>>>+    public int getLdapPort()
>>>>>>>>+    {
>>>>>>>>+        return ldapPort;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Sets LDAP TCP/IP port number to listen to.
>>>>>>>>+     */
>>>>>>>>+    protected void setLdapPort( int ldapPort )
>>>>>>>>+    {
>>>>>>>>+        this.ldapPort = ldapPort;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Returns LDAPS TCP/IP port number to listen to.
>>>>>>>>+     */
>>>>>>>>+    public int getLdapsPort()
>>>>>>>>+    {
>>>>>>>>+        return ldapsPort;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Sets LDAPS TCP/IP port number to listen to.
>>>>>>>>+     */
>>>>>>>>+    protected void setLdapsPort( int ldapsPort )
>>>>>>>>+    {
>>>>>>>>+        this.ldapsPort = ldapsPort;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Returns <a href="http://directory.apache.org/subprojects/network/">MINA</a>
>>>>>>>>+     * {@link ServiceRegistry} that will be used by ApacheDS.
>>>>>>>>+     */
>>>>>>>>+    public ServiceRegistry getMinaServiceRegistry()
>>>>>>>>+    {
>>>>>>>>+        return minaServiceRegistry;
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    /**
>>>>>>>>+     * Sets <a href="http://directory.apache.org/subprojects/network/">MINA</a>
>>>>>>>>+     * {@link ServiceRegistry} that will be used by ApacheDS.
>>>>>>>>+     */
>>>>>>>>+    protected void setMinaServiceRegistry( ServiceRegistry minaServiceRegistry )
>>>>>>>>+    {
>>>>>>>>+        if( minaServiceRegistry == null )
>>>>>>>>+        {
>>>>>>>>+            throw new ConfigurationException( "MinaServiceRegistry cannot be null" );
>>>>>>>>+        }
>>>>>>>>+        this.minaServiceRegistry = minaServiceRegistry;
>>>>>>>>+    }
>>>>>>>>+}
>>>>>>>>\ No newline at end of file
>>>>>>>>
>>>>>>>>Added: geronimo/trunk/modules/directory/src/test/org/apache/geronimo/directory/RunningTest.java
>>>>>>>>URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/directory/src/test/org/apache/geronimo/directory/RunningTest.java?rev=247522&view=auto
>>>>>>>>==============================================================================
>>>>>>>>--- geronimo/trunk/modules/directory/src/test/org/apache/geronimo/directory/RunningTest.java (added)
>>>>>>>>+++ geronimo/trunk/modules/directory/src/test/org/apache/geronimo/directory/RunningTest.java Sat Aug 27 16:56:19 2005
>>>>>>>>@@ -0,0 +1,132 @@
>>>>>>>>+/**
>>>>>>>>+ *
>>>>>>>>+ * Copyright 2003-2004 The Apache Software Foundation
>>>>>>>>+ *
>>>>>>>>+ *  Licensed under the Apache License, Version 2.0 (the "License");
>>>>>>>>+ *  you may not use this file except in compliance with the License.
>>>>>>>>+ *  You may obtain a copy of the License at
>>>>>>>>+ *
>>>>>>>>+ *     http://www.apache.org/licenses/LICENSE-2.0
>>>>>>>>+ *
>>>>>>>>+ *  Unless required by applicable law or agreed to in writing, software
>>>>>>>>+ *  distributed under the License is distributed on an "AS IS" BASIS,
>>>>>>>>+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>>>>>>>+ *  See the License for the specific language governing permissions and
>>>>>>>>+ *  limitations under the License.
>>>>>>>>+ */
>>>>>>>>+
>>>>>>>>+package org.apache.geronimo.directory;
>>>>>>>>+
>>>>>>>>+import java.util.HashSet;
>>>>>>>>+import java.util.Hashtable;
>>>>>>>>+
>>>>>>>>+import javax.management.ObjectName;
>>>>>>>>+import javax.naming.Context;
>>>>>>>>+import javax.naming.NameClassPair;
>>>>>>>>+import javax.naming.NamingEnumeration;
>>>>>>>>+import javax.naming.directory.DirContext;
>>>>>>>>+import javax.naming.directory.InitialDirContext;
>>>>>>>>+
>>>>>>>>+import junit.framework.TestCase;
>>>>>>>>+
>>>>>>>>+import org.apache.geronimo.gbean.GBeanData;
>>>>>>>>+import org.apache.geronimo.kernel.Kernel;
>>>>>>>>+import org.apache.geronimo.kernel.KernelFactory;
>>>>>>>>+import org.apache.geronimo.system.serverinfo.BasicServerInfo;
>>>>>>>>+
>>>>>>>>+public class RunningTest extends TestCase {
>>>>>>>>+
>>>>>>>>+    private static final String PRINCIPAL = "uid=admin,ou=system";
>>>>>>>>+    private static final String CREDENTIALS = "secret";
>>>>>>>>+    private ClassLoader cl = this.getClass().getClassLoader();
>>>>>>>>+
>>>>>>>>+    private Kernel kernel;
>>>>>>>>+
>>>>>>>>+    private ObjectName serverInfoName;
>>>>>>>>+
>>>>>>>>+    private GBeanData serverInfoGBean;
>>>>>>>>+
>>>>>>>>+    private ObjectName directoryName;
>>>>>>>>+
>>>>>>>>+    private GBeanData directoryGBean;
>>>>>>>>+
>>>>>>>>+    public void testRunning() throws Exception {
>>>>>>>>+
>>>>>>>>+        Hashtable env = new Hashtable();
>>>>>>>>+        env.put(Context.PROVIDER_URL, "ldap://localhost:9389");
>>>>>>>>+        env.put(Context.INITIAL_CONTEXT_FACTORY,
>>>>>>>>+                "com.sun.jndi.ldap.LdapCtxFactory");
>>>>>>>>+        //env.put( Context.SECURITY_AUTHENTICATION, "simple");
>>>>>>>>+        env.put( Context.SECURITY_PRINCIPAL, PRINCIPAL);
>>>>>>>>+        env.put( Context.SECURITY_CREDENTIALS, CREDENTIALS);
>>>>>>>>+        DirContext ctx = new InitialDirContext(env);
>>>>>>>>+
>>>>>>>>+        // Perform search using URL
>>>>>>>>+        // NamingEnumeration answer = ctx.search(
>>>>>>>>+        // "ldap://localhost:389/ou=system", "(uid=admin)", null);
>>>>>>>>+        HashSet set = new HashSet();
>>>>>>>>+
>>>>>>>>+        NamingEnumeration list = ctx.list("ou=system");
>>>>>>>>+
>>>>>>>>+        while (list.hasMore()) {
>>>>>>>>+            NameClassPair ncp = (NameClassPair) list.next();
>>>>>>>>+            set.add(ncp.getName());
>>>>>>>>+        }
>>>>>>>>+
>>>>>>>>+        assertTrue(set.contains("uid=admin"));
>>>>>>>>+        assertTrue( set.contains( "ou=users" ) );
>>>>>>>>+        assertTrue( set.contains( "ou=groups" ) );
>>>>>>>>+        assertTrue( set.contains( "ou=configuration" ) );
>>>>>>>>+        assertTrue( set.contains( "prefNodeName=sysPrefRoot" ) );
>>>>>>>>+
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    private void start(GBeanData instance) throws Exception {
>>>>>>>>+        kernel.loadGBean(instance, cl);
>>>>>>>>+        kernel.startGBean(instance.getName());
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    private void stop(ObjectName name) throws Exception {
>>>>>>>>+        kernel.stopGBean(name);
>>>>>>>>+        kernel.unloadGBean(name);
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    protected void setUp() throws Exception {
>>>>>>>>+        super.setUp();
>>>>>>>>+
>>>>>>>>+        kernel = KernelFactory.newInstance().createKernel("test.kernel");
>>>>>>>>+        kernel.boot();
>>>>>>>>+
>>>>>>>>+        // ServerInfo
>>>>>>>>+        serverInfoName = new ObjectName("geronimo.system:role=ServerInfo");
>>>>>>>>+        serverInfoGBean = new GBeanData(serverInfoName,
>>>>>>>>+                BasicServerInfo.GBEAN_INFO);
>>>>>>>>+        serverInfoGBean.setAttribute("baseDirectory", "./target");
>>>>>>>>+        start(serverInfoGBean);
>>>>>>>>+
>>>>>>>>+        // DirectoryGBean
>>>>>>>>+        directoryName = new ObjectName("geronimo.system:type=Directory");
>>>>>>>>+        directoryGBean = new GBeanData(directoryName, DirectoryGBean.GBEAN_INFO);
>>>>>>>>+        directoryGBean.setReferencePattern("ServerInfo", serverInfoName);
>>>>>>>>+        directoryGBean.setAttribute("classLoader", cl);
>>>>>>>>+        directoryGBean.setAttribute("providerURL", "ou=system");
>>>>>>>>+        directoryGBean.setAttribute("securityAuthentication", "simple");
>>>>>>>>+        directoryGBean.setAttribute("securityPrincipal", PRINCIPAL);
>>>>>>>>+        directoryGBean.setAttribute("securityCredentials", CREDENTIALS);
>>>>>>>>+        directoryGBean.setAttribute("anonymousAccess", new Boolean(true));
>>>>>>>>+        directoryGBean.setAttribute("enableNetworking", new Boolean(true));
>>>>>>>>+        directoryGBean.setAttribute("ldapPort", new Integer(9389));
>>>>>>>>+
>>>>>>>>+        start(directoryGBean);
>>>>>>>>+
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+    protected void tearDown() throws Exception {
>>>>>>>>+        super.tearDown();
>>>>>>>>+
>>>>>>>>+        stop(directoryName);
>>>>>>>>+        stop(serverInfoName);
>>>>>>>>+        kernel.shutdown();
>>>>>>>>+    }
>>>>>>>>+
>>>>>>>>+}
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>

Mime
View raw message