1 /*
2  * Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.  Oracle designates this
8  * particular file as subject to the "Classpath" exception as provided
9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 
26 package javax.print.attribute;
27 
28 import java.io.Serial;
29 import java.io.Serializable;
30 
31 /**
32  * Class {@code HashPrintServiceAttributeSet} provides an attribute set which
33  * inherits its implementation from class
34  * {@link HashAttributeSet HashAttributeSet} and enforces the semantic
35  * restrictions of interface
36  * {@link PrintServiceAttributeSet PrintServiceAttributeSet}.
37  *
38  * @author Alan Kaminsky
39  */
40 public class HashPrintServiceAttributeSet extends HashAttributeSet
41     implements PrintServiceAttributeSet, Serializable {
42 
43     /**
44      * Use serialVersionUID from JDK 1.4 for interoperability.
45      */
46     @Serial
47     private static final long serialVersionUID = 6642904616179203070L;
48 
49     /**
50      * Construct a new, empty hash print service attribute set.
51      */
HashPrintServiceAttributeSet()52     public HashPrintServiceAttributeSet() {
53         super (PrintServiceAttribute.class);
54     }
55 
56     /**
57      * Construct a new hash print service attribute set, initially populated
58      * with the given value.
59      *
60      * @param  attribute attribute value to add to the set
61      * @throws NullPointerException if {@code attribute} is {@code null}
62      */
HashPrintServiceAttributeSet(PrintServiceAttribute attribute)63     public HashPrintServiceAttributeSet(PrintServiceAttribute attribute) {
64         super (attribute, PrintServiceAttribute.class);
65     }
66 
67     /**
68      * Construct a new print service attribute set, initially populated with the
69      * values from the given array. The new attribute set is populated by adding
70      * the elements of {@code attributes} array to the set in sequence, starting
71      * at index 0. Thus, later array elements may replace earlier array elements
72      * if the array contains duplicate attribute values or attribute categories.
73      *
74      * @param  attributes array of attribute values to add to the set. If
75      *         {@code null}, an empty attribute set is constructed.
76      * @throws NullPointerException if any element of {@code attributes} is
77      *         {@code null}
78      */
HashPrintServiceAttributeSet(PrintServiceAttribute[] attributes)79     public HashPrintServiceAttributeSet(PrintServiceAttribute[] attributes) {
80         super (attributes, PrintServiceAttribute.class);
81     }
82 
83     /**
84      * Construct a new attribute set, initially populated with the values from
85      * the given set where the members of the attribute set are restricted to
86      * the {@code PrintServiceAttribute} interface.
87      *
88      * @param  attributes set of attribute values to initialise the set. If
89      *         {@code null}, an empty attribute set is constructed.
90      * @throws ClassCastException if any element of {@code attributes} is not an
91      *         instance of {@code PrintServiceAttribute}
92      */
HashPrintServiceAttributeSet(PrintServiceAttributeSet attributes)93     public HashPrintServiceAttributeSet(PrintServiceAttributeSet attributes)
94     {
95         super(attributes, PrintServiceAttribute.class);
96     }
97 }
98