/**
 *  Generated with Tigerstripe(tm) Tigerstripe Workbench Feature 2.2.0.v20070419-1556-GFEkmUll2-0111E.
 *
 *  Tigerstripe(tm) is a registered trademark of Tigerstripe, Inc.
 *
 *  Plugin  : Sun Microsystems Inc./SunJavaSpecificationPlugin(1.0) (1.0)
 *
 *  DO NOT EDIT THIS CODE WAS AUTOMATICALLY GENERATED
 *
 *  Generated from source Tigerstipe Artifact :
 *        javax.oss.cbe.CBEManagedEntity
 *
 *  Using template :
 *        templates/1.3/keyInterface.vm
 *
 * Copyright 2002-2007 The Members of the OSS through Java(TM) Initiative.
 * All rights reserved. Use is subject to license terms.
 */
package javax.oss.cbe;

import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.XmlType;

import ossj.common.cbe.CBEManagedEntityKeyAdapter;

@XmlType
@XmlJavaTypeAdapter(value=CBEManagedEntityKeyAdapter.class)

/**
 *  Public interface definition for CBEManagedEntityKey.
 *
 * This is the base for all the first class CBE Managed Entities
 *
 * These first class objects may be in one of the following categories:
 * <ul>
 * <li>entities
 * <li>entitiy specifications, describing entities
 * <li>associations, representing binary relationships between entities or
 * specifications
 * </ul>
 * CBEManagedEntityValue is the base value type interface for the CBE Entity,
 * Entity Specification and Association Values.
 *
 * <p>This interface extends the scope of the AttributeAccess interface to cover also the CharacteristicSpecifications of CBEManagedEntities. If a method in AttributeAccess worked on attributes only before, its semantic is now extended to handle characteristic specifications in an equal way. In that sense, characteristic specifications <b>are</b> attributes, but without a getter and setter. For example, {@link javax.oss.AttributeAccess#isFullyPopulated() isFullyPopulated} now only returns true if all static attributes and all characteristic specifications are populated; {@link javax.oss.AttributeAccess#getAttributeNames() getAttributeNames} returns the names of the static attributes (as previously) plus the names of the characteristic specifications.
 *
 * <P>When designing the characteristic specifications, the static attributes names are known to the designer, who has to take care that there must not be a name clash, means there must not be a static attribute and a characteristicSpecification with the same name.
 *
 * <p>The characterizedBy and describedBy fields allow to add attributes to a CBEManagedEntityValue without the need to change the interface. For example, bandwidth is characteristic of many different types of services; if bandwidth is important (e.g., from the point-of-view of a Customer purchasing this Service) then bandwidth would be a CharacteristicValue describing that particular Service.
 *
 * <p>In order to keep the CBEManagedEntityValue consistent, the array of Characteristic returned by {@link #getCharacterizedBy} contains the exaustive list of supported attributes of the CharacteristicValue type.
 * The characterizedBy should be provided before the usage of {@link #setDescribedBy}.
 *
 * <p>A call to {@link #getDescribedBy} returns all CharateristicValues for this entity. CharacteristicValues could be returned or set individually by calling the generic {@link javax.oss.AttributeAccess#getAttribute} or {@link javax.oss.AttributeAccess#setAttribute} methods.
 *
 */
public interface CBEManagedEntityKey 
	extends javax.oss.ManagedEntityKey {
}
