* Fixed: problems with anonymous access
* Fixed: Failing tests
* Fixed: AbstractContextFactory removed some elements of the environment map user specified


git-svn-id: https://svn.apache.org/repos/asf/directory/apacheds/branches/direve-158@190360 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/main/java/org/apache/ldap/server/AbstractTestCase.java b/core/src/main/java/org/apache/ldap/server/AbstractTestCase.java
index 85f821b..295afe6 100644
--- a/core/src/main/java/org/apache/ldap/server/AbstractTestCase.java
+++ b/core/src/main/java/org/apache/ldap/server/AbstractTestCase.java
@@ -291,6 +291,7 @@
         env.putAll( new ShutdownConfiguration().toJndiEnvironment() );
         env.put( Context.SECURITY_PRINCIPAL, "uid=admin,ou=system" );
         env.put( Context.SECURITY_CREDENTIALS, "secret" );
+        env.put( Context.SECURITY_AUTHENTICATION, "simple" );
 
         try { new InitialContext( env ); } catch( Exception e ) {}
 
diff --git a/core/src/main/java/org/apache/ldap/server/jndi/AbstractContextFactory.java b/core/src/main/java/org/apache/ldap/server/jndi/AbstractContextFactory.java
index 9dfeac3..9ae53fa 100644
--- a/core/src/main/java/org/apache/ldap/server/jndi/AbstractContextFactory.java
+++ b/core/src/main/java/org/apache/ldap/server/jndi/AbstractContextFactory.java
@@ -71,6 +71,8 @@
         String authentication;
         String providerUrl;
 
+        env = ( Hashtable ) env.clone();
+
         // Remove properties that can be changed
         Object value = env.remove( Context.SECURITY_PRINCIPAL );
         if( value == null )
diff --git a/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryContext.java b/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryContext.java
index eb63fc7..e4c5eb7 100644
--- a/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryContext.java
+++ b/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryContext.java
@@ -237,6 +237,7 @@
         finally
         {
             environment = null;
+            interceptorChain = null;
             configuration = null;
             factory.afterShutdown( this );
         }
@@ -338,7 +339,7 @@
                         + Context.SECURITY_PRINCIPAL + " property is set" );
             }
             
-            if( configuration.isAllowAnonymousAccess() )
+            if( !configuration.isAllowAnonymousAccess() )
             {
                 throw new LdapNoPermissionException( "Anonymous access disabled." );
             }
diff --git a/core/src/test/org/apache/ldap/server/authn/SimpleAuthenticationTest.java b/core/src/test/org/apache/ldap/server/authn/SimpleAuthenticationTest.java
index 80fb19d..fea3803 100644
--- a/core/src/test/org/apache/ldap/server/authn/SimpleAuthenticationTest.java
+++ b/core/src/test/org/apache/ldap/server/authn/SimpleAuthenticationTest.java
@@ -181,12 +181,10 @@
     {
         // clean out the database
         tearDown();
-        doDelete( new File( "target" + File.separator + "eve" ) );
         Hashtable env = new Hashtable( configuration.toJndiEnvironment() );
         env.put( Context.SECURITY_AUTHENTICATION, "none" );
         
         configuration.setAllowAnonymousAccess( false );
-
         try
         {
             setSysRoot( env );
@@ -195,8 +193,11 @@
         catch( LdapNoPermissionException e )
         {
         }
+        tearDown();
 
         // ok this should start up the system now as admin
+        env = new Hashtable( configuration.toJndiEnvironment() );
+        env.put( Context.SECURITY_AUTHENTICATION, "none" );
         configuration.setAllowAnonymousAccess( true );
 
         InitialLdapContext ctx = ( InitialLdapContext ) setSysRoot( env );