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 2007/05/02 16:54:27 UTC
svn commit: r534497 - in
/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name:
AttributeTypeAndValue.java LdapDN.java Rdn.java RdnParser.java
Author: elecharny
Date: Wed May 2 07:54:26 2007
New Revision: 534497
URL: http://svn.apache.org/viewvc?view=rev&rev=534497
Log:
Fixed a big problem we had with RDN : when trying to get the UP form
from a RDN, we get the normalized form instead.
This was because the UP form was never stored into each RDN
Modified:
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AttributeTypeAndValue.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/Rdn.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RdnParser.java
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AttributeTypeAndValue.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AttributeTypeAndValue.java?view=diff&rev=534497&r1=534496&r2=534497
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AttributeTypeAndValue.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AttributeTypeAndValue.java Wed May 2 07:54:26 2007
@@ -69,6 +69,9 @@
/** The name value. It can be a String or a byte array */
private Object value;
+ /** The name user provided value. It can be a String or a byte array */
+ private Object upValue;
+
/** The user provided atav */
private String upName;
@@ -93,6 +96,7 @@
normType = null;
upType = null;
value = null;
+ upValue = null;
upName = "";
start = -1;
length = 0;
@@ -109,7 +113,7 @@
* @param value
* the value
*/
- public AttributeTypeAndValue( String type, Object value ) throws InvalidNameException
+ public AttributeTypeAndValue( String upType, String type, Object upValue, Object value ) throws InvalidNameException
{
if ( StringTools.isEmpty( type ) || StringTools.isEmpty( type.trim() ) )
{
@@ -118,7 +122,8 @@
}
normType = type.trim().toLowerCase();
- upType = type;
+ this.upType = upType;
+ this.upValue = upValue;
if ( value instanceof String )
{
@@ -129,7 +134,7 @@
this.value = value;
}
- upName = type + '=' + value;
+ upName = upType + '=' + upValue;
start = 0;
length = upName.length();
}
@@ -162,7 +167,7 @@
* @param type
* The AttributeTypeAndValue type
*/
- public void setType( String type ) throws InvalidNameException
+ public void setType( String upType, String type ) throws InvalidNameException
{
if ( StringTools.isEmpty( type ) || StringTools.isEmpty( type.trim() ) )
{
@@ -171,8 +176,8 @@
}
normType = type.trim().toLowerCase();
- upType = type;
- upName = type + upName.substring( upName.indexOf( '=' ) );
+ this.upType = upType;
+ upName = upType + upName.substring( upName.indexOf( '=' ) );
start = -1;
length = upName.length();
}
@@ -211,6 +216,16 @@
}
/**
+ * Get the User Provided Value of a AttributeTypeAndValue
+ *
+ * @return The value
+ */
+ public Object getUpValue()
+ {
+ return upValue;
+ }
+
+ /**
* Get the normalized Value of a AttributeTypeAndValue
*
* @return The value
@@ -227,7 +242,7 @@
* @param value
* The value of the AttributeTypeAndValue
*/
- public void setValue( Object value )
+ public void setValue( Object upValue, Object value )
{
if ( value instanceof String )
{
@@ -238,7 +253,8 @@
this.value = value;
}
- upName = upName.substring( 0, upName.indexOf( '=' ) + 1 ) + value;
+ this.upValue = upValue;
+ upName = upName.substring( 0, upName.indexOf( '=' ) + 1 ) + upValue;
start = -1;
length = upName.length();
}
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java?view=diff&rev=534497&r1=534496&r2=534497
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java Wed May 2 07:54:26 2007
@@ -1321,8 +1321,9 @@
if ( oidNormalizer != null )
{
- return new AttributeTypeAndValue( oidNormalizer.getAttributeTypeOid(), oidNormalizer
- .getNormalizer().normalize( atav.getValue() ) );
+ return new AttributeTypeAndValue( atav.getUpType(), oidNormalizer.getAttributeTypeOid(),
+ atav.getUpValue(),
+ oidNormalizer.getNormalizer().normalize( atav.getValue() ) );
}
else
@@ -1368,9 +1369,9 @@
while ( atavs.hasNext() )
{
- Object val = atavs.next();
- AttributeTypeAndValue newAtav = atavOidToName( ( AttributeTypeAndValue ) val, oidsMap );
- rdn.addAttributeTypeAndValue( newAtav.getUpType(), newAtav.getValue() );
+ AttributeTypeAndValue val = (AttributeTypeAndValue)atavs.next();
+ AttributeTypeAndValue newAtav = atavOidToName( val, oidsMap );
+ rdn.addAttributeTypeAndValue( val.getUpType(), newAtav.getNormType(), val.getUpValue(), newAtav.getValue() );
}
}
@@ -1395,12 +1396,13 @@
if ( oidNormalizer != null )
{
- Object value = rdn.getValue();
+ Object upValue = rdn.getUpValue();
+ String upType = rdn.getUpType();
rdn.clear();
- Object normValue = DefaultStringNormalizer.normalizeString( ( String ) value );
+ Object normValue = DefaultStringNormalizer.normalizeString( ( String ) upValue );
- rdn.addAttributeTypeAndValue( oidNormalizer.getAttributeTypeOid(), oidNormalizer
- .getNormalizer().normalize( normValue ) );
+ rdn.addAttributeTypeAndValue( upType, oidNormalizer.getAttributeTypeOid(), upValue,
+ oidNormalizer.getNormalizer().normalize( normValue ) );
}
else
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?view=diff&rev=534497&r1=534496&r2=534497
==============================================================================
--- 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 May 2 07:54:26 2007
@@ -226,11 +226,11 @@
* @throws InvalidNameException
* If the RDN is invalid
*/
- public Rdn( String type, String value ) throws InvalidNameException
+ public Rdn( String upType, String type, String upValue, String value ) throws InvalidNameException
{
super();
- addAttributeTypeAndValue( type, value );
+ addAttributeTypeAndValue( upType, type, upValue, value );
upName = type + '=' + value;
start = 0;
@@ -354,7 +354,7 @@
// We need this method to be visible from the DnParser class, but not
// from outside this package.
@SuppressWarnings({"unchecked"})
- /* Unspecified protection */void addAttributeTypeAndValue( String type, Object value ) throws InvalidNameException
+ /* Unspecified protection */void addAttributeTypeAndValue( String upType, String type, Object upValue, Object value ) throws InvalidNameException
{
// First, let's normalize the type
String normalizedType = type.toLowerCase();
@@ -364,7 +364,7 @@
{
case 0:
// This is the first AttributeTypeAndValue. Just stores it.
- atav = new AttributeTypeAndValue( type, normalizedValue );
+ atav = new AttributeTypeAndValue( upType, type, upValue, normalizedValue );
nbAtavs = 1;
atavType = normalizedType;
return;
@@ -387,7 +387,7 @@
default:
// add a new AttributeTypeAndValue
- AttributeTypeAndValue newAtav = new AttributeTypeAndValue( type, normalizedValue );
+ AttributeTypeAndValue newAtav = new AttributeTypeAndValue( upType, type, upValue, normalizedValue );
atavs.add( newAtav );
atavTypes.put( normalizedType, newAtav );
@@ -852,6 +852,26 @@
}
+ /**
+ * Return the User Provided value
+ *
+ * @return The first User provided value of this RDN
+ */
+ public Object getUpValue()
+ {
+ switch ( nbAtavs )
+ {
+ case 0:
+ return null;
+
+ case 1:
+ return atav.getUpValue();
+
+ default:
+ return ( ( AttributeTypeAndValue )((TreeSet)atavs).first() ).getUpValue();
+ }
+ }
+
/**
* Compares the specified Object with this Rdn for equality. Returns true if
* the given object is also a Rdn and the two Rdns represent the same
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RdnParser.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RdnParser.java?view=diff&rev=534497&r1=534496&r2=534497
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RdnParser.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RdnParser.java Wed May 2 07:54:26 2007
@@ -791,7 +791,7 @@
{
if ( rdn != null )
{
- rdn.addAttributeTypeAndValue( type, value );
+ rdn.addAttributeTypeAndValue( type, type, value, value );
}
}
@@ -953,7 +953,7 @@
if ( rdn != null )
{
- rdn.addAttributeTypeAndValue( type, value );
+ rdn.addAttributeTypeAndValue( type, type, value, value );
rdn.normalize();
pos.start = pos.end;