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 2010/08/04 19:13:47 UTC

svn commit: r982332 [5/5] - in /directory: apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/interceptor/context/ apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/schema/ apacheds/trunk/core-api/src/main/java/...

Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RDN.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RDN.java?rev=982332&r1=982331&r2=982332&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RDN.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RDN.java Wed Aug  4 17:13:46 2010
@@ -6,16 +6,16 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- *  
+ *
  *    http://www.apache.org/licenses/LICENSE-2.0
- *  
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  *  KIND, either express or implied.  See the License for the
  *  specific language governing permissions and limitations
- *  under the License. 
- *  
+ *  under the License.
+ *
  */
 package org.apache.directory.shared.ldap.name;
 
@@ -37,7 +37,6 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.entry.Value;
 import org.apache.directory.shared.ldap.exception.LdapException;
 import org.apache.directory.shared.ldap.exception.LdapInvalidDnException;
-import org.apache.directory.shared.ldap.schema.AttributeType;
 import org.apache.directory.shared.ldap.schema.SchemaManager;
 import org.apache.directory.shared.ldap.schema.normalizers.OidNormalizer;
 import org.apache.directory.shared.ldap.util.StringTools;
@@ -151,7 +150,7 @@ public class RDN implements Cloneable, C
     /**
      * We also keep a set of types, in order to use manipulations. A type is
      * connected with the atav it represents.
-     * 
+     *
      * Note : there is no Generic available classes in commons-collection...
      */
     private MultiMap atavTypes = new MultiValueMap();
@@ -203,7 +202,7 @@ public class RDN implements Cloneable, C
 
 
     /**
-     * 
+     *
      * Creates a new instance of RDN.
      *
      * @param schemaManager the schema manager
@@ -266,7 +265,7 @@ public class RDN implements Cloneable, C
     /**
      * A constructor that parse a String representing a RDN.
      *
-     * @param rdn The String containing the RDN to parse 
+     * @param rdn The String containing the RDN to parse
      * @throws LdapInvalidDnException
      */
     public RDN( String rdn ) throws LdapInvalidDnException
@@ -297,7 +296,7 @@ public class RDN implements Cloneable, C
         upName = upType + '=' + upValue;
         start = 0;
         length = upName.length();
-        
+
         // create the internal normalized form
         normalize();
 
@@ -312,7 +311,7 @@ public class RDN implements Cloneable, C
         }
     }
 
-    
+
     /**
      * @see #RDN(String, String, String, String, SchemaManager)
      */
@@ -321,7 +320,7 @@ public class RDN implements Cloneable, C
         this( upType, normType, upValue, normValue, null );
     }
 
-    
+
     /**
      * A constructor that constructs a RDN from a type and a value. Constructs
      * an Rdn from the given attribute type and value. The string attribute
@@ -340,7 +339,7 @@ public class RDN implements Cloneable, C
         upName = upType + '=' + upValue;
         start = 0;
         length = upName.length();
-        
+
         if( schemaManager != null )
         {
             this.schemaManager = schemaManager;
@@ -351,13 +350,13 @@ public class RDN implements Cloneable, C
         {
             // create the internal normalized form
             normalize();
-            
+
             // As strange as it seems, the RDN is *not* normalized against the schema at this point
             normalized = false;
         }
     }
 
-    
+
     /**
      * @see #RDN(String, String, SchemaManager)
      */
@@ -365,7 +364,7 @@ public class RDN implements Cloneable, C
     {
         this( upType, upValue, null );
     }
-    
+
 
     /**
      * A constructor that constructs a RDN from a type, a position and a length.
@@ -381,7 +380,7 @@ public class RDN implements Cloneable, C
         this.length = length;
         this.upName = upName;
         this.normName = normName;
-        normalized = true;            
+        normalized = true;
     }
 
 
@@ -428,8 +427,8 @@ public class RDN implements Cloneable, C
 
     /**
      * Transform the external representation of the current RDN to an internal
-     * normalized form where : 
-     * - types are trimmed and lower cased 
+     * normalized form where :
+     * - types are trimmed and lower cased
      * - values are trimmed and lower cased
      */
     // WARNING : The protection level is left unspecified on purpose.
@@ -488,6 +487,25 @@ public class RDN implements Cloneable, C
      * Transform a RDN by changing the value to its OID counterpart and
      * normalizing the value accordingly to its type.
      *
+     * @param schemaManager The SchemaManager
+     * @throws LdapException If the RDN is invalid.
+     */
+    public RDN normalize( SchemaManager schemaManager ) throws LdapInvalidDnException
+    {
+        String upName = getName();
+        DN.rdnOidToName( this, schemaManager.getNormalizerMapping() );
+        normalize();
+        this.upName = upName;
+        normalized = true;
+
+        return this;
+    }
+
+
+    /**
+     * Transform a RDN by changing the value to its OID counterpart and
+     * normalizing the value accordingly to its type.
+     *
      * @param oidsMap The mapping between names and oids.
      * @throws LdapException If the RDN is invalid.
      */
@@ -522,7 +540,7 @@ public class RDN implements Cloneable, C
         // First, let's normalize the type
         Value<?> normalizedValue = value;
         String normalizedType = StringTools.lowerCaseAscii( type );
-        
+
         if( schemaManager != null )
         {
             OidNormalizer oidNormalizer = schemaManager.getNormalizerMapping().get( normalizedType );
@@ -649,7 +667,7 @@ public class RDN implements Cloneable, C
      * @param type
      *            The type of the NameArgument
      * @return The Value to be returned, or null if none found.
-     * @throws LdapInvalidDnException 
+     * @throws LdapInvalidDnException
      */
     public Object getValue( String type ) throws LdapInvalidDnException
     {
@@ -698,7 +716,7 @@ public class RDN implements Cloneable, C
     }
 
 
-    /** 
+    /**
      * Get the start position
      *
      * @return The start position in the DN
@@ -760,7 +778,7 @@ public class RDN implements Cloneable, C
 
 
     /**
-     * Retrieves the components of this RDN as an iterator of AttributeTypeAndValue. 
+     * Retrieves the components of this RDN as an iterator of AttributeTypeAndValue.
      * The effect on the iterator of updates to this RDN is undefined. If the
      * RDN has zero components, an empty (non-null) iterator is returned.
      *
@@ -804,7 +822,7 @@ public class RDN implements Cloneable, C
 
     /**
      * Clone the Rdn
-     * 
+     *
      * @return A clone of the current RDN
      */
     public Object clone()
@@ -849,11 +867,11 @@ public class RDN implements Cloneable, C
 
 
     /**
-     * Compares two RDNs. They are equals if : 
-     * <li>their have the same number of NC (AttributeTypeAndValue) 
-     * <li>each ATAVs are equals 
-     * <li>comparison of type are done case insensitive 
-     * <li>each value is equal, case sensitive 
+     * Compares two RDNs. They are equals if :
+     * <li>their have the same number of NC (AttributeTypeAndValue)
+     * <li>each ATAVs are equals
+     * <li>comparison of type are done case insensitive
+     * <li>each value is equal, case sensitive
      * <li>Order of ATAV is not important If the RDNs are not equals, a positive number is
      * returned if the first RDN is greater, negative otherwise
      *
@@ -938,10 +956,10 @@ public class RDN implements Cloneable, C
 
     /**
      * Set the User Provided Name.
-     * 
+     *
      * Package private because RDN is immutable, only used by the DN parser.
-     * 
-     * @param upName the User Provided dame 
+     *
+     * @param upName the User Provided dame
      */
     void setUpName( String upName )
     {
@@ -1024,7 +1042,7 @@ public class RDN implements Cloneable, C
 
     /**
      * Return the User Provided value
-     * 
+     *
      * @return The first User provided value of this RDN
      */
     public Value<?> getUpValue()
@@ -1422,7 +1440,7 @@ public class RDN implements Cloneable, C
       * Gets the hashcode of this rdn.
       *
       * @see java.lang.Object#hashCode()
-      * @return the instance's hash code 
+      * @return the instance's hash code
       */
     public int hashCode()
     {
@@ -1456,11 +1474,11 @@ public class RDN implements Cloneable, C
 
     /**
      * @see Externalizable#readExternal(ObjectInput)<p>
-     * 
+     *
      * A RDN is composed of on to many ATAVs (AttributeType And Value).
-     * We should write all those ATAVs sequencially, following the 
+     * We should write all those ATAVs sequencially, following the
      * structure :
-     * 
+     *
      * <li>parentId</li> The parent entry's Id
      * <li>nbAtavs</li> The number of ATAVs to write. Can't be 0.
      * <li>upName</li> The User provided RDN
@@ -1472,7 +1490,7 @@ public class RDN implements Cloneable, C
      * <li>start</li> The position of this ATAV in the upName string
      * <li>length</li> The ATAV user provided length
      * <li>Call the ATAV write method</li> The ATAV itself
-     * 
+     *
      * @param out The stream into which the serialized RDN will be put
      * @throws IOException If the stream can't be written
      */
@@ -1515,11 +1533,11 @@ public class RDN implements Cloneable, C
 
     /**
      * @see Externalizable#readExternal(ObjectInput)
-     * 
-     * We read back the data to create a new RDB. The structure 
-     * read is exposed in the {@link RDN#writeExternal(ObjectOutput)} 
+     *
+     * We read back the data to create a new RDB. The structure
+     * read is exposed in the {@link RDN#writeExternal(ObjectOutput)}
      * method<p>
-     * 
+     *
      * @param in The input stream from which the RDN will be read
      * @throws IOException If we can't read from the input stream
      * @throws ClassNotFoundException If we can't create a new RDN