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();