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 2008/08/07 19:34:17 UTC

svn commit: r683660 - /directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/codec/util/LdapURL.java

Author: akarasulu
Date: Thu Aug  7 10:34:17 2008
New Revision: 683660

URL: http://svn.apache.org/viewvc?rev=683660&view=rev
Log:
perfect changes now to toString() method

Modified:
    directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/codec/util/LdapURL.java

Modified: directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/codec/util/LdapURL.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/codec/util/LdapURL.java?rev=683660&r1=683659&r2=683660&view=diff
==============================================================================
--- directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/codec/util/LdapURL.java (original)
+++ directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/codec/util/LdapURL.java Thu Aug  7 10:34:17 2008
@@ -114,6 +114,10 @@
     /** Stores the LdapURL as a byte array */
     private byte[] bytes;
     
+    /** modal parameter that forces explicit scope rendering in toString */
+    private boolean forceScopeRendering;
+    
+    
     // ~ Constructors
     // -------------------------------------------------------------------------------
 
@@ -1211,6 +1215,7 @@
      * Get a string representation of a LdapURL.
      * 
      * @return A LdapURL string
+     * @see LdapURL#forceScopeRendering
      */
     public String toString()
     {
@@ -1229,7 +1234,7 @@
         {
             sb.append( '/' ).append( urlEncode( dn.toString(), false ) );
 
-            if ( ( attributes.size() != 0 )
+            if ( attributes.size() != 0 || forceScopeRendering
                 || ( ( scope != SearchControls.OBJECT_SCOPE ) || ( filter != null ) || 
                     ( extensions.size() != 0 ) || ( criticalExtensions.size() != 0 ) ) )
             {
@@ -1251,9 +1256,8 @@
                     sb.append( urlEncode( attribute, false ) );
                 }
             }
-
-            if ( ( scope != SearchControls.OBJECT_SCOPE ) || ( filter != null ) || ( extensions.size() != 0 )
-                || ( criticalExtensions.size() != 0 ) )
+            
+            if ( forceScopeRendering )
             {
                 sb.append( '?' );
 
@@ -1261,8 +1265,7 @@
                 {
 
                     case SearchControls.OBJECT_SCOPE:
-
-                        // This is the default value.
+                        sb.append( "base" );
                         break;
 
                     case SearchControls.ONELEVEL_SCOPE:
@@ -1277,66 +1280,96 @@
                     default :
                         break;
                 }
+            }
 
-                if ( ( filter != null ) || ( ( extensions.size() != 0 ) || ( criticalExtensions.size() != 0 ) ) )
+            else
+            {
+                if ( ( scope != SearchControls.OBJECT_SCOPE ) || ( filter != null ) || ( extensions.size() != 0 )
+                    || ( criticalExtensions.size() != 0 ) )
                 {
-                    sb.append( "?" );
-
-                    if ( filter != null )
+                    sb.append( '?' );
+    
+                    switch ( scope )
                     {
-                        sb.append( urlEncode( filter, false ) );
+    
+                        case SearchControls.OBJECT_SCOPE:
+    
+                            // This is the default value.
+                            break;
+    
+                        case SearchControls.ONELEVEL_SCOPE:
+                            sb.append( "one" );
+                            break;
+    
+                        case SearchControls.SUBTREE_SCOPE:
+                            sb.append( "sub" );
+                            break;
+                            
+                            
+                        default :
+                            break;
                     }
-
-                    if ( ( extensions.size() != 0 ) || ( criticalExtensions.size() != 0 ) )
+    
+                    if ( ( filter != null ) || ( ( extensions.size() != 0 ) || ( criticalExtensions.size() != 0 ) ) )
                     {
-                        sb.append( '?' );
-
-                        boolean isFirst = true;
-
-                        if ( extensions.size() != 0 )
+                        sb.append( "?" );
+    
+                        if ( filter != null )
                         {
-                            for ( String key:extensions.keySet() )
-                            {
-
-                                if ( !isFirst )
-                                {
-                                    sb.append( ',' );
-                                }
-                                else
-                                {
-                                    isFirst = false;
-                                }
-
-                                sb.append( urlEncode( key, false ) ).append( '=' ).append(
-                                    urlEncode( extensions.get( key ), true ) );
-                            }
+                            sb.append( urlEncode( filter, false ) );
                         }
-
-                        isFirst = true;
-
-                        if ( criticalExtensions.size() != 0 )
+    
+                        if ( ( extensions.size() != 0 ) || ( criticalExtensions.size() != 0 ) )
                         {
-                            for ( String key:criticalExtensions.keySet() )
+                            sb.append( '?' );
+    
+                            boolean isFirst = true;
+    
+                            if ( extensions.size() != 0 )
                             {
-
-                                if ( !isFirst )
-                                {
-                                    sb.append( ",!" );
-                                }
-                                else
+                                for ( String key:extensions.keySet() )
                                 {
-                                    sb.append( '!' );
-                                    isFirst = false;
+    
+                                    if ( !isFirst )
+                                    {
+                                        sb.append( ',' );
+                                    }
+                                    else
+                                    {
+                                        isFirst = false;
+                                    }
+    
+                                    sb.append( urlEncode( key, false ) ).append( '=' ).append(
+                                        urlEncode( extensions.get( key ), true ) );
                                 }
-
-                                sb.append( urlEncode( key, false ) );
-                                
-                                String value = criticalExtensions.get( key );
-                                
-                                if ( value != null )
+                            }
+    
+                            isFirst = true;
+    
+                            if ( criticalExtensions.size() != 0 )
+                            {
+                                for ( String key:criticalExtensions.keySet() )
                                 {
-                                    sb.append( '=' ).append(
-                                    urlEncode( value, true ) );
+    
+                                    if ( !isFirst )
+                                    {
+                                        sb.append( ",!" );
+                                    }
+                                    else
+                                    {
+                                        sb.append( '!' );
+                                        isFirst = false;
+                                    }
+    
+                                    sb.append( urlEncode( key, false ) );
+                                    
+                                    String value = criticalExtensions.get( key );
+                                    
+                                    if ( value != null )
+                                    {
+                                        sb.append( '=' ).append(
+                                        urlEncode( value, true ) );
+                                    }
                                 }
                             }
                         }
@@ -1352,7 +1385,6 @@
         return sb.toString();
     }
 
-
     /**
      * @return Returns the attributes.
      */
@@ -1649,4 +1681,30 @@
         }
     }
 
+    
+    /**
+     * If set to true forces the toString method to render the scope 
+     * regardless of optional nature.  Use this when you want explicit
+     * search URL scope rendering.
+     * 
+     * @param forceScopeRendering the forceScopeRendering to set
+     */
+    public void setForceScopeRendering( boolean forceScopeRendering )
+    {
+        this.forceScopeRendering = forceScopeRendering;
+    }
+
+    
+    /**
+     * If set to true forces the toString method to render the scope 
+     * regardless of optional nature.  Use this when you want explicit
+     * search URL scope rendering.
+     * 
+     * @return the forceScopeRendering
+     */
+    public boolean isForceScopeRendering()
+    {
+        return forceScopeRendering;
+    }
+
 }