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/04/26 18:57:06 UTC
svn commit: r938123 - in /directory/shared/trunk:
i18n/src/main/java/org/apache/directory/shared/i18n/
i18n/src/main/resources/org/apache/directory/shared/i18n/
ldap/src/main/java/org/apache/directory/shared/ldap/entry/
ldap/src/main/java/org/apache/di...
Author: elecharny
Date: Mon Apr 26 16:57:06 2010
New Revision: 938123
URL: http://svn.apache.org/viewvc?rev=938123&view=rev
Log:
o Added some more error messages
o Started to move the remove() operations from Server to Client Entry
Modified:
directory/shared/trunk/i18n/src/main/java/org/apache/directory/shared/i18n/I18n.java
directory/shared/trunk/i18n/src/main/resources/org/apache/directory/shared/i18n/errors.properties
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultServerEntry.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/Entry.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/ServerEntry.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/client/DefaultClientEntry.java
Modified: directory/shared/trunk/i18n/src/main/java/org/apache/directory/shared/i18n/I18n.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/i18n/src/main/java/org/apache/directory/shared/i18n/I18n.java?rev=938123&r1=938122&r2=938123&view=diff
==============================================================================
--- directory/shared/trunk/i18n/src/main/java/org/apache/directory/shared/i18n/I18n.java (original)
+++ directory/shared/trunk/i18n/src/main/java/org/apache/directory/shared/i18n/I18n.java Mon Apr 26 16:57:06 2010
@@ -599,10 +599,10 @@ public class I18n
public static final String ERR_04454 = "ERR_04454";
public static final String ERR_04455 = "ERR_04455";
public static final String ERR_04456 = "ERR_04456";
- public static final String ERR_04457 = "ERR_04457";
+ public static final String ERR_04457_NULL_ATTRIBUTE_ID = "ERR_04457_NULL_ATTRIBUTE_ID";
public static final String ERR_04458 = "ERR_04458";
public static final String ERR_04459 = "ERR_04459";
- public static final String ERR_04460 = "ERR_04460";
+ public static final String ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED = "ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED";
public static final String ERR_04461 = "ERR_04461";
public static final String ERR_04462 = "ERR_04462";
public static final String ERR_04463 = "ERR_04463";
@@ -619,6 +619,7 @@ public class I18n
public static final String ERR_04474 = "ERR_04474";
public static final String ERR_04475 = "ERR_04475";
public static final String ERR_04476 = "ERR_04476";
+ public static final String ERR_04477_NO_VALID_AT_FOR_THIS_ID = "ERR_04477_NO_VALID_AT_FOR_THIS_ID";
// ldap-constants
public static final String ERR_05001 = "ERR_05001";
Modified: directory/shared/trunk/i18n/src/main/resources/org/apache/directory/shared/i18n/errors.properties
URL: http://svn.apache.org/viewvc/directory/shared/trunk/i18n/src/main/resources/org/apache/directory/shared/i18n/errors.properties?rev=938123&r1=938122&r2=938123&view=diff
==============================================================================
--- directory/shared/trunk/i18n/src/main/resources/org/apache/directory/shared/i18n/errors.properties (original)
+++ directory/shared/trunk/i18n/src/main/resources/org/apache/directory/shared/i18n/errors.properties Mon Apr 26 16:57:06 2010
@@ -558,12 +558,12 @@ ERR_04453=The upID ({0}) is not an OID o
ERR_04454=Cannot use standard serialization for a ServerAttribute
ERR_04455=The ID ''{0}''is incompatible with the AttributeType's id ''{1}''
ERR_04456=An ID cannnot be null, empty, or resolved to an emtpy value when trimmed
-ERR_04457=The ID should not be null or empty
+ERR_04457_NULL_ATTRIBUTE_ID=The ID should not be null or empty
ERR_04458=Cannot add an attribute without an ID
ERR_04459=We have had an error while adding the ''{0}'' AttributeType : {1}
-ERR_04460=The attributeType should not be null
+ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED=The attributeType should not be null
ERR_04461=Only String values supported for objectClass attribute
-ERR_04462=The ServerAttribute list should not contain null elements
+ERR_04462=The EntryAttribute list should not contain null elements
ERR_04463=The ''{0}'' id is not compatible with the ''{1}'' attribute type
ERR_04464=Error while adding values into the ''{0}'' attribute. Error \: {1}
ERR_04465=The removal of values for the missing ''{0}'' attribute is not possible
@@ -578,6 +578,7 @@ ERR_04473=Not a valid value
ERR_04474=Expected string to normalize
ERR_04475=Expected byte[] to normalize
ERR_04476=Cannot set an AttributeType {0} when another one ({1}) is already present
+ERR_04477_NO_VALID_AT_FOR_THIS_ID=Cannot find a valid AttributeType for the ''{0}'' id
# ldap-constants
ERR_05001=Unknown AuthenticationLevel {0}
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultServerEntry.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultServerEntry.java?rev=938123&r1=938122&r2=938123&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultServerEntry.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultServerEntry.java Mon Apr 26 16:57:06 2010
@@ -457,233 +457,6 @@ public final class DefaultServerEntry ex
* <code>false</code>
* </p>
*
- * @param attributeType The attribute type
- * @param values the values to be removed
- * @return <code>true</code> if at least a value is removed, <code>false</code>
- * if not all the values have been removed or if the attribute does not exist.
- */
- public boolean remove( AttributeType attributeType, byte[]... values ) throws LdapException
- {
- if ( attributeType == null )
- {
- return false;
- }
-
- try
- {
- EntryAttribute attribute = attributes.get( attributeType.getOid() );
-
- if ( attribute == null )
- {
- // Can't remove values from a not existing attribute !
- return false;
- }
-
- int nbOldValues = attribute.size();
-
- // Remove the values
- attribute.remove( values );
-
- if ( attribute.size() == 0 )
- {
- // No mare values, remove the attribute
- attributes.remove( attributeType.getOid() );
-
- return true;
- }
-
- if ( nbOldValues != attribute.size() )
- {
- // At least one value have been removed, return true.
- return true;
- }
- else
- {
- // No values have been removed, return false.
- return false;
- }
- }
- catch ( IllegalArgumentException iae )
- {
- LOG.error( I18n.err( I18n.ERR_04465, attributeType ) );
- return false;
- }
- }
-
-
- /**
- * <p>
- * Removes the specified String values from an attribute.
- * </p>
- * <p>
- * If at least one value is removed, this method returns <code>true</code>.
- * </p>
- * <p>
- * If there is no more value after having removed the values, the attribute
- * will be removed too.
- * </p>
- * <p>
- * If the attribute does not exist, nothing is done and the method returns
- * <code>false</code>
- * </p>
- *
- * @param attributeType The attribute type
- * @param values the values to be removed
- * @return <code>true</code> if at least a value is removed, <code>false</code>
- * if not all the values have been removed or if the attribute does not exist.
- */
- public boolean remove( AttributeType attributeType, String... values ) throws LdapException
- {
- if ( attributeType == null )
- {
- return false;
- }
-
- try
- {
- EntryAttribute attribute = attributes.get( attributeType.getOid() );
-
- if ( attribute == null )
- {
- // Can't remove values from a not existing attribute !
- return false;
- }
-
- int nbOldValues = attribute.size();
-
- // Remove the values
- attribute.remove( values );
-
- if ( attribute.size() == 0 )
- {
- // No mare values, remove the attribute
- attributes.remove( attributeType.getOid() );
-
- return true;
- }
-
- if ( nbOldValues != attribute.size() )
- {
- // At least one value have been removed, return true.
- return true;
- }
- else
- {
- // No values have been removed, return false.
- return false;
- }
- }
- catch ( IllegalArgumentException iae )
- {
- LOG.error( I18n.err( I18n.ERR_04465, attributeType ) );
- return false;
- }
- }
-
-
- /**
- * <p>
- * Removes the specified values from an attribute.
- * </p>
- * <p>
- * If at least one value is removed, this method returns <code>true</code>.
- * </p>
- * <p>
- * If there is no more value after having removed the values, the attribute
- * will be removed too.
- * </p>
- * <p>
- * If the attribute does not exist, nothing is done and the method returns
- * <code>false</code>
- * </p>
- *
- * @param attributeType The attribute type
- * @param values the values to be removed
- * @return <code>true</code> if at least a value is removed, <code>false</code>
- * if not all the values have been removed or if the attribute does not exist.
- */
- public boolean remove( AttributeType attributeType, Value<?>... values ) throws LdapException
- {
- if ( attributeType == null )
- {
- return false;
- }
-
- try
- {
- EntryAttribute attribute = attributes.get( attributeType.getOid() );
-
- if ( attribute == null )
- {
- // Can't remove values from a not existing attribute !
- return false;
- }
-
- int nbOldValues = attribute.size();
-
- // Remove the values
- attribute.remove( values );
-
- if ( attribute.size() == 0 )
- {
- // No mare values, remove the attribute
- attributes.remove( attributeType.getOid() );
-
- return true;
- }
-
- if ( nbOldValues != attribute.size() )
- {
- // At least one value have been removed, return true.
- return true;
- }
- else
- {
- // No values have been removed, return false.
- return false;
- }
- }
- catch ( IllegalArgumentException iae )
- {
- LOG.error( I18n.err( I18n.ERR_04465, attributeType ) );
- return false;
- }
- }
-
-
- public List<EntryAttribute> remove( EntryAttribute... attributes ) throws LdapException
- {
- List<EntryAttribute> removedAttributes = new ArrayList<EntryAttribute>();
-
- for ( EntryAttribute serverAttribute:attributes )
- {
- if ( this.attributes.containsKey( ((EntryAttribute)serverAttribute).getAttributeType().getOid() ) )
- {
- this.attributes.remove( ((EntryAttribute)serverAttribute).getAttributeType().getOid() );
- removedAttributes.add( serverAttribute );
- }
- }
-
- return removedAttributes;
- }
-
-
- /**
- * <p>
- * Removes the specified binary values from an attribute.
- * </p>
- * <p>
- * If at least one value is removed, this method returns <code>true</code>.
- * </p>
- * <p>
- * If there is no more value after having removed the values, the attribute
- * will be removed too.
- * </p>
- * <p>
- * If the attribute does not exist, nothing is done and the method returns
- * <code>false</code>
- * </p>
- *
* @param upId The attribute ID
* @param values the values to be removed
* @return <code>true</code> if at least a value is removed, <code>false</code>
@@ -796,114 +569,6 @@ public final class DefaultServerEntry ex
/**
* <p>
- * Removes the attribute with the specified AttributeTypes.
- * </p>
- * <p>
- * The removed attribute are returned by this method.
- * </p>
- * <p>
- * If there is no attribute with the specified AttributeTypes,
- * the return value is <code>null</code>.
- * </p>
- *
- * @param attributes the AttributeTypes to be removed
- * @return the removed attributes, if any, as a list; otherwise <code>null</code>
- */
- public List<EntryAttribute> removeAttributes( AttributeType... attributes )
- {
- if ( ( attributes == null ) || ( attributes.length == 0 ) )
- {
- return null;
- }
-
- List<EntryAttribute> removed = new ArrayList<EntryAttribute>( attributes.length );
-
- for ( AttributeType attributeType:attributes )
- {
- if ( attributeType == null )
- {
- continue;
- }
-
- EntryAttribute attr = this.attributes.remove( attributeType.getOid() );
-
- if ( attr != null )
- {
- removed.add( attr );
- }
- }
-
- if ( removed.size() == 0 )
- {
- return null;
- }
- else
- {
- return removed;
- }
- }
-
-
- /**
- * <p>
- * Removes the attribute with the specified alias.
- * </p>
- * <p>
- * The removed attribute are returned by this method.
- * </p>
- * <p>
- * If there is no attribute with the specified alias,
- * the return value is <code>null</code>.
- * </p>
- *
- * @param attributes an aliased name of the attribute to be removed
- * @return the removed attributes, if any, as a list; otherwise <code>null</code>
- */
- public List<EntryAttribute> removeAttributes( String... attributes )
- {
- if ( attributes.length == 0 )
- {
- return null;
- }
-
- List<EntryAttribute> removed = new ArrayList<EntryAttribute>( attributes.length );
-
- for ( String attribute:attributes )
- {
- AttributeType attributeType = null;
-
- try
- {
- attributeType = schemaManager.lookupAttributeTypeRegistry( attribute );
- }
- catch ( LdapException ne )
- {
- String message = "The attribute '" + attribute + "' does not exist in the entry";
- LOG.warn( message );
- continue;
- }
-
- EntryAttribute attr = this.attributes.remove( attributeType.getOid() );
-
- if ( attr != null )
- {
- removed.add( attr );
- }
- }
-
- if ( removed.size() == 0 )
- {
- return null;
- }
- else
- {
- return removed;
- }
- }
-
-
- /**
- * <p>
* Put some new attributes using the attributeTypes.
* No value is inserted.
* </p>
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/Entry.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/Entry.java?rev=938123&r1=938122&r2=938123&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/Entry.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/Entry.java Mon Apr 26 16:57:06 2010
@@ -570,14 +570,104 @@ public interface Entry extends Cloneable
/**
- * Removes the specified attributes. The removed attributes are
- * returned by this method. If there were no attribute the return value
- * is <code>null</code>.
- *
- * @param attributes the attributes to be removed
- * @return the removed attribute, if exists; otherwise <code>null</code>
- */
+ * <p>
+ * Removes the specified binary values from an attribute.
+ * </p>
+ * <p>
+ * If at least one value is removed, this method returns <code>true</code>.
+ * </p>
+ * <p>
+ * If there is no more value after having removed the values, the attribute
+ * will be removed too.
+ * </p>
+ * <p>
+ * If the attribute does not exist, nothing is done and the method returns
+ * <code>false</code>
+ * </p>
+ *
+ * @param attributeType The attribute type
+ * @param values the values to be removed
+ * @return <code>true</code> if at least a value is removed, <code>false</code>
+ * if not all the values have been removed or if the attribute does not exist.
+ */
+ boolean remove( AttributeType attributeType, byte[]... values ) throws LdapException;
+
+
+ /**
+ * <p>
+ * Removes the specified String values from an attribute.
+ * </p>
+ * <p>
+ * If at least one value is removed, this method returns <code>true</code>.
+ * </p>
+ * <p>
+ * If there is no more value after having removed the values, the attribute
+ * will be removed too.
+ * </p>
+ * <p>
+ * If the attribute does not exist, nothing is done and the method returns
+ * <code>false</code>
+ * </p>
+ *
+ * @param attributeType The attribute type
+ * @param values the values to be removed
+ * @return <code>true</code> if at least a value is removed, <code>false</code>
+ * if not all the values have been removed or if the attribute does not exist.
+ */
+ boolean remove( AttributeType attributeType, String... values ) throws LdapException;
+
+
+ /**
+ * <p>
+ * Removes the specified values from an attribute.
+ * </p>
+ * <p>
+ * If at least one value is removed, this method returns <code>true</code>.
+ * </p>
+ * <p>
+ * If there is no more value after having removed the values, the attribute
+ * will be removed too.
+ * </p>
+ * <p>
+ * If the attribute does not exist, nothing is done and the method returns
+ * <code>false</code>
+ * </p>
+ *
+ * @param attributeType The attribute type
+ * @param values the values to be removed
+ * @return <code>true</code> if at least a value is removed, <code>false</code>
+ * if not all the values have been removed or if the attribute does not exist.
+ */
+ boolean remove( AttributeType attributeType, Value<?>... values ) throws LdapException;
+
+
+ /**
+ * Removes the specified attributes. The removed attributes are
+ * returned by this method. If there were no attribute the return value
+ * is <code>null</code>.
+ *
+ * @param attributes the attributes to be removed
+ * @return the removed attribute, if exists; otherwise <code>null</code>
+ */
List<EntryAttribute> remove( EntryAttribute... attributes ) throws LdapException;
+
+
+ /**
+ * <p>
+ * Removes the attribute with the specified AttributeTypes.
+ * </p>
+ * <p>
+ * The removed attribute are returned by this method.
+ * </p>
+ * <p>
+ * If there is no attribute with the specified AttributeTypes,
+ * the return value is <code>null</code>.
+ * </p>
+ *
+ * @param attributes the AttributeTypes to be removed
+ * @return the removed attributes, if any, as a list; otherwise <code>null</code>
+ */
+ List<EntryAttribute> removeAttributes( AttributeType... attributes );
/**
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/ServerEntry.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/ServerEntry.java?rev=938123&r1=938122&r2=938123&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/ServerEntry.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/ServerEntry.java Mon Apr 26 16:57:06 2010
@@ -46,107 +46,6 @@ public interface ServerEntry extends Ent
/**
* <p>
- * Removes the specified binary values from an attribute.
- * </p>
- * <p>
- * If at least one value is removed, this method returns <code>true</code>.
- * </p>
- * <p>
- * If there is no more value after having removed the values, the attribute
- * will be removed too.
- * </p>
- * <p>
- * If the attribute does not exist, nothing is done and the method returns
- * <code>false</code>
- * </p>
- *
- * @param attributeType The attribute type
- * @param values the values to be removed
- * @return <code>true</code> if at least a value is removed, <code>false</code>
- * if not all the values have been removed or if the attribute does not exist.
- */
- boolean remove( AttributeType attributeType, byte[]... values ) throws LdapException;
-
-
- /**
- * <p>
- * Removes the specified String values from an attribute.
- * </p>
- * <p>
- * If at least one value is removed, this method returns <code>true</code>.
- * </p>
- * <p>
- * If there is no more value after having removed the values, the attribute
- * will be removed too.
- * </p>
- * <p>
- * If the attribute does not exist, nothing is done and the method returns
- * <code>false</code>
- * </p>
- *
- * @param attributeType The attribute type
- * @param values the values to be removed
- * @return <code>true</code> if at least a value is removed, <code>false</code>
- * if not all the values have been removed or if the attribute does not exist.
- */
- boolean remove( AttributeType attributeType, String... values ) throws LdapException;
-
-
- /**
- * <p>
- * Removes the specified values from an attribute.
- * </p>
- * <p>
- * If at least one value is removed, this method returns <code>true</code>.
- * </p>
- * <p>
- * If there is no more value after having removed the values, the attribute
- * will be removed too.
- * </p>
- * <p>
- * If the attribute does not exist, nothing is done and the method returns
- * <code>false</code>
- * </p>
- *
- * @param attributeType The attribute type
- * @param values the values to be removed
- * @return <code>true</code> if at least a value is removed, <code>false</code>
- * if not all the values have been removed or if the attribute does not exist.
- */
- boolean remove( AttributeType attributeType, Value<?>... values ) throws LdapException;
-
-
- /**
- * Removes the specified attributes. The removed attributes are
- * returned by this method. If there were no attribute the return value
- * is <code>null</code>.
- *
- * @param attributes the attributes to be removed
- * @return the removed attribute, if exists; otherwise <code>null</code>
- */
- List<EntryAttribute> remove( EntryAttribute... attributes ) throws LdapException;
-
-
- /**
- * <p>
- * Removes the attribute with the specified AttributeTypes.
- * </p>
- * <p>
- * The removed attribute are returned by this method.
- * </p>
- * <p>
- * If there is no attribute with the specified AttributeTypes,
- * the return value is <code>null</code>.
- * </p>
- *
- * @param attributes the AttributeTypes to be removed
- * @return the removed attributes, if any, as a list; otherwise <code>null</code>
- */
- List<EntryAttribute> removeAttributes( AttributeType... attributes );
-
-
- /**
- * <p>
* Put some new attributes using the attributeTypes.
* No value is inserted.
* </p>
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/client/DefaultClientEntry.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/client/DefaultClientEntry.java?rev=938123&r1=938122&r2=938123&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/client/DefaultClientEntry.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/client/DefaultClientEntry.java Mon Apr 26 16:57:06 2010
@@ -248,7 +248,7 @@ public class DefaultClientEntry implemen
{
if ( StringTools.isEmpty( StringTools.trim( upId ) ) )
{
- String message = I18n.err( I18n.ERR_04457 );
+ String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -267,7 +267,7 @@ public class DefaultClientEntry implemen
{
if ( attributeType == null )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -305,7 +305,7 @@ public class DefaultClientEntry implemen
{
if ( attributeType == null )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -335,7 +335,7 @@ public class DefaultClientEntry implemen
{
if ( attributeType == null )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -398,7 +398,7 @@ public class DefaultClientEntry implemen
{
if ( attributeType == null )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -428,7 +428,7 @@ public class DefaultClientEntry implemen
{
if ( attributeType == null )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -517,7 +517,7 @@ public class DefaultClientEntry implemen
{
if ( StringTools.isEmpty( upId ) )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -559,7 +559,7 @@ public class DefaultClientEntry implemen
{
if ( StringTools.isEmpty( upId ) )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -601,7 +601,7 @@ public class DefaultClientEntry implemen
{
if ( StringTools.isEmpty( upId ) )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -1062,7 +1062,7 @@ public class DefaultClientEntry implemen
{
if ( StringTools.isEmpty( upId ) )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -1101,7 +1101,7 @@ public class DefaultClientEntry implemen
{
if ( StringTools.isEmpty( upId ) )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -1140,7 +1140,7 @@ public class DefaultClientEntry implemen
{
if ( StringTools.isEmpty( upId ) )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -1302,7 +1302,7 @@ public class DefaultClientEntry implemen
}
catch ( Exception e )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04477_NO_VALID_AT_FOR_THIS_ID );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -1352,7 +1352,7 @@ public class DefaultClientEntry implemen
}
catch ( Exception e )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04477_NO_VALID_AT_FOR_THIS_ID );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -1395,7 +1395,7 @@ public class DefaultClientEntry implemen
}
catch ( Exception e )
{
- String message = I18n.err( I18n.ERR_04460 );
+ String message = I18n.err( I18n.ERR_04477_NO_VALID_AT_FOR_THIS_ID );
LOG.error( message );
throw new IllegalArgumentException( message );
}
@@ -1432,12 +1432,35 @@ public class DefaultClientEntry implemen
{
List<EntryAttribute> removedAttributes = new ArrayList<EntryAttribute>();
- for ( EntryAttribute attribute:attributes )
+ if ( schemaManager == null )
{
- if ( contains( attribute.getId() ) )
+ for ( EntryAttribute attribute:attributes )
{
- this.attributes.remove( attribute.getId() );
- removedAttributes.add( attribute );
+ if ( contains( attribute.getId() ) )
+ {
+ this.attributes.remove( attribute.getId() );
+ removedAttributes.add( attribute );
+ }
+ }
+ }
+ else
+ {
+ for ( EntryAttribute attribute:attributes )
+ {
+ AttributeType attributeType = attribute.getAttributeType();
+
+ if ( attributeType == null )
+ {
+ String message = I18n.err( I18n.ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED );
+ LOG.error( message );
+ throw new IllegalArgumentException( message );
+ }
+
+ if ( this.attributes.containsKey( attributeType.getOid() ) )
+ {
+ this.attributes.remove( attributeType.getOid() );
+ removedAttributes.add( attribute );
+ }
}
}
@@ -1448,28 +1471,262 @@ public class DefaultClientEntry implemen
/**
* {@inheritDoc}
*/
- public List<EntryAttribute> removeAttributes( String... attributes )
+ public boolean remove( AttributeType attributeType, byte[]... values ) throws LdapException
{
- if ( attributes.length == 0 )
+ if ( attributeType == null )
+ {
+ return false;
+ }
+
+ try
+ {
+ EntryAttribute attribute = attributes.get( attributeType.getOid() );
+
+ if ( attribute == null )
+ {
+ // Can't remove values from a not existing attribute !
+ return false;
+ }
+
+ int nbOldValues = attribute.size();
+
+ // Remove the values
+ attribute.remove( values );
+
+ if ( attribute.size() == 0 )
+ {
+ // No mare values, remove the attribute
+ attributes.remove( attributeType.getOid() );
+
+ return true;
+ }
+
+ if ( nbOldValues != attribute.size() )
+ {
+ // At least one value have been removed, return true.
+ return true;
+ }
+ else
+ {
+ // No values have been removed, return false.
+ return false;
+ }
+ }
+ catch ( IllegalArgumentException iae )
+ {
+ LOG.error( I18n.err( I18n.ERR_04465, attributeType ) );
+ return false;
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean remove( AttributeType attributeType, String... values ) throws LdapException
+ {
+ if ( attributeType == null )
+ {
+ return false;
+ }
+
+ try
+ {
+ EntryAttribute attribute = attributes.get( attributeType.getOid() );
+
+ if ( attribute == null )
+ {
+ // Can't remove values from a not existing attribute !
+ return false;
+ }
+
+ int nbOldValues = attribute.size();
+
+ // Remove the values
+ attribute.remove( values );
+
+ if ( attribute.size() == 0 )
+ {
+ // No mare values, remove the attribute
+ attributes.remove( attributeType.getOid() );
+
+ return true;
+ }
+
+ if ( nbOldValues != attribute.size() )
+ {
+ // At least one value have been removed, return true.
+ return true;
+ }
+ else
+ {
+ // No values have been removed, return false.
+ return false;
+ }
+ }
+ catch ( IllegalArgumentException iae )
+ {
+ LOG.error( I18n.err( I18n.ERR_04465, attributeType ) );
+ return false;
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean remove( AttributeType attributeType, Value<?>... values ) throws LdapException
+ {
+ if ( attributeType == null )
+ {
+ return false;
+ }
+
+ try
+ {
+ EntryAttribute attribute = attributes.get( attributeType.getOid() );
+
+ if ( attribute == null )
+ {
+ // Can't remove values from a not existing attribute !
+ return false;
+ }
+
+ int nbOldValues = attribute.size();
+
+ // Remove the values
+ attribute.remove( values );
+
+ if ( attribute.size() == 0 )
+ {
+ // No mare values, remove the attribute
+ attributes.remove( attributeType.getOid() );
+
+ return true;
+ }
+
+ if ( nbOldValues != attribute.size() )
+ {
+ // At least one value have been removed, return true.
+ return true;
+ }
+ else
+ {
+ // No values have been removed, return false.
+ return false;
+ }
+ }
+ catch ( IllegalArgumentException iae )
+ {
+ LOG.error( I18n.err( I18n.ERR_04465, attributeType ) );
+ return false;
+ }
+ }
+
+
+ /**
+ * <p>
+ * Removes the attribute with the specified AttributeTypes.
+ * </p>
+ * <p>
+ * The removed attribute are returned by this method.
+ * </p>
+ * <p>
+ * If there is no attribute with the specified AttributeTypes,
+ * the return value is <code>null</code>.
+ * </p>
+ *
+ * @param attributes the AttributeTypes to be removed
+ * @return the removed attributes, if any, as a list; otherwise <code>null</code>
+ */
+ public List<EntryAttribute> removeAttributes( AttributeType... attributes )
+ {
+ if ( ( attributes == null ) || ( attributes.length == 0 ) || ( schemaManager == null ) )
{
return null;
}
List<EntryAttribute> removed = new ArrayList<EntryAttribute>( attributes.length );
- for ( String attribute:attributes )
+ for ( AttributeType attributeType:attributes )
{
- EntryAttribute attr = get( attribute );
+ if ( attributeType == null )
+ {
+ continue;
+ }
+
+ EntryAttribute attr = this.attributes.remove( attributeType.getOid() );
if ( attr != null )
{
- removed.add( this.attributes.remove( attr.getId() ) );
+ removed.add( attr );
}
- else
+ }
+
+ if ( removed.size() == 0 )
+ {
+ return null;
+ }
+ else
+ {
+ return removed;
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public List<EntryAttribute> removeAttributes( String... attributes )
+ {
+ if ( attributes.length == 0 )
+ {
+ return null;
+ }
+
+ List<EntryAttribute> removed = new ArrayList<EntryAttribute>( attributes.length );
+
+ if ( schemaManager == null )
+ {
+ for ( String attribute:attributes )
{
- String message = I18n.err( I18n.ERR_04137, attribute );
- LOG.warn( message );
- continue;
+ EntryAttribute attr = get( attribute );
+
+ if ( attr != null )
+ {
+ removed.add( this.attributes.remove( attr.getId() ) );
+ }
+ else
+ {
+ String message = I18n.err( I18n.ERR_04137, attribute );
+ LOG.warn( message );
+ continue;
+ }
+ }
+ }
+ else
+ {
+ for ( String attribute:attributes )
+ {
+ AttributeType attributeType = null;
+
+ try
+ {
+ attributeType = schemaManager.lookupAttributeTypeRegistry( attribute );
+ }
+ catch ( LdapException ne )
+ {
+ String message = "The attribute '" + attribute + "' does not exist in the entry";
+ LOG.warn( message );
+ continue;
+ }
+
+ EntryAttribute attr = this.attributes.remove( attributeType.getOid() );
+
+ if ( attr != null )
+ {
+ removed.add( attr );
+ }
}
}