This is an automated email from the ASF dual-hosted git repository. martin_s pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/archiva-redback-components-spring-apacheds.git
commit 2872ea13c4e9b20dc83ebc95cc3e3aba91bcd77e Author: Olivier Lamy <[email protected]> AuthorDate: Fri Apr 6 09:33:40 2012 +0000 import redback components sources http://svn.codehaus.org/redback/components/trunk/ r1724. git-svn-id: https://svn.apache.org/repos/asf/archiva/redback/redback-components/trunk@1310262 13f79535-47bb-0310-9956-ffa450edef68 --- pom.xml | 119 ++++++++ .../redback/components/apacheds/ApacheDs.java | 69 +++++ .../components/apacheds/DefaultApacheDs.java | 335 +++++++++++++++++++++ .../redback/components/apacheds/Partition.java | 71 +++++ .../redback/components/apacheds/ApacheDsTest.java | 165 ++++++++++ src/test/resources/spring-context.xml | 35 +++ 6 files changed, 794 insertions(+) diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..ce8ae60 --- /dev/null +++ b/pom.xml @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ 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. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>org.codehaus.redback.components</groupId> + <artifactId>redback-components</artifactId> + <version>1.3-SNAPSHOT</version> + <relativePath>../redback-components-parent/pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>spring-apacheds</artifactId> + <name>Spring Apache Directory Server Components</name> + <version>1.1-SNAPSHOT</version> + + <url>http://redback.codehaus.org/components/${project.artifactId}</url> + + <distributionManagement> + <site> + <id>codehaus.org</id> + <url>dav:https://dav.codehaus.org/redback/components/${project.artifactId}</url> + </site> + </distributionManagement> + + <scm> + <connection>scm:svn:https://svn.codehaus.org/redback/components/trunk/spring-apacheds</connection> + <developerConnection>scm:svn:https://svn.codehaus.org/redback/components/trunk/spring-apacheds</developerConnection> + <url>http://fisheye.codehaus.org/browse/redback/components/trunk/spring-apacheds</url> + </scm> + + <properties> + <apacheds.version>1.5.1</apacheds.version> + </properties> + + <dependencies> + <dependency> + <groupId>org.apache.directory.server</groupId> + <artifactId>apacheds-core</artifactId> + <version>${apacheds.version}</version> + </dependency> + <dependency> + <groupId>org.apache.directory.server</groupId> + <artifactId>apacheds-core-shared</artifactId> + <version>${apacheds.version}</version> + </dependency> + <dependency> + <groupId>org.apache.directory.server</groupId> + <artifactId>apacheds-server-jndi</artifactId> + <version>${apacheds.version}</version> + </dependency> + <dependency> + <groupId>org.apache.directory.server</groupId> + <artifactId>apacheds-bootstrap-partition</artifactId> + <version>${apacheds.version}</version> + </dependency> + <dependency> + <groupId>org.apache.directory.server</groupId> + <artifactId>apacheds-schema-registries</artifactId> + <version>${apacheds.version}</version> + </dependency> + <dependency> + <groupId>org.apache.directory.server</groupId> + <artifactId>apacheds-schema-extras</artifactId> + <version>${apacheds.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + <dependency> + <groupId>javax.inject</groupId> + <artifactId>javax.inject</artifactId> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context-support</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-beans</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + <version>${slf4jVersion}</version> + <scope>test</scope> + </dependency> + + </dependencies> + +</project> diff --git a/src/main/java/org/codehaus/redback/components/apacheds/ApacheDs.java b/src/main/java/org/codehaus/redback/components/apacheds/ApacheDs.java new file mode 100644 index 0000000..ac512d0 --- /dev/null +++ b/src/main/java/org/codehaus/redback/components/apacheds/ApacheDs.java @@ -0,0 +1,69 @@ +package org.codehaus.redback.components.apacheds; + +import javax.naming.NamingException; +import javax.naming.directory.InitialDirContext; +import javax.naming.directory.Attributes; +import java.io.File; +import java.util.Set; + +/** + * @author <a href="mailto:[email protected]">Trygve Laugstøl</a> + * @version $Id$ + */ +public interface ApacheDs +{ + String ROLE = ApacheDs.class.getName(); + + // ---------------------------------------------------------------------- + // Configuration + // ---------------------------------------------------------------------- + + void setBasedir( File basedir ); + + void setPort( int port ); + + int getPort(); + + void setEnableNetworking( boolean enableNetworking ); + + void addPartition( String name, String root, Set indexedAttributes, Attributes partitionAttributes ) + throws NamingException; + + void addPartition( Partition partition ) + throws NamingException; + + /** + * Creates a partition usable for testing and other light usage. + * + * @param name The name of the partition. Will be used as the directory name when persisted. + * @param domainComponents E.g. "plexus", "codehaus", "org" + * @throws NamingException + */ + Partition addSimplePartition( String name, String[] domainComponents ) + throws NamingException; + + // ---------------------------------------------------------------------- + // Server control + // ---------------------------------------------------------------------- + + void startServer() + throws Exception; + + void stopServer() + throws Exception; + + void sync() + throws Exception; + + boolean isStopped(); + + // ---------------------------------------------------------------------- + // + // ---------------------------------------------------------------------- + + InitialDirContext getAdminContext() + throws NamingException; + + InitialDirContext getSystemContext() + throws NamingException; +} diff --git a/src/main/java/org/codehaus/redback/components/apacheds/DefaultApacheDs.java b/src/main/java/org/codehaus/redback/components/apacheds/DefaultApacheDs.java new file mode 100644 index 0000000..85cc3e0 --- /dev/null +++ b/src/main/java/org/codehaus/redback/components/apacheds/DefaultApacheDs.java @@ -0,0 +1,335 @@ +package org.codehaus.redback.components.apacheds; + +/* + * Copyright 2001-2007 The Codehaus. + * + * 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. + */ + +import org.apache.directory.server.configuration.MutableServerStartupConfiguration; +import org.apache.directory.server.core.configuration.MutablePartitionConfiguration; +import org.apache.directory.server.core.configuration.ShutdownConfiguration; +import org.apache.directory.server.core.configuration.SyncConfiguration; +import org.apache.directory.server.jndi.ServerContextFactory; +import org.apache.directory.server.ldap.LdapConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.naming.Context; +import javax.naming.NamingException; +import javax.naming.directory.Attribute; +import javax.naming.directory.Attributes; +import javax.naming.directory.BasicAttribute; +import javax.naming.directory.BasicAttributes; +import javax.naming.directory.InitialDirContext; +import java.io.File; +import java.util.HashSet; +import java.util.Hashtable; +import java.util.Properties; +import java.util.Set; + +/** + * @author <a href="mailto:[email protected]">Trygve Laugstøl</a> + * @author Olivier Lamy + * @version $Id$ + */ +public class DefaultApacheDs + implements ApacheDs +{ + + private Logger logger = LoggerFactory.getLogger( getClass() ); + + // ---------------------------------------------------------------------- + // Configuration + // ---------------------------------------------------------------------- + + private boolean enableNetworking; + + private File basedir; + + private int port; + + private String password; + + // ---------------------------------------------------------------------- + // + // ---------------------------------------------------------------------- + + private boolean stopped; + + private MutableServerStartupConfiguration configuration; + + private Set partitionConfigurations = new HashSet(); + + // ---------------------------------------------------------------------- + // ApacheDs Implementation + // ---------------------------------------------------------------------- + + public void setBasedir( File basedir ) + { + this.basedir = basedir; + } + + public void setEnableNetworking( boolean enableNetworking ) + { + this.enableNetworking = enableNetworking; + } + + public InitialDirContext getAdminContext() + throws NamingException + { + assertIsStarted(); + + Hashtable environment = new Hashtable( configuration.toJndiEnvironment() ); + environment.put( Context.INITIAL_CONTEXT_FACTORY, ServerContextFactory.class.getName() ); + environment.put( Context.SECURITY_PRINCIPAL, "uid=admin,ou=system" ); + environment.put( Context.SECURITY_CREDENTIALS, password ); + environment.put( Context.SECURITY_AUTHENTICATION, "simple" ); +// environment.put( Context.PROVIDER_URL, "dc=hauskeeper,dc=codehaus,dc=org" ); + return new InitialDirContext( environment ); + } + + public InitialDirContext getSystemContext() + throws NamingException + { + assertIsStarted(); + + Hashtable environment = new Hashtable( configuration.toJndiEnvironment() ); + environment.put( Context.INITIAL_CONTEXT_FACTORY, ServerContextFactory.class.getName() ); + environment.put( Context.SECURITY_PRINCIPAL, "uid=admin,ou=system" ); + environment.put( Context.SECURITY_CREDENTIALS, password ); + environment.put( Context.SECURITY_AUTHENTICATION, "simple" ); + environment.put( Context.PROVIDER_URL, "ou=system" ); + return new InitialDirContext( environment ); + } + + public void addPartition( String name, String root, Set indexedAttributes, Attributes partitionAttributes ) + throws NamingException + { + MutablePartitionConfiguration configuration = new MutablePartitionConfiguration(); + configuration.setId( name ); + configuration.setSuffix( root ); + configuration.setIndexedAttributes( indexedAttributes ); + configuration.setContextEntry( partitionAttributes ); + partitionConfigurations.add( configuration ); + } + + public void addPartition( Partition partition ) + throws NamingException + { + MutablePartitionConfiguration configuration = new MutablePartitionConfiguration(); + + configuration.setId( partition.getName() ); + configuration.setSuffix( partition.getSuffix() ); + configuration.setIndexedAttributes( partition.getIndexedAttributes() ); + configuration.setContextEntry( partition.getContextAttributes() ); + //configuration.setSynchOnWrite( true ); + configuration.setCacheSize( 1 ); + //configuration.setOptimizerEnabled( false ); + partitionConfigurations.add( configuration ); + } + + public Partition addSimplePartition( String name, String[] domainComponents ) + throws NamingException + { + if ( domainComponents.length == 0 ) + { + throw new NamingException( "Illegal argument, there has to be at least one domain component." ); + } + + StringBuilder suffix = new StringBuilder(); + + for ( int i = 0; i < domainComponents.length; i++ ) + { + String dc = domainComponents[i]; + + suffix.append( "dc=" ).append( dc ); + + if ( i != domainComponents.length - 1 ) + { + suffix.append( "," ); + } + } + + // ---------------------------------------------------------------------- + // The root entry of the partition + // ---------------------------------------------------------------------- + + Attributes attributes = new BasicAttributes( true ); + attributes.put( "dc", domainComponents[0] ); + Attribute objectClass = new BasicAttribute( "objectClass" ); + objectClass.add( "top" ); + objectClass.add( "domain" ); + objectClass.add( "extensibleObject" ); + attributes.put( objectClass ); + + Partition partition = new Partition(); + partition.setName( name ); + partition.setSuffix( suffix.toString() ); + partition.setContextAttributes( attributes ); + HashSet set = new HashSet(); + set.add( "uid" ); + set.add( "cn" ); + partition.setIndexedAttributes( set ); + + addPartition( partition ); + + return partition; + } + + public void startServer() + throws Exception + { + logger.info( "Starting Apache Directory Server server." ); + + logger.info( "ApacheDS basedir: " + basedir.getAbsolutePath() ); + + File logs = new File( basedir, "logs" ); + + if ( !logs.exists() && !logs.mkdirs() ) + { + throw new Exception( "Could not create logs directory: " + logs.getAbsolutePath() ); + } + + Properties environment = new Properties(); + environment.setProperty( "java.naming.security.authentication", "simple" ); + environment.setProperty( "java.naming.security.principal", "uid=admin,ou=system" ); + if ( password != null ) + { + environment.setProperty( "java.naming.security.credentials", password ); + } + MutableServerStartupConfiguration configuration = new MutableServerStartupConfiguration(); + configuration.setWorkingDirectory( basedir ); + configuration.setAllowAnonymousAccess( true ); + //configuration.setEnableNtp( false ); + //configuration.setEnableKerberos( false ); + //configuration.setEnableChangePassword( false ); + LdapConfiguration config = new LdapConfiguration(); + config.setIpPort( port ); + configuration.setLdapConfiguration( config ); + configuration.setEnableNetworking( enableNetworking ); + configuration.setSynchPeriodMillis( 100 ); + + if ( configuration.getPartitionConfigurations() == null || ( configuration.getPartitionConfigurations() != null + && configuration.getPartitionConfigurations().isEmpty() ) ) + { + configuration.setPartitionConfigurations( partitionConfigurations ); + } + Properties env = new Properties(); + env.setProperty( Context.SECURITY_PRINCIPAL, "uid=admin,ou=system" ); + if ( password != null ) + { + env.setProperty( Context.SECURITY_CREDENTIALS, password ); + } + env.setProperty( Context.SECURITY_AUTHENTICATION, "simple" ); + env.setProperty( Context.PROVIDER_URL, "ou=system" ); + env.setProperty( Context.INITIAL_CONTEXT_FACTORY, ServerContextFactory.class.getName() ); + env.putAll( configuration.toJndiEnvironment() ); + InitialDirContext context = new InitialDirContext( env ); + + //Attributes inetAttributes = context.getAttributes( "cn=inetorgperson,ou=schema" ); + + //inetAttributes.remove( "m-disabled" ); + + this.configuration = configuration; + + logger.info( "Started Apache Directory Server server." ); + + stopped = false; + } + + public void stopServer() + throws Exception + { + if ( stopped ) + { + throw new Exception( "Already stopped." ); + } + + logger.info( "Stopping Apache Directory Server server." ); + + sync(); + + stopped = true; + + Hashtable env = new Hashtable(); + env.putAll( new ShutdownConfiguration().toJndiEnvironment() ); + new InitialDirContext( env ); + + logger.info( "Apache Directory Server server stopped." ); + } + + public boolean isStopped() + { + return stopped; + } + + public void sync() + throws Exception + { + logger.info( "Sync'ing Apache Directory Server server." ); + + Hashtable env = new Hashtable(); + env.putAll( new SyncConfiguration().toJndiEnvironment() ); + new InitialDirContext( env ); + } + + + public void stop() + { + try + { + if ( !stopped ) + { + stopServer(); + } + } + catch ( Exception e ) + { + throw new RuntimeException( "Error while stopping Apache Directory Server server.", e ); + } + } + + // ---------------------------------------------------------------------- + // + // ---------------------------------------------------------------------- + + private void assertIsStarted() + throws NamingException + { + if ( configuration == null ) + { + throw new NamingException( "The server has to be started before used." ); + } + } + + public int getPort() + { + return port; + } + + public void setPort( int port ) + { + this.port = port; + } + + public String getPassword() + { + return password; + } + + public void setPassword( String password ) + { + this.password = password; + } +} diff --git a/src/main/java/org/codehaus/redback/components/apacheds/Partition.java b/src/main/java/org/codehaus/redback/components/apacheds/Partition.java new file mode 100644 index 0000000..20a1a01 --- /dev/null +++ b/src/main/java/org/codehaus/redback/components/apacheds/Partition.java @@ -0,0 +1,71 @@ +package org.codehaus.redback.components.apacheds; + +import javax.naming.directory.Attributes; +import javax.naming.directory.BasicAttributes; +import java.util.Set; +import java.util.HashSet; + +/** + * @author <a href="mailto:[email protected]">Trygve Laugstøl</a> + * @version $Id$ + */ +public class Partition +{ + private String name; + + private String suffix; + + private Set indexedAttributes; + + private Attributes contextAttributes; + + public String getName() + { + return name; + } + + public void setName( String name ) + { + this.name = name; + } + + public String getSuffix() + { + return suffix; + } + + public void setSuffix( String suffix ) + { + this.suffix = suffix; + } + + public Set getIndexedAttributes() + { + if ( indexedAttributes == null ) + { + indexedAttributes = new HashSet(); + } + + return indexedAttributes; + } + + public void setIndexedAttributes( Set indexedAttributes ) + { + this.indexedAttributes = indexedAttributes; + } + + public Attributes getContextAttributes() + { + if ( contextAttributes == null ) + { + contextAttributes = new BasicAttributes(); + } + + return contextAttributes; + } + + public void setContextAttributes( Attributes contextAttributes ) + { + this.contextAttributes = contextAttributes; + } +} diff --git a/src/test/java/org/codehaus/redback/components/apacheds/ApacheDsTest.java b/src/test/java/org/codehaus/redback/components/apacheds/ApacheDsTest.java new file mode 100644 index 0000000..014aee2 --- /dev/null +++ b/src/test/java/org/codehaus/redback/components/apacheds/ApacheDsTest.java @@ -0,0 +1,165 @@ +package org.codehaus.redback.components.apacheds; + +/* + * Copyright 2001-2007 The Codehaus. + * + * 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. + */ + +import junit.framework.TestCase; +import org.apache.directory.shared.ldap.util.AttributeUtils; +import org.codehaus.redback.components.apacheds.ApacheDs; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import javax.inject.Inject; +import javax.naming.NamingEnumeration; +import javax.naming.NamingException; +import javax.naming.directory.Attribute; +import javax.naming.directory.Attributes; +import javax.naming.directory.BasicAttribute; +import javax.naming.directory.BasicAttributes; +import javax.naming.directory.DirContext; +import javax.naming.directory.InitialDirContext; +import javax.naming.directory.SearchControls; +import javax.naming.directory.SearchResult; +import java.io.File; + +/** + * @author <a href="mailto:[email protected]">Trygve Laugstøl</a> + * @author Olivier Lamy + * @version $Id$ + */ + +@RunWith( SpringJUnit4ClassRunner.class ) +@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" } ) +public class ApacheDsTest + extends TestCase +{ + private String suffix = "dc=plexus,dc=codehaus,dc=org"; + + @Inject + private ApacheDs apacheDs; + + protected void setUp() + throws Exception + { + super.setUp(); + + + + } + + @Test + public void testBasic() + throws Exception + { + + apacheDs.setBasedir( new File( "./target/plexus-home" ) ); + + apacheDs.addSimplePartition( "test", new String[]{"plexus", "codehaus", "org"} ).getSuffix(); + apacheDs.startServer(); + + InitialDirContext context = apacheDs.getAdminContext(); + + String cn = "trygvis"; + createUser( context, cn, createDn( cn ) ); + assertExist( context, createDn( cn ), "cn", cn ); + + cn = "bolla"; + createUser( context, cn, createDn( cn ) ); + assertExist( context, createDn( cn ), "cn", cn ); + + SearchControls ctls = new SearchControls(); + + ctls.setDerefLinkFlag( true ); + ctls.setSearchScope( SearchControls.ONELEVEL_SCOPE ); + ctls.setReturningAttributes( new String[] { "*" } ); + + String filter = "(&(objectClass=inetOrgPerson)(cn=trygvis))"; + + NamingEnumeration<SearchResult> results = context.search( suffix, filter, ctls ); + + assertTrue( "a result should have been returned", results.hasMoreElements() ); + + SearchResult result = results.nextElement(); + + Attributes attrs = result.getAttributes(); + + System.out.println( AttributeUtils.toString( attrs ) ); + + assertFalse( "should only have one result returned", results.hasMoreElements() ); + + apacheDs.stopServer(); + + + + // ---------------------------------------------------------------------- + // Start it again + // ---------------------------------------------------------------------- + + apacheDs.startServer(); + + context = apacheDs.getAdminContext(); + + assertExist( context, createDn( "trygvis" ), "cn", "trygvis" ); + context.unbind( createDn( "trygvis" ) ); + assertExist( context, createDn( "bolla" ), "cn", "bolla" ); + context.unbind( createDn( "bolla" ) ); + + apacheDs.stopServer(); + } + + private void createUser( DirContext context, String cn, String dn ) + throws NamingException + { + Attributes attributes = new BasicAttributes(); + BasicAttribute objectClass = new BasicAttribute( "objectClass" ); + objectClass.add( "top" ); + objectClass.add( "inetOrgPerson" ); + attributes.put( objectClass ); + attributes.put( "cn", cn ); + attributes.put( "sn", cn ); + context.createSubcontext( dn, attributes ); + } + + private String createDn( String cn ) + { + return "cn=" + cn + "," + suffix; + } + + private void assertExist( DirContext context, String dn, String attribute, String value ) + throws NamingException + { + SearchControls ctls = new SearchControls(); + + ctls.setDerefLinkFlag( true ); + ctls.setSearchScope( SearchControls.ONELEVEL_SCOPE ); + ctls.setReturningAttributes( new String[] { "*" } ); + + BasicAttributes matchingAttributes = new BasicAttributes(); + matchingAttributes.put( attribute, value ); + + NamingEnumeration<SearchResult> results = context.search( suffix, matchingAttributes ); + //NamingEnumeration<SearchResult> results = context.search( suffix, "(" + attribute + "=" + value + ")", ctls ); + + assertTrue( results.hasMoreElements() ); + SearchResult result = results.nextElement(); + Attributes attrs = result.getAttributes(); + Attribute testAttr = attrs.get( attribute ); + assertEquals( value, testAttr.get() ); + + } +} diff --git a/src/test/resources/spring-context.xml b/src/test/resources/spring-context.xml new file mode 100755 index 0000000..934516d --- /dev/null +++ b/src/test/resources/spring-context.xml @@ -0,0 +1,35 @@ +<?xml version="1.0"?> + +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you 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. + --> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:context="http://www.springframework.org/schema/context" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-2.5.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context-2.5.xsd"> + + <bean name="apacheDS" class="org.codehaus.redback.components.apacheds.DefaultApacheDs"> + <property name="basedir" value="./target/apacheds"/> + <property name="port" value="10390"/> + <property name="enableNetworking" value="true"/> + <property name="password" value="secret"/> + </bean> +</beans> \ No newline at end of file -- To stop receiving notification emails like this one, please contact [email protected].
