/**
 *  Generated with Tigerstripe(tm) Tigerstripe Workbench Feature 2.2.0.v20070514-1108-IXOqsosF8y087t5.
 *
 *  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.CharacteristicSpecification
 *
 *  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.CharacteristicSpecificationAdapter;

@XmlType
@XmlJavaTypeAdapter(value=CharacteristicSpecificationAdapter.class)

/**
 *  Public interface definition for CharacteristicSpecification.
 *
 * Specifies the name and type of a characteristicValue. <P>
 * A CharacteristicSpecification a description an attribute that can be added to an entity without the need to modify the interface for it.
 * All CharacteristicSpecifications of an entity can be obtain using the CBEManagedEntity.characterizedBy() method.
 * The association between a CharacteristicSpecification and a CharacteristicValue is established when the CharacteristicSpecification.name attribute and the CharacteristicValue.characteristic attribute are equals.
 *
 */
public interface CharacteristicSpecification 
	extends java.lang.Cloneable, java.io.Serializable {


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


    /**
     *
     * Attribute getter for name.
     *
     *
     * Contains the Name of the CharacteristicSpecification.
     *
     * @return the value of the name field.
     *
     */
    public java.lang.String getName( );


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

    /**
     *
     * Attribute getter for type.
     *
     *
     * Contains the type, class name of the characteristicValue.
     *
     * @return the value of the type field.
     *
     */
    public java.lang.String getType( );


    /**
     * Attribute setter for type.
     *
     *
     * Contains the type, class name of the characteristicValue.
     * @param value - the value to use to set the type attribute.
     * @throws java.lang.IllegalArgumentException
     *         Thrown to report that a bad argument was provided to the method.
     *
     */
    public void setType(java.lang.String value)
        throws
        java.lang.IllegalArgumentException;

    /**
     *
     * Attribute getter for description.
     *
     *
     * Contains a text description of this CharacteristicSpecification.
     *
     * @return the value of the description field.
     *
     */
    public java.lang.String getDescription( );


    /**
     * Attribute setter for description.
     *
     *
     * Contains a text description of this CharacteristicSpecification.
     * @param value - the value to use to set the description attribute.
     * @throws java.lang.IllegalArgumentException
     *         Thrown to report that a bad argument was provided to the method.
     *
     */
    public void setDescription(java.lang.String value)
        throws
        java.lang.IllegalArgumentException;


}
