## org.w3c.tools.resources
Class Attribute

    java.lang.Object
      |
      +--org.w3c.tools.resources.Attribute

Direct Known Subclasses:
  AttributeHolderAttribute, BooleanAttribute, ClassAttribute, DoubleAttribute, FileAttribute, FrameArrayAttribute, IntegerArrayAttribute, IntegerAttribute, IPTemplatesAttribute, LongAttribute, MimeTypeAttribute, ObjectAttribute, PropertiesAttribute, StringArrayAttribute, StringAttribute

public abstract class Attribute
extends java.lang.Object
implements java.io.Serializable

Instances of this class describe an attribute of a resource.

See Also:
  Serialized Form

Field Summary
`static int` | `COMPUTED` Flags value - This attribute is computed from the resource state.
`static int` | `DONTSAVE` Flag value - This attribute shouldn't be saved.
`static int` | `EDITABLE` Flag value - This attribute is editable.
`protected int` | `flags` The associated flags (see the predefined flags).
`static int` | `MANDATORY` Flag value - This attribute is mandatory.
`protected java.lang.String` | `name` The attribute name.
`protected java.lang.String` | `type` The attribute's value type, as the name of its class.

Constructor Summary
`Attribute(java.lang.String name, java.lang.Object def, int flags)` Private constructore to create a new resource attribute description.

Method Summary
`boolean` | `checkFlag(int tst)` Check some flag on this attribute description.
`abstract boolean` | `checkValue(java.lang.Object value)` Is the provided object a suitable value for this attribute ? If so, store it into the given store.
`java.lang.Object` | `getDefault()` Get this attribute default value.
`java.lang.String` | `getName()` Get this attribute name.
`abstract int` | `getPickleLength(java.lang.Object value)` Get number of bytes needed to pickle that attribute.
`java.lang.String` | `getType()` Get this attribute type.
`abstract void` | `pickle(java.io.DataOutputStream out, java.lang.Object obj)` Pickle an attribute of this type to the given stream.
`java.lang.String` | `stringify(java.lang.Object value)` Stringify a value of this kind.
`abstract java.lang.Object` | `unpickle(java.io.DataInputStream in)` Unpickle an attribute of this type from the given stream.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### COMPUTED

    public static final int COMPUTED

  Flags value - This attribute is computed from the resource state.

### EDITABLE

    public static final int EDITABLE

  Flag value - This attribute is editable.

### MANDATORY

    public static final int MANDATORY

  Flag value - This attribute is mandatory.

### DONTSAVE

    public static final int DONTSAVE

  Flag value - This attribute shouldn't be saved.

### name

    protected java.lang.String name

  The attribute name.

### type

    protected java.lang.String type

  The attribute's value type, as the name of its class.

### flags

    protected int flags

  The associated flags (see the predefined flags).

Constructor Detail

### Attribute

    public Attribute(java.lang.String name,
                     java.lang.Object def,
                     int flags)

  Private constructore to create a new resource attribute description.
  Parameters:
    `name` - The name of the attribute.
    `type` - Its type (as a Java class).
    `def` - Its default value.
    `flags` - Its associated flags.

Method Detail

### getName

    public java.lang.String getName()

  Get this attribute name.
  Returns:
    A String giving the attribute name.

### getType

    public java.lang.String getType()

  Get this attribute type.

### checkFlag

    public boolean checkFlag(int tst)

  Check some flag on this attribute description.

### getDefault

    public java.lang.Object getDefault()

  Get this attribute default value.
  Returns:
    A default value for this attribute (may be null).

### stringify

    public java.lang.String stringify(java.lang.Object value)

  Stringify a value of this kind.
  Parameters:
    `obj` - The value to stringify.

### checkValue

    public abstract boolean checkValue(java.lang.Object value)

  Is the provided object a suitable value for this attribute ? If so, store it into the given store.
  Parameters:
    `value` - The value to check.
    `store` - The array to store the value to if succeed.
    `idx` - The location in the above array.
  Returns:
    A boolean true if this object can be used as a value for this attribute.
  Throws:
    IllegalAttributeAccess - If the provided value doesn't match the expected type.

### getPickleLength

    public abstract int getPickleLength(java.lang.Object value)

  Get number of bytes needed to pickle that attribute. This method is always called before pickling an attribute, to get the length of that attribute value, and record it before saving the actual bytes. This allows, for example, to skip attribute whose definition was removed from a class.

  In an ASCII format, this plays a role similar to emitting a newline.

  Parameters:
    `value` - The value that is about to be pickled.
  Returns:
    The number of bytes needed to pickle that value.

### pickle

    public abstract void pickle(java.io.DataOutputStream out,
                                java.lang.Object obj)
                         throws java.io.IOException

  Pickle an attribute of this type to the given stream. This method is used to make attribute values persistent, the pickle method should dump the provided value in whatever format, provided its unpickle method is able to restore it.
  Parameters:
    `out` - The DataOutputStream to dump the object to.
    `obj` - The object to pickle.
  Throws:
    java.io.IOException - If some IO error occured while dump the attribute.

### unpickle

    public abstract java.lang.Object unpickle(java.io.DataInputStream in)
                                       throws java.io.IOException

  Unpickle an attribute of this type from the given stream. This method is used to restore a pickled attribute value from the given stream. It should read in the format it used at pickle time, and consume the same number of bytes from the stream.
  Parameters:
    `in` - The DataInputStream to read from.
  Returns:
    The object value.
  Throws:
    java.io.IOException - If some IOError occured while reading the stream.