opends/src/server/org/opends/server/replication/plugin/ExternalChangelogDomain.java
@@ -66,8 +66,8 @@ if (configuration.getECLInclude() != null) { HashSet<String> attrNames = new HashSet<String>(0); for (AttributeType eclInclude : configuration.getECLInclude()) attrNames.add(eclInclude.getNormalizedPrimaryName()); for (AttributeType eclIncludeAttribute : configuration.getECLInclude()) attrNames.add(eclIncludeAttribute.getNormalizedPrimaryName()); domain.setEclInclude(domain.getServerId(), attrNames); } } @@ -129,7 +129,7 @@ HashSet<String> attrNames = new HashSet<String>(0); for (AttributeType eclInclude : configuration.getECLInclude()) attrNames.add(eclInclude.getNormalizedPrimaryName()); domain.setEclInclude(domain.getServerId(), attrNames); domain.changeConfig(attrNames); return new ConfigChangeResult(ResultCode.SUCCESS, false); } catch (Exception e) opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
@@ -563,7 +563,7 @@ setGroupId((byte)configuration.getGroupId()); setURLs(configuration.getReferralsUrl()); createECLDomainCfg(configuration); storeECLConfiguration(configuration); /* * Modify conflicts are solved for all suffixes but the schema suffix @@ -4235,7 +4235,7 @@ try { createECLDomainCfg(configuration); storeECLConfiguration(configuration); } catch(Exception e) { @@ -4341,29 +4341,34 @@ } /** * Create the ECl configuration. * @param configuration The provided configuration. * @throws ConfigException a. * Store the provided ECL configuration for the domain. * @param domCfg The provided configuration. * @throws ConfigException When an error occured. */ public void createECLDomainCfg(ReplicationDomainCfg configuration) public void storeECLConfiguration(ReplicationDomainCfg domCfg) throws ConfigException { ExternalChangelogDomainCfg eclDomCfg = null; // create the ecl config if it does not exist // There may ot be any config entry related to this domain in some // unit test cases try { ExternalChangelogDomainCfg eclDomCfg = null; if (DirectoryServer.getConfigHandler().entryExists(configDn)) { try { eclDomCfg = configuration.getExternalChangelogDomain(); { eclDomCfg = domCfg.getExternalChangelogDomain(); }catch(Exception e) {} // domain with no config entry only when running unit tests if (eclDomCfg==null) { // no ECL config provided hence create a default one // create the default one DN eclConfigEntryDN = DN.decode("cn=external changelog," + configDn); if (!DirectoryServer.getConfigHandler().entryExists(eclConfigEntryDN)) { // no entry exist yet for the ECL config for this domain // create it String ldif = makeLdif( "dn: cn=external changelog," + configDn, "objectClass: top", @@ -4379,9 +4384,18 @@ } } } eclDomCfg = configuration.getExternalChangelogDomain(); eclDomCfg = domCfg.getExternalChangelogDomain(); if (eclDomain != null) { eclDomain.applyConfigurationChange(eclDomCfg); } else { // Create the ECL domain object eclDomain = new ExternalChangelogDomain(this, eclDomCfg); } } catch(Exception de) { throw new ConfigException( opends/src/server/org/opends/server/replication/service/ReplicationDomain.java
@@ -2445,7 +2445,7 @@ } /** * Change the ReplicationDomain parameters. * Change some ReplicationDomain parameters. * * @param replicationServers The new list of Replication Servers that this * domain should now use. @@ -2473,6 +2473,44 @@ } } /** * Change some ReplicationDomain parameters : the ECL include attribute. * * @param newECLInclude The new ECL attribute. */ public void changeConfig(Set<String> newECLInclude) { boolean configECLIncludeChanged = false; Set<String> currentECLInclude = this.getEclInclude(serverID); if (newECLInclude.size() != currentECLInclude.size()) { configECLIncludeChanged = true; } else { // compare current config and new config for (String attr : currentECLInclude) { if (!newECLInclude.contains(attr)) { configECLIncludeChanged = true; break; } } } if (configECLIncludeChanged) { // set new config this.setEclInclude(this.serverID, newECLInclude); if (broker != null) { disableService(); enableService(); } } } /** * This method should trigger an export of the replicated data. @@ -2918,7 +2956,6 @@ */ public Set<String> getEclInclude() { System.out.println("cdECLIn=" + crossServersECLIncludes); return crossServersECLIncludes; } opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java
@@ -22,7 +22,7 @@ * CDDL HEADER END * * * Copyright 2008-2009 Sun Microsystems, Inc. * Copyright 2008-2010 Sun Microsystems, Inc. */ package org.opends.server.workflowelement.externalchangelog; @@ -36,7 +36,6 @@ import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.getExceptionMessage; import static org.opends.server.util.StaticUtils.needsBase64Encoding; import static org.opends.server.util.StaticUtils.*; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -909,13 +908,13 @@ if (draftChangenumber == 0) { // Draft uncompat mode dnString = "cn="+ changeNumber +"," + serviceID + "," + ServerConstants.DN_EXTERNAL_CHANGELOG_ROOT; dnString = "replicationcsn="+ changeNumber +"," + serviceID + "," + ServerConstants.DN_EXTERNAL_CHANGELOG_ROOT; } else { // Draft compat mode dnString = "cn="+ draftChangenumber + "," + dnString = "changenumber="+ draftChangenumber + "," + ServerConstants.DN_EXTERNAL_CHANGELOG_ROOT; } HashMap<ObjectClass,String> oClasses = opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java
@@ -1575,7 +1575,7 @@ { // check the DEL entry has the right content assertTrue(resultEntry.getDN().toNormalizedString().equalsIgnoreCase( "cn=" + cn1 + "," + TEST_ROOT_DN_STRING + ",cn=changelog")); "replicationcsn=" + cn1 + "," + TEST_ROOT_DN_STRING + ",cn=changelog")); checkValue(resultEntry,"replicationcsn",cn1.toString()); checkValue(resultEntry,"replicaidentifier","1201"); checkValue(resultEntry,"targetdn","uid="+tn+"1," + TEST_ROOT_DN_STRING); @@ -1587,7 +1587,7 @@ { // check the ADD entry has the right content assertTrue(resultEntry.getDN().toNormalizedString().equalsIgnoreCase( "cn=" + cn2 + "," + TEST_ROOT_DN_STRING + ",cn=changelog")); "replicationcsn=" + cn2 + "," + TEST_ROOT_DN_STRING + ",cn=changelog")); String expectedValue1 = "objectClass: domain\nobjectClass: top\n" + "entryUUID: 11111111-1111-1111-1111-111111111111\n\n"; String expectedValue2 = "entryUUID: 11111111-1111-1111-1111-111111111111\n" + @@ -1604,7 +1604,7 @@ { // check the MOD entry has the right content assertTrue(resultEntry.getDN().toNormalizedString().equalsIgnoreCase( "cn=" + cn3 + "," + TEST_ROOT_DN_STRING + ",cn=changelog")); "replicationcsn=" + cn3 + "," + TEST_ROOT_DN_STRING + ",cn=changelog")); String expectedValue = "replace: description\n" + "description: new value\n-\n"; checkValue(resultEntry,"changes",expectedValue); @@ -1619,7 +1619,7 @@ { // check the MODDN entry has the right content assertTrue(resultEntry.getDN().toNormalizedString().equalsIgnoreCase( "cn=" + cn4 + "," + TEST_ROOT_DN_STRING + ",cn=changelog")); "replicationcsn=" + cn4 + "," + TEST_ROOT_DN_STRING + ",cn=changelog")); checkValue(resultEntry,"replicationcsn",cn4.toString()); checkValue(resultEntry,"replicaidentifier","1201"); checkValue(resultEntry,"targetdn","uid="+tn+"4," + TEST_ROOT_DN_STRING); @@ -2987,9 +2987,9 @@ { // check the DEL entry has the right content assertTrue(resultEntry.getDN().toNormalizedString().equalsIgnoreCase( "cn="+String.valueOf(firstDraftChangeNumber+0)+",cn=changelog"), "changenumber="+String.valueOf(firstDraftChangeNumber+0)+",cn=changelog"), "Result entry DN : actual=" + resultEntry.getDN().toNormalizedString() + " expected=" + "cn="+String.valueOf(firstDraftChangeNumber+0)+",cn=changelog"); " expected=" + "changenumber="+String.valueOf(firstDraftChangeNumber+0)+",cn=changelog"); checkValue(resultEntry,"replicationcsn",cn1.toString()); checkValue(resultEntry,"replicaidentifier","1201"); checkValue(resultEntry,"targetdn","uid="+tn+"1," + TEST_ROOT_DN_STRING); @@ -3002,7 +3002,7 @@ { // check the ADD entry has the right content assertTrue(resultEntry.getDN().toNormalizedString().equalsIgnoreCase( "cn="+String.valueOf(firstDraftChangeNumber+1)+",cn=changelog")); "changenumber="+String.valueOf(firstDraftChangeNumber+1)+",cn=changelog")); String expectedValue1 = "objectClass: domain\nobjectClass: top\n" + "entryUUID: "+user1entryUUID+"\n\n"; String expectedValue2 = "entryUUID: "+user1entryUUID+"\n" + @@ -3019,7 +3019,7 @@ { // check the MOD entry has the right content assertTrue(resultEntry.getDN().toNormalizedString().equalsIgnoreCase( "cn="+String.valueOf(firstDraftChangeNumber+2)+",cn=changelog")); "changenumber="+String.valueOf(firstDraftChangeNumber+2)+",cn=changelog")); String expectedValue = "replace: description\n" + "description: new value\n-\n"; checkValue(resultEntry,"changes",expectedValue); @@ -3034,7 +3034,7 @@ { // check the MODDN entry has the right content assertTrue(resultEntry.getDN().toNormalizedString().equalsIgnoreCase( "cn="+String.valueOf(firstDraftChangeNumber+3)+",cn=changelog")); "changenumber="+String.valueOf(firstDraftChangeNumber+3)+",cn=changelog")); checkValue(resultEntry,"replicationcsn",cn4.toString()); checkValue(resultEntry,"replicaidentifier","1201"); checkValue(resultEntry,"targetdn","uid="+tn+"4," + TEST_ROOT_DN_STRING); @@ -3082,7 +3082,7 @@ { // check the DEL entry has the right content assertTrue(resultEntry.getDN().toNormalizedString().equalsIgnoreCase( "cn="+String.valueOf(firstDraftChangeNumber+0)+",cn=changelog")); "changenumber="+String.valueOf(firstDraftChangeNumber+0)+",cn=changelog")); checkValue(resultEntry,"replicationcsn",cn1.toString()); checkValue(resultEntry,"replicaidentifier","1201"); checkValue(resultEntry,"targetdn","uid="+tn+"1," + TEST_ROOT_DN_STRING); @@ -3095,7 +3095,7 @@ { // check the ADD entry has the right content assertTrue(resultEntry.getDN().toNormalizedString().equalsIgnoreCase( "cn="+String.valueOf(firstDraftChangeNumber+1)+",cn=changelog")); "changenumber="+String.valueOf(firstDraftChangeNumber+1)+",cn=changelog")); String expectedValue1 = "objectClass: domain\nobjectClass: top\n" + "entryUUID: "+user1entryUUID+"\n\n"; String expectedValue2 = "entryUUID: "+user1entryUUID+"\n" + @@ -3112,7 +3112,7 @@ { // check the MOD entry has the right content assertTrue(resultEntry.getDN().toNormalizedString().equalsIgnoreCase( "cn="+String.valueOf(firstDraftChangeNumber+2)+",cn=changelog")); "changenumber="+String.valueOf(firstDraftChangeNumber+2)+",cn=changelog")); String expectedValue = "replace: description\n" + "description: new value\n-\n"; checkValue(resultEntry,"changes",expectedValue); @@ -3127,7 +3127,7 @@ { // check the MODDN entry has the right content assertTrue(resultEntry.getDN().toNormalizedString().equalsIgnoreCase( "cn="+String.valueOf(firstDraftChangeNumber+3)+",cn=changelog")); "changenumber="+String.valueOf(firstDraftChangeNumber+3)+",cn=changelog")); checkValue(resultEntry,"replicationcsn",cn4.toString()); checkValue(resultEntry,"replicaidentifier","1201"); checkValue(resultEntry,"targetdn","uid="+tn+"4," + TEST_ROOT_DN_STRING); @@ -3201,7 +3201,7 @@ ldifWriter.writeEntry(resultEntry); // check the entry has the right content assertTrue(resultEntry.getDN().toNormalizedString().equalsIgnoreCase( "cn=6,cn=changelog")); "changenumber=6,cn=changelog")); checkValue(resultEntry,"replicationcsn",gblCN.toString()); checkValue(resultEntry,"replicaidentifier","1201"); checkValue(resultEntry,"changetype","add");