/**
 *  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.CharacteristicValue
 *
 *  Using template :
 *        templates/1.3/datatypeInterface.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.CharacteristicValueAdapter;

@XmlType
@XmlJavaTypeAdapter(value=CharacteristicValueAdapter.class)

/**
 *  Public interface definition for CharacteristicValue.
 *
 * CharacteristicValue represents an attribute of {@link CBEManagedEntityValue}. It contains a value and a name.
 * <p>
 * This interface allows 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>
 * CharacteristicValue is described by a {@link Characteristic}. The association between a Characteristic and a CharacteristicValue is established when the Characteristic.name attribute and the CharacteristicValue.characteristic attribute are equals.
 * <p>
 * For any CBEManagedEntity, the CBEManagedEntity.getDescribedBy() returns the array of CharacteristicValue and the call to
 * CBEManagedEntity.getCharacterizedBy() will return the array of Characteristics.
 * <p>
 *
 */
public interface CharacteristicValue 
	extends java.lang.Cloneable, java.io.Serializable {


    /**
     * Deep copy of this object.
     *
     * @return The cloned object
     */
    public Object clone();


    /**
     *
     * Attribute getter for value.
     *
     *
     * Contains the value for this CharacteristicValue.
     * <P>The value of the CharacteristicValue. The type of the value has to match the type that is defined in the CharacteristicSpecification, that is describing this CharacteristicValue.
     *
     * @return the value of the value field.
     *
     */
    public java.lang.Object getValue( );


    /**
     * Attribute setter for value.
     *
     *
     * Contains the value for this CharacteristicValue.
     * <P>The value of the CharacteristicValue. The type of the value has to match the type that is defined in the CharacteristicSpecification, that is describing this CharacteristicValue.
     * @param value - the value to use to set the value attribute.
     * @throws java.lang.IllegalArgumentException
     *         Thrown to report that a bad argument was provided to the method.
     *
     */
    public void setValue(java.lang.Object value)
        throws
        java.lang.IllegalArgumentException;

    /**
     *
     * Attribute getter for characteristic.
     *
     *
     * It contains the name of the Characteristic.
     *
     * @return the value of the characteristic field.
     *
     */
    public java.lang.String getCharacteristic( );


    /**
     * Attribute setter for characteristic.
     *
     *
     * It contains the name of the Characteristic.
     * @param value - the value to use to set the characteristic attribute.
     * @throws java.lang.IllegalArgumentException
     *         Thrown to report that a bad argument was provided to the method.
     *
     */
    public void setCharacteristic(java.lang.String value)
        throws
        java.lang.IllegalArgumentException;


}
