View Javadoc
1   /*
2     (C) Copyright IBM Corp. 2006, 2013
3   
4     THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
5     ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
6     CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
7   
8     You can obtain a current copy of the Eclipse Public License from
9     http://www.opensource.org/licenses/eclipse-1.0.php
10  
11    @author : Endre Bak, ebak@de.ibm.com
12   * 
13   * Flag       Date        Prog         Description
14   * -------------------------------------------------------------------------------
15   * 1565892    2006-10-09  ebak         Make SBLIM client JSR48 compliant
16   * 1737123    2007-06-15  ebak         Differences to JSR48 public review draft
17   * 2003590    2008-06-30  blaschke-oss Change licensing from CPL to EPL
18   * 2524131    2009-01-21  raman_arora  Upgrade client to JDK 1.5 (Phase 1)
19   * 2531371    2009-02-10  raman_arora  Upgrade client to JDK 1.5 (Phase 2)
20   * 2750520    2009-04-10  blaschke-oss Code cleanup from empty statement et al
21   * 2795671    2009-05-22  raman_arora  Add Type to Comparable <T>
22   * 2935258    2010-01-22  blaschke-oss Sync up javax.cim.* javadoc with JSR48 1.0.0
23   * 2973233    2010-03-19  blaschke-oss TCK: UnsignedIntegerNN.hashCode() not working
24   *    2719    2013-12-10  blaschke-oss TCK: CIM APIs should not generate NullPointerException
25   *    2716    2013-12-11  blaschke-oss Sync up javax.* javadoc with JSR48 1.0.0 Final V
26   */
27  
28  package org.metricshub.wbem.javax.cim;
29  
30  /*-
31   * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
32   * WBEM Java Client
33   * ჻჻჻჻჻჻
34   * Copyright 2023 - 2025 MetricsHub
35   * ჻჻჻჻჻჻
36   * Licensed under the Apache License, Version 2.0 (the "License");
37   * you may not use this file except in compliance with the License.
38   * You may obtain a copy of the License at
39   *
40   *      http://www.apache.org/licenses/LICENSE-2.0
41   *
42   * Unless required by applicable law or agreed to in writing, software
43   * distributed under the License is distributed on an "AS IS" BASIS,
44   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
45   * See the License for the specific language governing permissions and
46   * limitations under the License.
47   * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
48   */
49  
50  //Sync'd against JSR48 1.0.0 javadoc (version 1.7.0_03) on Tue Dec 10 07:02:50 EST 2013
51  /**
52   * This class represents an <code>UnsignedInteger16</code>. A
53   * <code>uint16</code> data type is defined by the (<a
54   * href=http://www.dmtf.org>DMTF</a>) CIM Infrastructure Specification (<a
55   * href=http://www.dmtf.org/standards/published_documents/DSP0004V2.3_final.pdf
56   * >DSP004</a>).
57   */
58  public class UnsignedInteger16 extends Number implements Comparable<UnsignedInteger16> {
59  	private static final long serialVersionUID = -4992164525643467216L;
60  
61  	/**
62  	 * The maximum value for an <code>UnsignedInteger16</code>.
63  	 */
64  	public static final int MAX_VALUE = 65535;
65  
66  	/**
67  	 * The minimum value for an <code>UnsignedInteger16</code>.
68  	 */
69  	public static final int MIN_VALUE = 0;
70  
71  	private int iValue;
72  
73  	/**
74  	 * Sets the value of this integer object if it falls within the range of
75  	 * minimum and maximum values.
76  	 *
77  	 * @param pValue
78  	 *            The integer.
79  	 * @throws NumberFormatException
80  	 *             If the integer is out of range.
81  	 */
82  	private void setValue(int pValue) throws NumberFormatException {
83  		if (pValue > MAX_VALUE || pValue < MIN_VALUE) {
84  			String msg = "uint16:" + pValue + " is out of range!";
85  			throw new NumberFormatException(msg);
86  		}
87  		this.iValue = pValue;
88  	}
89  
90  	/**
91  	 * Constructs an unsigned 16-bit integer object for the specified int value.
92  	 * Only the lower 16 bits are considered.
93  	 *
94  	 * @param pValue
95  	 *            The integer to be represented as an unsigned 16-bit integer.
96  	 * @throws NumberFormatException
97  	 *             If the number is out of range.
98  	 */
99  	public UnsignedInteger16(int pValue) throws NumberFormatException {
100 		setValue(pValue);
101 	}
102 
103 	/**
104 	 * Constructs an unsigned 16-bit integer object for the specified string.
105 	 * Only the lower 16 bits are considered.
106 	 *
107 	 * @param pValue
108 	 *            The string to be represented as an unsigned 16-bit integer.
109 	 * @throws NumberFormatException
110 	 *             If the number is out of range.
111 	 * @throws IllegalArgumentException
112 	 *             If value is <code>null</code>.
113 	 */
114 	public UnsignedInteger16(String pValue) throws NumberFormatException {
115 		if (pValue == null) throw new IllegalArgumentException("String value cannot be null!");
116 		setValue(Integer.parseInt(pValue));
117 	}
118 
119 	/**
120 	 * Compares this object with the specified object for order. Returns a
121 	 * negative integer, zero, or a positive integer as this object is less
122 	 * than, equal to, or greater than the specified object.
123 	 *
124 	 * @param pOther
125 	 *            The Object to be compared.
126 	 * @return A negative integer, zero, or a positive integer as this object is
127 	 *         less than, equal to, or greater than the specified object.
128 	 * @throws ClassCastException
129 	 *             If the specified object's type prevents it from being
130 	 *             compared to this Object.
131 	 * @throws IllegalArgumentException
132 	 *             If value is <code>null</code>.
133 	 */
134 	public int compareTo(UnsignedInteger16 pOther) {
135 		if (pOther == null) throw new IllegalArgumentException("Other UnsignedInteger16 cannot be null!");
136 		UnsignedInteger16 that = pOther;
137 		int d = this.iValue - that.iValue;
138 		if (d == 0) return 0;
139 		return d < 0 ? -1 : 1;
140 	}
141 
142 	/**
143 	 * Compares this object against the specified object. The result is
144 	 * <code>true</code> if and only if the argument is not null and is an
145 	 * <code>UnsignedInteger16</code> object that represents the same value as
146 	 * this object.
147 	 *
148 	 * @param pObj
149 	 *            The object to compare.
150 	 * @return <code>true</code> if the objects are the same; <code>false</code>
151 	 *         otherwise.
152 	 */
153 	@Override
154 	public boolean equals(Object pObj) {
155 		if (!(pObj instanceof UnsignedInteger16)) return false;
156 		return this.iValue == ((UnsignedInteger16) pObj).iValue;
157 	}
158 
159 	/**
160 	 * Returns the value of this unsigned integer object as a <code>byte</code>.
161 	 *
162 	 * @return The <code>byte</code> value of this unsigned integer object.
163 	 */
164 	@Override
165 	public byte byteValue() {
166 		return (byte) this.iValue;
167 	}
168 
169 	/**
170 	 * Returns the value of this unsigned integer object as a
171 	 * <code>double</code>.
172 	 *
173 	 * @return Value of this unsigned integer object as a <code>double</code>.
174 	 */
175 	@Override
176 	public double doubleValue() {
177 		return this.iValue;
178 	}
179 
180 	/**
181 	 * Returns the value of this unsigned integer object as a <code>float</code>
182 	 * .
183 	 *
184 	 * @return Value of this unsigned integer object as a <code>float</code>.
185 	 */
186 	@Override
187 	public float floatValue() {
188 		return this.iValue;
189 	}
190 
191 	/**
192 	 * Computes the hash code for this unsigned integer object.
193 	 *
194 	 * @return The integer representing the hash code for this unsigned integer
195 	 *         object.
196 	 */
197 	@Override
198 	public int hashCode() {
199 		return Integer.valueOf(this.iValue).hashCode();
200 	}
201 
202 	/**
203 	 * Returns the value of this unsigned integer object as an <code>int</code>.
204 	 *
205 	 * @return Value of this unsigned integer object as an <code>int</code>.
206 	 */
207 	@Override
208 	public int intValue() {
209 		return this.iValue;
210 	}
211 
212 	/**
213 	 * Returns the value of this unsigned integer object as a <code>long</code>.
214 	 *
215 	 * @return Value of this unsigned integer object as a <code>long</code>.
216 	 */
217 	@Override
218 	public long longValue() {
219 		return this.iValue;
220 	}
221 
222 	/**
223 	 * Returns the value of this unsigned integer object as a <code>short</code>
224 	 * .
225 	 *
226 	 * @return Value of this unsigned integer object as a <code>short</code>.
227 	 */
228 	@Override
229 	public short shortValue() {
230 		return (short) this.iValue;
231 	}
232 
233 	/**
234 	 * Returns the text representation of this unsigned integer object.
235 	 *
236 	 * @return Text representation of this unsigned integer.
237 	 */
238 	@Override
239 	public String toString() {
240 		return Integer.toString(this.iValue);
241 	}
242 }