# Interface PrintServiceAttributeSet

All Superinterfaces:
  `AttributeSet`

All Known Implementing Classes:
  `HashPrintServiceAttributeSet`

public interface PrintServiceAttributeSet extends AttributeSet
Interface `PrintServiceAttributeSet` specifies the interface for a set of print job attributes, i.e. printing attributes that implement interface `PrintServiceAttribute`. In the Print Service API, the Print Service instance uses a `PrintServiceAttributeSet` to report the status of the print service.

A `PrintServiceAttributeSet` is just an `AttributeSet` whose constructors and mutating operations guarantee an additional invariant, namely that all attribute values in the `PrintServiceAttributeSet` must be instances of interface `PrintServiceAttribute`. The `add(Attribute)`, and `addAll(AttributeSet)` operations are respecified below to guarantee this additional invariant.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`add(Attribute attribute)`
Adds the specified attribute value to this attribute set if it is not already present, first removing any existing value in the same attribute category as the specified attribute value (optional operation).
`boolean`
`addAll(AttributeSet attributes)`
Adds all of the elements in the specified set to this attribute.

### Methods declared in interface AttributeSet

`clear, containsKey, containsValue, equals, get, hashCode, isEmpty, remove, remove, size, toArray`
Modifier and Type
Method
Description
`void`
`clear()`
Removes all attributes from this attribute set.
`boolean`
`containsKey(Class<?> category)`
Returns `true` if this attribute set contains an attribute for the specified category.
`boolean`
`containsValue(Attribute attribute)`
Returns `true` if this attribute set contains the given attribute value.
`boolean`
`equals(Object object)`
Compares the specified object with this attribute set for equality.
`Attribute`
`get(Class<?> category)`
Returns the attribute value which this attribute set contains in the given attribute category.
`int`
`hashCode()`
Returns the hash code value for this attribute set.
`boolean`
`isEmpty()`
Returns `true` if this attribute set contains no attributes.
`boolean`
`remove(Class<?> category)`
Removes any attribute for this category from this attribute set if present.
`boolean`
`remove(Attribute attribute)`
Removes the specified attribute from this attribute set if present.
`int`
`size()`
Returns the number of attributes in this attribute set.
`Attribute[]`
`toArray()`
Returns an array of the attributes contained in this set.

## Method Details

### add

boolean add(Attribute attribute)
Adds the specified attribute value to this attribute set if it is not already present, first removing any existing value in the same attribute category as the specified attribute value (optional operation).

Specified by:
  `add` in interface `AttributeSet`
Parameters:
  `attribute` - attribute value to be added to this attribute set
Returns:
  `true` if this attribute set changed as a result of the call, i.e., the given attribute value was not already a member of this attribute set
Throws:
  `UnmodifiableSetException` - if this attribute set does not support the `add()` operation
  `ClassCastException` - if the `attribute` is not an instance of interface `PrintServiceAttribute`
  `NullPointerException` - if the `attribute` is `null`

### addAll

boolean addAll(AttributeSet attributes)
Adds all of the elements in the specified set to this attribute. The outcome is the same as if the `add(Attribute)` operation had been applied to this attribute set successively with each element from the specified set. If none of the categories in the specified set are the same as any categories in this attribute set, the `addAll()` operation effectively modifies this attribute set so that its value is the union of the two sets.

The behavior of the `addAll()` operation is unspecified if the specified set is modified while the operation is in progress.

If the `addAll()` operation throws an exception, the effect on this attribute set's state is implementation dependent; elements from the specified set before the point of the exception may or may not have been added to this attribute set.

Specified by:
  `addAll` in interface `AttributeSet`
Parameters:
  `attributes` - whose elements are to be added to this attribute set
Returns:
  `true` if this attribute set changed as a result of the call
Throws:
  `UnmodifiableSetException` - if this attribute set does not support the `addAll()` method
  `ClassCastException` - if some element in the specified set is not an instance of interface `PrintServiceAttribute`
  `NullPointerException` - if the specified set is `null`
See Also:
  - `add(Attribute)`