EntryUUIDPlugin.java revision ea1068c292e9b341af6d6b563cd8988a96be20a9
0N/A * The contents of this file are subject to the terms of the 0N/A * Common Development and Distribution License, Version 1.0 only 0N/A * (the "License"). You may not use this file except in compliance 0N/A * See the License for the specific language governing permissions 0N/A * and limitations under the License. 0N/A * When distributing Covered Code, include this CDDL HEADER in each 0N/A * If applicable, add the following below this CDDL HEADER, with the 0N/A * fields enclosed by brackets "[]" replaced with your own identifying 0N/A * Portions Copyright [yyyy] [name of copyright owner] 0N/A * Copyright 2006-2008 Sun Microsystems, Inc. 0N/A * Portions Copyright 2014-2015 ForgeRock AS * This class implements a Directory Server plugin that will add the entryUUID * attribute to an entry whenever it is added or imported as per RFC 4530. For * entries added over LDAP, the entryUUID will be based on a semi-random UUID * (which is still guaranteed to be unique). For entries imported from LDIF, * the UUID will be constructed from the entry DN using a repeatable algorithm. * This will ensure that LDIF files imported in parallel across multiple systems * will have identical entryUUID values. * The name of the entryUUID attribute type. // The attribute type for the "entryUUID" attribute. // The current configuration for this plugin. * Creates a new instance of this Directory Server plugin. Every plugin must * implement a default constructor (it is the only one that will be used to * create plugins defined in the configuration), and every plugin constructor * must call <CODE>super()</CODE> as its first element. // Get the entryUUID attribute type. This needs to be done in the // constructor in order to make the associated variables "final". "( 1.3.6.1.1.16.4 NAME 'entryUUID' DESC 'UUID of the entry' " +
"EQUALITY uuidMatch ORDERING uuidOrderingMatch " +
"SYNTAX 1.3.6.1.1.16.1 SINGLE-VALUE NO-USER-MODIFICATION " +
"USAGE directoryOperation X-ORIGIN 'RFC 4530' )";
// Make sure that the plugin has been enabled for the appropriate types. // See if the entry being imported already contains an entryUUID attribute. // If so, then leave it alone. // 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. // We shouldn't ever need to return a non-success result. // See if the entry being added already contains an entryUUID attribute. // It shouldn't, since it's NO-USER-MODIFICATION, but if it does then leave // Construct a new random UUID. // Add the attribute to the entry and return. // Ensure that the set of plugin types contains only LDIF import and