Author: akarasulu Date: Thu Oct 11 12:37:32 2007 New Revision: 583927 URL: http://svn.apache.org/viewvc?rev=583927&view=rev Log: Some notes to clear up on these interfaces. Modified: directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/AbstractValue.java directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/ServerAttribute.java directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/ServerEntry.java directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/Value.java directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/common/ServerAttributeTest.java directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java Modified: directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/AbstractValue.java URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/AbstractValue.java?rev=583927&r1=583926&r2=583927&view=diff ============================================================================== --- directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/AbstractValue.java (original) +++ directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/AbstractValue.java Thu Oct 11 12:37:32 2007 @@ -80,7 +80,7 @@ * * @return The stored normalized value */ - public T getNormValue() + public T getNormalizedValue() { return normValue; } Modified: directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/ServerAttribute.java URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/ServerAttribute.java?rev=583927&r1=583926&r2=583927&view=diff ============================================================================== --- directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/ServerAttribute.java (original) +++ directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/ServerAttribute.java Thu Oct 11 12:37:32 2007 @@ -27,6 +27,7 @@ import org.apache.directory.shared.asn1.primitives.OID; import org.apache.directory.shared.ldap.schema.Normalizer; + /** * This interface defines the valid operations on a particular attribute of a * directory entry. @@ -59,6 +60,18 @@ * some methods have been removed, and which manipulates Value instead * of Object * + * @todo ALEX - Remove after resolution: + * Why not track the AttributeType associated with the ServerAttribute as we + * discussed a while back at LDAPCon? It makes sense to access the attributeType + * directly from the ServerAttribute instead of having to fish for it in the + * registries. Perhaps the attributeType can be dynamically looked up from within + * implementors of this interface (to respond to schema changes) to dynamically + * resolve their respective type information. Internally checks should be performed + * while adding values. + * @todo ALEX - Remove after resolution: + * Also I thought we would use polymorphism for the different kinds of attributes: + * Binary verses NonBinary. Is there value in this? + * * @author Apache Directory Project * @version $Rev: 499013 $ */ Modified: directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/ServerEntry.java URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/ServerEntry.java?rev=583927&r1=583926&r2=583927&view=diff ============================================================================== --- directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/ServerEntry.java (original) +++ directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/ServerEntry.java Thu Oct 11 12:37:32 2007 @@ -47,19 +47,19 @@ * The attribute collection is created when the directory entry is created. *
* + * @todo ALEX - Remove after resolution: + * Same reason as before for ServerAttribute: why not expose access to the ObjectClass + * that governs which attributes may and must be present within this entry? Also we + * may need two kinds of put, remove and add methods where one performs schema checks + * and the other does not. I don't know if this is mixing concerns but I'd like to + * explore the idea somewhat. + * * @author Apache Directory Project * @version $Rev$, $Date$ */ public interface ServerEntry extends Cloneable, Serializable { /** - * This constant is used during deserialization to check the version which - * created the serialized object. - */ - static final long serialVersionUID = 2L; - - - /** * Removes all the attributes. */ void clear(); @@ -86,7 +86,7 @@ * @return the old attribute with the same OID, if exists; otherwise *null
*/
- ServerAttribute copy( ServerAttribute attr );
+ ServerAttribute copy( ServerAttribute attribute );
/**
@@ -114,7 +114,7 @@
*
* @return The entry DN
*/
- public LdapDN getDn();
+ LdapDN getDn();
/**
@@ -122,7 +122,7 @@
*
* @param dn The LdapdN associated with this entry
*/
- public void setDn( LdapDN dn);
+ void setDn( LdapDN dn);
/**
@@ -145,7 +145,7 @@
* @return the old attribute with the same OID, if exists; otherwise
* null
*/
- ServerAttribute put( ServerAttribute attr );
+ ServerAttribute put( ServerAttribute attribute );
/**
@@ -198,7 +198,10 @@
* This method provides a mechanism to put an attribute with a
* null value: the value of obj may be
* null.
- *
+ *
+ * @todo ALEX - Remove after resolution:
+ * Why are we using the OID primitive ASN.1 value?
+ *
* @param oid the OID of the new attribute to be put
* @param val the value of the new attribute to be put
* @return the old attribute with the same OID, if exists; otherwise
Modified: directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/Value.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/Value.java?rev=583927&r1=583926&r2=583927&view=diff
==============================================================================
--- directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/Value.java (original)
+++ directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/common/Value.java Thu Oct 11 12:37:32 2007
@@ -19,15 +19,17 @@
*/
package org.apache.directory.shared.ldap.common;
+
import java.io.Serializable;
import javax.naming.NamingException;
import org.apache.directory.shared.ldap.schema.Normalizer;
+
/**
- * A common interface for values stored into a ServerAttribute. Thos values can
- * be String or byte[]
+ * A common interface for values stored into a ServerAttribute. These values can
+ * be a String or a byte[].
*
* @author Apache Directory Project
* @version $Rev$, $Date$
@@ -35,15 +37,26 @@
public interface Valuetrue if the Value is a BinaryVale, false
* otherwise
*/
boolean isBinary();
-
+
/**
- * Get the inner value
+ * Get the non-normalized value.
+ *
+ * @todo ALEX - Remove after resolution:
+ * If this value is normalized does this method return the original non-normalized
+ * value or the normalized value? The semantics of this is very important. Also
+ * when we serialize values in the backend I guess we use the non-normalized values
+ * within the master table for the entry. Storing the normalized value in addition
+ * to the original value will cost double the disk space and double the memory in
+ * the entry cache and the master.db cache for partitions. Should the on disk
+ * representation be the same as the in memory representation? So the question boils
+ * down to is this class optimized for handling operations in the server or optimized
+ * for storage in the partition?
*
* @return The stored value, in its original type (String or byte[])
*/
@@ -51,34 +64,36 @@
/**
- * Get the normalized inner value
+ * Get the normalized value.
*
- * @return The normalized stored value, in its original type (String or byte[])
+ * @return The normalized value, as either a String or byte[]
*/
- T getNormValue();
+ T getNormalizedValue();
/**
- * Store a value into the object
+ * Sets the non-normalized value.
*
- * @param value The value to store. Should be either a String or a byte[]
+ * @param value the value to set. Should be either a String or a byte[]
*/
void setValue( T value );
/**
- *
- * Normalize the value using the given normalizer
+ * Normalizes the value using the given normalizer
+ *
+ * @todo Alex - Remove after resolution:
+ * Come back to this later - I have a feeling this may be a problem to normalize
+ * this way. Don't know for sure why yet but I'll try to figure it out.
*
* @param normalizer The normalizer to use
- * @throws NamingException If the normalization fail
+ * @throws NamingException If the normalization fails
*/
void normalize( Normalizer normalizer ) throws NamingException;
/**
* Tells if the value has been normalized. It's a speedup.
*
- * @return true if the Value has been normalized, false
- * otherwise
+ * @return true if the Value has been normalized, false otherwise
*/
boolean isNormalized();
Modified: directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/common/ServerAttributeTest.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/common/ServerAttributeTest.java?rev=583927&r1=583926&r2=583927&view=diff
==============================================================================
--- directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/common/ServerAttributeTest.java (original)
+++ directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/common/ServerAttributeTest.java Thu Oct 11 12:37:32 2007
@@ -338,7 +338,7 @@
}
});
- assertEquals( null, attr.get().getNormValue() );
+ assertEquals( null, attr.get().getNormalizedValue() );
assertEquals( null, attr.get().getValue() );
assertEquals( "test", attr.getID() );
assertEquals( oid, attr.getOid() );
@@ -375,13 +375,13 @@
while ( iter.hasNext() )
{
Value> v = iter.next();
- assertEquals( expectedLC[i], v.getNormValue() );
+ assertEquals( expectedLC[i], v.getNormalizedValue() );
assertEquals( expectedUC[i], v.getValue() );
i++;
}
- assertEquals( "test1", attr.get().getNormValue() );
+ assertEquals( "test1", attr.get().getNormalizedValue() );
assertEquals( "TEST1", attr.get().getValue() );
assertEquals( "test", attr.getID() );
assertEquals( oid, attr.getOid() );
@@ -488,7 +488,7 @@
assertEquals( 3, clone.size() );
Value> v = clone.get();
assertEquals( "TEST1", v.getValue() );
- assertEquals( "test1", v.getNormValue() );
+ assertEquals( "test1", v.getNormalizedValue() );
assertEquals( oid, clone.getOid() );
}
Modified: directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java?rev=583927&r1=583926&r2=583927&view=diff
==============================================================================
--- directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java (original)
+++ directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java Thu Oct 11 12:37:32 2007
@@ -2243,7 +2243,7 @@
//assertEquals( "2.5.4.11=some people", rdn.getNormName() );
assertEquals( "ou", rdn.getNormType() );
assertEquals( "ou", rdn.getUpType() );
- //assertEquals( "some people", rdn.getNormValue() );
+ //assertEquals( "some people", rdn.getNormalizedValue() );
//assertEquals( "ou= Some People ", rdn.getUpValue() );
LdapDN result = LdapDN.normalize( name, oids );
@@ -2257,7 +2257,7 @@
//assertEquals( "2.5.4.11=some people", rdn2.getNormName() );
assertEquals( "2.5.4.11", rdn2.getNormType() );
assertEquals( "ou", rdn2.getUpType() );
- //assertEquals( "some people", rdn2.getNormValue() );
+ //assertEquals( "some people", rdn2.getNormalizedValue() );
//assertEquals( "ou= Some People ", rdn2.getUpValue() );
}