You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2011/06/07 15:01:58 UTC

svn commit: r1132991 - in /directory: apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/ apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ apacheds/trunk/server-config/src/main/java/org...

Author: kayyagari
Date: Tue Jun  7 13:01:58 2011
New Revision: 1132991

URL: http://svn.apache.org/viewvc?rev=1132991&view=rev
Log:
o cleaned up the consfusing parts of syncrepl configuration
 ( renamed the 'ads-replConsumer' OC to 'ads-replEventLog' renamed the
  'ads-replProvider' OC to 'ads-replConsumer' and updated the allowed attributes)
o updated the code and test resources accordingly

Modified:
    directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/ReplicaDitStoreUtil.java
    directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/SyncReplRequestHandler.java
    directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigSchemaConstants.java
    directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/LdapServerBean.java
    directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/ReplConsumerBean.java
    directory/apacheds/trunk/server-config/src/test/resources/ldapServer.ldif
    directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/ClientServerReplicationIT.java
    directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java
    directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou=schema/cn=adsconfig/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.828.ldif
    directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou=schema/cn=adsconfig/ou=objectclasses/m-oid=1.3.6.1.4.1.18060.0.4.1.3.805.ldif
    directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou=schema/cn=adsconfig/ou=objectclasses/m-oid=1.3.6.1.4.1.18060.0.4.1.3.806.ldif

Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/ReplicaDitStoreUtil.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/ReplicaDitStoreUtil.java?rev=1132991&r1=1132990&r2=1132991&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/ReplicaDitStoreUtil.java (original)
+++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/ReplicaDitStoreUtil.java Tue Jun  7 13:01:58 2011
@@ -104,16 +104,15 @@ public class ReplicaDitStoreUtil
         }
 
         Entry entry = new DefaultEntry( schemaManager );
-        //FIXME change the value of ads-replConsumerId to a unique value
-        entry.setDn( new Dn( schemaManager, "ads-replConsumerId=" + replica.getId() + "," + REPL_CONSUMER_DN ) );
+        entry.setDn( new Dn( schemaManager, "ads-dsReplicaId=" + replica.getId() + "," + REPL_CONSUMER_DN ) );
 
-        entry.add( SchemaConstants.OBJECT_CLASS_AT, "ads-replConsumer" );
+        entry.add( SchemaConstants.OBJECT_CLASS_AT, "ads-replEventLog" );
         entry.add( "ads-dsReplicaId", String.valueOf( replica.getId() ) );
-        entry.add( "ads-replConsumerId", String.valueOf( replica.getId() ) );
         entry.add( "ads-replAliasDerefMode", replica.getSearchCriteria().getAliasDerefMode().getJndiValue() );
         entry.add( "ads-searchBaseDN", replica.getSearchCriteria().getBase().getName() );
         entry.add( "ads-replLastSentCsn", replica.getLastSentCsn() );
         entry.add( "ads-replSearchScope", replica.getSearchCriteria().getScope().getLdapUrlValue() );
+        entry.add( "ads-replRefreshNPersist", String.valueOf( replica.isRefreshNPersist() ) );
         entry.add( "ads-replSearchFilter", replica.getSearchFilter() );
 
         adminSession.add( entry );
@@ -146,17 +145,17 @@ public class ReplicaDitStoreUtil
             lastSentCsnAt.add( replica.getLastSentCsn() );
         }
 
-        Dn dn = new Dn( schemaManager, "ads-replConsumerId=" + replica.getId() + "," + REPL_CONSUMER_DN );
+        Dn dn = new Dn( schemaManager, "ads-dsReplicaId=" + replica.getId() + "," + REPL_CONSUMER_DN );
         adminSession.modify( dn, mods );
         LOG.debug( "updated last sent CSN of consumer entry {}", dn );
     }
 
 
-    public List<ReplicaEventLog> getReplicaConsumers() throws Exception
+    public List<ReplicaEventLog> getReplicaEventLogs() throws Exception
     {
         List<ReplicaEventLog> replicas = new ArrayList<ReplicaEventLog>();
 
-        EntryCursor cursor = coreConnection.search( REPL_CONSUMER_DN, "(objectClass=ads-replConsumer)",
+        EntryCursor cursor = coreConnection.search( REPL_CONSUMER_DN, "(objectClass=ads-replEventLog)",
             SearchScope.ONELEVEL, "+", "*" );
 
         while ( cursor.next() )
@@ -174,7 +173,7 @@ public class ReplicaDitStoreUtil
 
     private ReplicaEventLog convertEntryToReplica( Entry entry ) throws Exception
     {
-        String id = entry.get( "ads-replConsumerId" ).getString();
+        String id = entry.get( "ads-dsReplicaId" ).getString();
         ReplicaEventLog replica = new ReplicaEventLog( Integer.parseInt( id ) );
 
         NotificationCriteria searchCriteria = new NotificationCriteria();
@@ -185,8 +184,11 @@ public class ReplicaDitStoreUtil
         String baseDn = entry.get( "ads-searchBaseDN" ).getString();
         searchCriteria.setBase( new Dn( schemaManager, baseDn ) );
 
-        String lastSentCsn = entry.get( "ads-replLastSentCsn" ).getString();
-        replica.setLastSentCsn( lastSentCsn );
+        Attribute lastSentCsnAt = entry.get( "ads-replLastSentCsn" );
+        if ( lastSentCsnAt != null )
+        {
+            replica.setLastSentCsn( lastSentCsnAt.getString() );
+        }
 
         String scope = entry.get( "ads-replSearchScope" ).getString();
         int scopeIntVal = SearchScope.getSearchScope( scope );
@@ -196,6 +198,8 @@ public class ReplicaDitStoreUtil
         searchCriteria.setFilter( filter );
         replica.setSearchFilter( filter );
 
+        replica.setRefreshNPersist( Boolean.parseBoolean( entry.get( "ads-replRefreshNPersist" ).getString() ) );
+        
         searchCriteria.setEventMask( EventType.ALL_EVENT_TYPES_MASK );
         replica.setSearchCriteria( searchCriteria );
 

Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/SyncReplRequestHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/SyncReplRequestHandler.java?rev=1132991&r1=1132990&r2=1132991&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/SyncReplRequestHandler.java (original)
+++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/SyncReplRequestHandler.java Tue Jun  7 13:01:58 2011
@@ -857,10 +857,10 @@ public class SyncReplRequestHandler impl
         try
         {
 
-            List<ReplicaEventLog> replicas = replicaUtil.getReplicaConsumers();
-            if ( !replicas.isEmpty() )
+            List<ReplicaEventLog> eventLogs = replicaUtil.getReplicaEventLogs();
+            if ( !eventLogs.isEmpty() )
             {
-                for ( ReplicaEventLog r : replicas )
+                for ( ReplicaEventLog r : eventLogs )
                 {
                     LOG.debug( "initializing the replica log from {}", r.getId() );
                     r.configure( amqConnection, brokerService );

Modified: directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigSchemaConstants.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigSchemaConstants.java?rev=1132991&r1=1132990&r2=1132991&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigSchemaConstants.java (original)
+++ directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigSchemaConstants.java Tue Jun  7 13:01:58 2011
@@ -243,7 +243,7 @@ public enum ConfigSchemaConstants
     
     ADS_REPL_REFRESH_INTERVAL( "ads-replRefreshInterval", "" ),
     
-    ADS_REPL_ATTRIBUTE( "ads-replAttribute", "" ),
+    ADS_REPL_ATTRIBUTE( "ads-replAttributes", "" ),
     
     ADS_REPL_SEARCH_SIZE_LIMIT( "ads-replSearchSizeLimit", "" ),
     

Modified: directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/LdapServerBean.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/LdapServerBean.java?rev=1132991&r1=1132990&r2=1132991&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/LdapServerBean.java (original)
+++ directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/LdapServerBean.java Tue Jun  7 13:01:58 2011
@@ -73,10 +73,6 @@ public class LdapServerBean extends DSBa
     @ConfigurationElement(attributeType = "ads-replConsumers", container = "replConsumers")
     private List<ReplConsumerBean> replConsumers = new ArrayList<ReplConsumerBean>();
 
-    /** The replication producer Bean */
-    @ConfigurationElement
-    private ReplProviderBean replProvider;
-
     /** The list of supported mechanisms */
     @ConfigurationElement(attributeType = "ads-saslMechHandlers", container = "saslMechHandlers")
     private List<SaslMechHandlerBean> saslMechHandlers = new ArrayList<SaslMechHandlerBean>();
@@ -361,25 +357,7 @@ public class LdapServerBean extends DSBa
             this.replConsumers.add( bean );
         }
     }
-
     
-    /**
-     * @return the replProvider
-     */
-    public ReplProviderBean getReplProvider()
-    {
-        return replProvider;
-    }
-
-
-    /**
-     * @param replProvider the replProvider to set
-     */
-    public void setReplProvider( ReplProviderBean replProvider )
-    {
-        this.replProvider = replProvider;
-    }
-
 
     /**
      * {@inheritDoc}
@@ -439,11 +417,6 @@ public class LdapServerBean extends DSBa
             }
         }
         
-        if ( replProvider != null )
-        {
-            sb.append( tabs ).append( replProvider.toString( tabs + "  " ) );
-        }
-
         return sb.toString();
     }
 

Modified: directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/ReplConsumerBean.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/ReplConsumerBean.java?rev=1132991&r1=1132990&r2=1132991&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/ReplConsumerBean.java (original)
+++ directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/ReplConsumerBean.java Tue Jun  7 13:01:58 2011
@@ -20,8 +20,10 @@
 package org.apache.directory.server.config.beans;
 
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.directory.server.config.ConfigurationElement;
-import org.apache.directory.shared.ldap.model.name.Dn;
 
 
 /**
@@ -35,21 +37,33 @@ public class ReplConsumerBean extends Ad
     @ConfigurationElement(attributeType = "ads-replConsumerId", isRdn = true)
     private String replConsumerId;
 
-    /** The replication unique ID */
-    @ConfigurationElement(attributeType = "ads-dsReplicaId")
-    private String dsReplicaId;
+    /** The Search Base Dn */
+    @ConfigurationElement(attributeType = "ads-searchBaseDn")
+    private String searchBaseDn;
+
+    /** The replication provider host name */
+    @ConfigurationElement(attributeType = "ads-replProvHostName")
+    private String replProvHostName;
+
+    /** The replication provider port */
+    @ConfigurationElement(attributeType = "ads-replProvPort")
+    private int replProvPort;
 
     /** The Alias Dereferencing mode */
     @ConfigurationElement(attributeType = "ads-replAliasDerefMode")
     private String replAliasDerefMode;
 
-    /** The Search Base Dn */
-    @ConfigurationElement(attributeType = "ads-searchBaseDn")
-    private Dn searchBaseDn;
+    /** The replication provider attribute */
+    @ConfigurationElement(attributeType = "ads-replAttributes")
+    private List<String> replAttributes = new ArrayList<String>();
+
+    /** The refresh interval */
+    @ConfigurationElement(attributeType = "ads-replRefreshInterval")
+    private long replRefreshInterval;
 
-    /** The last CSN sent */
-    @ConfigurationElement(attributeType = "ads-replLastSentCsn")
-    private String replLastSentCsn;
+    /** Tells if we should persist */
+    @ConfigurationElement(attributeType = "ads-replRefreshNPersist")
+    private boolean replRefreshNPersist;
 
     /** The search scope */
     @ConfigurationElement(attributeType = "ads-replSearchScope")
@@ -59,9 +73,25 @@ public class ReplConsumerBean extends Ad
     @ConfigurationElement(attributeType = "ads-replSearchFilter")
     private String replSearchFilter;
 
-    /** Tells if we should persist */
-    @ConfigurationElement(attributeType = "ads-replRefreshNPersist")
-    private boolean replRefreshNPersist;
+    /** The search size limit */
+    @ConfigurationElement(attributeType = "ads-replSearchSizeLimit")
+    private int replSearchSizeLimit;
+
+    /** The search time limit */
+    @ConfigurationElement(attributeType = "ads-replSearchTimeout")
+    private int replSearchTimeout;
+
+    /** The replication user Dn */
+    @ConfigurationElement(attributeType = "ads-replUserDn")
+    private String replUserDn;
+
+    /** The replication user password */
+    @ConfigurationElement(attributeType = "ads-replUserPassword")
+    private byte[] replUserPassword;
+
+    /** The replication cookie */
+    @ConfigurationElement(attributeType = "ads-replCookie")
+    private String replCookie;
 
     /** Tells if TLS should be used during replication */
     @ConfigurationElement(attributeType = "ads-replUseTls")
@@ -73,7 +103,7 @@ public class ReplConsumerBean extends Ad
 
     /** The peer certificate */
     @ConfigurationElement(attributeType = "ads-replPeerCertificate")
-    private String replPeerCertificate;
+    private byte[] replPeerCertificate;
 
     /** The FQCN of replication client implementation */
     @ConfigurationElement(attributeType = "ads-replConsumerImpl")
@@ -101,7 +131,7 @@ public class ReplConsumerBean extends Ad
 
 
     /**
-     * @param replConsumerId the replConsumerId to set
+     * @param replConsumerId the replication consumer id to set
      */
     public void setReplConsumerId( String replConsumerId )
     {
@@ -110,20 +140,56 @@ public class ReplConsumerBean extends Ad
 
 
     /**
-     * @return the dsreplicaid
+     * @return the searchBaseDn
      */
-    public String getDsreplicaid()
+    public String getSearchBaseDn()
     {
-        return dsReplicaId;
+        return searchBaseDn;
     }
 
 
     /**
-     * @param dsreplicaid the dsreplicaid to set
+     * @param searchBaseDN the searchBaseDn to set
      */
-    public void setDsreplicaid( String dsreplicaid )
+    public void setSearchBaseDn( String searchBaseDn )
     {
-        this.dsReplicaId = dsreplicaid;
+        this.searchBaseDn = searchBaseDn;
+    }
+
+
+    /**
+     * @return the replProvHostName
+     */
+    public String getReplProvHostName()
+    {
+        return replProvHostName;
+    }
+
+
+    /**
+     * @param replProvHostName the replProvHostName to set
+     */
+    public void setReplProvHostName( String replProvHostName )
+    {
+        this.replProvHostName = replProvHostName;
+    }
+
+
+    /**
+     * @return the replProvPort
+     */
+    public int getReplProvPort()
+    {
+        return replProvPort;
+    }
+
+
+    /**
+     * @param replProvPort the replProvPort to set
+     */
+    public void setReplProvPort( int replProvPort )
+    {
+        this.replProvPort = replProvPort;
     }
 
 
@@ -146,38 +212,68 @@ public class ReplConsumerBean extends Ad
 
 
     /**
-     * @return the searchBaseDn
+     * @return the replAttributes
      */
-    public Dn getSearchBaseDn()
+    public List<String> getReplAttributes()
     {
-        return searchBaseDn;
+        return replAttributes;
     }
 
 
     /**
-     * @param searchBaseDn the searchBaseDn to set
+     * @param replAttributes the replAttribute to set
      */
-    public void setSearchBaseDn(Dn searchBaseDn)
+    public void setReplAttributes( List<String> replAttributes )
     {
-        this.searchBaseDn = searchBaseDn;
+        this.replAttributes = replAttributes;
+    }
+
+
+    /**
+     * @param replAttributes the replAttribute to add
+     */
+    public void addReplAttributes( String... replAttributes )
+    {
+        for ( String at : replAttributes )
+        {
+            this.replAttributes.add( at );
+        }
+    }
+
+    
+    /**
+     * @return the replRefreshInterval
+     */
+    public long getReplRefreshInterval()
+    {
+        return replRefreshInterval;
     }
 
 
     /**
-     * @return the replLastSentCsn
+     * @param replRefreshInterval the replRefreshInterval to set
      */
-    public String getReplLastSentCsn()
+    public void setReplRefreshInterval( long replRefreshInterval )
     {
-        return replLastSentCsn;
+        this.replRefreshInterval = replRefreshInterval;
     }
 
 
     /**
-     * @param replLastSentCsn the replLastSentCsn to set
+     * @return the replRefreshNPersist
      */
-    public void setReplLastSentCsn( String replLastSentCsn )
+    public boolean isReplRefreshNPersist()
     {
-        this.replLastSentCsn = replLastSentCsn;
+        return replRefreshNPersist;
+    }
+
+
+    /**
+     * @param replRefreshNPersist the replRefreshNPersist to set
+     */
+    public void setReplRefreshNPersist( boolean replRefreshNPersist )
+    {
+        this.replRefreshNPersist = replRefreshNPersist;
     }
 
 
@@ -218,20 +314,92 @@ public class ReplConsumerBean extends Ad
 
 
     /**
-     * @return the replRefreshNPersist
+     * @return the replSearchSizeLimit
      */
-    public boolean isReplRefreshNPersist()
+    public int isReplSearchSizeLimit()
     {
-        return replRefreshNPersist;
+        return replSearchSizeLimit;
     }
 
 
     /**
-     * @param replRefreshNPersist the replRefreshNPersist to set
+     * @param replSearchSizeLimit the replSearchSizeLimit to set
      */
-    public void setReplRefreshNPersist( boolean replRefreshNPersist )
+    public void setReplSearchSizeLimit( int replSearchSizeLimit )
     {
-        this.replRefreshNPersist = replRefreshNPersist;
+        this.replSearchSizeLimit = replSearchSizeLimit;
+    }
+
+
+    /**
+     * @return the replSearchTimeOut
+     */
+    public int getReplSearchTimeOut()
+    {
+        return replSearchTimeout;
+    }
+
+
+    /**
+     * @param replSearchTimeOut the replSearchTimeOut to set
+     */
+    public void setReplSearchTimeLimit( int replSearchTimeOut )
+    {
+        this.replSearchTimeout = replSearchTimeOut;
+    }
+
+
+    /**
+     * @return the replUserDn
+     */
+    public String getReplUserDn()
+    {
+        return replUserDn;
+    }
+
+
+    /**
+     * @param replUserDn the replUserDn to set
+     */
+    public void setReplUserDn( String replUserDn )
+    {
+        this.replUserDn = replUserDn;
+    }
+
+
+    /**
+     * @return the replUserPassword
+     */
+    public byte[] getReplUserPassword()
+    {
+        return replUserPassword;
+    }
+
+
+    /**
+     * @param replUserPassword the replUserPassword to set
+     */
+    public void setReplUserPassword( byte[] replUserPassword )
+    {
+        this.replUserPassword = replUserPassword;
+    }
+
+
+    /**
+     * @return the replCookie
+     */
+    public String getReplCookie()
+    {
+        return replCookie;
+    }
+
+
+    /**
+     * @param replCookie the replCookie to set
+     */
+    public void setReplCookie( String replCookie )
+    {
+        this.replCookie = replCookie;
     }
 
 
@@ -274,7 +442,7 @@ public class ReplConsumerBean extends Ad
     /**
      * @return the replPeerCertificate
      */
-    public String getReplPeerCertificate()
+    public byte[] getReplPeerCertificate()
     {
         return replPeerCertificate;
     }
@@ -283,7 +451,7 @@ public class ReplConsumerBean extends Ad
     /**
      * @param replPeerCertificate the replPeerCertificate to set
      */
-    public void setReplPeerCertificate( String replPeerCertificate )
+    public void setReplPeerCertificate( byte[] replPeerCertificate )
     {
         this.replPeerCertificate = replPeerCertificate;
     }
@@ -314,20 +482,29 @@ public class ReplConsumerBean extends Ad
     {
         StringBuilder sb = new StringBuilder();
 
-        sb.append( tabs ).append( "Replication consumer :\n" );
+        sb.append( tabs ).append( "Replication provider :\n" );
         sb.append( super.toString( tabs + "  " ) );
 
+        sb.append( tabs ).append( "  provider ID : " ).append( replConsumerId ).append( '\n' );
+        sb.append( tabs ).append( "  search base Dn : " ).append( searchBaseDn ).append( '\n' );
+        sb.append( tabs ).append( "  provider host name : " ).append( replProvHostName ).append( '\n' );
+        sb.append( tabs ).append( "  provider port : " ).append( replProvPort ).append( '\n' );
+        sb.append( toString( tabs, "  alias dereferencing mode", replAliasDerefMode ) );
+        sb.append( toString( tabs, "  attributes", String.valueOf( replAttributes ) ) );
+        sb.append( tabs ).append( "  refresh interval : " ).append( replRefreshInterval ).append( '\n' );
+        sb.append( toString( tabs, "  refresh and persist mode", replRefreshNPersist ) );
+        sb.append( toString( tabs, "  search scope", replSearchScope ) );
+        sb.append( toString( tabs, "  search filter", replSearchFilter ) );
+        sb.append( tabs ).append( "  search size limit : " ).append( replSearchSizeLimit ).append( '\n' );
+        sb.append( tabs ).append( "  search time limit : " ).append( replSearchTimeout ).append( '\n' );
+        sb.append( toString( tabs, "  user Dn", replUserDn) );
+        sb.append( toString( tabs, "  user password", String.valueOf( replUserPassword ) ) ); // do not reveal the password, just null or not
+        sb.append( toString( tabs, "  cookie", replCookie ) );
         sb.append( tabs ).append( "  consumer implementation's FQCN : " ).append( replConsumerImpl ).append( '\n' );
-        sb.append( tabs ).append( "  consumer ID : " ).append( replConsumerId ).append( '\n' );
-        sb.append( tabs ).append( "  replica ID : " ).append( dsReplicaId ).append( '\n' );
-        sb.append( tabs ).append( "  last sent CSN : " ).append( replLastSentCsn ).append( '\n' );
-        sb.append( tabs ).append( "  search base Dn : " ).append( searchBaseDn.getName() ).append( '\n' );
-        sb.append( tabs ).append( "  search filter : " ).append( replSearchFilter ).append( '\n' );
-        sb.append( tabs ).append( "  search scope : " ).append( replSearchScope ).append( '\n' );
-        sb.append( tabs ).append( "  alias dereferencing mode : " ).append( replAliasDerefMode ).append( '\n' );
+        
+        // a hex dump would be good but printing the address is better to just know null or not
+        sb.append( toString( tabs, "  peer certificate", String.valueOf( replPeerCertificate ) ) );
 
-        sb.append( toString( tabs, "  peer certificate", replPeerCertificate ) );
-        sb.append( toString( tabs, "  refresh and persist mode", replRefreshNPersist ) );
         sb.append( toString( tabs, "  struct certivicate validation", replStrictCertValidation ) );
         sb.append( toString( tabs, "  use TLS", replUseTls ) );
 

Modified: directory/apacheds/trunk/server-config/src/test/resources/ldapServer.ldif
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/test/resources/ldapServer.ldif?rev=1132991&r1=1132990&r2=1132991&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/test/resources/ldapServer.ldif (original)
+++ directory/apacheds/trunk/server-config/src/test/resources/ldapServer.ldif Tue Jun  7 13:01:58 2011
@@ -175,34 +175,21 @@ objectclass: top
 objectclass: ads-base
 objectclass: ads-replConsumer
 ads-replConsumerId: test
-ads-dsReplicaId: test
+ads-replAttributes: acme
 ads-replAliasDerefMode: NEVER
 ads-searchBaseDN: ads-directoryServiceId=default,ou=config
 ads-replLastSentCsn: 20100509111949.005000Z#000000#000#000000
+ads-replProvHostName: localhost
 ads-replSearchScope: SUB
 ads-replSearchFilter: (&(objectClass=top)(ou=test))
+ads-replProvPort: 12345
 ads-replRefreshNPersist: TRUE
 ads-replUseTls: TRUE
 ads-replStrictCertValidation: TRUE
-ads-replPeerCertificate: ABCD
-
-dn: ads-replProviderId=test,ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config
-objectclass: top
-objectclass: ads-base
-objectclass: ads-replProvider
-ads-replProviderId: test
-ads-dsReplicaId: test
-ads-searchBaseDN: ads-directoryServiceId=default,ou=config
-ads-replProvHostName: localhost
-ads-replProvPort: 12345
 ads-replAliasDerefMode: NEVER
-ads-replAttribute: acme
 ads-replRefreshInterval: 100
-ads-replRefreshNPersist: TRUE
-ads-replSearchScope: SUB
-ads-replSearchFilter: (&(objectClass=top)(ou=test))
-ads-replSearchSizeLimit: 100
-ads-replSearchTimeOut: 100
-ads-replUserDn: ou=config
 ads-replUserPassword: secret
 ads-replCookie: abcdef
+ads-replUserDn: ou=config
+ads-replSearchSizeLimit: 100
+ads-replSearchTimeOut: 100

Modified: directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/ClientServerReplicationIT.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/ClientServerReplicationIT.java?rev=1132991&r1=1132990&r2=1132991&view=diff
==============================================================================
--- directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/ClientServerReplicationIT.java (original)
+++ directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/ClientServerReplicationIT.java Tue Jun  7 13:01:58 2011
@@ -353,13 +353,13 @@ public class ClientServerReplicationIT
                     config.setConfigEntryDn( configDn );
                     
                     Entry provConfigEntry = new DefaultEntry( ds.getSchemaManager(), configDn );
-                    provConfigEntry.add( "objectClass", "ads-replProvider" );
-                    provConfigEntry.add( "ads-replProviderId", "localhost" );
+                    provConfigEntry.add( "objectClass", "ads-replConsumer" );
+                    provConfigEntry.add( "ads-replConsumerId", "localhost" );
                     provConfigEntry.add( "ads-searchBaseDN", config.getBaseDn() );
                     provConfigEntry.add( "ads-replProvHostName", config.getProviderHost() );
                     provConfigEntry.add( "ads-replProvPort", String.valueOf( config.getPort() ) );
                     provConfigEntry.add( "ads-replAliasDerefMode", config.getAliasDerefMode().getJndiValue() );
-                    provConfigEntry.add( "ads-replAttribute", config.getAttributes() );
+                    provConfigEntry.add( "ads-replAttributes", config.getAttributes() );
                     provConfigEntry.add( "ads-replRefreshInterval", String.valueOf( config.getRefreshInterval() ) );
                     provConfigEntry.add( "ads-replRefreshNPersist", String.valueOf( config.isRefreshNPersist() ) );
                     provConfigEntry.add( "ads-replSearchScope", config.getSearchScope().getLdapUrlValue() );

Modified: directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java?rev=1132991&r1=1132990&r2=1132991&view=diff
==============================================================================
--- directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java (original)
+++ directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java Tue Jun  7 13:01:58 2011
@@ -83,6 +83,7 @@ import org.apache.directory.server.ldap.
 import org.apache.directory.server.ldap.handlers.bind.ntlm.NtlmMechanismHandler;
 import org.apache.directory.server.ldap.replication.ReplicationConsumer;
 import org.apache.directory.server.ldap.replication.ReplicationRequestHandler;
+import org.apache.directory.server.ldap.replication.ReplicationTrustManager;
 import org.apache.directory.server.ldap.replication.SyncReplConsumer;
 import org.apache.directory.server.ldap.replication.SyncreplConfiguration;
 import org.apache.directory.server.ntp.NtpServer;
@@ -988,7 +989,6 @@ public class ServiceBuilder
         {
             String className = replBean.getReplConsumerImpl();
             
-            
             ReplicationConsumer consumer = null;
             Class<?> consumerClass = null;
             SyncreplConfiguration config = null;
@@ -1008,19 +1008,33 @@ public class ServiceBuilder
                 
                 // we don't support any other configuration impls atm, but this configuration should suffice for many needs
                 config = new SyncreplConfiguration();
-                
-                config.setReplicaId( Integer.parseInt( replBean.getDsreplicaid() ) );
+
+                config.setBaseDn( replBean.getSearchBaseDn() );
+                config.setProviderHost( replBean.getReplProvHostName() );
+                config.setPort( replBean.getReplProvPort() );
                 config.setAliasDerefMode( AliasDerefMode.getDerefMode( replBean.getReplAliasDerefMode() ) );
-                config.setBaseDn( replBean.getSearchBaseDn().getName() );
+                config.setAttributes( replBean.getReplAttributes().toArray( new String[0] ) );
+                config.setRefreshInterval( replBean.getReplRefreshInterval() );
+                config.setRefreshNPersist( replBean.isReplRefreshNPersist() );
                 
                 int scope = SearchScope.getSearchScope( replBean.getReplSearchScope() );
                 config.setSearchScope( SearchScope.getSearchScope( scope ) );
                 
                 config.setFilter( replBean.getReplSearchFilter() );
-                config.setRefreshNPersist( replBean.isReplRefreshNPersist() );
+                config.setSearchTimeout( replBean.getReplSearchTimeOut() );
+                config.setReplUserDn( replBean.getReplUserDn() );
+                config.setReplUserPassword( replBean.getReplUserPassword() );
+                
                 config.setUseTls( replBean.isReplUseTls() );
                 config.setStrictCertVerification( replBean.isReplStrictCertValidation() );
                 
+                config.setConfigEntryDn( replBean.getDn() );
+                
+                if ( replBean.getReplPeerCertificate() != null )
+                {
+                    ReplicationTrustManager.addCertificate( replBean.getReplConsumerId(), replBean.getReplPeerCertificate() );
+                }
+                
                 consumer.setConfig( config );
                 
                 lst.add( consumer );

Modified: directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou=schema/cn=adsconfig/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.828.ldif
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou%3Dschema/cn%3Dadsconfig/ou%3Dattributetypes/m-oid%3D1.3.6.1.4.1.18060.0.4.1.2.828.ldif?rev=1132991&r1=1132990&r2=1132991&view=diff
==============================================================================
--- directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou=schema/cn=adsconfig/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.828.ldif (original)
+++ directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou=schema/cn=adsconfig/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.828.ldif Tue Jun  7 13:01:58 2011
@@ -2,13 +2,13 @@ version: 1
 dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.828,ou=attributeTypes,cn=adsconfig,ou=schema
 m-ordering: caseExactOrderingMatch
 m-oid: 1.3.6.1.4.1.18060.0.4.1.2.828
-m-description: the attribute to be replicated
+m-description: the attributes to be replicated
 m-substr: caseIgnoreIA5SubstringsMatch
 objectclass: metaAttributeType
 objectclass: metaTop
 objectclass: top
 m-syntax: 1.3.6.1.4.1.1466.115.121.1.15
-m-name: ads-replAttribute
+m-name: ads-replAttributes
 creatorsname: uid=admin,ou=system
 m-equality: caseIgnoreIA5Match
 m-length: 0

Modified: directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou=schema/cn=adsconfig/ou=objectclasses/m-oid=1.3.6.1.4.1.18060.0.4.1.3.805.ldif
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou%3Dschema/cn%3Dadsconfig/ou%3Dobjectclasses/m-oid%3D1.3.6.1.4.1.18060.0.4.1.3.805.ldif?rev=1132991&r1=1132990&r2=1132991&view=diff
==============================================================================
--- directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou=schema/cn=adsconfig/ou=objectclasses/m-oid=1.3.6.1.4.1.18060.0.4.1.3.805.ldif (original)
+++ directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou=schema/cn=adsconfig/ou=objectclasses/m-oid=1.3.6.1.4.1.18060.0.4.1.3.805.ldif Tue Jun  7 13:01:58 2011
@@ -1,22 +1,18 @@
 version: 1
 dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.805,ou=objectClasses,cn=adsconfig,ou=schema
-m-must: ads-replConsumerId
 m-must: ads-dsReplicaId
 m-must: ads-replAliasDerefMode
 m-must: ads-searchBaseDN
-m-may: ads-replLastSentCsn
 m-must: ads-replSearchScope
 m-must: ads-replSearchFilter
+m-must: ads-replRefreshNPersist
+m-may: ads-replLastSentCsn
+m-may: ads-replCookie
 m-oid: 1.3.6.1.4.1.18060.0.4.1.3.805
 m-supobjectclass: ads-base
-m-description: class to hold a replication consumer details
+m-description: class to hold a replication consumer event log details
 objectclass: metaObjectClass
 objectclass: metaTop
 objectclass: top
-m-name: ads-replConsumer
+m-name: ads-replEventLog
 creatorsname: uid=admin,ou=system
-m-may: ads-replRefreshNPersist
-m-may: ads-replUseTls
-m-may: ads-replStrictCertValidation
-m-may: ads-replPeerCertificate
-m-may: ads-replConsumerImpl

Modified: directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou=schema/cn=adsconfig/ou=objectclasses/m-oid=1.3.6.1.4.1.18060.0.4.1.3.806.ldif
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou%3Dschema/cn%3Dadsconfig/ou%3Dobjectclasses/m-oid%3D1.3.6.1.4.1.18060.0.4.1.3.806.ldif?rev=1132991&r1=1132990&r2=1132991&view=diff
==============================================================================
--- directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou=schema/cn=adsconfig/ou=objectclasses/m-oid=1.3.6.1.4.1.18060.0.4.1.3.806.ldif (original)
+++ directory/shared/trunk/ldap/schema/data/src/main/resources/schema/ou=schema/cn=adsconfig/ou=objectclasses/m-oid=1.3.6.1.4.1.18060.0.4.1.3.806.ldif Tue Jun  7 13:01:58 2011
@@ -2,18 +2,18 @@ version: 1
 dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.806,ou=objectClasses,cn=adsconfig,ou=schema
 m-oid: 1.3.6.1.4.1.18060.0.4.1.3.806
 m-supobjectclass: ads-base
-m-description: replication provider configuration
+m-description: replication consumer configuration
 objectclass: metaObjectClass
 objectclass: metaTop
 objectclass: top
-m-name: ads-replProvider
+m-name: ads-replConsumer
 creatorsname: uid=admin,ou=system
-m-must: ads-replProviderId
+m-must: ads-replConsumerId
 m-must: ads-searchBaseDN
 m-must: ads-replProvHostName
 m-must: ads-replProvPort
 m-must: ads-replAliasDerefMode
-m-must: ads-replAttribute
+m-must: ads-replAttributes
 m-must: ads-replRefreshInterval
 m-must: ads-replRefreshNPersist
 m-must: ads-replSearchScope
@@ -22,4 +22,8 @@ m-must: ads-replSearchSizeLimit
 m-must: ads-replSearchTimeOut
 m-must: ads-replUserDn
 m-must: ads-replUserPassword
+m-may: ads-replUseTls
+m-may: ads-replStrictCertValidation
+m-may: ads-replPeerCertificate
+m-may: ads-replConsumerImpl
 m-may: ads-replCookie