From 18bcdc6dd02ec91f32ba9922def2ffb3e4e38073 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 12 Jul 2016 07:38:41 +0000
Subject: [PATCH] Use DNs in dsreplication

---
 opendj-server-legacy/src/main/java/org/opends/admin/ads/ADSContext.java |   88 ++++++++++++++++++++++---------------------
 1 files changed, 45 insertions(+), 43 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/admin/ads/ADSContext.java b/opendj-server-legacy/src/main/java/org/opends/admin/ads/ADSContext.java
index 1e94dd9..0645cbe 100644
--- a/opendj-server-legacy/src/main/java/org/opends/admin/ads/ADSContext.java
+++ b/opendj-server-legacy/src/main/java/org/opends/admin/ads/ADSContext.java
@@ -16,6 +16,7 @@
  */
 package org.opends.admin.ads;
 
+import static org.forgerock.opendj.ldap.Filter.*;
 import static org.forgerock.opendj.ldap.ModificationType.*;
 import static org.forgerock.opendj.ldap.SearchScope.*;
 import static org.forgerock.opendj.ldap.requests.Requests.*;
@@ -45,6 +46,7 @@
 import org.forgerock.opendj.ldap.Connection;
 import org.forgerock.opendj.ldap.DN;
 import org.forgerock.opendj.ldap.EntryNotFoundException;
+import org.forgerock.opendj.ldap.Filter;
 import org.forgerock.opendj.ldap.LdapException;
 import org.forgerock.opendj.ldap.LinkedAttribute;
 import org.forgerock.opendj.ldap.Modification;
@@ -324,7 +326,7 @@
    */
   public void registerServer(Map<ServerProperty, Object> serverProperties) throws ADSContextException
   {
-    String dn = makeDNFromServerProperties(serverProperties);
+    DN dn = makeDNFromServerProperties(serverProperties);
 
     AddRequest request = newAddRequest(dn);
     for (ServerProperty prop : serverProperties.keySet())
@@ -406,7 +408,7 @@
   private void updateServer(Map<ServerProperty, Object> serverProperties, String newServerId)
       throws ADSContextException
   {
-    String dn = makeDNFromServerProperties(serverProperties);
+    DN dn = makeDNFromServerProperties(serverProperties);
 
     try
     {
@@ -414,8 +416,8 @@
       {
         Map<ServerProperty, Object> newServerProps = new HashMap<>(serverProperties);
         newServerProps.put(ServerProperty.ID, newServerId);
-        String newDn = makeDNFromServerProperties(newServerProps);
-        throwIfNotSuccess(connectionWrapper.getConnection().modifyDN(dn, newDn));
+        DN newDn = makeDNFromServerProperties(newServerProps);
+        throwIfNotSuccess(connectionWrapper.getConnection().modifyDN(dn.toString(), newDn.toString()));
         dn = newDn;
         serverProperties.put(ServerProperty.ID, newServerId);
       }
@@ -462,7 +464,7 @@
    */
   public void unregisterServer(Map<ServerProperty, Object> serverProperties) throws ADSContextException
   {
-    String dn = makeDNFromServerProperties(serverProperties);
+    DN dn = makeDNFromServerProperties(serverProperties);
     Connection conn = connectionWrapper.getConnection();
     try
     {
@@ -481,7 +483,7 @@
         }
       }
 
-      throwIfNotSuccess(conn.delete(dn));
+      throwIfNotSuccess(conn.delete(newDeleteRequest(dn)));
     }
     catch (EntryNotFoundException x)
     {
@@ -497,7 +499,7 @@
     {
       // Unregister the server in server groups
       String memberAttrName = ServerGroupProperty.MEMBERS.getAttributeName();
-      String filter = "(" + memberAttrName + "=cn=" + serverID + ")";
+      Filter filter = Filter.valueOf("(" + memberAttrName + "=cn=" + serverID + ")");
       SearchRequest request = newSearchRequest(getServerGroupContainerDN(), SINGLE_LEVEL, filter);
       try (ConnectionEntryReader entryReader = conn.search(request);)
       {
@@ -668,7 +670,7 @@
   {
     Set<Map<ServerProperty, Object>> result = new HashSet<>();
 
-    SearchRequest request = newSearchRequest(getServerContainerDN(), SINGLE_LEVEL, "(objectclass=*)");
+    SearchRequest request = newSearchRequest(getServerContainerDN(), SINGLE_LEVEL, objectClassPresent());
     try (ConnectionEntryReader entryReader = connectionWrapper.getConnection().search(request))
     {
       while (entryReader.hasNext())
@@ -679,7 +681,7 @@
         if (keyId != null)
         {
           SearchRequest request2 = newSearchRequest(
-              getInstanceKeysContainerDN(), SINGLE_LEVEL, "(ds-cfg-key-id=" + keyId + ")",
+              getInstanceKeysContainerDN(), SINGLE_LEVEL, Filter.valueOf("(ds-cfg-key-id=" + keyId + ")"),
               "ds-cfg-public-key-certificate;binary");
           try (ConnectionEntryReader entryReader2 = connectionWrapper.getConnection().search(request2))
           {
@@ -819,7 +821,7 @@
    */
   private Set<Map<ServerGroupProperty, Object>> readServerGroupRegistry() throws ADSContextException
   {
-    SearchRequest request = newSearchRequest(getServerGroupContainerDN(), SINGLE_LEVEL, "(objectclass=*)");
+    SearchRequest request = newSearchRequest(getServerGroupContainerDN(), SINGLE_LEVEL, objectClassPresent());
     try (ConnectionEntryReader entryReader = connectionWrapper.getConnection().search(request))
     {
       Set<Map<ServerGroupProperty, Object>> result = new HashSet<>();
@@ -855,7 +857,7 @@
   {
     Set<Map<AdministratorProperty, Object>> result = new HashSet<>();
     SearchRequest request = newSearchRequest(
-        getAdministratorContainerDN(), SINGLE_LEVEL, "(objectclass=*)",
+        getAdministratorContainerDN(), SINGLE_LEVEL, objectClassPresent(),
         "cn", "userpassword", "ds-privilege-name", "description");
     try (ConnectionEntryReader entryReader = connectionWrapper.getConnection().search(request))
     {
@@ -954,11 +956,11 @@
    */
   public void removeAdminData(boolean removeAdministrators) throws ADSContextException
   {
-    String[] dns = { getServerContainerDN(), getServerGroupContainerDN(),
+    DN[] dns = { getServerContainerDN(), getServerGroupContainerDN(),
       removeAdministrators ? getAdministratorContainerDN() : null };
     try
     {
-      for (String dn : dns)
+      for (DN dn : dns)
       {
         if (dn != null)
         {
@@ -990,7 +992,7 @@
    */
   public boolean hasAdminData() throws ADSContextException
   {
-    String[] dns = { getAdministratorContainerDN(), getAllServerGroupDN(), getServerContainerDN(),
+    DN[] dns = { getAdministratorContainerDN(), getAllServerGroupDN(), getServerContainerDN(),
       getInstanceKeysContainerDN(), getSecretKeysContainerDN() };
     boolean hasAdminData = true;
     for (int i = 0; i < dns.length && hasAdminData; i++)
@@ -1007,9 +1009,9 @@
    *          the UID to be used to generate the DN.
    * @return the DN of the administrator for the given UID:
    */
-  public static String getAdministratorDN(String uid)
+  public static DN getAdministratorDN(String uid)
   {
-    return "cn=" + Rdn.escapeValue(uid) + "," + getAdministratorContainerDN();
+    return DN.valueOf("cn=" + Rdn.escapeValue(uid) + "," + getAdministratorContainerDN());
   }
 
   /**
@@ -1053,10 +1055,10 @@
    */
   public void deleteAdministrator(Map<AdministratorProperty, Object> adminProperties) throws ADSContextException
   {
-    String dnCentralAdmin = getAdministratorDN(getAdministratorUID(adminProperties));
+    DN dnCentralAdmin = getAdministratorDN(getAdministratorUID(adminProperties));
     try
     {
-      throwIfNotSuccess(connectionWrapper.getConnection().delete(dnCentralAdmin));
+      throwIfNotSuccess(connectionWrapper.getConnection().delete(newDeleteRequest(dnCentralAdmin)));
     }
     catch (EntryNotFoundException x)
     {
@@ -1077,9 +1079,9 @@
    *
    * @return the DN of the suffix that contains the administration data.
    */
-  public static String getAdministrationSuffixDN()
+  public static DN getAdministrationSuffixDN()
   {
-    return "cn=admin data";
+    return DN.valueOf("cn=admin data");
   }
 
   /**
@@ -1095,9 +1097,9 @@
    * @throws ADSContextException
    *           if something goes wrong.
    */
-  private static String makeDNFromHostnameAndPath(String hostname, String ipath) throws ADSContextException
+  private static DN makeDNFromHostnameAndPath(String hostname, String ipath) throws ADSContextException
   {
-    return "cn=" + Rdn.escapeValue(hostname + "@" + ipath) + "," + getServerContainerDN();
+    return DN.valueOf("cn=" + Rdn.escapeValue(hostname + "@" + ipath) + "," + getServerContainerDN());
   }
 
   /**
@@ -1111,9 +1113,9 @@
    * @throws ADSContextException
    *           if something goes wrong.
    */
-  private static String makeDNFromServerUniqueId(String serverUniqueId) throws ADSContextException
+  private static DN makeDNFromServerUniqueId(String serverUniqueId) throws ADSContextException
   {
-    return "cn=" + Rdn.escapeValue(serverUniqueId) + "," + getServerContainerDN();
+    return DN.valueOf("cn=" + Rdn.escapeValue(serverUniqueId) + "," + getServerContainerDN());
   }
 
   /**
@@ -1149,7 +1151,7 @@
    * @throws ADSContextException
    *           if something goes wrong.
    */
-  private static String makeDNFromServerProperties(Map<ServerProperty, Object> serverProperties)
+  private static DN makeDNFromServerProperties(Map<ServerProperty, Object> serverProperties)
       throws ADSContextException
   {
     String serverID = getServerID(serverProperties);
@@ -1427,9 +1429,9 @@
    *
    * @return the parent entry of the server entries.
    */
-  private static String getServerContainerDN()
+  private static DN getServerContainerDN()
   {
-    return "cn=Servers," + getAdministrationSuffixDN();
+    return DN.valueOf("cn=Servers," + getAdministrationSuffixDN());
   }
 
   /**
@@ -1437,9 +1439,9 @@
    *
    * @return the parent entry of the administrator entries.
    */
-  public static String getAdministratorContainerDN()
+  public static DN getAdministratorContainerDN()
   {
-    return "cn=Administrators," + getAdministrationSuffixDN();
+    return DN.valueOf("cn=Administrators," + getAdministrationSuffixDN());
   }
 
   /**
@@ -1447,9 +1449,9 @@
    *
    * @return the parent entry of the server group entries.
    */
-  private static String getServerGroupContainerDN()
+  private static DN getServerGroupContainerDN()
   {
-    return "cn=Server Groups," + getAdministrationSuffixDN();
+    return DN.valueOf("cn=Server Groups," + getAdministrationSuffixDN());
   }
 
   /**
@@ -1457,9 +1459,9 @@
    *
    * @return the all server group entry DN.
    */
-  private static String getAllServerGroupDN()
+  private static DN getAllServerGroupDN()
   {
-    return "cn=" + Rdn.escapeValue(ALL_SERVERGROUP_NAME) + "," + getServerGroupContainerDN();
+    return DN.valueOf("cn=" + Rdn.escapeValue(ALL_SERVERGROUP_NAME) + "," + getServerGroupContainerDN());
   }
 
   /**
@@ -1577,9 +1579,9 @@
    * @throws ADSContextException
    *           if an error occurred while checking if the entry exists or not.
    */
-  private boolean isExistingEntry(String dn) throws ADSContextException
+  private boolean isExistingEntry(DN dn) throws ADSContextException
   {
-    SearchRequest request = newSearchRequest(dn, BASE_OBJECT, "(objectclass=*)", NO_ATTRIBUTES);
+    SearchRequest request = newSearchRequest(dn, BASE_OBJECT, objectClassPresent(), NO_ATTRIBUTES);
     try (ConnectionEntryReader entryReader = getConnection().getConnection().search(request))
     {
       while (entryReader.hasNext())
@@ -1611,7 +1613,7 @@
    * @throws ADSContextException
    *           if the entry could not be created.
    */
-  private void createContainerEntry(String dn) throws ADSContextException
+  private void createContainerEntry(DN dn) throws ADSContextException
   {
     createEntry(newAddRequest(dn).addAttribute("objectclass", "top", "ds-cfg-branch"));
   }
@@ -1721,9 +1723,9 @@
    *
    * @return the parent entry of the server key entries in ADS.
    */
-  static String getInstanceKeysContainerDN()
+  static DN getInstanceKeysContainerDN()
   {
-    return "cn=instance keys," + getAdministrationSuffixDN();
+    return DN.valueOf("cn=instance keys," + getAdministrationSuffixDN());
   }
 
   /**
@@ -1731,9 +1733,9 @@
    *
    * @return the parent entry of the secret key entries in ADS.
    */
-  private static String getSecretKeysContainerDN()
+  private static DN getSecretKeysContainerDN()
   {
-    return "cn=secret keys," + getAdministrationSuffixDN();
+    return DN.valueOf("cn=secret keys," + getAdministrationSuffixDN());
   }
 
   /**
@@ -1774,7 +1776,7 @@
    * @throws ADSContextException
    *           In case there is a problem registering the instance public key certificate ID
    */
-  private void registerInstanceKeyCertificate(Map<ServerProperty, Object> serverProperties, String serverEntryDn)
+  private void registerInstanceKeyCertificate(Map<ServerProperty, Object> serverProperties, DN serverEntryDn)
       throws ADSContextException
   {
     ADSContextHelper helper = new ADSContextHelper();
@@ -1796,11 +1798,11 @@
    */
   public Map<String, byte[]> getTrustedCertificates() throws ADSContextException
   {
-    final String baseDN = getInstanceKeysContainerDN();
+    final DN baseDN = getInstanceKeysContainerDN();
     ADSContextHelper helper = new ADSContextHelper();
     final String FILTER_OC_INSTANCE_KEY = "(objectclass=" + helper.getOcCryptoInstanceKey() + ")";
     final String FILTER_NOT_COMPROMISED = "(!(" + helper.getAttrCryptoKeyCompromisedTime() + "=*))";
-    final String searchFilter = "(&" + FILTER_OC_INSTANCE_KEY + FILTER_NOT_COMPROMISED + ")";
+    final Filter searchFilter = Filter.valueOf("(&" + FILTER_OC_INSTANCE_KEY + FILTER_NOT_COMPROMISED + ")");
 
     String instanceKeyId = ADSContext.ServerProperty.INSTANCE_KEY_ID.getAttributeName();
     String instanceKeyCertificate =

--
Gitblit v1.10.0