summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog11
-rw-r--r--libjava/Makefile.am6
-rw-r--r--libjava/Makefile.in12
-rw-r--r--libjava/javax/print/attribute/AttributeSetUtilities.java445
-rw-r--r--libjava/javax/print/attribute/HashAttributeSet.java341
-rw-r--r--libjava/javax/print/attribute/HashDocAttributeSet.java94
-rw-r--r--libjava/javax/print/attribute/HashPrintJobAttributeSet.java94
-rw-r--r--libjava/javax/print/attribute/HashPrintRequestAttributeSet.java94
-rw-r--r--libjava/javax/print/attribute/HashPrintServiceAttributeSet.java94
9 files changed, 1191 insertions, 0 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index e993c56c8f0..4b9ccbbddd0 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,5 +1,16 @@
2003-12-21 Michael Koch <konqueror@gmx.de>
+ * javax/print/attribute/AttributeSetUtilities.java,
+ javax/print/attribute/HashAttributeSet.java,
+ javax/print/attribute/HashDocAttributeSet.java,
+ javax/print/attribute/HashPrintJobAttributeSet.java,
+ javax/print/attribute/HashPrintRequestAttributeSet.java,
+ javax/print/attribute/HashPrintServiceAttributeSet.java: New files.
+ * Makefile.am (ordinary_java_source_files): Added new files.
+ * Makefile.in: Regenerated.
+
+2003-12-21 Michael Koch <konqueror@gmx.de>
+
* javax/print/attribute/EnumSyntax.java,
javax/print/attribute/SetOfIntegerSyntax.java: New files.
* Makefile.am (ordinary_java_source_files):
diff --git a/libjava/Makefile.am b/libjava/Makefile.am
index 4aeb63fcd4e..461ccd87285 100644
--- a/libjava/Makefile.am
+++ b/libjava/Makefile.am
@@ -1743,10 +1743,16 @@ javax/naming/ldap/UnsolicitedNotificationListener.java \
javax/naming/OperationNotSupportedException.java \
javax/print/attribute/Attribute.java \
javax/print/attribute/AttributeSet.java \
+javax/print/attribute/AttributeSetUtilities.java \
javax/print/attribute/DateTimeSyntax.java \
javax/print/attribute/DocAttribute.java \
javax/print/attribute/DocAttributeSet.java \
javax/print/attribute/EnumSyntax.java \
+javax/print/attribute/HashAttributeSet.java \
+javax/print/attribute/HashDocAttributeSet.java \
+javax/print/attribute/HashPrintJobAttributeSet.java \
+javax/print/attribute/HashPrintRequestAttributeSet.java \
+javax/print/attribute/HashPrintServiceAttributeSet.java \
javax/print/attribute/IntegerSyntax.java \
javax/print/attribute/PrintJobAttribute.java \
javax/print/attribute/PrintJobAttributeSet.java \
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index acf9abc370f..278910fa260 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -1459,10 +1459,16 @@ javax/naming/ldap/UnsolicitedNotificationListener.java \
javax/naming/OperationNotSupportedException.java \
javax/print/attribute/Attribute.java \
javax/print/attribute/AttributeSet.java \
+javax/print/attribute/AttributeSetUtilities.java \
javax/print/attribute/DateTimeSyntax.java \
javax/print/attribute/DocAttribute.java \
javax/print/attribute/DocAttributeSet.java \
javax/print/attribute/EnumSyntax.java \
+javax/print/attribute/HashAttributeSet.java \
+javax/print/attribute/HashDocAttributeSet.java \
+javax/print/attribute/HashPrintJobAttributeSet.java \
+javax/print/attribute/HashPrintRequestAttributeSet.java \
+javax/print/attribute/HashPrintServiceAttributeSet.java \
javax/print/attribute/IntegerSyntax.java \
javax/print/attribute/PrintJobAttribute.java \
javax/print/attribute/PrintJobAttributeSet.java \
@@ -4068,10 +4074,16 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/javax/naming/spi/Resolver.P .deps/javax/naming/spi/StateFactory.P \
.deps/javax/print/attribute/Attribute.P \
.deps/javax/print/attribute/AttributeSet.P \
+.deps/javax/print/attribute/AttributeSetUtilities.P \
.deps/javax/print/attribute/DateTimeSyntax.P \
.deps/javax/print/attribute/DocAttribute.P \
.deps/javax/print/attribute/DocAttributeSet.P \
.deps/javax/print/attribute/EnumSyntax.P \
+.deps/javax/print/attribute/HashAttributeSet.P \
+.deps/javax/print/attribute/HashDocAttributeSet.P \
+.deps/javax/print/attribute/HashPrintJobAttributeSet.P \
+.deps/javax/print/attribute/HashPrintRequestAttributeSet.P \
+.deps/javax/print/attribute/HashPrintServiceAttributeSet.P \
.deps/javax/print/attribute/IntegerSyntax.P \
.deps/javax/print/attribute/PrintJobAttribute.P \
.deps/javax/print/attribute/PrintJobAttributeSet.P \
diff --git a/libjava/javax/print/attribute/AttributeSetUtilities.java b/libjava/javax/print/attribute/AttributeSetUtilities.java
new file mode 100644
index 00000000000..444b0974625
--- /dev/null
+++ b/libjava/javax/print/attribute/AttributeSetUtilities.java
@@ -0,0 +1,445 @@
+/* AttributeSetUtilities.java --
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.print.attribute;
+
+import java.io.Serializable;
+
+public final class AttributeSetUtilities
+{
+ private static class UnmodifiableAttributeSet
+ implements AttributeSet, Serializable
+ {
+ private AttributeSet set;
+
+ public UnmodifiableAttributeSet(AttributeSet attributeSet)
+ {
+ if (attributeSet == null)
+ throw new NullPointerException("attributeSet may not be null");
+
+ this.set = attributeSet;
+ }
+
+ public boolean add(Attribute attribute)
+ {
+ throw new UnmodifiableSetException();
+ }
+
+ public boolean addAll(AttributeSet attributes)
+ {
+ throw new UnmodifiableSetException();
+ }
+
+ public void clear()
+ {
+ throw new UnmodifiableSetException();
+ }
+
+ public boolean containsKey(Class category)
+ {
+ return set.containsKey(category);
+ }
+
+ public boolean containsValue(Attribute attribute)
+ {
+ return set.containsValue(attribute);
+ }
+
+ public boolean equals(Object obj)
+ {
+ return set.equals(obj);
+ }
+
+ public Attribute get(Class interfaceName)
+ {
+ return set.get(interfaceName);
+ }
+
+ public int hashCode()
+ {
+ return set.hashCode();
+ }
+
+ public boolean isEmpty()
+ {
+ return set.isEmpty();
+ }
+
+ public boolean remove(Class category)
+ {
+ throw new UnmodifiableSetException();
+ }
+
+ public boolean remove(Attribute attribute)
+ {
+ throw new UnmodifiableSetException();
+ }
+
+ public int size()
+ {
+ return set.size();
+ }
+
+ public Attribute[] toArray()
+ {
+ return set.toArray();
+ }
+ }
+
+ public static class UnmodifiableDocAttributeSet
+ extends UnmodifiableAttributeSet
+ implements DocAttributeSet, Serializable
+ {
+ public UnmodifiableDocAttributeSet(DocAttributeSet attributeSet)
+ {
+ super(attributeSet);
+ }
+ }
+
+ public static class UnmodifiablePrintJobAttributeSet
+ extends UnmodifiableAttributeSet
+ implements PrintJobAttributeSet, Serializable
+ {
+ public UnmodifiablePrintJobAttributeSet(PrintJobAttributeSet attributeSet)
+ {
+ super(attributeSet);
+ }
+ }
+
+ public static class UnmodifiablePrintRequestAttributeSet
+ extends UnmodifiableAttributeSet
+ implements PrintRequestAttributeSet, Serializable
+ {
+ public UnmodifiablePrintRequestAttributeSet(PrintRequestAttributeSet attributeSet)
+ {
+ super(attributeSet);
+ }
+ }
+
+ public static class UnmodifiablePrintServiceAttributeSet
+ extends UnmodifiableAttributeSet
+ implements PrintServiceAttributeSet, Serializable
+ {
+ public UnmodifiablePrintServiceAttributeSet(PrintServiceAttributeSet attributeSet)
+ {
+ super(attributeSet);
+ }
+ }
+
+ public static class SynchronizedAttributeSet
+ implements AttributeSet, Serializable
+ {
+ private AttributeSet set;
+
+ public SynchronizedAttributeSet(AttributeSet attributeSet)
+ {
+ if (attributeSet == null)
+ throw new NullPointerException("attributeSet may not be null");
+
+ this.set = attributeSet;
+ }
+
+ public synchronized boolean add(Attribute attribute)
+ {
+ return set.add(attribute);
+ }
+
+ public synchronized boolean addAll(AttributeSet attributes)
+ {
+ return set.addAll(attributes);
+ }
+
+ public synchronized void clear()
+ {
+ set.clear();
+ }
+
+ public synchronized boolean containsKey(Class category)
+ {
+ return set.containsKey(category);
+ }
+
+ public synchronized boolean containsValue(Attribute attribute)
+ {
+ return set.containsValue(attribute);
+ }
+
+ public synchronized boolean equals(Object obj)
+ {
+ return set.equals(obj);
+ }
+
+ public synchronized Attribute get(Class interfaceName)
+ {
+ return set.get(interfaceName);
+ }
+
+ public synchronized int hashCode()
+ {
+ return set.hashCode();
+ }
+
+ public synchronized boolean isEmpty()
+ {
+ return set.isEmpty();
+ }
+
+ public synchronized boolean remove(Class category)
+ {
+ return set.remove(category);
+ }
+
+ public synchronized boolean remove(Attribute attribute)
+ {
+ return set.remove(attribute);
+ }
+
+ public synchronized int size()
+ {
+ return set.size();
+ }
+
+ public synchronized Attribute[] toArray()
+ {
+ return set.toArray();
+ }
+ }
+
+ public static class SynchronizedDocAttributeSet
+ extends SynchronizedAttributeSet
+ implements DocAttributeSet, Serializable
+ {
+ public SynchronizedDocAttributeSet(DocAttributeSet attributeSet)
+ {
+ super(attributeSet);
+ }
+ }
+
+ public static class SynchronizedPrintJobAttributeSet
+ extends SynchronizedAttributeSet
+ implements PrintJobAttributeSet, Serializable
+ {
+ public SynchronizedPrintJobAttributeSet(PrintJobAttributeSet attributeSet)
+ {
+ super(attributeSet);
+ }
+ }
+
+ public static class SynchronizedPrintRequestAttributeSet
+ extends SynchronizedAttributeSet
+ implements PrintRequestAttributeSet, Serializable
+ {
+ public SynchronizedPrintRequestAttributeSet(PrintRequestAttributeSet attributeSet)
+ {
+ super(attributeSet);
+ }
+ }
+
+ public static class SynchronizedPrintServiceAttributeSet
+ extends SynchronizedAttributeSet
+ implements PrintServiceAttributeSet, Serializable
+ {
+ public SynchronizedPrintServiceAttributeSet(PrintServiceAttributeSet attributeSet)
+ {
+ super(attributeSet);
+ }
+ }
+
+ /**
+ * Returns a synchronized view of the given attribute set.
+ *
+ * @return the sychronized attribute set
+ */
+ public static AttributeSet synchronizedView(AttributeSet attributeSet)
+ {
+ return new SynchronizedAttributeSet(attributeSet);
+ }
+
+ /**
+ * Returns a synchronized view of the given attribute set.
+ *
+ * @return the sychronized attribute set
+ */
+ public static DocAttributeSet synchronizedView(DocAttributeSet attributeSet)
+ {
+ return new SynchronizedDocAttributeSet(attributeSet);
+ }
+
+ /**
+ * Returns a synchronized view of the given attribute set.
+ *
+ * @return the sychronized attribute set
+ */
+ public static PrintJobAttributeSet synchronizedView(PrintJobAttributeSet attributeSet)
+ {
+ return new SynchronizedPrintJobAttributeSet(attributeSet);
+ }
+
+ /**
+ * Returns a synchronized view of the given attribute set.
+ *
+ * @return the sychronized attribute set
+ */
+ public static PrintRequestAttributeSet synchronizedView(PrintRequestAttributeSet attributeSet)
+ {
+ return new SynchronizedPrintRequestAttributeSet(attributeSet);
+ }
+
+ /**
+ * Returns a synchronized view of the given attribute set.
+ *
+ * @return the sychronized attribute set
+ */
+ public static PrintServiceAttributeSet synchronizedView(PrintServiceAttributeSet attributeSet)
+ {
+ return new SynchronizedPrintServiceAttributeSet(attributeSet);
+ }
+
+ /**
+ * Returns an unmodifiable view of the given attribute set.
+ *
+ * @return the sychronized attribute set
+ */
+ public static AttributeSet unmodifiableView(AttributeSet attributeSet)
+ {
+ return new UnmodifiableAttributeSet(attributeSet);
+ }
+
+ /**
+ * Returns an unmodifiable view of the given attribute set.
+ *
+ * @return the sychronized attribute set
+ */
+ public static DocAttributeSet unmodifiableView(DocAttributeSet attributeSet)
+ {
+ return new UnmodifiableDocAttributeSet(attributeSet);
+ }
+
+ /**
+ * Returns an unmodifiable view of the given attribute set.
+ *
+ * @return the sychronized attribute set
+ */
+ public static PrintJobAttributeSet unmodifiableView(PrintJobAttributeSet attributeSet)
+ {
+ return new UnmodifiablePrintJobAttributeSet(attributeSet);
+ }
+
+ /**
+ * Returns an unmodifiable view of the given attribute set.
+ *
+ * @return the sychronized attribute set
+ */
+ public static PrintRequestAttributeSet unmodifiableView(PrintRequestAttributeSet attributeSet)
+ {
+ return new UnmodifiablePrintRequestAttributeSet(attributeSet);
+ }
+
+ /**
+ * Returns an unmodifiable view of the given attribute set.
+ *
+ * @return the sychronized attribute set
+ */
+ public static PrintServiceAttributeSet unmodifiableView(PrintServiceAttributeSet attributeSet)
+ {
+ return new UnmodifiablePrintServiceAttributeSet(attributeSet);
+ }
+
+ /**
+ * Verifies that the given object is a <code>Class</code> that
+ * implements the given interface name.
+ *
+ * @return object casted to <code>Class</code>
+ *
+ * @exception ClassCastException if object is not a <code>Class</code>
+ * that implements interfaceName
+ * @exception NullPointerException if object is null
+ */
+ public static Class verifyAttributeCategory(Object object,
+ Class interfaceName)
+ {
+ if (object == null)
+ throw new NullPointerException("object may not be null");
+
+ Class clazz = (Class) object;
+
+ if (interfaceName.isAssignableFrom(clazz))
+ return clazz;
+
+ throw new ClassCastException();
+ }
+
+ /**
+ * Verifies that the given object is an attribute of the given interface.
+ *
+ * @return the object casted to <code>Attribute</code>
+ *
+ * @exception ClassCastException if object is no instance of interfaceName.
+ * @exception NullPointerException if object is null
+ */
+ public static Attribute verifyAttributeValue(Object object,
+ Class interfaceName)
+ {
+ if (object == null)
+ throw new NullPointerException("object may not be null");
+
+ if (interfaceName.isInstance(object))
+ return (Attribute) object;
+
+ throw new ClassCastException();
+ }
+
+ /**
+ * Verifies that the category of attribute is equals to category.
+ *
+ * @param category the category the atteribute should be
+ * @param attribtue the attribute to verify
+ *
+ * @exception IllegalArgumentException if the categories are not equal
+ * @exception NullPointerException if category is null
+ */
+ public static void verifyCategoryForAttribute(Class category,
+ Attribute attribute)
+ {
+ if (category == null)
+ throw new NullPointerException("object may not be null");
+
+ if (category.equals(attribute.getCategory()))
+ throw new IllegalArgumentException
+ ("category of attribute not equal to category");
+ }
+}
diff --git a/libjava/javax/print/attribute/HashAttributeSet.java b/libjava/javax/print/attribute/HashAttributeSet.java
new file mode 100644
index 00000000000..6adf37c617f
--- /dev/null
+++ b/libjava/javax/print/attribute/HashAttributeSet.java
@@ -0,0 +1,341 @@
+/* HashAttributeSet.java --
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.print.attribute;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Iterator;
+
+public class HashAttributeSet implements AttributeSet, Serializable
+{
+ private static final long serialVersionUID = 5311560590283707917L;
+
+ private Class interfaceName;
+ private HashMap attributeMap = new HashMap();
+
+ /**
+ * Creates an empty <code>HashAttributeSet</code> object.
+ */
+ public HashAttributeSet()
+ {
+ this(Attribute.class);
+ }
+
+ /**
+ * Creates a <code>HashAttributeSet</code> object with the given
+ * attribute in it.
+ *
+ * @param attribute the attribute to put into the set
+ *
+ * @exception NullPointerException if attribute is null
+ */
+ public HashAttributeSet(Attribute attribute)
+ {
+ this(attribute, Attribute.class);
+ }
+
+ /**
+ * Creates a <code>HashAttributeSet</code> object with the given
+ * attributes in it.
+ *
+ * @param attributes the attributes to put into the set
+ *
+ * @exception NullPointerException If attributes is null
+ */
+ public HashAttributeSet(Attribute[] attributes)
+ {
+ this(attributes, Attribute.class);
+ }
+
+ /**
+ * Creates a <code>HashAttributeSet</code> object with the given
+ * attributes in it.
+ *
+ * @param attributes the attributes to put into the set
+ *
+ * @exception NullPointerException If attributes is null
+ */
+ public HashAttributeSet(AttributeSet attributes)
+ {
+ this(attributes, Attribute.class);
+ }
+
+ /**
+ * Creates an empty <code>HashAttributeSet</code> object.
+ *
+ * @param interfaceName the interface that all members must implement
+ *
+ * @exception NullPointerException if interfaceName is null
+ */
+ protected HashAttributeSet(Class interfaceName)
+ {
+ if (interfaceName == null)
+ throw new NullPointerException("interfaceName may not be null");
+
+ this.interfaceName = interfaceName;
+ }
+
+ /**
+ * Creates an empty <code>HashAttributeSet</code> object.
+ *
+ * @exception ClassCastException if attribute is not an interface of
+ * interfaceName
+ * @exception NullPointerException if attribute or interfaceName is null
+ */
+ protected HashAttributeSet(Attribute attribute, Class interfaceName)
+ {
+ this(interfaceName);
+
+ if (attribute == null)
+ throw new NullPointerException();
+
+ add(attribute);
+ }
+
+ /**
+ * Creates an empty <code>HashAttributeSet</code> object.
+ *
+ * @exception ClassCastException if any element of attributes is not an
+ * interface of interfaceName
+ * @exception NullPointerException if attributes or interfaceName is null
+ */
+ protected HashAttributeSet(Attribute[] attributes, Class interfaceName)
+ {
+ this(interfaceName);
+
+ if (attributes == null)
+ throw new NullPointerException();
+
+ for (int index = 0; index < attributes.length; index++)
+ add(attributes[index]);
+ }
+
+ /**
+ * Creates an empty <code>HashAttributeSet</code> object.
+ *
+ * @exception ClassCastException if any element of attributes is not an
+ * interface of interfaceName
+ * @exception NullPointerException if attributes or interfaceName is null
+ */
+ public HashAttributeSet(AttributeSet attributes, Class interfaceName)
+ {
+ this(interfaceName);
+
+ if (attributes != null)
+ addAll(attributes);
+ }
+
+ /**
+ * Adds the given attribute to the set.
+ *
+ * @param attribute the attribute to add
+ *
+ * @return true if the attribute set has changed, false otherwise
+ */
+ public boolean add(Attribute attribute)
+ {
+ if (attribute == null)
+ throw new NullPointerException("attribute may not be null");
+
+ Object old = attributeMap.put
+ (attribute.getCategory(), AttributeSetUtilities.verifyAttributeValue
+ (attribute, interfaceName));
+ return !attribute.equals(old);
+ }
+
+ /**
+ * Adds the given attributes to the set.
+ *
+ * @param attributes the attributes to add
+ *
+ * @return true if the attribute set has changed, false otherwise
+ */
+ public boolean addAll(AttributeSet attributes)
+ {
+ boolean modified = false;
+ Attribute[] array = attributes.toArray();
+
+ for (int index = 0; index < array.length; index++)
+ if (! add(array[index]))
+ modified = true;
+
+ return modified;
+ }
+
+ /**
+ * Removes all attributes from this attribute set.
+ */
+ public void clear()
+ {
+ attributeMap.clear();
+ }
+
+ /**
+ * Checks if this attribute set contains an entry with the given category.
+ *
+ * @param category the category to test for
+ *
+ * @result true if the category exists in this attribute set, false otherwise.
+ */
+ public boolean containsKey(Class category)
+ {
+ return attributeMap.containsKey(category);
+ }
+
+ /**
+ * Checks if this attribute set contains an entry with the given attribute.
+ *
+ * @param attribute the attribute to test for
+ *
+ * @result true if the attribute exists in this attribute set,
+ * false otherwise.
+ */
+ public boolean containsValue(Attribute attribute)
+ {
+ return attributeMap.containsValue(attribute);
+ }
+
+ /**
+ * Tests of obj is equal to this object.
+ *
+ * @param obj the object to test
+ *
+ * @returns true if both objects are equal, false otherwise.
+ */
+ public boolean equals(Object obj)
+ {
+ if (! (obj instanceof HashAttributeSet))
+ return false;
+
+ return attributeMap.equals(((HashAttributeSet) obj).attributeMap);
+ }
+
+ /**
+ * Returns the attribute value that is connected to the given attribute
+ * category. If the attribute set does not contains the given category null
+ * will be returned.
+ *
+ * @param category the attribute category to return the attribute value for
+ *
+ * @return the attribute associated to category, or null
+ */
+ public Attribute get(Class category)
+ {
+ return (Attribute) attributeMap.get(category);
+ }
+
+ /**
+ * Returns the hashcode for this object.
+ *
+ * @return the hashcode
+ */
+ public int hashCode()
+ {
+ return attributeMap.hashCode() + interfaceName.hashCode();
+ }
+
+ /**
+ * Checks if the attribute set is empty.
+ *
+ * @return true if the attribute set is empty, false otherwise
+ */
+ public boolean isEmpty()
+ {
+ return attributeMap.isEmpty();
+ }
+
+ /**
+ * Removes the entry with the given attribute in it.
+ *
+ * @param attribute the attribute value of the entry to be removed
+ *
+ * @return true if the attribute set has changed, false otherwise.
+ */
+ public boolean remove(Attribute attribute)
+ {
+ if (attribute == null)
+ return false;
+
+ return attributeMap.remove(attribute.getCategory()) != null;
+ }
+
+ /**
+ * Removes the entry with the given category in it.
+ *
+ * @param category the category value of the entry to be removed
+ *
+ * @return true if the attribute set has changed, false otherwise.
+ */
+ public boolean remove(Class category)
+ {
+ if (category == null)
+ return false;
+
+ return attributeMap.remove(category) != null;
+ }
+
+ /**
+ * Returns the number of elements in this attribute set.
+ *
+ * @return the number of elements.
+ */
+ public int size()
+ {
+ return attributeMap.size();
+ }
+
+ /**
+ * Returns the content of the attribute set as an array
+ *
+ * @return an array of attributes
+ */
+ public Attribute[] toArray()
+ {
+ int index = 0;
+ Iterator it = attributeMap.entrySet().iterator();
+ Attribute[] array = new Attribute[size()];
+
+ while (it.hasNext())
+ {
+ array[index] = (Attribute) it.next();
+ index++;
+ }
+
+ return array;
+ }
+}
diff --git a/libjava/javax/print/attribute/HashDocAttributeSet.java b/libjava/javax/print/attribute/HashDocAttributeSet.java
new file mode 100644
index 00000000000..a7eedbf54b6
--- /dev/null
+++ b/libjava/javax/print/attribute/HashDocAttributeSet.java
@@ -0,0 +1,94 @@
+/* HashDocAttributeSet.java --
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.print.attribute;
+
+import java.io.Serializable;
+
+public class HashDocAttributeSet extends HashAttributeSet
+ implements DocAttributeSet, Serializable
+{
+ private static final long serialVersionUID = -1128534486061432528L;
+
+ /**
+ * Creates an empty <code>HashDocAttributeSet</code> object.
+ */
+ public HashDocAttributeSet()
+ {
+ super(DocAttribute.class);
+ }
+
+ /**
+ * Creates a <code>HashDocAttributeSet</code> object with the given
+ * attribute in it.
+ *
+ * @param attribute the attriute tu put into the attribute set
+ *
+ * @exception NullPointerException if attribute is null
+ */
+ public HashDocAttributeSet(DocAttribute attribute)
+ {
+ super(attribute, DocAttribute.class);
+ }
+
+ /**
+ * Creates a <code>HashDocAttributeSet</code> object with the given
+ * attributes in it.
+ *
+ * @param attributes the attributes to put into the attribute set
+ *
+ * @exception NullPointerException if attributes is null
+ */
+ public HashDocAttributeSet(DocAttribute[] attributes)
+ {
+ super(attributes, DocAttribute.class);
+ }
+
+ /**
+ * Creates a <code>HashDocAttributeSet</code> object with the given
+ * attributes in it.
+ *
+ * @param attributes the attributes to put into the attribute set
+ *
+ * @exception ClassCastException if any element of attributes is not
+ * an instance of <code>DocAttribute</code>
+ */
+ public HashDocAttributeSet(DocAttributeSet attributes)
+ {
+ super(attributes, DocAttribute.class);
+ }
+}
diff --git a/libjava/javax/print/attribute/HashPrintJobAttributeSet.java b/libjava/javax/print/attribute/HashPrintJobAttributeSet.java
new file mode 100644
index 00000000000..16b1beb3481
--- /dev/null
+++ b/libjava/javax/print/attribute/HashPrintJobAttributeSet.java
@@ -0,0 +1,94 @@
+/* HashPrintJobAttributeSet.java --
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.print.attribute;
+
+import java.io.Serializable;
+
+public class HashPrintJobAttributeSet extends HashAttributeSet
+ implements Serializable, PrintJobAttributeSet
+{
+ private static final long serialVersionUID = -4204473656070350348L;
+
+ /**
+ * Creates an empty <code>HashPrintJobAttributeSet</code> object.
+ */
+ public HashPrintJobAttributeSet()
+ {
+ super(PrintJobAttribute.class);
+ }
+
+ /**
+ * Creates a <code>HashPrintJobAttributeSet</code> object with the given
+ * attribute in it.
+ *
+ * @param attribute the attriute tu put into the attribute set
+ *
+ * @exception NullPointerException if attribute is null
+ */
+ public HashPrintJobAttributeSet(PrintJobAttribute attribute)
+ {
+ super(attribute, PrintJobAttribute.class);
+ }
+
+ /**
+ * Creates a <code>HashPrintJobAttributeSet</code> object with the given
+ * attributes in it.
+ *
+ * @param attributes the attributes to put into the attribute set
+ *
+ * @exception NullPointerException if attributes is null
+ */
+ public HashPrintJobAttributeSet(PrintJobAttribute[] attributes)
+ {
+ super(attributes, PrintJobAttribute.class);
+ }
+
+ /**
+ * Creates a <code>HashPrintJobAttributeSet</code> object with the given
+ * attributes in it.
+ *
+ * @param attributes the attributes to put into the attribute set
+ *
+ * @exception ClassCastException if any element of attributes is not
+ * an instance of <code>PrintJobAttribute</code>
+ */
+ public HashPrintJobAttributeSet(PrintJobAttributeSet attributes)
+ {
+ super(attributes, PrintJobAttribute.class);
+ }
+}
diff --git a/libjava/javax/print/attribute/HashPrintRequestAttributeSet.java b/libjava/javax/print/attribute/HashPrintRequestAttributeSet.java
new file mode 100644
index 00000000000..2d0cbbd3adc
--- /dev/null
+++ b/libjava/javax/print/attribute/HashPrintRequestAttributeSet.java
@@ -0,0 +1,94 @@
+/* HashPrintRequestAttributeSet.java --
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.print.attribute;
+
+import java.io.Serializable;
+
+public class HashPrintRequestAttributeSet extends HashAttributeSet
+ implements Serializable, PrintRequestAttributeSet
+{
+ private static final long serialVersionUID = 2364756266107751933L;
+
+ /**
+ * Creates an empty <code>HashPrintRequestAttributeSet</code> object.
+ */
+ public HashPrintRequestAttributeSet()
+ {
+ super(PrintRequestAttribute.class);
+ }
+
+ /**
+ * Creates a <code>HashPrintRequestAttributeSet</code> object with the given
+ * attribute in it.
+ *
+ * @param attribute the attriute tu put into the attribute set
+ *
+ * @exception NullPointerException if attribute is null
+ */
+ public HashPrintRequestAttributeSet(PrintRequestAttribute attribute)
+ {
+ super(attribute, PrintRequestAttribute.class);
+ }
+
+ /**
+ * Creates a <code>HashPrintRequestAttributeSet</code> object with the given
+ * attributes in it.
+ *
+ * @param attributes the attributes to put into the attribute set
+ *
+ * @exception NullPointerException if attributes is null
+ */
+ public HashPrintRequestAttributeSet(PrintRequestAttribute[] attributes)
+ {
+ super(attributes, PrintRequestAttribute.class);
+ }
+
+ /**
+ * Creates a <code>HashPrintRequestAttributeSet</code> object with the given
+ * attributes in it.
+ *
+ * @param attributes the attributes to put into the attribute set
+ *
+ * @exception ClassCastException if any element of attributes is not
+ * an instance of <code>PrintRequestAttribute</code>
+ */
+ public HashPrintRequestAttributeSet(PrintRequestAttributeSet attributes)
+ {
+ super(attributes, PrintRequestAttribute.class);
+ }
+}
diff --git a/libjava/javax/print/attribute/HashPrintServiceAttributeSet.java b/libjava/javax/print/attribute/HashPrintServiceAttributeSet.java
new file mode 100644
index 00000000000..aa6793b382f
--- /dev/null
+++ b/libjava/javax/print/attribute/HashPrintServiceAttributeSet.java
@@ -0,0 +1,94 @@
+/* HashPrintServiceAttributeSet.java --
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.print.attribute;
+
+import java.io.Serializable;
+
+public class HashPrintServiceAttributeSet extends HashAttributeSet
+ implements Serializable, PrintServiceAttributeSet
+{
+ private static final long serialVersionUID = 6642904616179203070L;
+
+ /**
+ * Creates an empty <code>HashPrintServiceAttributeSet</code> object.
+ */
+ public HashPrintServiceAttributeSet()
+ {
+ super(PrintServiceAttribute.class);
+ }
+
+ /**
+ * Creates a <code>HashPrintServiceAttributeSet</code> object with the given
+ * attribute in it.
+ *
+ * @param attribute the attriute tu put into the attribute set
+ *
+ * @exception NullPointerException if attribute is null
+ */
+ public HashPrintServiceAttributeSet(PrintServiceAttribute attribute)
+ {
+ super(attribute, PrintServiceAttribute.class);
+ }
+
+ /**
+ * Creates a <code>HashPrintServiceAttributeSet</code> object with the given
+ * attributes in it.
+ *
+ * @param attributes the attributes to put into the attribute set
+ *
+ * @exception NullPointerException if attributes is null
+ */
+ public HashPrintServiceAttributeSet(PrintServiceAttribute[] attributes)
+ {
+ super(attributes, PrintServiceAttribute.class);
+ }
+
+ /**
+ * Creates a <code>HashPrintServiceAttributeSet</code> object with the given
+ * attributes in it.
+ *
+ * @param attributes the attributes to put into the attribute set
+ *
+ * @exception ClassCastException if any element of attributes is not
+ * an instance of <code>PrintServiceAttribute</code>
+ */
+ public HashPrintServiceAttributeSet(PrintServiceAttributeSet attributes)
+ {
+ super(attributes, PrintServiceAttribute.class);
+ }
+}