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 2006/08/22 19:07:02 UTC
svn commit: r433693 -
/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageDecoder.java
Author: elecharny
Date: Tue Aug 22 10:07:01 2006
New Revision: 433693
URL: http://svn.apache.org/viewvc?rev=433693&view=rev
Log:
A little bit ugly : we receive a decoderException, and we
must transform it to a MessageException, because those exception
are not compatible
Modified:
directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageDecoder.java
Modified: directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageDecoder.java
URL: http://svn.apache.org/viewvc/directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageDecoder.java?rev=433693&r1=433692&r2=433693&view=diff
==============================================================================
--- directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageDecoder.java (original)
+++ directory/branches/shared/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageDecoder.java Tue Aug 22 10:07:01 2006
@@ -28,6 +28,7 @@
import org.apache.directory.shared.asn1.codec.stateful.DecoderCallback;
import org.apache.directory.shared.asn1.codec.stateful.DecoderMonitor;
import org.apache.directory.shared.asn1.codec.stateful.StatefulDecoder;
+import org.apache.directory.shared.ldap.codec.ResponseCarryingException;
import org.apache.directory.shared.ldap.message.spi.Provider;
import org.apache.directory.shared.ldap.message.spi.ProviderDecoder;
import org.apache.directory.shared.ldap.message.spi.TransformerSpi;
@@ -167,21 +168,28 @@
{
Object providerEnvelope;
- if ( lock == null )
- {
- // Complain here somehow first then do the following w/o synch!
-
- // Call provider decoder to demarshall PDU into berlib specific form
- providerEnvelope = decoder.decode( lock, in );
- }
- else
+ try
{
- synchronized ( lock )
+ if ( lock == null )
{
- // Same as above but a synchronized read using valid lock object
+ // Complain here somehow first then do the following w/o synch!
+
+ // Call provider decoder to demarshall PDU into berlib specific form
providerEnvelope = decoder.decode( lock, in );
- lock.notifyAll();
}
+ else
+ {
+ synchronized ( lock )
+ {
+ // Same as above but a synchronized read using valid lock object
+ providerEnvelope = decoder.decode( lock, in );
+ lock.notifyAll();
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ throw (MessageException)e;
}
// Call on transformer to convert stub based PDU into Message based PDU
@@ -207,7 +215,18 @@
}
catch ( DecoderException e )
{
- throw new MessageException( "decoder failture: " + e.getMessage() );
+ // transform the DecoderException message to a MessageException
+ if ( e instanceof ResponseCarryingException )
+ {
+ ResponseCarryingMessageException rcme = new ResponseCarryingMessageException( e.getMessage() );
+ rcme.setResponse( ((ResponseCarryingException)e).getResponse() );
+
+ throw rcme;
+ }
+ else
+ {
+ throw new MessageException( "decoder failture: " + e.getMessage() );
+ }
}
}