All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.identityconnectors.framework.common.objects.Name Maven / Gradle / Ivy

The newest version!
/*
 * ====================
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 * 
 * Copyright 2008-2009 Sun Microsystems, Inc. All rights reserved.     
 * 
 * The contents of this file are subject to the terms of the Common Development 
 * and Distribution License("CDDL") (the "License").  You may not use this file 
 * except in compliance with the License.
 * 
 * You can obtain a copy of the License at 
 * http://IdentityConnectors.dev.java.net/legal/license.txt
 * See the License for the specific language governing permissions and limitations 
 * under the License. 
 * 
 * When distributing the Covered Code, include this CDDL Header Notice in each file
 * and include the License file at identityconnectors/legal/license.txt.
 * If applicable, add the following below this CDDL Header, with the fields 
 * enclosed by brackets [] replaced by your own identifying information: 
 * "Portions Copyrighted [year] [name of copyright owner]"
 * ====================
 */
package org.identityconnectors.framework.common.objects;

import org.identityconnectors.common.CollectionUtil;

/**
 * A single-valued attribute that represents the user-friendly identifier 
 * of an object on a target resource.
 * For instance, the name of an Account will most often be its loginName. 
 * The value of Name need not be unique within ObjectClass.
 * In LDAP, for example, the Name could be the Common Name (CN).
 * Contrast this with {@link Uid}, which is intended to be a unique identifier
 * (and, if possible, immutable):
 * 
    *
  • When an application creates an object, the application uses the Name * attribute to supply the user-friendly identifier for the object. * (Because the create operation returns the Uid as its result, * the application cannot know the Uid value beforehand.) *
  • *
  • When an application renames an object, this changes the Name of the object. * (For some target resources that do not have a separate internal identifier, * this might also change the Uid. * However, the application would never attempt to change the Uid directly.) *
  • *
* NOTE: For some connectors, Name and Uid will be equivalent. * If a target resource does not support a separate, internal identifier * for an object, then the create() method can simply return a Uid * that has the same string value as the Name attribute. * The DatabaseTable connector is an example of a connector * that might use the same value for both Name and Uid. */ public final class Name extends Attribute { public static final String NAME = AttributeUtil.createSpecialName("NAME"); public static final AttributeInfo INFO = new AttributeInfoBuilder(NAME) .setRequired(true) .build(); public Name(String value) { super(NAME, CollectionUtil.newReadOnlyList(value)); } /** * The single value of the attribute that is the unique id of an object. * * @return value that identifies an object. */ public String getNameValue() { return AttributeUtil.getStringValue(this); } }