You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2011/04/19 14:44:23 UTC
svn commit: r1095066 -
/directory/shared/trunk/ldap/codec/standalone/src/main/java/org/apache/directory/shared/ldap/codec/standalone/StandaloneLdapCodecService.java
Author: elecharny
Date: Tue Apr 19 12:44:22 2011
New Revision: 1095066
URL: http://svn.apache.org/viewvc?rev=1095066&view=rev
Log:
o Created helper methods for directory initialization
o Minor other refactoring (code cleaning)
Modified:
directory/shared/trunk/ldap/codec/standalone/src/main/java/org/apache/directory/shared/ldap/codec/standalone/StandaloneLdapCodecService.java
Modified: directory/shared/trunk/ldap/codec/standalone/src/main/java/org/apache/directory/shared/ldap/codec/standalone/StandaloneLdapCodecService.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/codec/standalone/src/main/java/org/apache/directory/shared/ldap/codec/standalone/StandaloneLdapCodecService.java?rev=1095066&r1=1095065&r2=1095066&view=diff
==============================================================================
--- directory/shared/trunk/ldap/codec/standalone/src/main/java/org/apache/directory/shared/ldap/codec/standalone/StandaloneLdapCodecService.java (original)
+++ directory/shared/trunk/ldap/codec/standalone/src/main/java/org/apache/directory/shared/ldap/codec/standalone/StandaloneLdapCodecService.java Tue Apr 19 12:44:22 2011
@@ -32,6 +32,7 @@ import java.util.Map;
import java.util.Set;
import javax.naming.NamingException;
+import javax.naming.ldap.BasicControl;
import org.apache.directory.shared.asn1.DecoderException;
import org.apache.directory.shared.asn1.EncoderException;
@@ -142,10 +143,90 @@ public class StandaloneLdapCodecService
private Felix felix;
/** Felix's bundle cache directory */
- private final File cacheDirectory;
+ private File cacheDirectory;
/** The plugin (bundle) containing directory to load codec extensions from */
- private final File pluginDirectory;
+ private File pluginDirectory;
+
+
+ private void initPluginDirectory( File pluginDirectory )
+ {
+ // Use the given directory if not null, or use the default one
+ if ( pluginDirectory == null )
+ {
+ this.pluginDirectory = getPluginDirectoryDefault();
+ LOG.info( "Null plugin directory provided, using default instead: {}", this.pluginDirectory );
+ }
+ else
+ {
+ this.pluginDirectory = pluginDirectory;
+ LOG.info( "Valid plugin directory provided: {}", this.pluginDirectory );
+ }
+
+ // Now, if we have a plugin directory, check that it's a directory and that it's readable
+ if ( this.pluginDirectory != null )
+ {
+ if ( ( ! this.pluginDirectory.exists() ) && ! this.pluginDirectory.mkdirs() )
+ {
+ String msg = "The provided plugin directory is not creatable:" + this.pluginDirectory.getAbsolutePath();
+ LOG.error( msg );
+ throw new IllegalArgumentException( msg );
+ }
+
+ if ( ! this.pluginDirectory.isDirectory() )
+ {
+ String msg = "The provided plugin directory is not a directory:" + this.pluginDirectory.getAbsolutePath();
+ LOG.error( msg );
+ throw new IllegalArgumentException( msg );
+ }
+ else if ( ! this.pluginDirectory.canRead() )
+ {
+ String msg = "The provided plugin directory is not readable:" + this.pluginDirectory.getAbsolutePath();
+ LOG.error( msg );
+ throw new IllegalArgumentException( msg );
+ }
+ }
+ }
+
+
+ private void initCacheDirectory( File cacheDirectory )
+ {
+ // Use the given directory if not null, or use the default one
+ if ( cacheDirectory == null )
+ {
+ this.cacheDirectory = getCacheDirectoryDefault();
+ LOG.info( "Null cache directory provided, using default instead: {}", this.cacheDirectory );
+ }
+ else
+ {
+ this.cacheDirectory = cacheDirectory;
+ LOG.info( "Valid cache directory provided: {}", this.cacheDirectory );
+ }
+
+ // Now, if we have a cache directory, check that it's a directory and that it's readable
+ if ( this.cacheDirectory != null )
+ {
+ if ( ! this.cacheDirectory.exists() && ( ! this.cacheDirectory.mkdirs() ) )
+ {
+ String msg = "The provided cache directory can't be created:" + this.cacheDirectory.getAbsolutePath();
+ LOG.error( msg );
+ throw new IllegalArgumentException( msg );
+ }
+
+ if ( ! this.cacheDirectory.isDirectory() )
+ {
+ String msg = "The provided cache directory is not a directory:" + this.cacheDirectory.getAbsolutePath();
+ LOG.error( msg );
+ throw new IllegalArgumentException( msg );
+ }
+ else if ( ! this.cacheDirectory.canRead() )
+ {
+ String msg = "The provided cache directory is not readable:" + this.cacheDirectory.getAbsolutePath();
+ LOG.error( msg );
+ throw new IllegalArgumentException( msg );
+ }
+ }
+ }
/**
@@ -230,96 +311,17 @@ public class StandaloneLdapCodecService
// -------------------------------------------------------------------
// Handle plugin directory
// -------------------------------------------------------------------
-
- if ( pluginDirectory == null )
- {
- this.pluginDirectory = getPluginDirectoryDefault();
- LOG.info( "Null plugin directory provided, using default instead: {}", this.pluginDirectory );
- }
- else
- {
- this.pluginDirectory = pluginDirectory;
- LOG.info( "Valid plugin directory provided: {}", this.pluginDirectory );
- }
-
- if ( this.pluginDirectory == null )
- {
- // do nothing
- }
- else if ( ! this.pluginDirectory.exists() )
- {
- if ( ! this.pluginDirectory.mkdirs() )
- {
- String msg = "The provided plugin directory is not creatable:" + this.pluginDirectory.getAbsolutePath();
- LOG.error( msg );
- throw new IllegalArgumentException( msg );
- }
- }
-
- if ( this.pluginDirectory == null )
- {
- // do nothing
- }
- else if ( ! this.pluginDirectory.isDirectory() )
- {
- String msg = "The provided plugin directory is not a directory:" + this.pluginDirectory.getAbsolutePath();
- LOG.error( msg );
- throw new IllegalArgumentException( msg );
- }
- else if ( ! this.pluginDirectory.canRead() )
- {
- String msg = "The provided plugin directory is not readable:" + this.pluginDirectory.getAbsolutePath();
- LOG.error( msg );
- throw new IllegalArgumentException( msg );
- }
-
+ initPluginDirectory( pluginDirectory );
// -------------------------------------------------------------------
// Handle cache directory
// -------------------------------------------------------------------
+ initCacheDirectory( cacheDirectory );
- if ( cacheDirectory == null )
- {
- this.cacheDirectory = getCacheDirectoryDefault();
- LOG.info( "Null cache directory provided, using default instead: {}", this.cacheDirectory );
- }
- else
- {
- this.cacheDirectory = cacheDirectory;
- LOG.info( "Valid cache directory provided: {}", this.cacheDirectory );
- }
-
- if ( this.cacheDirectory == null )
- {
- // do nothing
- }
- else if ( ! this.cacheDirectory.exists() )
- {
- if ( ! this.cacheDirectory.mkdirs() ) {
- String msg = "The provided cache directory can't be created:" + this.cacheDirectory.getAbsolutePath();
- LOG.error( msg );
- throw new IllegalArgumentException( msg );
- }
- }
-
- if ( this.cacheDirectory == null )
- {
- // do nothing
- }
- else if ( ! this.cacheDirectory.isDirectory() )
- {
- String msg = "The provided cache directory is not a directory:" + this.cacheDirectory.getAbsolutePath();
- LOG.error( msg );
- throw new IllegalArgumentException( msg );
- }
- else if ( ! this.cacheDirectory.canRead() )
- {
- String msg = "The provided cache directory is not readable:" + this.cacheDirectory.getAbsolutePath();
- LOG.error( msg );
- throw new IllegalArgumentException( msg );
- }
-
+ // Load the default controls
loadStockControls();
+
+ // Start the Felix container
setupFelix();
if ( protocolCodecFactory == null )
@@ -356,17 +358,20 @@ public class StandaloneLdapCodecService
try
{
- if ( frameworkStorage == null && felixCacheRootdir == null )
- {
- return new File( File.createTempFile( "dummy", null ).getParentFile(),
- "osgi-cache-" + Integer.toString( this.hashCode() ) );
- }
- else if ( frameworkStorage == null && felixCacheRootdir != null )
+ if ( frameworkStorage == null )
{
- return new File( new File ( felixCacheRootdir ),
- "osgi-cache-" + Integer.toString( this.hashCode() ) );
- }
- else if ( frameworkStorage != null && felixCacheRootdir == null )
+ if ( felixCacheRootdir == null )
+ {
+ return new File( File.createTempFile( "dummy", null ).getParentFile(),
+ "osgi-cache-" + Integer.toString( this.hashCode() ) );
+ }
+ else
+ {
+ return new File( new File ( felixCacheRootdir ),
+ "osgi-cache-" + Integer.toString( this.hashCode() ) );
+ }
+ }
+ else if ( felixCacheRootdir == null )
{
return new File( frameworkStorage + "-" + Integer.toString( this.hashCode() ) );
}
@@ -430,17 +435,21 @@ public class StandaloneLdapCodecService
Collections.addAll( pkgs, SYSTEM_PACKAGES );
StringBuilder sb = new StringBuilder();
- Iterator<String> i = pkgs.iterator();
+ boolean isFirst = true;
for ( String pkg : pkgs )
{
- sb.append( pkg );
- LOG.debug( "Adding system extras package: {}", pkg );
-
- if ( i.hasNext() )
+ if ( isFirst )
+ {
+ isFirst = false;
+ }
+ else
{
sb.append( ',' );
}
+
+ sb.append( pkg );
+ LOG.debug( "Adding system extras package: {}", pkg );
}
return sb.toString();
@@ -553,14 +562,11 @@ public class StandaloneLdapCodecService
factory = new SubentriesFactory( this );
controlFactories.put( factory.getOid(), factory );
LOG.info( "Registered pre-bundled control factory: {}", factory.getOid() );
-}
+ }
-
//-------------------------------------------------------------------------
// LdapCodecService implementation methods
//-------------------------------------------------------------------------
-
-
/**
* {@inheritDoc}
*/
@@ -689,8 +695,8 @@ public class StandaloneLdapCodecService
ByteBuffer bb = ByteBuffer.allocate( decorator.computeLength() );
decorator.encode( bb );
bb.flip();
- javax.naming.ldap.BasicControl jndiControl =
- new javax.naming.ldap.BasicControl( control.getOid(), control.isCritical(), bb.array() );
+ BasicControl jndiControl =
+ new BasicControl( control.getOid(), control.isCritical(), bb.array() );
return jndiControl;
}
@@ -718,6 +724,7 @@ public class StandaloneLdapCodecService
ourControl.setCritical( control.isCritical() );
ourControl.setValue( control.getEncodedValue() );
ourControl.decode( control.getEncodedValue() );
+
return ourControl;
}
@@ -769,24 +776,6 @@ public class StandaloneLdapCodecService
public javax.naming.ldap.ExtendedResponse toJndi( final ExtendedResponse modelResponse ) throws EncoderException
{
throw new NotImplementedException( "Figure out how to transform" );
-
-// final byte[] encodedValue = new byte[ modelResponse.getEncodedValue().length ];
-// System.arraycopy( modelResponse.getEncodedValue(), 0, encodedValue, 0, modelResponse.getEncodedValue().length );
-//
-// return new javax.naming.ldap.ExtendedResponse()
-// {
-// private static final long serialVersionUID = 2955142105375495493L;
-//
-// public String getID()
-// {
-// return modelResponse.getID();
-// }
-//
-// public byte[] getEncodedValue()
-// {
-// return encodedValue;
-// }
-// };
}
@@ -796,26 +785,6 @@ public class StandaloneLdapCodecService
public ExtendedResponse fromJndi( javax.naming.ldap.ExtendedResponse jndiResponse ) throws DecoderException
{
throw new NotImplementedException( "Figure out how to transform" );
-
-// ExtendedResponse modelResponse;
-// ExtendedRequestFactory<?,?> extendedRequestFactory = extReqFactories.get( jndiResponse.getID() );
-// UnsolicitedResponseFactory<?> unsolicitedResponseFactory = unsolicitedFactories.get( jndiResponse.getID() );
-//
-// if ( unsolicitedResponseFactory != null )
-// {
-// modelResponse = unsolicitedResponseFactory.newResponse( jndiResponse.getEncodedValue() );
-// }
-// else if ( extendedRequestFactory != null )
-// {
-// modelResponse = extendedRequestFactory.newResponse( jndiResponse.getEncodedValue() );
-// }
-// else
-// {
-// modelResponse = new ExtendedResponseImpl( jndiResponse.getID() );
-// modelResponse.setResponseValue( jndiResponse.getEncodedValue() );
-// }
-//
-// return modelResponse;
}
@@ -933,6 +902,7 @@ public class StandaloneLdapCodecService
ExtendedResponseDecorator<ExtendedResponse> resp;
ExtendedRequestFactory<?,?> extendedRequestFactory = extReqFactories.get( req.getRequestName() );
+
if ( extendedRequestFactory != null )
{
resp = ( ExtendedResponseDecorator<ExtendedResponse> ) extendedRequestFactory.newResponse( serializedResponse );
@@ -946,6 +916,7 @@ public class StandaloneLdapCodecService
}
resp.setMessageId( req.getMessageId() );
+
return ( E ) resp;
}
@@ -958,6 +929,7 @@ public class StandaloneLdapCodecService
ExtendedRequest<?> req = null;
ExtendedRequestFactory<?,?> extendedRequestFactory = extReqFactories.get( oid );
+
if ( extendedRequestFactory != null )
{
if ( value == null )
@@ -992,6 +964,7 @@ public class StandaloneLdapCodecService
ExtendedRequestDecorator<?,?> req = null;
ExtendedRequestFactory<?,?> extendedRequestFactory = extReqFactories.get( decoratedMessage.getRequestName() );
+
if ( extendedRequestFactory != null )
{
req = extendedRequestFactory.decorate( decoratedMessage );
@@ -1015,6 +988,7 @@ public class StandaloneLdapCodecService
UnsolicitedResponseFactory<?> unsolicitedResponseFactory = unsolicitedFactories.get( decoratedMessage.getResponseName() );
ExtendedRequestFactory<?,?> extendedRequestFactory = extReqFactories.get( decoratedMessage.getResponseName() );
+
if ( extendedRequestFactory != null )
{
resp = extendedRequestFactory.decorate( decoratedMessage );