578 lines · 18.3 KB · Java
RawDownload
/* * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.  Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code 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 * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */  package javax.print.attribute; import java.io.Serializable; /** * Class AttributeSetUtilities provides static methods for manipulating * AttributeSets. * <ul> * <li>Methods for creating unmodifiable and synchronized views of attribute * sets. * <li>operations useful for building * implementations of interface {@link AttributeSet AttributeSet} * </ul> * <P> * An <B>unmodifiable view</B> <I>U</I> of an AttributeSet <I>S</I> provides a * client with "read-only" access to <I>S</I>. Query operations on <I>U</I> * "read through" to <I>S</I>; thus, changes in <I>S</I> are reflected in * <I>U</I>. However, any attempt to modify <I>U</I>, *  results in an UnmodifiableSetException. * The unmodifiable view object <I>U</I> will be serializable if the * attribute set object <I>S</I> is serializable. * <P> * A <B>synchronized view</B> <I>V</I> of an attribute set <I>S</I> provides a * client with synchronized (multiple thread safe) access to <I>S</I>. Each * operation of <I>V</I> is synchronized using <I>V</I> itself as the lock * object and then merely invokes the corresponding operation of <I>S</I>. In * order to guarantee mutually exclusive access, it is critical that all * access to <I>S</I> is accomplished through <I>V</I>. The synchronized view * object <I>V</I> will be serializable if the attribute set object <I>S</I> * is serializable. * <P> * As mentioned in the package description of javax.print, a null reference * parameter to methods is * incorrect unless explicitly documented on the method as having a meaningful * interpretation.  Usage to the contrary is incorrect coding and may result in * a run time exception either immediately * or at some later time. IllegalArgumentException and NullPointerException * are examples of typical and acceptable run time exceptions for such cases. * * @author  Alan Kaminsky */public final class AttributeSetUtilities {     /* Suppress default constructor, ensuring non-instantiability.     */    private AttributeSetUtilities() {    }     /**      * @serial include      */    private static class UnmodifiableAttributeSet        implements AttributeSet, Serializable {         private AttributeSet attrset;         /* Unmodifiable view of the underlying attribute set.         */        public UnmodifiableAttributeSet(AttributeSet attributeSet) {             attrset = attributeSet;        }         public Attribute get(Class<?> key) {            return attrset.get(key);        }         public boolean add(Attribute attribute) {            throw new UnmodifiableSetException();        }         public synchronized boolean remove(Class<?> category) {            throw new UnmodifiableSetException();        }         public boolean remove(Attribute attribute) {            throw new UnmodifiableSetException();        }         public boolean containsKey(Class<?> category) {            return attrset.containsKey(category);        }         public boolean containsValue(Attribute attribute) {            return attrset.containsValue(attribute);        }         public boolean addAll(AttributeSet attributes) {            throw new UnmodifiableSetException();        }         public int size() {            return attrset.size();        }         public Attribute[] toArray() {            return attrset.toArray();        }         public void clear() {            throw new UnmodifiableSetException();        }         public boolean isEmpty() {            return attrset.isEmpty();        }         public boolean equals(Object o) {            return attrset.equals (o);        }         public int hashCode() {            return attrset.hashCode();        }     }     /**      * @serial include      */    private static class UnmodifiableDocAttributeSet        extends UnmodifiableAttributeSet        implements DocAttributeSet, Serializable {         public UnmodifiableDocAttributeSet(DocAttributeSet attributeSet) {             super (attributeSet);        }    }     /**      * @serial include      */    private static class UnmodifiablePrintRequestAttributeSet        extends UnmodifiableAttributeSet        implements PrintRequestAttributeSet, Serializable    {        public UnmodifiablePrintRequestAttributeSet            (PrintRequestAttributeSet attributeSet) {             super (attributeSet);        }    }     /**      * @serial include      */    private static class UnmodifiablePrintJobAttributeSet        extends UnmodifiableAttributeSet        implements PrintJobAttributeSet, Serializable    {        public UnmodifiablePrintJobAttributeSet            (PrintJobAttributeSet attributeSet) {             super (attributeSet);        }    }     /**      * @serial include      */    private static class UnmodifiablePrintServiceAttributeSet        extends UnmodifiableAttributeSet        implements PrintServiceAttributeSet, Serializable    {        public UnmodifiablePrintServiceAttributeSet            (PrintServiceAttributeSet attributeSet) {             super (attributeSet);        }    }     /**     * Creates an unmodifiable view of the given attribute set.     *     * @param  attributeSet  Underlying attribute set.     *     * @return  Unmodifiable view of <CODE>attributeSet</CODE>.     *     * @exception  NullPointerException     *     Thrown if <CODE>attributeSet</CODE> is null. Null is never a     */    public static AttributeSet unmodifiableView(AttributeSet attributeSet) {        if (attributeSet == null) {            throw new NullPointerException();        }         return new UnmodifiableAttributeSet(attributeSet);    }     /**     * Creates an unmodifiable view of the given doc attribute set.     *     * @param  attributeSet  Underlying doc attribute set.     *     * @return  Unmodifiable view of <CODE>attributeSet</CODE>.     *     * @exception  NullPointerException     *     Thrown if <CODE>attributeSet</CODE> is null.     */    public static DocAttributeSet unmodifiableView        (DocAttributeSet attributeSet) {        if (attributeSet == null) {            throw new NullPointerException();        }        return new UnmodifiableDocAttributeSet(attributeSet);    }     /**     * Creates an unmodifiable view of the given print request attribute set.     *     * @param  attributeSet  Underlying print request attribute set.     *     * @return  Unmodifiable view of <CODE>attributeSet</CODE>.     *     * @exception  NullPointerException     *     Thrown if <CODE>attributeSet</CODE> is null.     */    public static PrintRequestAttributeSet        unmodifiableView(PrintRequestAttributeSet attributeSet) {        if (attributeSet == null) {            throw new NullPointerException();        }        return new UnmodifiablePrintRequestAttributeSet(attributeSet);    }     /**     * Creates an unmodifiable view of the given print job attribute set.     *     * @param  attributeSet  Underlying print job attribute set.     *     * @return  Unmodifiable view of <CODE>attributeSet</CODE>.     *     * @exception  NullPointerException     *     Thrown if <CODE>attributeSet</CODE> is null.     */    public static PrintJobAttributeSet        unmodifiableView(PrintJobAttributeSet attributeSet) {        if (attributeSet == null) {            throw new NullPointerException();        }        return new UnmodifiablePrintJobAttributeSet(attributeSet);    }     /**     * Creates an unmodifiable view of the given print service attribute set.     *     * @param  attributeSet  Underlying print service attribute set.     *     * @return  Unmodifiable view of <CODE>attributeSet</CODE>.     *     * @exception  NullPointerException     *     Thrown if <CODE>attributeSet</CODE> is null.     */    public static PrintServiceAttributeSet        unmodifiableView(PrintServiceAttributeSet attributeSet) {        if (attributeSet == null) {            throw new NullPointerException();        }        return new UnmodifiablePrintServiceAttributeSet (attributeSet);    }     /**      * @serial include      */    private static class SynchronizedAttributeSet                        implements AttributeSet, Serializable {         private AttributeSet attrset;         public SynchronizedAttributeSet(AttributeSet attributeSet) {            attrset = attributeSet;        }         public synchronized Attribute get(Class<?> category) {            return attrset.get(category);        }         public synchronized boolean add(Attribute attribute) {            return attrset.add(attribute);        }         public synchronized boolean remove(Class<?> category) {            return attrset.remove(category);        }         public synchronized boolean remove(Attribute attribute) {            return attrset.remove(attribute);        }         public synchronized boolean containsKey(Class<?> category) {            return attrset.containsKey(category);        }         public synchronized boolean containsValue(Attribute attribute) {            return attrset.containsValue(attribute);        }         public synchronized boolean addAll(AttributeSet attributes) {            return attrset.addAll(attributes);        }         public synchronized int size() {            return attrset.size();        }         public synchronized Attribute[] toArray() {            return attrset.toArray();        }         public synchronized void clear() {            attrset.clear();        }         public synchronized boolean isEmpty() {            return attrset.isEmpty();        }         public synchronized boolean equals(Object o) {            return attrset.equals (o);        }         public synchronized int hashCode() {            return attrset.hashCode();        }    }     /**      * @serial include      */    private static class SynchronizedDocAttributeSet        extends SynchronizedAttributeSet        implements DocAttributeSet, Serializable {         public SynchronizedDocAttributeSet(DocAttributeSet attributeSet) {            super(attributeSet);        }    }     /**      * @serial include      */    private static class SynchronizedPrintRequestAttributeSet        extends SynchronizedAttributeSet        implements PrintRequestAttributeSet, Serializable {         public SynchronizedPrintRequestAttributeSet            (PrintRequestAttributeSet attributeSet) {            super(attributeSet);        }    }     /**      * @serial include      */    private static class SynchronizedPrintJobAttributeSet        extends SynchronizedAttributeSet        implements PrintJobAttributeSet, Serializable {         public SynchronizedPrintJobAttributeSet            (PrintJobAttributeSet attributeSet) {            super(attributeSet);        }    }     /**      * @serial include      */    private static class SynchronizedPrintServiceAttributeSet        extends SynchronizedAttributeSet        implements PrintServiceAttributeSet, Serializable {        public SynchronizedPrintServiceAttributeSet            (PrintServiceAttributeSet attributeSet) {            super(attributeSet);        }    }     /**     * Creates a synchronized view of the given attribute set.     *     * @param  attributeSet  Underlying attribute set.     *     * @return  Synchronized view of <CODE>attributeSet</CODE>.     *     * @exception  NullPointerException     *     Thrown if <CODE>attributeSet</CODE> is null.     */    public static AttributeSet synchronizedView        (AttributeSet attributeSet) {        if (attributeSet == null) {            throw new NullPointerException();        }        return new SynchronizedAttributeSet(attributeSet);    }     /**     * Creates a synchronized view of the given doc attribute set.     *     * @param  attributeSet  Underlying doc attribute set.     *     * @return  Synchronized view of <CODE>attributeSet</CODE>.     *     * @exception  NullPointerException     *     Thrown if <CODE>attributeSet</CODE> is null.     */    public static DocAttributeSet        synchronizedView(DocAttributeSet attributeSet) {        if (attributeSet == null) {            throw new NullPointerException();        }        return new SynchronizedDocAttributeSet(attributeSet);    }     /**     * Creates a synchronized view of the given print request attribute set.     *     * @param  attributeSet  Underlying print request attribute set.     *     * @return  Synchronized view of <CODE>attributeSet</CODE>.     *     * @exception  NullPointerException     *     Thrown if <CODE>attributeSet</CODE> is null.     */    public static PrintRequestAttributeSet        synchronizedView(PrintRequestAttributeSet attributeSet) {        if (attributeSet == null) {            throw new NullPointerException();        }        return new SynchronizedPrintRequestAttributeSet(attributeSet);    }     /**     * Creates a synchronized view of the given print job attribute set.     *     * @param  attributeSet  Underlying print job attribute set.     *     * @return  Synchronized view of <CODE>attributeSet</CODE>.     *     * @exception  NullPointerException     *     Thrown if <CODE>attributeSet</CODE> is null.     */    public static PrintJobAttributeSet        synchronizedView(PrintJobAttributeSet attributeSet) {        if (attributeSet == null) {            throw new NullPointerException();        }        return new SynchronizedPrintJobAttributeSet(attributeSet);    }     /**     * Creates a synchronized view of the given print service attribute set.     *     * @param  attributeSet  Underlying print service attribute set.     *     * @return  Synchronized view of <CODE>attributeSet</CODE>.     */    public static PrintServiceAttributeSet        synchronizedView(PrintServiceAttributeSet attributeSet) {        if (attributeSet == null) {            throw new NullPointerException();        }        return new SynchronizedPrintServiceAttributeSet(attributeSet);    }      /**     * Verify that the given object is a {@link java.lang.Class Class} that     * implements the given interface, which is assumed to be interface {@link     * Attribute Attribute} or a subinterface thereof.     *     * @param  object     Object to test.     * @param  interfaceName  Interface the object must implement.     *     * @return  If <CODE>object</CODE> is a {@link java.lang.Class Class}

Lines 1–500 of 578.