You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2007/01/21 21:47:12 UTC
svn commit: r498449 - in
/directory/shared/branches/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap:
schema/AbstractSchemaObject.java util/AttributeUtils.java
Author: elecharny
Date: Sun Jan 21 12:47:11 2007
New Revision: 498449
URL: http://svn.apache.org/viewvc?view=rev&rev=498449
Log:
src/main/java/org/apache/directory/shared/ldap/schema/AbstractSchemaObject.java :
Modified the toString() method for better lisibility in debug mode
src/main/java/org/apache/directory/shared/ldap/util/AttributeUtils.java :
Added a method containsValueCaseIgnore( Attribute attr, Object value ) which search for a value in
an attribute, case insensitive. This method should be removed, and we should use the static method
containsValue( Attribute attr, Object compared, AttributeType type ) instead. But in 1.0, there is
two problems :
1) We don't always have access to the AttributeType when we need to call this method (because we don't
have access to the registries)
2) It throws a NamingException and the caller does not handle this exception.
So the added method can be used for Attribute which are not caseSensitive, like ObjectClass.
Modified:
directory/shared/branches/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/schema/AbstractSchemaObject.java
directory/shared/branches/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/util/AttributeUtils.java
Modified: directory/shared/branches/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/schema/AbstractSchemaObject.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/schema/AbstractSchemaObject.java?view=diff&rev=498449&r1=498448&r2=498449
==============================================================================
--- directory/shared/branches/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/schema/AbstractSchemaObject.java (original)
+++ directory/shared/branches/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/schema/AbstractSchemaObject.java Sun Jan 21 12:47:11 2007
@@ -316,6 +316,6 @@
*/
public String toString()
{
- return oid.toString();
+ return "<" + oid.toString() + ", " + names[0] + ">";
}
}
Modified: directory/shared/branches/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/util/AttributeUtils.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/util/AttributeUtils.java?view=diff&rev=498449&r1=498448&r2=498449
==============================================================================
--- directory/shared/branches/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/util/AttributeUtils.java (original)
+++ directory/shared/branches/0.9.5/ldap/src/main/java/org/apache/directory/shared/ldap/util/AttributeUtils.java Sun Jan 21 12:47:11 2007
@@ -293,6 +293,73 @@
return false;
}
+ /**
+ * Check if an attribute contains a value. The test is case insensitive,
+ * and the value is supposed to be a String. If the value is a byte[],
+ * then the case sensitivity is useless.
+ *
+ * @param attr The attribute to check
+ * @param value The value to look for
+ * @return true if the value is present in the attribute
+ * @throws NamingException
+ */
+ public final static boolean containsValueCaseIgnore( Attribute attr, Object value )
+ {
+ // quick bypass test
+ if ( attr.contains( value ) )
+ {
+ return true;
+ }
+
+ try
+ {
+ if ( value instanceof String )
+ {
+ String strVal = (String)value;
+
+ NamingEnumeration attrVals = attr.getAll();
+
+ while ( attrVals.hasMoreElements() )
+ {
+ Object attrVal = attrVals.nextElement();
+
+ if ( attrVal instanceof String )
+ {
+ if ( strVal.equalsIgnoreCase( (String)attrVal ) )
+ {
+ return true;
+ }
+ }
+ }
+ }
+ else
+ {
+ byte[] valueBytes = ( byte[] )value;
+
+ NamingEnumeration attrVals = attr.getAll();
+
+ while ( attrVals.hasMoreElements() )
+ {
+ Object attrVal = attrVals.nextElement();
+
+ if ( attrVal instanceof byte[] )
+ {
+ if ( Arrays.equals( (byte[])attrVal, valueBytes ) )
+ {
+ return true;
+ }
+
+ }
+ }
+ }
+ }
+ catch (NamingException ne )
+ {
+ return false;
+ }
+
+ return false;
+ }
public static boolean containsAnyValues( Attribute attr, Object[] compared, AttributeType type )
throws NamingException