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 2011/03/26 20:17:42 UTC
svn commit: r1085789 [2/4] - in /directory/shared/trunk:
dsml/parser/src/main/java/org/apache/directory/shared/dsmlv2/reponse/
dsml/parser/src/main/java/org/apache/directory/shared/dsmlv2/request/
dsml/parser/src/test/java/org/apache/directory/shared/d...
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntryAttribute.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntryAttribute.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntryAttribute.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntryAttribute.java Sat Mar 26 19:17:40 2011
@@ -80,23 +80,12 @@ public class DefaultEntryAttribute imple
if ( attributeType != null )
{
- stringValue = new StringValue( attributeType, value );
-
try
{
- stringValue.normalize();
+ stringValue = new StringValue( attributeType, value );
}
- catch( LdapException ne )
- {
- // The value can't be normalized : we don't add it.
- LOG.error( I18n.err( I18n.ERR_04449, value ) );
- return null;
- }
-
- if ( !stringValue.isValid() )
+ catch ( LdapInvalidAttributeValueException iae )
{
- // The value is not valid : we don't add it.
- LOG.error( I18n.err( I18n.ERR_04450, value ) );
return null;
}
}
@@ -109,31 +98,13 @@ public class DefaultEntryAttribute imple
}
- private Value<byte[]> createBinaryValue( AttributeType attributeType, byte[] value )
+ private Value<byte[]> createBinaryValue( AttributeType attributeType, byte[] value ) throws LdapInvalidAttributeValueException
{
Value<byte[]> binaryValue = null;
if ( attributeType != null )
{
binaryValue = new BinaryValue( attributeType, value );
-
- try
- {
- binaryValue.normalize();
- }
- catch( LdapException ne )
- {
- // The value can't be normalized : we don't add it.
- LOG.error( I18n.err( I18n.ERR_04449, value ) );
- return null;
- }
-
- if ( !binaryValue.isValid() )
- {
- // The value is not valid : we don't add it.
- LOG.error( I18n.err( I18n.ERR_04450, value ) );
- return null;
- }
}
else
{
@@ -188,7 +159,14 @@ public class DefaultEntryAttribute imple
{
if ( attributeType != null )
{
- setAttributeType( attributeType );
+ try
+ {
+ setAttributeType( attributeType );
+ }
+ catch ( LdapInvalidAttributeValueException liave )
+ {
+ // Do nothing, it can't happen, there is no value
+ }
}
}
@@ -217,7 +195,15 @@ public class DefaultEntryAttribute imple
throw new IllegalArgumentException( message );
}
- setAttributeType( attributeType );
+ try
+ {
+ setAttributeType( attributeType );
+ }
+ catch ( LdapInvalidAttributeValueException liave )
+ {
+ // Do nothing, it can't happen, there is no value
+ }
+
setUpId( upId, attributeType );
}
@@ -243,7 +229,7 @@ public class DefaultEntryAttribute imple
{
for ( Value<?> val:vals )
{
- if ( ( val instanceof StringValue) || ( val.isBinary() ) )
+ if ( ( val instanceof StringValue) || ( !val.isHR() ) )
{
add( val );
}
@@ -266,7 +252,7 @@ public class DefaultEntryAttribute imple
* @param attributeType The attributeType added on creation
* @param vals The added value for this attribute
*/
- public DefaultEntryAttribute( AttributeType attributeType, String... vals )
+ public DefaultEntryAttribute( AttributeType attributeType, String... vals ) throws LdapInvalidAttributeValueException
{
this( null, attributeType, vals );
}
@@ -279,7 +265,7 @@ public class DefaultEntryAttribute imple
* @param attributeType The attributeType added on creation
* @param vals the added values for this attribute
*/
- public DefaultEntryAttribute( String upId, AttributeType attributeType, String... vals )
+ public DefaultEntryAttribute( String upId, AttributeType attributeType, String... vals ) throws LdapInvalidAttributeValueException
{
if ( attributeType == null )
{
@@ -307,7 +293,7 @@ public class DefaultEntryAttribute imple
* @param attributeType the attribute type according to the schema
* @param vals an initial set of values for this attribute
*/
- public DefaultEntryAttribute( String upId, AttributeType attributeType, Value<?>... vals )
+ public DefaultEntryAttribute( String upId, AttributeType attributeType, Value<?>... vals ) throws LdapInvalidAttributeValueException
{
if ( attributeType == null )
{
@@ -332,7 +318,7 @@ public class DefaultEntryAttribute imple
* @param attributeType the attribute type according to the schema
* @param vals an initial set of values for this attribute
*/
- public DefaultEntryAttribute( AttributeType attributeType, Value<?>... vals )
+ public DefaultEntryAttribute( AttributeType attributeType, Value<?>... vals ) throws LdapInvalidAttributeValueException
{
this( null, attributeType, vals );
}
@@ -343,7 +329,15 @@ public class DefaultEntryAttribute imple
*/
public DefaultEntryAttribute( String upId, String... vals )
{
- add( vals );
+ try
+ {
+ add( vals );
+ }
+ catch ( LdapInvalidAttributeValueException liave )
+ {
+ // Do nothing, it can't happen
+ }
+
setUpId( upId );
}
@@ -353,7 +347,15 @@ public class DefaultEntryAttribute imple
*/
public DefaultEntryAttribute( String upId, byte[]... vals )
{
- add( vals );
+ try
+ {
+ add( vals );
+ }
+ catch ( LdapInvalidAttributeValueException liave )
+ {
+ // Do nothing, this can't happen
+ }
+
setUpId( upId );
}
@@ -364,7 +366,7 @@ public class DefaultEntryAttribute imple
* @param attributeType The attributeType added on creation
* @param vals The value for the added attribute
*/
- public DefaultEntryAttribute( AttributeType attributeType, byte[]... vals )
+ public DefaultEntryAttribute( AttributeType attributeType, byte[]... vals ) throws LdapInvalidAttributeValueException
{
this( null, attributeType, vals );
}
@@ -377,7 +379,7 @@ public class DefaultEntryAttribute imple
* @param attributeType the AttributeType to be added
* @param vals the values for the added attribute
*/
- public DefaultEntryAttribute( String upId, AttributeType attributeType, byte[]... vals )
+ public DefaultEntryAttribute( String upId, AttributeType attributeType, byte[]... vals ) throws LdapInvalidAttributeValueException
{
if ( attributeType == null )
{
@@ -399,7 +401,7 @@ public class DefaultEntryAttribute imple
* @param attributeType The attribute's type
* @param attribute The attribute to be copied
*/
- public DefaultEntryAttribute( AttributeType attributeType, EntryAttribute attribute )
+ public DefaultEntryAttribute( AttributeType attributeType, EntryAttribute attribute ) throws LdapException
{
// Copy the common values. isHR is only available on a ServerAttribute
this.attributeType = attributeType;
@@ -476,16 +478,14 @@ public class DefaultEntryAttribute imple
{
Value<?> value = get();
- if ( value.isBinary() )
- {
- return value.getBytes();
- }
- else
+ if ( value.isHR() )
{
String message = I18n.err( I18n.ERR_04130 );
LOG.error( message );
throw new LdapInvalidAttributeValueException( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, message );
}
+
+ return value.getBytes();
}
@@ -753,14 +753,6 @@ public class DefaultEntryAttribute imple
}
}
- for ( Value<?> value:values )
- {
- if ( !value.isValid() )
- {
- return false;
- }
- }
-
return true;
}
@@ -840,25 +832,39 @@ public class DefaultEntryAttribute imple
{
if ( ( val == null ) || val.isNull() )
{
- Value<String> nullSV = new StringValue( attributeType, (String)null );
-
- if ( values.add( nullSV ) )
+ try
+ {
+ Value<String> nullSV = new StringValue( attributeType, (String)null );
+
+ if ( values.add( nullSV ) )
+ {
+ nbAdded++;
+ }
+ }
+ catch ( LdapInvalidAttributeValueException iae )
{
- nbAdded++;
+ continue;
}
}
else if ( val instanceof StringValue)
{
StringValue stringValue = (StringValue)val;
- if ( stringValue.getAttributeType() == null )
- {
- stringValue.apply( attributeType );
+ try
+ {
+ if ( stringValue.getAttributeType() == null )
+ {
+ stringValue.apply( attributeType );
+ }
+
+ if ( values.add( val ) )
+ {
+ nbAdded++;
+ }
}
-
- if ( values.add( val ) )
+ catch ( LdapInvalidAttributeValueException iae )
{
- nbAdded++;
+ continue;
}
}
else
@@ -873,11 +879,18 @@ public class DefaultEntryAttribute imple
{
if ( attributeType.getSyntax().getSyntaxChecker().isValidSyntax( val ) )
{
- Value<byte[]> nullSV = new BinaryValue( attributeType, (byte[])null );
-
- if ( values.add( nullSV ) )
+ try
{
- nbAdded++;
+ Value<byte[]> nullSV = new BinaryValue( attributeType, (byte[])null );
+
+ if ( values.add( nullSV ) )
+ {
+ nbAdded++;
+ }
+ }
+ catch ( LdapInvalidAttributeValueException iae )
+ {
+ continue;
}
}
else
@@ -892,14 +905,21 @@ public class DefaultEntryAttribute imple
{
BinaryValue binaryValue = (BinaryValue)val;
- if ( binaryValue.getAttributeType() == null )
+ try
{
- binaryValue = new BinaryValue( attributeType, val.getBytes() );
+ if ( binaryValue.getAttributeType() == null )
+ {
+ binaryValue = new BinaryValue( attributeType, val.getBytes() );
+ }
+
+ if ( values.add( binaryValue ) )
+ {
+ nbAdded++;
+ }
}
-
- if ( values.add( binaryValue ) )
+ catch ( LdapInvalidAttributeValueException iae )
{
- nbAdded++;
+ continue;
}
}
else
@@ -1054,7 +1074,7 @@ public class DefaultEntryAttribute imple
/**
* @see EntryAttribute#add(String...)
*/
- public int add( String... vals )
+ public int add( String... vals ) throws LdapInvalidAttributeValueException
{
int nbAdded = 0;
@@ -1209,7 +1229,7 @@ public class DefaultEntryAttribute imple
* @param vals some new values to be added which may be null
* @return the number of added values, or 0 if none has been added
*/
- public int add( byte[]... vals )
+ public int add( byte[]... vals ) throws LdapInvalidAttributeValueException
{
int nbAdded = 0;
@@ -1232,18 +1252,7 @@ public class DefaultEntryAttribute imple
}
else
{
- value = new BinaryValue( attributeType, val );
-
- try
- {
- value.normalize();
- }
- catch( LdapException ne )
- {
- // The value can't be normalized : we don't add it.
- LOG.error( I18n.err( I18n.ERR_04449, Strings.dumpBytes(val) ) );
- return 0;
- }
+ value = createBinaryValue( attributeType, val );
}
if ( add( value ) != 0 )
@@ -1331,19 +1340,19 @@ public class DefaultEntryAttribute imple
// contained in the object
for ( Value<?> val:vals )
{
- if ( val.isBinary() )
+ if ( val.isHR() )
{
- if ( !values.contains( val ) )
+ String stringVal = val.getString();
+
+ // We have to convert the binary value to a String
+ if ( ! values.contains( new BinaryValue( Strings.getBytesUtf8(stringVal) ) ) )
{
return false;
}
}
else
{
- String stringVal = val.getString();
-
- // We have to convert the binary value to a String
- if ( ! values.contains( new BinaryValue( Strings.getBytesUtf8(stringVal) ) ) )
+ if ( !values.contains( val ) )
{
return false;
}
@@ -1364,9 +1373,16 @@ public class DefaultEntryAttribute imple
{
StringValue stringValue = (StringValue)val;
- if ( stringValue.getAttributeType() == null )
+ try
{
- stringValue.apply( attributeType );
+ if ( stringValue.getAttributeType() == null )
+ {
+ stringValue.apply( attributeType );
+ }
+ }
+ catch ( LdapInvalidAttributeValueException liave )
+ {
+ return false;
}
if ( !values.contains( val ) )
@@ -1430,8 +1446,14 @@ public class DefaultEntryAttribute imple
{
for ( String val:vals )
{
-
- if ( !contains( new StringValue( val ) ) )
+ try
+ {
+ if ( !contains( new StringValue( val ) ) )
+ {
+ return false;
+ }
+ }
+ catch ( IllegalArgumentException iae )
{
return false;
}
@@ -1462,9 +1484,16 @@ public class DefaultEntryAttribute imple
// don't find one in the values
for ( String val:vals )
{
- StringValue value = new StringValue( attributeType, val );
-
- if ( !values.contains( value ) )
+ try
+ {
+ StringValue value = new StringValue( attributeType, val );
+
+ if ( !values.contains( value ) )
+ {
+ return false;
+ }
+ }
+ catch ( LdapInvalidAttributeValueException liave )
{
return false;
}
@@ -1540,18 +1569,16 @@ public class DefaultEntryAttribute imple
// don't find one in the values
for ( byte[] val:vals )
{
- BinaryValue value = new BinaryValue( attributeType, val );
-
try
- {
- value.normalize();
- }
- catch ( LdapException ne )
- {
- return false;
- }
+ {
+ BinaryValue value = new BinaryValue( attributeType, val );
- if ( !values.contains( value ) )
+ if ( !values.contains( value ) )
+ {
+ return false;
+ }
+ }
+ catch ( LdapInvalidAttributeValueException liave )
{
return false;
}
@@ -1787,12 +1814,19 @@ public class DefaultEntryAttribute imple
{
StringValue stringValue = (StringValue)val;
- if ( stringValue.getAttributeType() == null )
+ try
{
- stringValue.apply( attributeType );
- }
+ if ( stringValue.getAttributeType() == null )
+ {
+ stringValue.apply( attributeType );
+ }
- removed &= values.remove( stringValue );
+ removed &= values.remove( stringValue );
+ }
+ catch ( LdapInvalidAttributeValueException liave )
+ {
+ removed = false;
+ }
}
else
{
@@ -1806,14 +1840,21 @@ public class DefaultEntryAttribute imple
{
if ( val instanceof BinaryValue )
{
- BinaryValue binaryValue = (BinaryValue)val;
-
- if ( binaryValue.getAttributeType() == null )
+ try
+ {
+ BinaryValue binaryValue = (BinaryValue)val;
+
+ if ( binaryValue.getAttributeType() == null )
+ {
+ binaryValue.apply( attributeType );
+ }
+
+ removed &= values.remove( binaryValue );
+ }
+ catch ( LdapInvalidAttributeValueException liave )
{
- binaryValue.apply( attributeType );
+ removed = false;
}
-
- removed &= values.remove( binaryValue );
}
else
{
@@ -1878,10 +1919,17 @@ public class DefaultEntryAttribute imple
{
if ( !isHR )
{
- for ( byte[] val:vals )
+ try
{
- BinaryValue value = new BinaryValue( attributeType, val );
- removed &= values.remove( value );
+ for ( byte[] val:vals )
+ {
+ BinaryValue value = new BinaryValue( attributeType, val );
+ removed &= values.remove( value );
+ }
+ }
+ catch ( LdapInvalidAttributeValueException liave )
+ {
+ removed = false;
}
}
else
@@ -1945,8 +1993,15 @@ public class DefaultEntryAttribute imple
{
for ( String val:vals )
{
- StringValue value = new StringValue( attributeType, val );
- removed &= values.remove( value );
+ try
+ {
+ StringValue value = new StringValue( attributeType, val );
+ removed &= values.remove( value );
+ }
+ catch ( LdapInvalidAttributeValueException liave )
+ {
+ removed = false;
+ }
}
}
else
@@ -1993,7 +2048,7 @@ public class DefaultEntryAttribute imple
*
* @param attributeType the attributeType associated with this entry attribute
*/
- public void setAttributeType( AttributeType attributeType )
+ public void setAttributeType( AttributeType attributeType ) throws LdapInvalidAttributeValueException
{
if ( attributeType == null )
{
@@ -2332,7 +2387,7 @@ public class DefaultEntryAttribute imple
/**
* {@inheritDoc}
*/
- public void applySchemaManager( SchemaManager schemaManager )
+ public void applySchemaManager( SchemaManager schemaManager ) throws LdapInvalidAttributeValueException
{
AttributeType attributeType = null;
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultModification.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultModification.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultModification.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultModification.java Sat Mar 26 19:17:40 2011
@@ -25,6 +25,7 @@ import java.io.ObjectOutput;
import org.apache.directory.shared.i18n.I18n;
import org.apache.directory.shared.ldap.model.exception.LdapException;
+import org.apache.directory.shared.ldap.model.exception.LdapInvalidAttributeValueException;
import org.apache.directory.shared.ldap.model.schema.AttributeType;
import org.apache.directory.shared.ldap.model.schema.SchemaManager;
import org.slf4j.Logger;
@@ -177,7 +178,7 @@ public class DefaultModification impleme
/**
* {@inheritDoc}
*/
- public void applyAttributeType( AttributeType attributeType )
+ public void applyAttributeType( AttributeType attributeType ) throws LdapInvalidAttributeValueException
{
this.attributeType = attributeType;
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/EntryAttribute.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/EntryAttribute.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/EntryAttribute.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/EntryAttribute.java Sat Mar 26 19:17:40 2011
@@ -71,7 +71,7 @@ public interface EntryAttribute extends
* @param vals some new values to be added which may be null
* @return the number of added values, or 0 if none has been added
*/
- int add( String... vals );
+ int add( String... vals ) throws LdapInvalidAttributeValueException;
/**
@@ -102,7 +102,7 @@ public interface EntryAttribute extends
* @param vals some new values to be added which may be null
* @return the number of added values, or 0 if none has been added
*/
- int add( byte[]... vals );
+ int add( byte[]... vals ) throws LdapInvalidAttributeValueException;
/**
@@ -143,7 +143,7 @@ public interface EntryAttribute extends
* @param val some new values to be added which may be null
* @return the number of added values, or 0 if none has been added
*/
- int add( Value<?>... val );
+ int add( Value<?>... val ) throws LdapInvalidAttributeValueException;
/**
@@ -221,7 +221,7 @@ public interface EntryAttribute extends
*
* @param attributeType the attributeType associated with this entry attribute
*/
- void setAttributeType( AttributeType attributeType );
+ void setAttributeType( AttributeType attributeType ) throws LdapInvalidAttributeValueException;
/**
@@ -492,5 +492,5 @@ public interface EntryAttribute extends
/**
* Apply the give SchemaManager to make this EntryAttribute Schema aware
*/
- void applySchemaManager( SchemaManager schemaManager );
+ void applySchemaManager( SchemaManager schemaManager ) throws LdapInvalidAttributeValueException;
}
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/EntryUtils.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/EntryUtils.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/EntryUtils.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/EntryUtils.java Sat Mar 26 19:17:40 2011
@@ -98,6 +98,11 @@ public class EntryUtils
{
public boolean isValidSyntax( Object value )
{
+ if ( value == null )
+ {
+ return true;
+ }
+
if ( !( value instanceof String ) )
{
return false;
@@ -134,7 +139,7 @@ public class EntryUtils
{
public Value<?> normalize( Value<?> value ) throws LdapException
{
- if ( !value.isBinary() )
+ if ( value.isHR() )
{
return new StringValue( value.getString().toLowerCase() );
}
@@ -145,7 +150,7 @@ public class EntryUtils
public String normalize( String value ) throws LdapException
{
- return value.toLowerCase();
+ return Strings.toLowerCase( value );
}
};
@@ -217,7 +222,7 @@ public class EntryUtils
{
public Value<?> normalize( Value<?> value ) throws LdapException
{
- if ( value.isBinary() )
+ if ( !value.isHR() )
{
byte[] val = value.getBytes();
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/Modification.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/Modification.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/Modification.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/Modification.java Sat Mar 26 19:17:40 2011
@@ -21,6 +21,7 @@ package org.apache.directory.shared.ldap
import java.io.Externalizable;
+import org.apache.directory.shared.ldap.model.exception.LdapInvalidAttributeValueException;
import org.apache.directory.shared.ldap.model.schema.AttributeType;
/**
@@ -80,5 +81,5 @@ public interface Modification extends Cl
*
* @param AttributeType the injected AttributeType
*/
- void applyAttributeType( AttributeType attributeType );
+ void applyAttributeType( AttributeType attributeType ) throws LdapInvalidAttributeValueException;
}
\ No newline at end of file
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/StringValue.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/StringValue.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/StringValue.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/StringValue.java Sat Mar 26 19:17:40 2011
@@ -25,6 +25,7 @@ import java.io.ObjectOutput;
import org.apache.directory.shared.i18n.I18n;
import org.apache.directory.shared.ldap.model.exception.LdapException;
+import org.apache.directory.shared.ldap.model.exception.LdapInvalidAttributeValueException;
import org.apache.directory.shared.ldap.model.schema.AttributeType;
import org.apache.directory.shared.ldap.model.schema.LdapComparator;
import org.apache.directory.shared.ldap.model.schema.Normalizer;
@@ -53,7 +54,6 @@ public class StringValue extends Abstrac
*/
public StringValue()
{
- normalized = false;
valid = null;
}
@@ -91,7 +91,7 @@ public class StringValue extends Abstrac
public StringValue( String value )
{
this.wrappedValue = value;
- normalized = false;
+ this.normalizedValue = value;
valid = null;
}
@@ -101,11 +101,13 @@ public class StringValue extends Abstrac
*
* @param attributeType the schema type associated with this StringValue
* @param value the value to wrap which can be null
+ * @throws LdapInvalidAttributeValueException If the added value is invalid accordingly
+ * to the schema
*/
- public StringValue( AttributeType attributeType, String value )
+ public StringValue( AttributeType attributeType, String value ) throws LdapInvalidAttributeValueException
{
- this( attributeType );
- this.wrappedValue = value;
+ this( value );
+ apply( attributeType );
}
@@ -135,88 +137,17 @@ public class StringValue extends Abstrac
*
* @return gets the normalized value
*/
- public String getNormalizedValue()
+ public String getNormValue()
{
if ( isNull() )
{
- normalized = true;
return null;
}
- if ( !normalized )
- {
- try
- {
- normalize();
- }
- catch ( LdapException ne )
- {
- String message = "Cannot normalize the value :" + ne.getLocalizedMessage();
- LOG.info( message );
- normalized = false;
- }
- }
-
- if ( normalizedValue == null )
- {
- return wrappedValue;
- }
-
return normalizedValue;
}
- /**
- * Compute the normalized (canonical) representation for the wrapped string.
- * If the wrapped String is null, the normalized form will be null too.
- *
- * @throws LdapException if the value cannot be properly normalized
- */
- public void normalize() throws LdapException
- {
- // If the value is already normalized, get out.
- if ( normalized )
- {
- return;
- }
-
- if ( attributeType != null )
- {
- Normalizer normalizer = getNormalizer();
-
- if ( normalizer == null )
- {
- normalizedValue = wrappedValue;
- }
- else
- {
- normalizedValue = ( String ) normalizer.normalize( wrappedValue );
- }
-
- normalized = true;
- }
- }
-
-
- /**
- * Normalize the value. For a client String value, applies the given normalizer.
- *
- * It supposes that the client has access to the schema in order to select the
- * appropriate normalizer.
- *
- * @param normalizer The normalizer to apply to the value
- * @exception LdapException If the value cannot be normalized
- */
- public final void normalize( Normalizer normalizer ) throws LdapException
- {
- if ( normalizer != null )
- {
- normalizedValue = (String)normalizer.normalize( wrappedValue );
- normalized = true;
- }
- }
-
-
// -----------------------------------------------------------------------
// Comparable<String> Methods
// -----------------------------------------------------------------------
@@ -256,7 +187,7 @@ public class StringValue extends Abstrac
{
if ( stringValue.getAttributeType() == null )
{
- return getNormalizedValue().compareTo( stringValue.getNormalizedValue() );
+ return getNormValue().compareTo( stringValue.getNormValue() );
}
else
{
@@ -270,12 +201,12 @@ public class StringValue extends Abstrac
}
else
{
- return getNormalizedValue().compareTo( stringValue.getNormalizedValue() );
+ return getNormValue().compareTo( stringValue.getNormValue() );
}
try
{
- return getLdapComparator().compare( getNormalizedValue(), stringValue.getNormalizedValue() );
+ return getLdapComparator().compare( getNormValue(), stringValue.getNormValue() );
}
catch ( LdapException e )
{
@@ -322,7 +253,7 @@ public class StringValue extends Abstrac
// which cannot be null at this point.
// If the normalized value is null, will default to wrapped
// which cannot be null at this point.
- String normalized = getNormalizedValue();
+ String normalized = getNormValue();
if ( normalized != null )
{
@@ -388,12 +319,12 @@ public class StringValue extends Abstrac
}
else
{
- return this.getNormalizedValue().equals( other.getNormalizedValue() );
+ return this.getNormValue().equals( other.getNormValue() );
}
}
else if ( other.attributeType != null )
{
- return this.getNormalizedValue().equals( other.getNormalizedValue() );
+ return this.getNormValue().equals( other.getNormValue() );
}
// Shortcut : compare the values without normalization
@@ -414,13 +345,13 @@ public class StringValue extends Abstrac
// Compare normalized values
if ( comparator == null )
{
- return getNormalizedValue().equals( other.getNormalizedValue() );
+ return getNormValue().equals( other.getNormValue() );
}
else
{
- if ( isNormalized() )
+ if ( isSchemaAware() )
{
- return comparator.compare( getNormalizedValue(), other.getNormalizedValue() ) == 0;
+ return comparator.compare( getNormValue(), other.getNormValue() ) == 0;
}
else
{
@@ -436,19 +367,17 @@ public class StringValue extends Abstrac
}
else
{
- return this.getNormalizedValue().equals( other.getNormalizedValue() );
+ return this.getNormValue().equals( other.getNormValue() );
}
}
/**
- * Tells if the current value is Binary or String
- *
- * @return <code>true</code> if the value is Binary, <code>false</code> otherwise
+ * {@inheritDoc}
*/
- public boolean isBinary()
+ public boolean isHR()
{
- return false;
+ return true;
}
@@ -502,7 +431,7 @@ public class StringValue extends Abstrac
}
// Read the isNormalized flag
- normalized = in.readBoolean();
+ boolean normalized = in.readBoolean();
if ( normalized )
{
@@ -542,7 +471,7 @@ public class StringValue extends Abstrac
}
// Write the isNormalized flag
- if ( normalized )
+ if ( attributeType != null )
{
// This flag is present to tell that we have a normalized value different
// from the upValue
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/Value.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/Value.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/Value.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/Value.java Sat Mar 26 19:17:40 2011
@@ -23,8 +23,8 @@ package org.apache.directory.shared.ldap
import java.io.Externalizable;
import org.apache.directory.shared.ldap.model.exception.LdapException;
+import org.apache.directory.shared.ldap.model.exception.LdapInvalidAttributeValueException;
import org.apache.directory.shared.ldap.model.schema.AttributeType;
-import org.apache.directory.shared.ldap.model.schema.Normalizer;
import org.apache.directory.shared.ldap.model.schema.SyntaxChecker;
@@ -36,7 +36,7 @@ import org.apache.directory.shared.ldap.
*/
public interface Value<T> extends Cloneable, Externalizable, Comparable<Value<T>>
{
- /** Two flags used to tll if the value is HR or not in serialization */
+ /** Two flags used to tell if the value is HR or not in serialization */
public static final boolean STRING = true;
public static final boolean BINARY = false;
@@ -44,11 +44,15 @@ public interface Value<T> extends Clonea
* Apply an AttributeType to the current Value, normalizing it.
*
* @param attributeType The AttributeType to apply
+ * @throws LdapInvalidAttributeValueException If the value is not valid accordingly
+ * to the schema
*/
- void apply( AttributeType attributeType );
+ void apply( AttributeType attributeType ) throws LdapInvalidAttributeValueException;
/**
+ * Clone a Value
+ *
* @return A cloned value
*/
Value<T> clone();
@@ -112,11 +116,11 @@ public interface Value<T> extends Clonea
/**
- * Gets a reference to the wrapped binary value.
+ * Gets a reference to the wrapped value.
*
* Warning ! The value is not copied !!!
*
- * @return a direct handle on the binary value that is wrapped
+ * @return a direct handle on the value that is wrapped
*/
T getReference();
@@ -126,21 +130,9 @@ public interface Value<T> extends Clonea
*
* @return <code>true</code> if the value has already been normalized.
*/
- boolean isNormalized();
+ boolean isSchemaAware();
- /**
- * Uses the syntaxChecker associated with the attributeType to check if the
- * value is valid. Repeated calls to this method do not attempt to re-check
- * the syntax of the wrapped value every time if the wrapped value does not
- * change. Syntax checks only result on the first check, and when the wrapped
- * value changes.
- *
- * @return <code>true</code> if the value is valid
- */
- boolean isValid();
-
-
/**
* Uses the syntaxChecker associated with the attributeType to check if the
* value is valid. Repeated calls to this method do not attempt to re-check
@@ -159,7 +151,7 @@ public interface Value<T> extends Clonea
* Set the normalized flag.
*
* @param normalized the value : true or false
- */
+ *
void setNormalized( boolean normalized );
@@ -173,7 +165,7 @@ public interface Value<T> extends Clonea
*
* @return gets the normalized value
*/
- T getNormalizedValue();
+ T getNormValue();
/**
@@ -182,7 +174,7 @@ public interface Value<T> extends Clonea
*
* @return gets a reference to the normalized value
*/
- T getNormalizedValueReference();
+ T getNormReference();
/**
@@ -190,7 +182,7 @@ public interface Value<T> extends Clonea
* must be schema aware.
*
* @exception LdapException if the value cannot be normalized
- */
+ *
void normalize() throws LdapException;
@@ -202,16 +194,16 @@ public interface Value<T> extends Clonea
*
* @param normalizer the normalizer to apply to the value
* @exception LdapException if the value cannot be normalized
- */
+ *
void normalize( Normalizer normalizer ) throws LdapException;
/**
- * Tells if the current value is Binary or String
+ * Tells if the current value is Human Readable
*
* @return <code>true</code> if the value is Binary, <code>false</code> otherwise
*/
- boolean isBinary();
+ boolean isHR();
/**
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/filter/AbstractExprNode.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/filter/AbstractExprNode.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/filter/AbstractExprNode.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/filter/AbstractExprNode.java Sat Mar 26 19:17:40 2011
@@ -153,7 +153,7 @@ public abstract class AbstractExprNode i
StringBuilder sb = null;
String val;
- if ( value.isBinary() )
+ if ( !value.isHR() )
{
sb = new StringBuilder( ((BinaryValue)value).getReference().length * 3 );
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/filter/ExtensibleNode.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/filter/ExtensibleNode.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/filter/ExtensibleNode.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/filter/ExtensibleNode.java Sat Mar 26 19:17:40 2011
@@ -183,7 +183,7 @@ public class ExtensibleNode extends Leaf
*/
public Value<?> getEscapedValue()
{
- if ( !value.isBinary() )
+ if ( value.isHR() )
{
return escapeFilterValue( value );
}
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifAttributesReader.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifAttributesReader.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifAttributesReader.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifAttributesReader.java Sat Mar 26 19:17:40 2011
@@ -34,6 +34,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.model.entry.Entry;
import org.apache.directory.shared.ldap.model.entry.EntryAttribute;
import org.apache.directory.shared.ldap.model.exception.LdapException;
+import org.apache.directory.shared.ldap.model.exception.LdapInvalidAttributeValueException;
import org.apache.directory.shared.ldap.model.schema.AttributeType;
import org.apache.directory.shared.ldap.model.schema.SchemaManager;
import org.apache.directory.shared.util.Strings;
@@ -284,13 +285,20 @@ public class LdifAttributesReader extend
}
else
{
- if ( attributeValue instanceof String )
+ try
{
- attribute.add( ( String ) attributeValue );
+ if ( attributeValue instanceof String )
+ {
+ attribute.add( ( String ) attributeValue );
+ }
+ else
+ {
+ attribute.add( ( byte[] ) attributeValue );
+ }
}
- else
+ catch ( LdapInvalidAttributeValueException liave )
{
- attribute.add( ( byte[] ) attributeValue );
+ throw new LdapLdifException( liave.getMessage() );
}
}
}
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifReader.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifReader.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifReader.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifReader.java Sat Mar 26 19:17:40 2011
@@ -47,6 +47,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.model.entry.EntryAttribute;
import org.apache.directory.shared.ldap.model.entry.ModificationOperation;
import org.apache.directory.shared.ldap.model.exception.LdapException;
+import org.apache.directory.shared.ldap.model.exception.LdapInvalidAttributeValueException;
import org.apache.directory.shared.ldap.model.exception.LdapInvalidDnException;
import org.apache.directory.shared.ldap.model.message.Control;
import org.apache.directory.shared.ldap.model.name.Dn;
@@ -1105,13 +1106,20 @@ public class LdifReader implements Itera
Object attributeValue = parseValue( line, colonIndex );
- if ( attributeValue instanceof String )
- {
- attribute.add( ( String ) attributeValue );
+ try
+ {
+ if ( attributeValue instanceof String )
+ {
+ attribute.add( ( String ) attributeValue );
+ }
+ else
+ {
+ attribute.add( ( byte[] ) attributeValue );
+ }
}
- else
+ catch ( LdapInvalidAttributeValueException liave )
{
- attribute.add( ( byte[] ) attributeValue );
+ throw new LdapLdifException( liave.getMessage() );
}
isEmptyValue = false;
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifUtils.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifUtils.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifUtils.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifUtils.java Sat Mar 26 19:17:40 2011
@@ -559,14 +559,7 @@ public final class LdifUtils
{
lineBuffer.append( ':' );
}
- else if ( value.isBinary() )
- {
- // It is binary, so we have to encode it using Base64 before adding it
- char[] encoded = Base64.encode( value.getBytes() );
-
- lineBuffer.append( ":: " + new String( encoded ) );
- }
- else if ( !value.isBinary() )
+ else if ( value.isHR() )
{
// It's a String but, we have to check if encoding isn't required
String str = value.getString();
@@ -585,6 +578,13 @@ public final class LdifUtils
}
}
}
+ else
+ {
+ // It is binary, so we have to encode it using Base64 before adding it
+ char[] encoded = Base64.encode( value.getBytes() );
+
+ lineBuffer.append( ":: " + new String( encoded ) );
+ }
lineBuffer.append( "\n" );
sb.append( stripLineToNChars( lineBuffer.toString(), length ) );
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/AddRequestImpl.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/AddRequestImpl.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/AddRequestImpl.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/AddRequestImpl.java Sat Mar 26 19:17:40 2011
@@ -108,7 +108,7 @@ public class AddRequestImpl extends Abst
*
* @param value The value to add
*/
- public void addAttributeValue( String value )
+ public void addAttributeValue( String value ) throws LdapException
{
currentAttribute.add( value );
}
@@ -119,7 +119,7 @@ public class AddRequestImpl extends Abst
*
* @param value The value to add
*/
- public void addAttributeValue( Value<?> value )
+ public void addAttributeValue( Value<?> value ) throws LdapException
{
currentAttribute.add( value );
}
@@ -130,7 +130,7 @@ public class AddRequestImpl extends Abst
*
* @param value The value to add
*/
- public void addAttributeValue( byte[] value )
+ public void addAttributeValue( byte[] value ) throws LdapException
{
currentAttribute.add( value );
}
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/CompareRequestImpl.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/CompareRequestImpl.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/CompareRequestImpl.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/message/CompareRequestImpl.java Sat Mar 26 19:17:40 2011
@@ -314,7 +314,7 @@ public class CompareRequestImpl extends
sb.append( " Attribute description : '" ).append( attrId ).append( "'\n" );
sb.append( " Attribute value : '" );
- if ( !attrVal.isBinary() )
+ if ( attrVal.isHR() )
{
sb.append( attrVal.get() );
}
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/name/Ava.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/name/Ava.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/name/Ava.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/name/Ava.java Sat Mar 26 19:17:40 2011
@@ -30,6 +30,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.model.entry.StringValue;
import org.apache.directory.shared.ldap.model.entry.Value;
import org.apache.directory.shared.ldap.model.exception.LdapException;
+import org.apache.directory.shared.ldap.model.exception.LdapInvalidAttributeValueException;
import org.apache.directory.shared.ldap.model.exception.LdapInvalidDnException;
import org.apache.directory.shared.ldap.model.message.ResultCodeEnum;
import org.apache.directory.shared.ldap.model.schema.AttributeType;
@@ -162,7 +163,16 @@ public class Ava implements Externalizab
throw new LdapInvalidDnException( ResultCodeEnum.INVALID_DN_SYNTAX, message );
}
- createAva( schemaManager, upType, new BinaryValue( attributeType, upValue ) );
+ try
+ {
+ createAva( schemaManager, upType, new BinaryValue( attributeType, upValue ) );
+ }
+ catch ( LdapInvalidAttributeValueException liave )
+ {
+ String message = I18n.err( I18n.ERR_04188 );
+ LOG.error( message );
+ throw new LdapInvalidDnException( ResultCodeEnum.INVALID_DN_SYNTAX, message );
+ }
}
else
{
@@ -215,7 +225,16 @@ public class Ava implements Externalizab
throw new LdapInvalidDnException( ResultCodeEnum.INVALID_DN_SYNTAX, message );
}
- createAva( schemaManager, upType, new StringValue( attributeType, upValue ) );
+ try
+ {
+ createAva( schemaManager, upType, new StringValue( attributeType, upValue ) );
+ }
+ catch ( LdapInvalidAttributeValueException liave )
+ {
+ String message = I18n.err( I18n.ERR_04188 );
+ LOG.error( message );
+ throw new LdapInvalidDnException( ResultCodeEnum.INVALID_DN_SYNTAX, message );
+ }
}
else
{
@@ -664,7 +683,7 @@ public class Ava implements Externalizab
*/
public String normalize()
{
- if ( !normValue.isBinary() )
+ if ( normValue.isHR() )
{
// The result will be gathered in a stringBuilder
StringBuilder sb = new StringBuilder();
@@ -888,7 +907,7 @@ public class Ava implements Externalizab
out.writeBoolean( false);
}
- boolean isHR = !normValue.isBinary();
+ boolean isHR = normValue.isHR();
out.writeBoolean( isHR );
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/name/Rdn.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/name/Rdn.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/name/Rdn.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/name/Rdn.java Sat Mar 26 19:17:40 2011
@@ -391,7 +391,7 @@ public class Rdn implements Cloneable, E
case 1:
// We have a single Ava
// We will trim and lowercase type and value.
- if ( !ava.getNormValue().isBinary() )
+ if ( ava.getNormValue().isHR() )
{
normName = ava.getNormName();
}
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/normalizers/RegexNormalizer.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/normalizers/RegexNormalizer.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/normalizers/RegexNormalizer.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/normalizers/RegexNormalizer.java Sat Mar 26 19:17:40 2011
@@ -82,7 +82,7 @@ public class RegexNormalizer extends Nor
return null;
}
- if ( !value.isBinary() )
+ if ( value.isHR() )
{
String str = value.getString();
Added: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/syntaxCheckers/DerefAliasSyntaxChecker.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/syntaxCheckers/DerefAliasSyntaxChecker.java?rev=1085789&view=auto
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/syntaxCheckers/DerefAliasSyntaxChecker.java (added)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/syntaxCheckers/DerefAliasSyntaxChecker.java Sat Mar 26 19:17:40 2011
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * 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.
+ *
+ */
+package org.apache.directory.shared.ldap.model.schema.syntaxCheckers;
+
+
+import org.apache.directory.shared.ldap.model.constants.SchemaConstants;
+import org.apache.directory.shared.ldap.model.schema.SyntaxChecker;
+import org.apache.directory.shared.util.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * A SyntaxChecker which verifies that a value is a valid DerefAlias. We
+ * have four possible values :
+ * <ul>
+ * <li>NEVER</li>
+ * <li>SEARCHING</li>
+ * <li>FINDING</li>
+ * <li>ALWAYS</li>
+ * </ul>
+ * The value is case insensitive
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+@SuppressWarnings("serial")
+public class DerefAliasSyntaxChecker extends SyntaxChecker
+{
+ /** A logger for this class */
+ private static final Logger LOG = LoggerFactory.getLogger( DerefAliasSyntaxChecker.class );
+
+ /**
+ * Creates a new instance of DerefAliasSyntaxChecker.
+ */
+ public DerefAliasSyntaxChecker()
+ {
+ super( SchemaConstants.DEREF_ALIAS_SYNTAX );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isValidSyntax( Object value )
+ {
+ String strValue = null;
+
+ if ( value == null )
+ {
+ LOG.debug( "Syntax invalid for 'null'" );
+ return false;
+ }
+
+ if ( value instanceof String )
+ {
+ strValue = ( String ) value;
+ }
+ else if ( value instanceof byte[] )
+ {
+ strValue = Strings.utf8ToString((byte[]) value);
+ }
+ else
+ {
+ strValue = value.toString();
+ }
+
+ strValue = Strings.trim( Strings.toLowerCase( strValue ) );
+
+ return ( "never".equals( strValue ) ||
+ "finding".equals( strValue ) ||
+ "searching".equals( strValue ) ||
+ "always".equals( strValue ));
+ }
+}
Added: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/syntaxCheckers/SearchScopeSyntaxChecker.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/syntaxCheckers/SearchScopeSyntaxChecker.java?rev=1085789&view=auto
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/syntaxCheckers/SearchScopeSyntaxChecker.java (added)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/syntaxCheckers/SearchScopeSyntaxChecker.java Sat Mar 26 19:17:40 2011
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * 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.
+ *
+ */
+package org.apache.directory.shared.ldap.model.schema.syntaxCheckers;
+
+
+import org.apache.directory.shared.ldap.model.constants.SchemaConstants;
+import org.apache.directory.shared.ldap.model.schema.SyntaxChecker;
+import org.apache.directory.shared.util.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * A SyntaxChecker which verifies that a value is a valid Search Scope. We
+ * have three possible values :
+ * <ul>
+ * <li>OBJECT</li>
+ * <li>ONE</li>
+ * <li>SUBTREE</li>
+ * </ul>
+ * The value is case insensitive
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+@SuppressWarnings("serial")
+public class SearchScopeSyntaxChecker extends SyntaxChecker
+{
+ /** A logger for this class */
+ private static final Logger LOG = LoggerFactory.getLogger( SearchScopeSyntaxChecker.class );
+
+ /**
+ * Creates a new instance of SearchScopeSyntaxChecker.
+ */
+ public SearchScopeSyntaxChecker()
+ {
+ super( SchemaConstants.SEARCH_SCOPE_SYNTAX );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isValidSyntax( Object value )
+ {
+ String strValue = null;
+
+ if ( value == null )
+ {
+ LOG.debug( "Syntax invalid for 'null'" );
+ return false;
+ }
+
+ if ( value instanceof String )
+ {
+ strValue = ( String ) value;
+ }
+ else if ( value instanceof byte[] )
+ {
+ strValue = Strings.utf8ToString((byte[]) value);
+ }
+ else
+ {
+ strValue = value.toString();
+ }
+
+ strValue = Strings.trim( Strings.toLowerCase( strValue ) );
+
+ return ( "object".equals( strValue ) || "one".equals( strValue ) || "subtree".equals( strValue ) );
+ }
+}
Modified: directory/shared/trunk/ldap/model/src/test/java/org/apache/directory/shared/ldap/model/entry/BinaryValueAttributeTypeTest.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/test/java/org/apache/directory/shared/ldap/model/entry/BinaryValueAttributeTypeTest.java?rev=1085789&r1=1085788&r2=1085789&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/test/java/org/apache/directory/shared/ldap/model/entry/BinaryValueAttributeTypeTest.java (original)
+++ directory/shared/trunk/ldap/model/src/test/java/org/apache/directory/shared/ldap/model/entry/BinaryValueAttributeTypeTest.java Sat Mar 26 19:17:40 2011
@@ -35,6 +35,7 @@ import java.io.ObjectOutputStream;
import java.util.Arrays;
import org.apache.directory.shared.ldap.model.exception.LdapException;
+import org.apache.directory.shared.ldap.model.exception.LdapInvalidAttributeValueException;
import org.apache.directory.shared.ldap.model.schema.AttributeType;
import org.apache.directory.shared.ldap.model.schema.LdapSyntax;
import org.apache.directory.shared.ldap.model.schema.MatchingRule;
@@ -90,7 +91,7 @@ public class BinaryValueAttributeTypeTes
{
public Value<?> normalize( Value<?> value ) throws LdapException
{
- if ( value.isBinary() )
+ if ( !value.isHR() )
{
byte[] val = value.getBytes();
// each byte will be changed to be > 0, and spaces will be trimmed
@@ -221,7 +222,7 @@ public class BinaryValueAttributeTypeTes
/**
* Test the constructor with a null value
*/
- @Test public void testServerBinaryValueNullValue()
+ @Test public void testServerBinaryValueNullValue() throws LdapInvalidAttributeValueException
{
AttributeType attribute = EntryUtils.getBytesAttributeType();
@@ -235,13 +236,13 @@ public class BinaryValueAttributeTypeTes
/**
* Test the constructor with an empty value
*/
- @Test public void testServerBinaryValueEmptyValue()
+ @Test public void testServerBinaryValueEmptyValue() throws LdapInvalidAttributeValueException
{
AttributeType attribute = EntryUtils.getBytesAttributeType();
BinaryValue value = new BinaryValue( attribute, StringConstants.EMPTY_BYTES );
- assertEquals( StringConstants.EMPTY_BYTES, value.getReference() );
+ assertTrue( Arrays.equals( StringConstants.EMPTY_BYTES, value.getReference() ) );
assertFalse( value.isNull() );
}
@@ -265,7 +266,7 @@ public class BinaryValueAttributeTypeTes
/**
* Test the constructor with a value
*/
- @Test public void testServerBinaryValue()
+ @Test public void testServerBinaryValue() throws LdapInvalidAttributeValueException
{
AttributeType attribute = EntryUtils.getBytesAttributeType();
byte[] val = new byte[]{0x01};
@@ -299,7 +300,7 @@ public class BinaryValueAttributeTypeTes
assertEquals( bv, bv1 );
- bv.normalize();
+ bv.apply( at );
// Even if we didn't normalized sbv2, it should be equal to sbv,
// as if they have the same AT, and the same value, they are equal.
@@ -310,7 +311,7 @@ public class BinaryValueAttributeTypeTes
/**
* Test the equals method
*/
- @Test public void testEquals()
+ @Test public void testEquals() throws LdapInvalidAttributeValueException
{
AttributeType at1 = EntryUtils.getBytesAttributeType();
@@ -337,56 +338,56 @@ public class BinaryValueAttributeTypeTes
/**
- * Test the getNormalizedValue method
+ * Test the getNormValue method
*/
- @Test public void testGetNormalizedValue()
+ @Test public void testGetNormalizedValue() throws LdapInvalidAttributeValueException
{
AttributeType attribute = EntryUtils.getBytesAttributeType();
BinaryValue value = new BinaryValue( attribute, null );
- assertNull( value.getNormalizedValue() );
+ assertNull( value.getNormValue() );
value = new BinaryValue( attribute, StringConstants.EMPTY_BYTES );
- assertTrue( Arrays.equals( StringConstants.EMPTY_BYTES, value.getNormalizedValue() ) );
+ assertTrue( Arrays.equals( StringConstants.EMPTY_BYTES, value.getNormValue() ) );
value = new BinaryValue( attribute, BYTES2 );
- assertTrue( Arrays.equals( BYTES1, value.getNormalizedValue() ) );
+ assertTrue( Arrays.equals( BYTES1, value.getNormValue() ) );
}
/**
- * Test the getNormalizedValue method
+ * Test the getNormValue method
*/
- @Test public void testGetNormalizedValueCopy()
+ @Test public void testGetNormalizedValueCopy() throws LdapInvalidAttributeValueException
{
AttributeType attribute = EntryUtils.getBytesAttributeType();
BinaryValue value = new BinaryValue( attribute, null );
- assertNull( value.getNormalizedValue() );
+ assertNull( value.getNormValue() );
value = new BinaryValue( attribute, StringConstants.EMPTY_BYTES );
- assertTrue( Arrays.equals( StringConstants.EMPTY_BYTES, value.getNormalizedValue() ) );
+ assertTrue( Arrays.equals( StringConstants.EMPTY_BYTES, value.getNormValue() ) );
value = new BinaryValue( attribute, BYTES2 );
- assertTrue( Arrays.equals( BYTES1, value.getNormalizedValue() ) );
+ assertTrue( Arrays.equals( BYTES1, value.getNormValue() ) );
}
/**
- * Test the getNormalizedValue method
+ * Test the getNormValue method
*/
- @Test public void testGetNormalizedValueReference()
+ @Test public void testGetNormalizedValueReference() throws LdapInvalidAttributeValueException
{
AttributeType attribute = EntryUtils.getBytesAttributeType();
BinaryValue value = new BinaryValue( attribute, null );
- assertNull( value.getNormalizedValueReference() );
+ assertNull( value.getNormReference() );
value = new BinaryValue( attribute, StringConstants.EMPTY_BYTES );
- assertTrue( Arrays.equals( StringConstants.EMPTY_BYTES, value.getNormalizedValueReference() ) );
+ assertTrue( Arrays.equals( StringConstants.EMPTY_BYTES, value.getNormReference() ) );
value = new BinaryValue( attribute, BYTES2 );
- assertTrue( Arrays.equals( BYTES1, value.getNormalizedValueReference() ) );
+ assertTrue( Arrays.equals( BYTES1, value.getNormReference() ) );
}
@@ -408,25 +409,20 @@ public class BinaryValueAttributeTypeTes
*
* The SyntaxChecker does not accept values longer than 5 chars.
*/
- @Test public void testIsValid()
+ @Test public void testIsValid() throws LdapInvalidAttributeValueException
{
AttributeType attribute = EntryUtils.getBytesAttributeType();
- BinaryValue value = new BinaryValue( attribute, null );
- assertTrue( value.isValid() );
-
- value = new BinaryValue( attribute, StringConstants.EMPTY_BYTES );
- assertTrue( value.isValid() );
-
- value = new BinaryValue( attribute, new byte[]{0x01, 0x02} );
- assertTrue( value.isValid() );
+ new BinaryValue( attribute, null );
+ new BinaryValue( attribute, StringConstants.EMPTY_BYTES );
+ new BinaryValue( attribute, new byte[]{0x01, 0x02} );
try
{
- value = new BinaryValue( attribute, new byte[]{0x01, 0x02, 0x03, 0x04, 0x05, 0x06} );
+ new BinaryValue( attribute, new byte[]{0x01, 0x02, 0x03, 0x04, 0x05, 0x06} );
fail();
}
- catch ( IllegalArgumentException iae )
+ catch ( LdapInvalidAttributeValueException liave )
{
assertTrue( true );
}
@@ -437,7 +433,7 @@ public class BinaryValueAttributeTypeTes
* Tests to make sure the hashCode method is working properly.
* @throws Exception on errors
*/
- @Test public void testHashCode()
+ @Test public void testHashCode() throws LdapInvalidAttributeValueException
{
AttributeType attribute = EntryUtils.getBytesAttributeType();
BinaryValue v0 = new BinaryValue( attribute, new byte[]{0x01, 0x02} );
@@ -449,45 +445,15 @@ public class BinaryValueAttributeTypeTes
assertEquals( v0, v1 );
assertEquals( v0, v2 );
assertEquals( v1, v2 );
- assertTrue( v0.isValid() );
- assertTrue( v1.isValid() );
- assertTrue( v2.isValid() );
BinaryValue v3 = new BinaryValue( attribute, new byte[]{0x01, 0x03} );
assertFalse( v3.equals( v0 ) );
assertFalse( v3.equals( v1 ) );
assertFalse( v3.equals( v2 ) );
- assertTrue( v3.isValid() );
}
/**
- * Test the same method
- */
- @Test
- public void testSame() throws LdapException
- {
- AttributeType attribute = EntryUtils.getBytesAttributeType();
- BinaryValue bv = new BinaryValue( attribute );
-
- bv.normalize();
- assertTrue( bv.isSame() );
-
- bv = new BinaryValue( attribute, StringConstants.EMPTY_BYTES );
- bv.normalize();
- assertTrue( bv.isSame() );
-
- bv = new BinaryValue( attribute, BYTES1 );
- bv.normalize();
- assertTrue( bv.isSame() );
-
- bv = new BinaryValue( attribute, BYTES2 );
- bv.normalize();
- assertFalse( bv.isSame() );
- }
-
-
- /**
* Test the instanceOf method
*/
@Test
@@ -513,16 +479,16 @@ public class BinaryValueAttributeTypeTes
AttributeType attribute = EntryUtils.getBytesAttributeType();
BinaryValue bv = new BinaryValue( attribute );
- bv.normalize();
- assertEquals( null, bv.getNormalizedValue() );
+ bv.apply( at );
+ assertEquals( null, bv.getNormValue() );
bv = new BinaryValue( attribute, StringConstants.EMPTY_BYTES );
- bv.normalize();
- assertTrue( Arrays.equals( StringConstants.EMPTY_BYTES, bv.getNormalizedValue() ) );
+ bv.apply( at );
+ assertTrue( Arrays.equals( StringConstants.EMPTY_BYTES, bv.getNormValue() ) );
bv = new BinaryValue( attribute, BYTES2 );
- bv.normalize();
- assertTrue( Arrays.equals( BYTES1, bv.getNormalizedValue() ) );
+ bv.apply( at );
+ assertTrue( Arrays.equals( BYTES1, bv.getNormValue() ) );
}
@@ -530,7 +496,7 @@ public class BinaryValueAttributeTypeTes
* Test the compareTo method
*/
@Test
- public void testCompareTo()
+ public void testCompareTo() throws LdapInvalidAttributeValueException
{
AttributeType at1 = EntryUtils.getBytesAttributeType();
BinaryValue v0 = new BinaryValue( at1, BYTES1 );
@@ -557,8 +523,8 @@ public class BinaryValueAttributeTypeTes
// First check with a value which will be normalized
BinaryValue sbv = new BinaryValue( at, v1 );
- sbv.normalize();
- byte[] normalized = sbv.getNormalizedValueReference();
+ sbv.apply( at );
+ byte[] normalized = sbv.getNormReference();
assertTrue( Arrays.equals( v1Norm, normalized ) );
assertTrue( Arrays.equals( v1, sbv.getReference() ) );
@@ -597,8 +563,8 @@ public class BinaryValueAttributeTypeTes
// First check with a value which will be normalized
BinaryValue sbv = new BinaryValue( at, v1 );
- sbv.normalize();
- byte[] normalized = sbv.getNormalizedValueReference();
+ sbv.apply( at );
+ byte[] normalized = sbv.getNormReference();
assertTrue( Arrays.equals( v1Norm, normalized ) );
assertTrue( Arrays.equals( v1, sbv.getBytes() ) );
@@ -617,8 +583,8 @@ public class BinaryValueAttributeTypeTes
// First check with a value which will be normalized
BinaryValue sbv = new BinaryValue( at );
- sbv.normalize();
- byte[] normalized = sbv.getNormalizedValueReference();
+ sbv.apply( at );
+ byte[] normalized = sbv.getNormReference();
assertEquals( null, normalized );
assertEquals( null, sbv.get() );
@@ -637,8 +603,8 @@ public class BinaryValueAttributeTypeTes
// First check with a value which will be normalized
BinaryValue sbv = new BinaryValue( at, StringConstants.EMPTY_BYTES );
- sbv.normalize();
- byte[] normalized = sbv.getNormalizedValueReference();
+ sbv.apply( at );
+ byte[] normalized = sbv.getNormReference();
assertTrue( Arrays.equals( StringConstants.EMPTY_BYTES, normalized ) );
assertTrue( Arrays.equals( StringConstants.EMPTY_BYTES, sbv.getBytes() ) );
@@ -660,8 +626,8 @@ public class BinaryValueAttributeTypeTes
// First check with a value which will be normalized
BinaryValue sbv = new BinaryValue( at, v1 );
- sbv.normalize();
- byte[] normalized = sbv.getNormalizedValueReference();
+ sbv.apply( at );
+ byte[] normalized = sbv.getNormReference();
assertTrue( Arrays.equals( v1Norm, normalized ) );
assertTrue( Arrays.equals( v1, sbv.getBytes() ) );