mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noël Rouvignac
01.07.2016 e60ac25c05d4474854317b71586f022bab93e0d8
opendj-server-legacy/src/main/java/org/opends/server/extensions/EntryUUIDVirtualAttributeProvider.java
@@ -12,14 +12,13 @@
 * information: "Portions Copyright [year] [name of copyright owner]".
 *
 * Copyright 2008-2009 Sun Microsystems, Inc.
 * Portions Copyright 2012-2015 ForgeRock AS.
 * Portions Copyright 2012-2016 ForgeRock AS.
 */
package org.opends.server.extensions;
import static org.opends.messages.ExtensionMessages.*;
import java.util.List;
import java.util.UUID;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.ByteString;
@@ -44,9 +43,7 @@
public class EntryUUIDVirtualAttributeProvider
       extends VirtualAttributeProvider<EntryUUIDVirtualAttributeCfg>
{
  /**
   * Creates a new instance of this entryUUID virtual attribute provider.
   */
  /** Creates a new instance of this entryUUID virtual attribute provider. */
  public EntryUUIDVirtualAttributeProvider()
  {
    super();
@@ -55,23 +52,18 @@
    // initializeVirtualAttributeProvider method.
  }
  /** {@inheritDoc} */
  @Override
  public boolean isMultiValued()
  {
    return false;
  }
  /** {@inheritDoc} */
  @Override
  public Attribute getValues(Entry entry, VirtualAttributeRule rule)
  {
    ByteString normDN = entry.getName().toNormalizedByteString();
    String uuid = UUID.nameUUIDFromBytes(normDN.toByteArray()).toString();
    return Attributes.create(rule.getAttributeType(), uuid);
    return Attributes.create(rule.getAttributeType(), entry.getName().toUUID().toString());
  }
  /** {@inheritDoc} */
  @Override
  public boolean hasValue(Entry entry, VirtualAttributeRule rule)
  {
@@ -79,7 +71,6 @@
    return true;
  }
  /** {@inheritDoc} */
  @Override
  public ConditionResult matchesSubstring(Entry entry,
                                          VirtualAttributeRule rule,
@@ -91,7 +82,6 @@
    return ConditionResult.UNDEFINED;
  }
  /** {@inheritDoc} */
  @Override
  public ConditionResult greaterThanOrEqualTo(Entry entry,
                              VirtualAttributeRule rule,
@@ -101,7 +91,6 @@
    return ConditionResult.UNDEFINED;
  }
  /** {@inheritDoc} */
  @Override
  public ConditionResult lessThanOrEqualTo(Entry entry,
                              VirtualAttributeRule rule,
@@ -111,7 +100,6 @@
    return ConditionResult.UNDEFINED;
  }
  /** {@inheritDoc} */
  @Override
  public ConditionResult approximatelyEqualTo(Entry entry,
                              VirtualAttributeRule rule,
@@ -121,7 +109,6 @@
    return ConditionResult.UNDEFINED;
  }
  /** {@inheritDoc} */
  @Override
  public boolean isSearchable(VirtualAttributeRule rule,
                              SearchOperation searchOperation,
@@ -130,7 +117,6 @@
    return false;
  }
  /** {@inheritDoc} */
  @Override
  public void processSearch(VirtualAttributeRule rule,
                            SearchOperation searchOperation)
@@ -142,4 +128,3 @@
    searchOperation.appendErrorMessage(message);
  }
}
opendj-server-legacy/src/main/java/org/opends/server/plugins/EntryUUIDPlugin.java
@@ -26,6 +26,7 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.meta.PluginCfgDefn;
import org.opends.server.admin.std.server.EntryUUIDPluginCfg;
@@ -34,8 +35,10 @@
import org.opends.server.api.plugin.PluginResult;
import org.opends.server.api.plugin.PluginType;
import org.opends.server.core.DirectoryServer;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.types.Attribute;
import org.opends.server.types.Attributes;
import org.opends.server.types.Entry;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.operation.PreOperationAddOperation;
/**
@@ -89,17 +92,12 @@
    }
  }
  /** {@inheritDoc} */
  @Override
  public final void finalizePlugin()
  {
    currentConfig.removeEntryUUIDChangeListener(this);
  }
  @Override
  public final PluginResult.ImportLDIF
               doLDIFImport(LDIFImportConfig importConfig, Entry entry)
@@ -112,13 +110,10 @@
      return PluginResult.ImportLDIF.continueEntryProcessing();
    }
    // Construct a new UUID.  In order to make sure that UUIDs are consistent
    // when the same LDIF is generated on multiple servers, we'll base the UUID
    // on the byte representation of the normalized DN.
    byte[] dnBytes = entry.getName().toNormalizedByteString().toByteArray();
    UUID uuid = UUID.nameUUIDFromBytes(dnBytes);
    UUID uuid = entry.getName().toUUID();
    uuidList = Attributes.createAsList(entryUUIDType, uuid.toString());
    entry.putAttribute(entryUUIDType, uuidList);
@@ -126,9 +121,6 @@
    return PluginResult.ImportLDIF.continueEntryProcessing();
  }
  /** {@inheritDoc} */
  @Override
  public final PluginResult.PreOperation
               doPreOperation(PreOperationAddOperation addOperation)
@@ -144,7 +136,6 @@
      return PluginResult.PreOperation.continueOperationProcessing();
    }
    // Construct a new random UUID.
    UUID uuid = UUID.randomUUID();
    uuidList = Attributes.createAsList(entryUUIDType, uuid.toString());
@@ -154,9 +145,6 @@
    return PluginResult.PreOperation.continueOperationProcessing();
  }
  /** {@inheritDoc} */
  @Override
  public boolean isConfigurationAcceptable(PluginCfg configuration,
                                           List<LocalizableMessage> unacceptableReasons)
@@ -165,9 +153,6 @@
    return isConfigurationChangeAcceptable(cfg, unacceptableReasons);
  }
  /** {@inheritDoc} */
  @Override
  public boolean isConfigurationChangeAcceptable(
                      EntryUUIDPluginCfg configuration,
@@ -186,7 +171,6 @@
          // These are acceptable.
          break;
        default:
          unacceptableReasons.add(ERR_PLUGIN_ENTRYUUID_INVALID_PLUGIN_TYPE.get(pluginType));
          configAcceptable = false;
@@ -196,9 +180,6 @@
    return configAcceptable;
  }
  /** {@inheritDoc} */
  @Override
  public ConfigChangeResult applyConfigurationChange(
                                 EntryUUIDPluginCfg configuration)
@@ -207,4 +188,3 @@
    return new ConfigChangeResult();
  }
}
opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/EntryHistorical.java
@@ -24,7 +24,6 @@
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.UUID;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.AttributeDescription;
@@ -764,6 +763,6 @@
          entryDN);
    }
    return UUID.nameUUIDFromBytes(entryDN.toNormalizedByteString().toByteArray()).toString();
    return entryDN.toUUID().toString();
  }
}
opendj-server-legacy/src/main/java/org/opends/server/types/DN.java
@@ -27,6 +27,7 @@
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.UUID;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
@@ -2546,4 +2547,15 @@
  {
    return Arrays.asList(rdnComponents).iterator();
  }
  /**
   * Returns a UUID whose content is based on the normalized content of this DN. Two equivalent DNs
   * subject to the same schema will always yield the same UUID.
   *
   * @return the UUID representing this DN
   */
  public UUID toUUID()
  {
    return UUID.nameUUIDFromBytes(toNormalizedByteString().toByteArray());
  }
}
opendj-server-legacy/src/test/java/org/opends/server/extensions/EntryUUIDVirtualAttributeProviderTestCase.java
@@ -18,7 +18,6 @@
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.SearchScope;
@@ -42,7 +41,6 @@
import static org.opends.server.protocols.internal.InternalClientConnection.*;
import static org.opends.server.protocols.internal.Requests.*;
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
import static org.testng.Assert.*;
/**
@@ -112,7 +110,7 @@
  public void testGetEntry(DN entryDN)
         throws Exception
  {
    String uuidString = UUID.nameUUIDFromBytes(entryDN.toNormalizedByteString().toByteArray()).toString();
    String uuidString = entryDN.toUUID().toString();
    Entry e = DirectoryServer.getEntry(entryDN);
    assertNotNull(e);
@@ -141,8 +139,7 @@
  public void testGetUserEntry()
         throws Exception
  {
    String uuidString =
         UUID.nameUUIDFromBytes(getBytes("dc=example,dc=com")).toString();
    String uuidString = DN.valueOf("dc=example,dc=com").toUUID().toString();
    TestCaseUtils.clearBackend("userRoot");
@@ -287,7 +284,7 @@
  public void testSearchEntryUUIDAttrInMatchingFilter(DN entryDN)
         throws Exception
  {
    String uuidString = UUID.nameUUIDFromBytes(entryDN.toNormalizedByteString().toByteArray()).toString();
    String uuidString = entryDN.toUUID().toString();
    final SearchRequest request = newSearchRequest(entryDN, SearchScope.BASE_OBJECT, "(entryUUID=" + uuidString + ")")
        .addAttribute("entryuuid");
@@ -299,8 +296,6 @@
    assertTrue(e.hasAttribute(entryUUIDType));
  }
  /**
   * Performs an internal search to retrieve the specified entry, ensuring that
   * no entries are returned when the entryUUID attribute is used in the search
@@ -395,7 +390,7 @@
  @Test
  public void testGetValues() throws Exception
  {
    String uuidString = UUID.nameUUIDFromBytes(getBytes("o=test")).toString();
    String uuidString = DN.valueOf("o=test").toUUID().toString();
    EntryUUIDVirtualAttributeProvider provider =
         new EntryUUIDVirtualAttributeProvider();
@@ -437,7 +432,7 @@
  @Test
  public void testHasMatchingValue() throws Exception
  {
    String uuidString = UUID.nameUUIDFromBytes(getBytes("o=test")).toString();
    String uuidString = DN.valueOf("o=test").toUUID().toString();
    EntryUUIDVirtualAttributeProvider provider =
         new EntryUUIDVirtualAttributeProvider();