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>UnsignedInteger32</code>. A
53   * <code>uint32</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 UnsignedInteger32 extends Number implements Comparable<UnsignedInteger32> {
59  	private static final long serialVersionUID = -8861436527534071393L;
60  
61  	/**
62  	 * The maximum value for an <code>UnsignedInteger32</code>.
63  	 */
64  	public static final long MAX_VALUE = 4294967295l;
65  
66  	/**
67  	 * The minimum value for an <code>UnsignedInteger32</code>.
68  	 */
69  	public static final long MIN_VALUE = 0l;
70  
71  	private long 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(long pValue) throws NumberFormatException {
83  		if (pValue > MAX_VALUE || pValue < MIN_VALUE) {
84  			String msg = "uint32:" + pValue + " is out of range!";
85  			throw new NumberFormatException(msg);
86  		}
87  		this.iValue = pValue;
88  	}
89  
90  	/**
91  	 * Constructs an unsigned 32-bit integer object for the specified long
92  	 * value. Only the lower 32 bits are considered.
93  	 *
94  	 * @param pValue
95  	 *            The long to be represented as an unsigned 32-bit integer.
96  	 * @throws NumberFormatException
97  	 *             If the number is out of range.
98  	 */
99  	public UnsignedInteger32(long pValue) throws NumberFormatException {
100 		setValue(pValue);
101 	}
102 
103 	/**
104 	 * Constructs an unsigned 32-bit integer object for the specified string.
105 	 * Only the lower 32 bits are considered.
106 	 *
107 	 * @param pValue
108 	 *            The string to be represented as an unsigned 32-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 UnsignedInteger32(String pValue) throws NumberFormatException {
115 		if (pValue == null) throw new IllegalArgumentException("String value cannot be null!");
116 		setValue(Long.parseLong(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(UnsignedInteger32 pOther) {
135 		if (pOther == null) throw new IllegalArgumentException("Other UnsignedInteger32 cannot be null!");
136 		UnsignedInteger32 that = pOther;
137 		long 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 	 * UnsignedInteger32 object that represents the same value as this object.
146 	 *
147 	 * @param pObj
148 	 *            The object to compare.
149 	 * @return <code>true</code> if the objects are the same; <code>false</code>
150 	 *         otherwise.
151 	 */
152 	@Override
153 	public boolean equals(Object pObj) {
154 		if (!(pObj instanceof UnsignedInteger32)) return false;
155 		return this.iValue == ((UnsignedInteger32) pObj).iValue;
156 	}
157 
158 	/**
159 	 * Returns the value of this unsigned integer object as a <code>byte</code>.
160 	 *
161 	 * @return The <code>byte</code> value of this unsigned integer object.
162 	 */
163 	@Override
164 	public byte byteValue() {
165 		return (byte) this.iValue;
166 	}
167 
168 	/**
169 	 * Returns the value of this unsigned integer object as a
170 	 * <code>double</code>.
171 	 *
172 	 * @return Value of this unsigned integer object as a <code>double</code>.
173 	 */
174 	@Override
175 	public double doubleValue() {
176 		return this.iValue;
177 	}
178 
179 	/**
180 	 * Returns the value of this unsigned integer object as a <code>float</code>
181 	 * .
182 	 *
183 	 * @return Value of this unsigned integer object as a <code>float</code>.
184 	 */
185 	@Override
186 	public float floatValue() {
187 		return this.iValue;
188 	}
189 
190 	/**
191 	 * Computes the hash code for this unsigned integer object.
192 	 *
193 	 * @return The integer representing the hash code for this unsigned integer
194 	 *         object.
195 	 */
196 	@Override
197 	public int hashCode() {
198 		return Long.valueOf(this.iValue).hashCode();
199 	}
200 
201 	/**
202 	 * Returns the value of this unsigned integer object as an <code>int</code>.
203 	 *
204 	 * @return Value of this unsigned integer object as an <code>int</code>.
205 	 */
206 	@Override
207 	public int intValue() {
208 		return (int) this.iValue;
209 	}
210 
211 	/**
212 	 * Returns the value of this unsigned integer object as a <code>long</code>.
213 	 *
214 	 * @return Value of this unsigned integer object as a <code>long</code>.
215 	 */
216 	@Override
217 	public long longValue() {
218 		return this.iValue;
219 	}
220 
221 	/**
222 	 * Returns the value of this unsigned integer object as a <code>short</code>
223 	 * .
224 	 *
225 	 * @return Value of this unsigned integer object as a <code>short</code>.
226 	 */
227 	@Override
228 	public short shortValue() {
229 		return (short) this.iValue;
230 	}
231 
232 	/**
233 	 * Returns the text representation of this unsigned integer object.
234 	 *
235 	 * @return Text representation of this unsigned integer.
236 	 */
237 	@Override
238 	public String toString() {
239 		return Long.toString(this.iValue);
240 	}
241 }