Author: elecharny
Date: Thu Dec 22 19:10:27 2011
New Revision: 1222401
URL: http://svn.apache.org/viewvc?rev=1222401&view=rev
Log:
Modified the impacted code after the AttributeKey injection
Modified:
mina/trunk/ldap/src/main/java/org/apache/mina/ldap/LdapCodec.java
mina/trunk/ldap/src/main/java/org/apache/mina/ldap/LdapProtocolDecoder.java
Modified: mina/trunk/ldap/src/main/java/org/apache/mina/ldap/LdapCodec.java
URL:
http://svn.apache.org/viewvc/mina/trunk/ldap/src/main/java/org/apache/mina/ldap/LdapCodec.java?rev=1222401&r1=1222400&r2=1222401&view=diff
==============================================================================
--- mina/trunk/ldap/src/main/java/org/apache/mina/ldap/LdapCodec.java (original)
+++ mina/trunk/ldap/src/main/java/org/apache/mina/ldap/LdapCodec.java Thu Dec
22 19:10:27 2011
@@ -19,6 +19,9 @@
*/
package org.apache.mina.ldap;
+
+import static org.apache.mina.session.AttributeKey.createKey;
+
import java.nio.ByteBuffer;
import org.apache.directory.shared.ldap.codec.api.LdapApiService;
@@ -43,16 +46,19 @@ import org.apache.mina.filter.codec.Prot
import org.apache.mina.filter.codec.ProtocolDecoder;
import org.apache.mina.filter.codec.ProtocolEncoder;
import org.apache.mina.filterchain.WriteFilterChainController;
+import org.apache.mina.session.AttributeKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
/**
* A LDAP message codec.
*
* @author <a href="mailto:[email protected]">Apache Directory
Project</a>
*/
-public class LdapCodec extends ProtocolCodecFilter {
- private static final Logger LOG = LoggerFactory.getLogger(LdapCodec.class);
+public class LdapCodec extends ProtocolCodecFilter
+{
+ private static final Logger LOG = LoggerFactory.getLogger( LdapCodec.class
);
/** The LDAP decoder instance */
private static ProtocolDecoder ldapDecoder = new LdapProtocolDecoder();
@@ -63,57 +69,96 @@ public class LdapCodec extends ProtocolC
/** The codec */
private static LdapApiService codec = LdapApiServiceFactory.getSingleton();
- public LdapCodec() {
- super(ldapEncoder, ldapDecoder);
+ /** The Message Container attribute */
+ public static final AttributeKey<LdapMessageContainer>
MESSAGE_CONTAINER_AT = createKey(
+ LdapMessageContainer.class, "internal_messageContainer" );
+
+
+ public LdapCodec()
+ {
+ super( ldapEncoder, ldapDecoder );
}
+
@Override
- public void sessionCreated(IoSession session) {
+ public void sessionCreated( IoSession session )
+ {
LdapMessageContainer<MessageDecorator<? extends Message>> container =
new LdapMessageContainer<MessageDecorator<? extends Message>>(
- codec);
- session.setAttribute("messageContainer", container);
+ codec );
+ session.setAttribute( MESSAGE_CONTAINER_AT, container );
}
+
@Override
- public void sessionOpened(IoSession session) {
+ public void sessionOpened( IoSession session )
+ {
}
+
@Override
- public void sessionClosed(IoSession session) {
- session.removeAttribute("messageContainer");
+ public void sessionClosed( IoSession session )
+ {
+ session.removeAttribute( MESSAGE_CONTAINER_AT );
}
+
@Override
- public void sessionIdle(IoSession session, IdleStatus status) {
+ public void sessionIdle( IoSession session, IdleStatus status )
+ {
// TODO Auto-generated method stub
}
+
@Override
- public void messageWriting(IoSession session, Object message,
WriteFilterChainController controller) {
- if (message instanceof AddResponse) {
- ldapEncoder.encode(session, (AddResponse) message, controller);
- } else if (message instanceof BindResponse) {
- ldapEncoder.encode(session, (BindResponse) message, controller);
- } else if (message instanceof DeleteResponse) {
- ldapEncoder.encode(session, (DeleteResponse) message, controller);
- } else if (message instanceof CompareResponse) {
- ldapEncoder.encode(session, (CompareResponse) message, controller);
- } else if (message instanceof ExtendedResponse) {
- ldapEncoder.encode(session, (ExtendedResponse) message,
controller);
- } else if (message instanceof IntermediateResponse) {
- ldapEncoder.encode(session, (IntermediateResponse) message,
controller);
- } else if (message instanceof ModifyResponse) {
- ldapEncoder.encode(session, (ModifyResponse) message, controller);
- } else if (message instanceof ModifyDnResponse) {
- ldapEncoder.encode(session, (ModifyDnResponse) message,
controller);
- } else if (message instanceof SearchResultDone) {
- ldapEncoder.encode(session, (SearchResultDone) message,
controller);
- } else if (message instanceof SearchResultEntry) {
- ldapEncoder.encode(session, (SearchResultEntry) message,
controller);
- } else if (message instanceof SearchResultReference) {
- ldapEncoder.encode(session, (SearchResultReference) message,
controller);
- } else if (message instanceof ByteBuffer) {
- controller.callWriteNextFilter(session, message);
+ public void messageWriting( IoSession session, Object message,
WriteFilterChainController controller )
+ {
+ if ( message instanceof AddResponse )
+ {
+ ldapEncoder.encode( session, ( AddResponse ) message, controller );
+ }
+ else if ( message instanceof BindResponse )
+ {
+ ldapEncoder.encode( session, ( BindResponse ) message, controller
);
+ }
+ else if ( message instanceof DeleteResponse )
+ {
+ ldapEncoder.encode( session, ( DeleteResponse ) message,
controller );
+ }
+ else if ( message instanceof CompareResponse )
+ {
+ ldapEncoder.encode( session, ( CompareResponse ) message,
controller );
+ }
+ else if ( message instanceof ExtendedResponse )
+ {
+ ldapEncoder.encode( session, ( ExtendedResponse ) message,
controller );
+ }
+ else if ( message instanceof IntermediateResponse )
+ {
+ ldapEncoder.encode( session, ( IntermediateResponse ) message,
controller );
+ }
+ else if ( message instanceof ModifyResponse )
+ {
+ ldapEncoder.encode( session, ( ModifyResponse ) message,
controller );
+ }
+ else if ( message instanceof ModifyDnResponse )
+ {
+ ldapEncoder.encode( session, ( ModifyDnResponse ) message,
controller );
+ }
+ else if ( message instanceof SearchResultDone )
+ {
+ ldapEncoder.encode( session, ( SearchResultDone ) message,
controller );
+ }
+ else if ( message instanceof SearchResultEntry )
+ {
+ ldapEncoder.encode( session, ( SearchResultEntry ) message,
controller );
+ }
+ else if ( message instanceof SearchResultReference )
+ {
+ ldapEncoder.encode( session, ( SearchResultReference ) message,
controller );
+ }
+ else if ( message instanceof ByteBuffer )
+ {
+ controller.callWriteNextFilter( session, message );
}
}
}
\ No newline at end of file
Modified:
mina/trunk/ldap/src/main/java/org/apache/mina/ldap/LdapProtocolDecoder.java
URL:
http://svn.apache.org/viewvc/mina/trunk/ldap/src/main/java/org/apache/mina/ldap/LdapProtocolDecoder.java?rev=1222401&r1=1222400&r2=1222401&view=diff
==============================================================================
--- mina/trunk/ldap/src/main/java/org/apache/mina/ldap/LdapProtocolDecoder.java
(original)
+++ mina/trunk/ldap/src/main/java/org/apache/mina/ldap/LdapProtocolDecoder.java
Thu Dec 22 19:10:27 2011
@@ -19,6 +19,9 @@
*/
package org.apache.mina.ldap;
+
+import static org.apache.mina.session.AttributeKey.createKey;
+
import java.nio.ByteBuffer;
import org.apache.directory.shared.asn1.DecoderException;
@@ -33,17 +36,20 @@ import org.apache.directory.shared.util.
import org.apache.mina.api.IoSession;
import org.apache.mina.filter.codec.ProtocolDecoder;
import org.apache.mina.filterchain.ReadFilterChainController;
+import org.apache.mina.session.AttributeKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
/**
* A LDAP message decoder. It is based on shared-ldap decoder.
*
* @author <a href="mailto:[email protected]">Apache Directory
Project</a>
*/
-public class LdapProtocolDecoder implements ProtocolDecoder {
+public class LdapProtocolDecoder implements ProtocolDecoder
+{
/** The logger */
- private static Logger LOG =
LoggerFactory.getLogger(LdapProtocolDecoder.class);
+ private static Logger LOG = LoggerFactory.getLogger(
LdapProtocolDecoder.class );
/** A speedup for logger */
private static final boolean IS_DEBUG = LOG.isDebugEnabled();
@@ -51,44 +57,55 @@ public class LdapProtocolDecoder impleme
/** The ASN 1 decoder instance */
private Asn1Decoder asn1Decoder;
+ /** Key for the partial HTTP requests head */
+ private static final AttributeKey<Integer> MAX_PDU_SIZE_AT = createKey(
Integer.class, "internal_max_pdu_size" );
+
+
/**
* Creates a new instance of LdapProtocolEncoder.
*
* @param codec The LDAP codec service associated with this encoder.
*/
- public LdapProtocolDecoder() {
+ public LdapProtocolDecoder()
+ {
asn1Decoder = new Asn1Decoder();
}
+
/**
* {@inheritDoc}
*/
- public Object decode(IoSession session, ByteBuffer in,
ReadFilterChainController controller) {
+ public Object decode( IoSession session, ByteBuffer in,
ReadFilterChainController controller )
+ {
@SuppressWarnings("unchecked")
- LdapMessageContainer<MessageDecorator<? extends Message>>
messageContainer = (LdapMessageContainer<MessageDecorator<? extends Message>>)
session
- .getAttribute("messageContainer");
+ LdapMessageContainer<MessageDecorator<? extends Message>>
messageContainer = ( LdapMessageContainer<MessageDecorator<? extends Message>>
) session
+ .getAttribute( LdapCodec.MESSAGE_CONTAINER_AT, null );
- if (session.containsAttribute("maxPDUSize")) {
- int maxPDUSize = (Integer) session.getAttribute("maxPDUSize");
+ int maxPDUSize = session.getAttribute( MAX_PDU_SIZE_AT, 0 );
- messageContainer.setMaxPDUSize(maxPDUSize);
- }
+ messageContainer.setMaxPDUSize( maxPDUSize );
- try {
+ try
+ {
Object message = null;
- do {
- message = decode(in, messageContainer);
+ do
+ {
+ message = decode( in, messageContainer );
- controller.callReadNextFilter(session, message);
- } while (message != null);
- } catch (DecoderException lde) {
+ controller.callReadNextFilter( session, message );
+ }
+ while ( message != null );
+ }
+ catch ( DecoderException lde )
+ {
// Do something
}
return null;
}
+
/**
* Decode an incoming buffer into LDAP messages. The result can be 0, 1 or
many LDAP messages, which will be stored
* into the array the caller has created.
@@ -99,12 +116,16 @@ public class LdapProtocolDecoder impleme
* @param decodedMessages The list of decoded messages
* @throws Exception If the decoding failed
*/
- private Object decode(ByteBuffer buffer,
LdapMessageContainer<MessageDecorator<? extends Message>> messageContainer)
- throws DecoderException {
- while (buffer.hasRemaining()) {
- try {
- if (IS_DEBUG) {
- LOG.debug("Decoding the PDU : ");
+ private Object decode( ByteBuffer buffer,
LdapMessageContainer<MessageDecorator<? extends Message>> messageContainer )
+ throws DecoderException
+ {
+ while ( buffer.hasRemaining() )
+ {
+ try
+ {
+ if ( IS_DEBUG )
+ {
+ LOG.debug( "Decoding the PDU : " );
int size = buffer.limit();
int position = buffer.position();
@@ -112,20 +133,25 @@ public class LdapProtocolDecoder impleme
byte[] array = new byte[pduLength];
- System.arraycopy(buffer.array(), position, array, 0,
pduLength);
+ System.arraycopy( buffer.array(), position, array, 0,
pduLength );
- if (array.length == 0) {
- LOG.debug("NULL buffer, what the HELL ???");
- } else {
- LOG.debug(Strings.dumpBytes(array));
+ if ( array.length == 0 )
+ {
+ LOG.debug( "NULL buffer, what the HELL ???" );
+ }
+ else
+ {
+ LOG.debug( Strings.dumpBytes( array ) );
}
}
- asn1Decoder.decode(buffer, messageContainer);
+ asn1Decoder.decode( buffer, messageContainer );
- if (messageContainer.getState() == TLVStateEnum.PDU_DECODED) {
- if (IS_DEBUG) {
- LOG.debug("Decoded LdapMessage : " +
messageContainer.getMessage());
+ if ( messageContainer.getState() == TLVStateEnum.PDU_DECODED )
+ {
+ if ( IS_DEBUG )
+ {
+ LOG.debug( "Decoded LdapMessage : " +
messageContainer.getMessage() );
}
Message message = messageContainer.getMessage();
@@ -133,19 +159,24 @@ public class LdapProtocolDecoder impleme
return message;
}
- } catch (DecoderException de) {
+ }
+ catch ( DecoderException de )
+ {
buffer.clear();
messageContainer.clean();
- if (de instanceof ResponseCarryingException) {
+ if ( de instanceof ResponseCarryingException )
+ {
// Transform the DecoderException message to a
MessageException
- ResponseCarryingMessageException rcme = new
ResponseCarryingMessageException(de.getMessage());
- rcme.setResponse(((ResponseCarryingException)
de).getResponse());
+ ResponseCarryingMessageException rcme = new
ResponseCarryingMessageException( de.getMessage() );
+ rcme.setResponse( ( ( ResponseCarryingException ) de
).getResponse() );
throw rcme;
- } else {
+ }
+ else
+ {
// TODO : This is certainly not the way we should handle
such an exception !
- throw new ResponseCarryingException(de.getMessage());
+ throw new ResponseCarryingException( de.getMessage() );
}
}
}
@@ -153,17 +184,21 @@ public class LdapProtocolDecoder impleme
return null;
}
+
/**
* {@inheritDoc}
*/
- public Object finishDecode(IoSession session) throws Exception {
+ public Object finishDecode( IoSession session ) throws Exception
+ {
return null;
}
+
/**
* {@inheritDoc}
*/
- public void dispose(IoSession session) throws Exception {
+ public void dispose( IoSession session ) throws Exception
+ {
// Nothing to do
}
}