You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2006/08/08 19:17:02 UTC

svn commit: r429742 - /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java

Author: akarasulu
Date: Tue Aug  8 10:17:01 2006
New Revision: 429742

URL: http://svn.apache.org/viewvc?rev=429742&view=rev
Log:
Fix for DIRSERVER-699: SubentriesControl causes null pointer exception

Modified:
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java?rev=429742&r1=429741&r2=429742&view=diff
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java Tue Aug  8 10:17:01 2006
@@ -62,6 +62,7 @@
 import org.apache.directory.shared.ldap.codec.search.SearchResultReference;
 import org.apache.directory.shared.ldap.codec.search.SubstringFilter;
 import org.apache.directory.shared.ldap.codec.search.controls.PSearchControl;
+import org.apache.directory.shared.ldap.codec.search.controls.SubEntryControl;
 import org.apache.directory.shared.ldap.codec.util.LdapString;
 import org.apache.directory.shared.ldap.codec.util.LdapStringEncodingException;
 import org.apache.directory.shared.ldap.codec.util.LdapURL;
@@ -102,6 +103,7 @@
 import org.apache.directory.shared.ldap.message.SearchResponseDoneImpl;
 import org.apache.directory.shared.ldap.message.SearchResponseEntryImpl;
 import org.apache.directory.shared.ldap.message.SearchResponseReferenceImpl;
+import org.apache.directory.shared.ldap.message.SubentriesControl;
 import org.apache.directory.shared.ldap.message.UnbindRequestImpl;
 import org.apache.directory.shared.ldap.message.extended.GracefulShutdownRequest;
 import org.apache.directory.shared.ldap.message.extended.StoredProcedureRequest;
@@ -655,7 +657,7 @@
 
 
     /**
-     * Transform the Twix message to a Snickers message.
+     * Transform the Twix message to a codec neutral message.
      * 
      * @param obj
      *            the object to transform
@@ -759,6 +761,15 @@
                     neutralPsearch.setCritical( twixControl.getCriticality() );
                     neutralPsearch.setValue( twixControl.getEncodedValue() );
                 }
+                else if ( twixControl.getControlValue() instanceof SubEntryControl )
+                {
+                    SubentriesControl neutralSubentriesControl = new SubentriesControl();
+                    SubEntryControl twixSubentriesControl = ( SubEntryControl ) twixControl.getControlValue();
+                    neutralControl = neutralSubentriesControl;
+                    neutralSubentriesControl.setVisibility( twixSubentriesControl.isVisible() );
+                    neutralSubentriesControl.setCritical( twixControl.getCriticality() );
+                    neutralSubentriesControl.setValue( twixControl.getEncodedValue() );
+                }
                 else if ( twixControl.getControlValue() instanceof byte[] )
                 {
                     neutralControl = new ControlImpl()
@@ -784,6 +795,32 @@
                     // m_value
                     neutralControl.setValue( ( byte[] ) twixControl.getControlValue() );
                 }
+                else if ( twixControl.getControlValue() == null )
+                {
+                    neutralControl = new ControlImpl()
+                    {
+                        // Just to avoid a compilation warning !!!
+                        public static final long serialVersionUID = 1L;
+
+
+                        public byte[] getEncodedValue()
+                        {
+                            return null;
+                        }
+                    };
+
+                    // Twix : boolean criticality -> Snickers : boolean
+                    // m_isCritical
+                    neutralControl.setCritical( twixControl.getCriticality() );
+
+                    // Twix : OID controlType -> Snickers : String m_oid
+                    neutralControl.setType( twixControl.getControlType() );
+
+                    // Twix : OctetString controlValue -> Snickers : byte []
+                    // m_value
+                    neutralControl.setValue( ( byte[] ) twixControl.getControlValue() );
+                }
+                
 
                 snickersMessage.add( neutralControl );
             }