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/28 10:44:47 UTC
svn commit: r938820 [10/10] - in /directory:
apacheds/trunk/avl-partition/src/main/java/org/apache/directory/server/core/partition/avl/
apacheds/trunk/avl-partition/src/test/java/org/apache/directory/server/core/partition/avl/
apacheds/trunk/core-annot...
Modified: directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/EntryNode.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/EntryNode.java?rev=938820&r1=938819&r2=938820&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/EntryNode.java (original)
+++ directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/EntryNode.java Wed Apr 28 08:44:42 2010
@@ -35,7 +35,7 @@ import org.apache.directory.server.xdbm.
import org.apache.directory.server.xdbm.IndexEntry;
import org.apache.directory.server.xdbm.search.Evaluator;
import org.apache.directory.server.xdbm.search.SearchEngine;
-import org.apache.directory.shared.ldap.entry.ServerEntry;
+import org.apache.directory.shared.ldap.entry.Entry;
import org.apache.directory.shared.ldap.filter.ExprNode;
import org.apache.directory.shared.ldap.name.DN;
@@ -50,18 +50,18 @@ public class EntryNode implements TreeNo
{
private final BTreePartition partition;
private final EntryNode parent;
- private final ServerEntry entry;
+ private final Entry entry;
private final ArrayList<TreeNode> children;
private final Long id;
- public EntryNode( Long id, EntryNode parent, BTreePartition partition, ServerEntry entry, Map<Long, EntryNode> map )
+ public EntryNode( Long id, EntryNode parent, BTreePartition partition, Entry entry, Map<Long, EntryNode> map )
{
this( id, parent, partition, entry, map, null, null );
}
- public EntryNode( Long id, EntryNode parent, BTreePartition db, ServerEntry entry, Map<Long, EntryNode> map,
+ public EntryNode( Long id, EntryNode parent, BTreePartition db, Entry entry, Map<Long, EntryNode> map,
ExprNode exprNode, SearchEngine engine )
{
this.partition = db;
@@ -81,7 +81,7 @@ public class EntryNode implements TreeNo
try
{
List<ForwardIndexEntry> recordForwards = new ArrayList<ForwardIndexEntry>();
- IndexCursor<Long, ServerEntry, Long> childList = db.list( id );
+ IndexCursor<Long, Entry, Long> childList = db.list( id );
while ( childList.next() )
{
@@ -106,7 +106,7 @@ public class EntryNode implements TreeNo
Evaluator evaluator = engine.evaluator( exprNode );
if ( evaluator.evaluateId( rec.getId() ) )
{
- ServerEntry newEntry = db.lookup( rec.getId() );
+ Entry newEntry = db.lookup( rec.getId() );
EntryNode child = new EntryNode( ( Long ) rec.getId(), this, db, newEntry, map, exprNode,
engine );
children.add( child );
@@ -118,7 +118,7 @@ public class EntryNode implements TreeNo
}
else
{
- ServerEntry newEntry = db.lookup( rec.getId() );
+ Entry newEntry = db.lookup( rec.getId() );
EntryNode child = new EntryNode( ( Long ) rec.getId(), this, db, newEntry, map, exprNode,
engine );
children.add( child );
@@ -126,7 +126,7 @@ public class EntryNode implements TreeNo
}
else
{
- ServerEntry newEntry = db.lookup( ( Long ) rec.getId() );
+ Entry newEntry = db.lookup( ( Long ) rec.getId() );
EntryNode child = new EntryNode( ( Long ) rec.getId(), this, db, newEntry, map );
children.add( child );
}
@@ -213,7 +213,7 @@ public class EntryNode implements TreeNo
}
- public ServerEntry getLdapEntry()
+ public Entry getLdapEntry()
{
return entry;
}
Modified: directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionFrame.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionFrame.java?rev=938820&r1=938819&r2=938820&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionFrame.java (original)
+++ directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionFrame.java Wed Apr 28 08:44:42 2010
@@ -65,8 +65,8 @@ import org.apache.directory.server.i18n.
import org.apache.directory.server.xdbm.Index;
import org.apache.directory.server.xdbm.IndexCursor;
import org.apache.directory.server.xdbm.IndexEntry;
-import org.apache.directory.shared.ldap.entry.DefaultServerEntry;
-import org.apache.directory.shared.ldap.entry.ServerEntry;
+import org.apache.directory.shared.ldap.entry.Entry;
+import org.apache.directory.shared.ldap.entry.client.DefaultClientEntry;
import org.apache.directory.shared.ldap.filter.ExprNode;
import org.apache.directory.shared.ldap.filter.FilterParser;
import org.apache.directory.shared.ldap.ldif.LdifEntry;
@@ -468,7 +468,7 @@ public class PartitionFrame extends JFra
DN ndn = new DN( StringTools.deepTrimToLower( updn ) );
- ServerEntry attrs = new DefaultServerEntry( schemaManager, entry.getEntry() );
+ Entry attrs = new DefaultClientEntry( schemaManager, entry.getEntry() );
if ( null == partition.getEntryId( ndn ) )
{
@@ -662,7 +662,7 @@ public class PartitionFrame extends JFra
limitMax = Integer.parseInt( limit );
}
- IndexCursor<Long, ServerEntry, Long> cursor = partition.getSearchEngine().cursor( new DN( base ),
+ IndexCursor<Long, Entry, Long> cursor = partition.getSearchEngine().cursor( new DN( base ),
AliasDerefMode.DEREF_ALWAYS, root, ctls );
String[] cols = new String[2];
cols[0] = "id";
@@ -866,7 +866,7 @@ public class PartitionFrame extends JFra
}
- void displayEntry( Long id, ServerEntry entry ) throws Exception
+ void displayEntry( Long id, Entry entry ) throws Exception
{
String dn = partition.getEntryUpdn( id );
AttributesTableModel model = new AttributesTableModel( entry, id, dn, false );
@@ -885,7 +885,7 @@ public class PartitionFrame extends JFra
// boolean doFiltered = false;
nodes = new HashMap<Long, EntryNode>();
- ServerEntry suffix = partition.lookup( partition.getEntryId( partition.getSuffixDn() ) );
+ Entry suffix = partition.lookup( partition.getEntryId( partition.getSuffixDn() ) );
Long id = partition.getEntryId( partition.getSuffixDn() );
root = new EntryNode( id, null, partition, suffix, nodes );
Modified: directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/xdbm/tools/IndexDialog.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/xdbm/tools/IndexDialog.java?rev=938820&r1=938819&r2=938820&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/xdbm/tools/IndexDialog.java (original)
+++ directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/xdbm/tools/IndexDialog.java Wed Apr 28 08:44:42 2010
@@ -49,7 +49,7 @@ import org.apache.directory.server.xdbm.
import org.apache.directory.server.xdbm.ForwardIndexEntry;
import org.apache.directory.server.i18n.I18n;
import org.apache.directory.shared.ldap.cursor.Cursor;
-import org.apache.directory.shared.ldap.entry.ServerEntry;
+import org.apache.directory.shared.ldap.entry.Entry;
import org.apache.directory.shared.ldap.util.ExceptionUtils;
import org.apache.directory.shared.ldap.NotImplementedException;
@@ -406,9 +406,9 @@ public class IndexDialog<K, O, ID> exten
@SuppressWarnings("unchecked")
- public static void show( Index<?, ServerEntry, Long> index )
+ public static void show( Index<?, Entry, Long> index )
{
- IndexDialog<?, ServerEntry, Long> dialog = new IndexDialog( index );
+ IndexDialog<?, Entry, Long> dialog = new IndexDialog( index );
dialog.setVisible( true );
}
}
Modified: directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/xdbm/tools/IndexUtils.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/xdbm/tools/IndexUtils.java?rev=938820&r1=938819&r2=938820&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/xdbm/tools/IndexUtils.java (original)
+++ directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/xdbm/tools/IndexUtils.java Wed Apr 28 08:44:42 2010
@@ -22,7 +22,7 @@ package org.apache.directory.server.xdbm
import org.apache.directory.server.xdbm.Index;
import org.apache.directory.server.xdbm.IndexCursor;
-import org.apache.directory.shared.ldap.entry.ServerEntry;
+import org.apache.directory.shared.ldap.entry.Entry;
import java.io.OutputStream;
import java.io.PrintStream;
@@ -36,13 +36,13 @@ import java.io.PrintStream;
*/
public class IndexUtils
{
- public static void printContents( Index<?, ServerEntry, Long> idx ) throws Exception
+ public static void printContents( Index<?, Entry, Long> idx ) throws Exception
{
printContents( idx, System.out );
}
- public static void printContents( Index<?, ServerEntry, Long> idx, OutputStream outputStream ) throws Exception
+ public static void printContents( Index<?, Entry, Long> idx, OutputStream outputStream ) throws Exception
{
PrintStream out;
@@ -59,7 +59,7 @@ public class IndexUtils
out = new PrintStream( outputStream );
}
- IndexCursor<?, ServerEntry, Long> cursor = idx.forwardCursor();
+ IndexCursor<?, Entry, Long> cursor = idx.forwardCursor();
cursor.first();
for ( Object entry : cursor )
{
Modified: directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/xdbm/tools/StoreUtils.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/xdbm/tools/StoreUtils.java?rev=938820&r1=938819&r2=938820&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/xdbm/tools/StoreUtils.java (original)
+++ directory/apacheds/trunk/xdbm-tools/src/main/java/org/apache/directory/server/xdbm/tools/StoreUtils.java Wed Apr 28 08:44:42 2010
@@ -31,10 +31,8 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.csn.CsnFactory;
import org.apache.directory.shared.ldap.cursor.Cursor;
import org.apache.directory.shared.ldap.entry.DefaultEntryAttribute;
-import org.apache.directory.shared.ldap.entry.DefaultServerEntry;
import org.apache.directory.shared.ldap.entry.Entry;
import org.apache.directory.shared.ldap.entry.EntryAttribute;
-import org.apache.directory.shared.ldap.entry.ServerEntry;
import org.apache.directory.shared.ldap.entry.client.DefaultClientEntry;
import org.apache.directory.shared.ldap.name.DN;
import org.apache.directory.shared.ldap.schema.SchemaManager;
@@ -64,7 +62,7 @@ public class StoreUtils
* @param registries oid registries
* @throws Exception on access exceptions
*/
- public static void loadExampleData( Store<ServerEntry, Long> store, SchemaManager schemaManager ) throws Exception
+ public static void loadExampleData( Store<Entry, Long> store, SchemaManager schemaManager ) throws Exception
{
DN suffixDn = new DN( "o=Good Times Co." );
suffixDn.normalize( schemaManager.getNormalizerMapping() );
@@ -73,7 +71,7 @@ public class StoreUtils
store.init( schemaManager );
// Entry #1
- DefaultServerEntry entry = new DefaultServerEntry( schemaManager, suffixDn );
+ DefaultClientEntry entry = new DefaultClientEntry( schemaManager, suffixDn );
entry.add( "objectClass", "organization" );
entry.add( "o", "Good Times Co." );
entry.add( "postalCode", "1" );
@@ -83,7 +81,7 @@ public class StoreUtils
// Entry #2
DN dn = new DN( "ou=Sales,o=Good Times Co." );
dn.normalize( schemaManager.getNormalizerMapping() );
- entry = new DefaultServerEntry( schemaManager, dn );
+ entry = new DefaultClientEntry( schemaManager, dn );
entry.add( "objectClass", "top", "organizationalUnit" );
entry.add( "ou", "Sales" );
entry.add( "postalCode", "1" );
@@ -93,7 +91,7 @@ public class StoreUtils
// Entry #3
dn = new DN( "ou=Board of Directors,o=Good Times Co." );
dn.normalize( schemaManager.getNormalizerMapping() );
- entry = new DefaultServerEntry( schemaManager, dn );
+ entry = new DefaultClientEntry( schemaManager, dn );
entry.add( "objectClass", "top", "organizationalUnit" );
entry.add( "ou", "Board of Directors" );
entry.add( "postalCode", "1" );
@@ -103,7 +101,7 @@ public class StoreUtils
// Entry #4
dn = new DN( "ou=Engineering,o=Good Times Co." );
dn.normalize( schemaManager.getNormalizerMapping() );
- entry = new DefaultServerEntry( schemaManager, dn );
+ entry = new DefaultClientEntry( schemaManager, dn );
entry.add( "objectClass", "top", "organizationalUnit" );
entry.add( "ou", "Engineering" );
entry.add( "postalCode", "2" );
@@ -113,7 +111,7 @@ public class StoreUtils
// Entry #5
dn = new DN( "cn=JOhnny WAlkeR,ou=Sales,o=Good Times Co." );
dn.normalize( schemaManager.getNormalizerMapping() );
- entry = new DefaultServerEntry( schemaManager, dn );
+ entry = new DefaultClientEntry( schemaManager, dn );
entry.add( "objectClass", "top", "person", "organizationalPerson" );
entry.add( "ou", "Sales" );
entry.add( "cn", "JOhnny WAlkeR" );
@@ -125,7 +123,7 @@ public class StoreUtils
// Entry #6
dn = new DN( "cn=JIM BEAN,ou=Sales,o=Good Times Co." );
dn.normalize( schemaManager.getNormalizerMapping() );
- entry = new DefaultServerEntry( schemaManager, dn );
+ entry = new DefaultClientEntry( schemaManager, dn );
entry.add( "objectClass", "top", "person", "organizationalPerson" );
entry.add( "ou", "Sales" );
entry.add( "cn", "JIM BEAN" );
@@ -137,7 +135,7 @@ public class StoreUtils
// Entry #7
dn = new DN( "ou=Apache,ou=Board of Directors,o=Good Times Co." );
dn.normalize( schemaManager.getNormalizerMapping() );
- entry = new DefaultServerEntry( schemaManager, dn );
+ entry = new DefaultClientEntry( schemaManager, dn );
entry.add( "objectClass", "top", "organizationalUnit" );
entry.add( "ou", "Apache" );
entry.add( "postalCode", "5" );
@@ -147,7 +145,7 @@ public class StoreUtils
// Entry #8
dn = new DN( "cn=Jack Daniels,ou=Engineering,o=Good Times Co." );
dn.normalize( schemaManager.getNormalizerMapping() );
- entry = new DefaultServerEntry( schemaManager, dn );
+ entry = new DefaultClientEntry( schemaManager, dn );
entry.add( "objectClass", "top", "person", "organizationalPerson" );
entry.add( "ou", "Engineering" );
entry.add( "cn", "Jack Daniels" );
@@ -161,7 +159,7 @@ public class StoreUtils
// Entry #9
dn = new DN( "commonName=Jim Bean,ou=Apache,ou=Board of Directors,o=Good Times Co." );
dn.normalize( schemaManager.getNormalizerMapping() );
- entry = new DefaultServerEntry( schemaManager, dn );
+ entry = new DefaultClientEntry( schemaManager, dn );
entry.add( "objectClass", "top", "alias", "extensibleObject" );
entry.add( "ou", "Apache" );
entry.add( "commonName", "Jim Bean" );
@@ -171,7 +169,7 @@ public class StoreUtils
// Entry #10
dn = new DN( "commonName=Jim Bean,ou=Board of Directors,o=Good Times Co." );
dn.normalize( schemaManager.getNormalizerMapping() );
- entry = new DefaultServerEntry( schemaManager, dn );
+ entry = new DefaultClientEntry( schemaManager, dn );
entry.add( "objectClass", "top", "alias", "extensibleObject" );
entry.add( "commonName", "Jim Bean" );
entry.add( "aliasedObjectName", "cn=Jim Bean,ou=Sales,o=Good Times Co." );
@@ -180,7 +178,7 @@ public class StoreUtils
// Entry #11
dn = new DN( "2.5.4.3=Johnny Walker,ou=Engineering,o=Good Times Co." );
dn.normalize( schemaManager.getNormalizerMapping() );
- entry = new DefaultServerEntry( schemaManager, dn );
+ entry = new DefaultClientEntry( schemaManager, dn );
entry.add( "objectClass", "top", "alias", "extensibleObject" );
entry.add( "ou", "Engineering" );
entry.add( "2.5.4.3", "Johnny Walker" );
@@ -291,7 +289,7 @@ public class StoreUtils
* @param entry the server entry
* @throws Exception in case of any problems in adding the entry to the store
*/
- public static void injectEntryInStore( Store<ServerEntry, Long> store, ServerEntry entry ) throws Exception
+ public static void injectEntryInStore( Store<Entry, Long> store, Entry entry ) throws Exception
{
entry.add( SchemaConstants.ENTRY_CSN_AT, CSN_FACTORY.newInstance().toString() );
entry.add( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
Modified: directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java
URL: http://svn.apache.org/viewvc/directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java?rev=938820&r1=938819&r2=938820&view=diff
==============================================================================
--- directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java (original)
+++ directory/clients/ldap/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java Wed Apr 28 08:44:42 2010
@@ -115,11 +115,11 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.codec.unbind.UnBindRequestCodec;
import org.apache.directory.shared.ldap.constants.SchemaConstants;
import org.apache.directory.shared.ldap.cursor.Cursor;
-import org.apache.directory.shared.ldap.entry.DefaultServerEntry;
import org.apache.directory.shared.ldap.entry.Entry;
import org.apache.directory.shared.ldap.entry.EntryAttribute;
import org.apache.directory.shared.ldap.entry.ModificationOperation;
import org.apache.directory.shared.ldap.entry.Value;
+import org.apache.directory.shared.ldap.entry.client.DefaultClientEntry;
import org.apache.directory.shared.ldap.exception.LdapInvalidDnException;
import org.apache.directory.shared.ldap.filter.ExprNode;
import org.apache.directory.shared.ldap.filter.FilterParser;
@@ -434,7 +434,7 @@ public class LdapNetworkConnection exten
searchResultEntry.setMessageId( searchEntryResultCodec.getMessageId() );
if( schemaManager != null )
{
- searchResultEntry.setEntry( new DefaultServerEntry( schemaManager, searchEntryResultCodec.getEntry() ) );
+ searchResultEntry.setEntry( new DefaultClientEntry( schemaManager, searchEntryResultCodec.getEntry() ) );
}
else
{
Modified: directory/shared/trunk/ldap-ldif/src/main/java/org/apache/directory/shared/ldap/ldif/LdifEntry.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap-ldif/src/main/java/org/apache/directory/shared/ldap/ldif/LdifEntry.java?rev=938820&r1=938819&r2=938820&view=diff
==============================================================================
--- directory/shared/trunk/ldap-ldif/src/main/java/org/apache/directory/shared/ldap/ldif/LdifEntry.java (original)
+++ directory/shared/trunk/ldap-ldif/src/main/java/org/apache/directory/shared/ldap/ldif/LdifEntry.java Wed Apr 28 08:44:42 2010
@@ -98,7 +98,7 @@ public class LdifEntry implements Clonea
changeType = ChangeType.Add; // Default LDIF content
modificationList = new LinkedList<Modification>();
modificationItems = new HashMap<String, Modification>();
- entry = new DefaultClientEntry( null );
+ entry = new DefaultClientEntry( (DN)null );
control = null;
}
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=938820&r1=938819&r2=938820&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 Wed Apr 28 08:44:42 2010
@@ -20,6 +20,9 @@ package org.apache.directory.shared.ldap
import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
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=938820&r1=938819&r2=938820&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 Wed Apr 28 08:44:42 2010
@@ -18,7 +18,6 @@
*/
package org.apache.directory.shared.ldap.entry.client;
-
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
@@ -32,6 +31,7 @@ import java.util.Map;
import java.util.Set;
import org.apache.directory.shared.ldap.NotImplementedException;
+import org.apache.directory.shared.ldap.constants.SchemaConstants;
import org.apache.directory.shared.ldap.exception.LdapException;
import org.apache.directory.shared.i18n.I18n;
@@ -81,6 +81,9 @@ public class DefaultClientEntry implemen
/** The computed hashcode. We don't want to compute it each time the hashcode() method is called */
private volatile int h;
+ /** A mutex to manage synchronization*/
+ private static transient Object MUTEX = new Object();
+
//-------------------------------------------------------------------------
// Constructors
@@ -92,12 +95,33 @@ public class DefaultClientEntry implemen
*/
public DefaultClientEntry()
{
+ schemaManager = null;
dn = DN.EMPTY_DN;
}
/**
- * Creates a new instance of DefaultServerEntry, with a
+ * <p>
+ * Creates a new instance of DefaultClientEntry, schema aware.
+ * </p>
+ * <p>
+ * No attributes will be created.
+ * </p>
+ *
+ * @param schemaManager The reference to the schemaManager
+ */
+ public DefaultClientEntry( SchemaManager schemaManager )
+ {
+ this.schemaManager = schemaManager;
+ dn = DN.EMPTY_DN;
+
+ // Initialize the ObjectClass object
+ initObjectClassAT( schemaManager );
+ }
+
+
+ /**
+ * Creates a new instance of DefaultClientEntry, with a
* DN.
*
* @param dn The DN for this serverEntry. Can be null.
@@ -109,7 +133,36 @@ public class DefaultClientEntry implemen
/**
- * Creates a new instance of DefaultServerEntry, with a
+ * <p>
+ * Creates a new instance of DefaultClientEntry, schema aware.
+ * </p>
+ * <p>
+ * No attributes will be created.
+ * </p>
+ *
+ * @param schemaManager The reference to the schemaManager
+ * @param dn The DN for this serverEntry. Can be null.
+ */
+ public DefaultClientEntry( SchemaManager schemaManager, DN dn )
+ {
+ if ( dn == null )
+ {
+ dn = DN.EMPTY_DN;
+ }
+ else
+ {
+ this.dn = dn;
+ }
+
+ this.schemaManager = schemaManager;
+
+ // Initialize the ObjectClass object
+ initObjectClassAT( schemaManager );
+ }
+
+
+ /**
+ * Creates a new instance of DefaultClientEntry, with a
* DN and a list of IDs.
*
* @param dn The DN for this serverEntry. Can be null.
@@ -129,6 +182,111 @@ public class DefaultClientEntry implemen
/**
* <p>
+ * Creates a new instance of DefaultClientEntry, copying
+ * another entry.
+ * </p>
+ * <p>
+ * No attributes will be created.
+ * </p>
+ *
+ * @param schemaManager The reference to the schemaManager
+ * @param entry the entry to copy
+ */
+ public DefaultClientEntry( SchemaManager schemaManager, Entry entry )
+ {
+ this.schemaManager = schemaManager;
+
+ // Initialize the ObjectClass object
+ initObjectClassAT( schemaManager );
+
+ // We will clone the existing entry, because it may be normalized
+ if ( entry.getDn() != null )
+ {
+ dn = (DN)entry.getDn().clone();
+ }
+ else
+ {
+ dn = DN.EMPTY_DN;
+ }
+
+ if ( !dn.isNormalized( ) )
+ {
+ try
+ {
+ // The dn must be normalized
+ dn.normalize( schemaManager.getNormalizerMapping() );
+ }
+ catch ( LdapException ne )
+ {
+ LOG.warn( "The DN '" + entry.getDn() + "' cannot be normalized" );
+ }
+ }
+
+ // Init the attributes map
+ attributes = new HashMap<String, EntryAttribute>( entry.size() );
+
+ // and copy all the attributes
+ for ( EntryAttribute attribute:entry )
+ {
+ try
+ {
+ // First get the AttributeType
+ AttributeType attributeType = attribute.getAttributeType();
+
+ if ( attributeType == null )
+ {
+ attributeType = schemaManager.lookupAttributeTypeRegistry( attribute.getId() );
+ }
+
+ // Create a new ServerAttribute.
+ EntryAttribute serverAttribute = new DefaultEntryAttribute( attributeType, attribute );
+
+ // And store it
+ add( serverAttribute );
+ }
+ catch ( LdapException ne )
+ {
+ // Just log a warning
+ LOG.warn( "The attribute '" + attribute.getId() + "' cannot be stored" );
+ }
+ }
+ }
+
+
+ /**
+ * Creates a new instance of DefaultClientEntry, with a
+ * DN, a list of ID and schema aware.
+ * <p>
+ * No attributes will be created except the ObjectClass attribute,
+ * which will contains "top".
+ * <p>
+ * If any of the AttributeType does not exist, they are simply discarded.
+ *
+ * @param schemaManager The reference to the schemaManager
+ * @param dn The DN for this serverEntry. Can be null.
+ * @param upIds The list of attributes to create.
+ */
+ public DefaultClientEntry( SchemaManager schemaManager, DN dn, String... upIds )
+ {
+ if ( dn == null )
+ {
+ dn = DN.EMPTY_DN;
+ }
+ else
+ {
+ this.dn = dn;
+ }
+
+ this.schemaManager = schemaManager;
+
+ initObjectClassAT( schemaManager );
+
+ set( upIds );
+ }
+
+
+ /**
+ * <p>
* Creates a new instance of DefaultClientEntry, with a
* DN and a list of EntryAttributes.
* </p>
@@ -153,9 +311,167 @@ public class DefaultClientEntry implemen
}
+ /**
+ * Creates a new instance of DefaultClientEntry, with a
+ * DN, a list of ServerAttributes and schema aware.
+ * <p>
+ * No attributes will be created except the ObjectClass attribute,
+ * which will contains "top".
+ * <p>
+ * If any of the AttributeType does not exist, they are simply discarded.
+ *
+ * @param schemaManager The reference to the schemaManager
+ * @param dn The DN for this serverEntry. Can be null
+ * @param attributes The list of attributes to create
+ */
+ public DefaultClientEntry( SchemaManager schemaManager, DN dn, EntryAttribute... attributes )
+ {
+ if ( dn == null )
+ {
+ dn = DN.EMPTY_DN;
+ }
+ else
+ {
+ this.dn = dn;
+ }
+
+ this.schemaManager = schemaManager;
+
+ initObjectClassAT( schemaManager );
+
+ for ( EntryAttribute attribute:attributes )
+ {
+ // Store a new ServerAttribute
+ try
+ {
+ put( attribute );
+ }
+ catch ( LdapException ne )
+ {
+ LOG.warn( "The ServerAttribute '{}' does not exist. It has been discarded", attribute );
+ }
+ }
+ }
+ /**
+ * <p>
+ * Creates a new instance of DefaultClientEntry, with a
+ * DN, a list of attributeTypes and schema aware.
+ * </p>
+ * <p>
+ * The newly created entry is fed with the list of attributeTypes. No
+ * values are associated with those attributeTypes.
+ * </p>
+ * <p>
+ * If any of the AttributeType does not exist, they it's simply discarded.
+ * </p>
+ *
+ * @param schemaManager The reference to the schemaManager
+ * @param dn The DN for this serverEntry. Can be null.
+ * @param attributeTypes The list of attributes to create, without value.
+ */
+ public DefaultClientEntry( SchemaManager schemaManager, DN dn, AttributeType... attributeTypes )
+ {
+ if ( dn == null )
+ {
+ dn = DN.EMPTY_DN;
+ }
+ else
+ {
+ this.dn = dn;
+ }
+
+ this.schemaManager = schemaManager;
+
+ // Initialize the ObjectClass object
+ initObjectClassAT( schemaManager );
+
+ // Add the attributeTypes
+ set( attributeTypes );
+ }
+
+
+ /**
+ * <p>
+ * Creates a new instance of DefaultClientEntry, with a
+ * DN, an attributeType with the user provided ID, and schema aware.
+ * </p>
+ * <p>
+ * The newly created entry is fed with the given attributeType. No
+ * values are associated with this attributeType.
+ * </p>
+ * <p>
+ * If the AttributeType does not exist, they it's simply discarded.
+ * </p>
+ * <p>
+ * We also check that the normalized upID equals the AttributeType ID
+ * </p>
+ *
+ * @param schemaManager The reference to the schemaManager
+ * @param dn The DN for this serverEntry. Can be null.
+ * @param attributeType The attribute to create, without value.
+ * @param upId The User Provided ID fro this AttributeType
+ */
+ public DefaultClientEntry( SchemaManager schemaManager, DN dn, AttributeType attributeType, String upId )
+ {
+ if ( dn == null )
+ {
+ dn = DN.EMPTY_DN;
+ }
+ else
+ {
+ this.dn = dn;
+ }
+
+ this.schemaManager = schemaManager;
+
+ // Initialize the ObjectClass object
+ initObjectClassAT( schemaManager );
+
+ try
+ {
+ put( upId, attributeType, (String)null );
+ }
+ catch ( LdapException ne )
+ {
+ // Just discard the AttributeType
+ LOG.error( I18n.err( I18n.ERR_04459, upId, ne.getLocalizedMessage() ) );
+ }
+ }
+
+
//-------------------------------------------------------------------------
// Helper methods
//-------------------------------------------------------------------------
+ /**
+ * This method is used to initialize the OBJECT_CLASS_AT attributeType.
+ *
+ * We want to do it only once, so it's a synchronized method. Note that
+ * the alternative would be to call the lookup() every time, but this won't
+ * be very efficient, as it will get the AT from a map, which is also
+ * synchronized, so here, we have a very minimal cost.
+ *
+ * We can't do it once as a static part in the body of this class, because
+ * the access to the registries is mandatory to get back the AttributeType.
+ */
+ private void initObjectClassAT( SchemaManager schemaManager )
+ {
+ try
+ {
+ if ( OBJECT_CLASS_AT == null )
+ {
+ synchronized ( MUTEX )
+ {
+ OBJECT_CLASS_AT = schemaManager.lookupAttributeTypeRegistry( SchemaConstants.OBJECT_CLASS_AT );
+ }
+ }
+ }
+ catch ( LdapException ne )
+ {
+ // do nothing...
+ }
+ }
+
+
private String getId( String upId ) throws IllegalArgumentException
{
String id = StringTools.trim( StringTools.toLowerCase( upId ) );
@@ -661,7 +977,7 @@ public class DefaultClientEntry implemen
// First, clone the DN, if not null.
if ( dn != null )
{
- clone.setDn( (DN)dn.clone() );
+ clone.dn = (DN)dn.clone();
}
// then clone the ClientAttribute Map.
@@ -670,9 +986,21 @@ public class DefaultClientEntry implemen
// now clone all the attributes
clone.attributes.clear();
- for ( EntryAttribute attribute:attributes.values() )
+ if ( schemaManager != null )
{
- clone.attributes.put( attribute.getId(), attribute.clone() );
+ for ( EntryAttribute attribute:attributes.values() )
+ {
+ String oid = attribute.getAttributeType().getOid();
+ clone.attributes.put( oid, attribute.clone() );
+ }
+ }
+ else
+ {
+ for ( EntryAttribute attribute:attributes.values() )
+ {
+ clone.attributes.put( attribute.getId(), attribute.clone() );
+ }
+
}
// We are done !
@@ -2270,8 +2598,6 @@ public class DefaultClientEntry implemen
}
-
-
/**
* Serialize an Entry.
*
@@ -2341,7 +2667,7 @@ public class DefaultClientEntry implemen
}
}
}
-
+
/**
* Deserialize an entry.
@@ -2616,7 +2942,7 @@ public class DefaultClientEntry implemen
{
sb.append( attribute );
}
- else if ( !attribute.getId().equals( "objectclass" ) )
+ else if ( !attribute.getId().equalsIgnoreCase( "objectclass" ) )
{
sb.append( attribute );
}