Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/share/classes/com/sun/jmx/snmp/SnmpInt.java
38924 views
1
/*
2
* Copyright (c) 1997, 2011, 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
27
package com.sun.jmx.snmp;
28
29
30
31
import com.sun.jmx.snmp.Enumerated;
32
33
/**
34
* Represents an SNMP integer.
35
*
36
* <p><b>This API is a Sun Microsystems internal API and is subject
37
* to change without notice.</b></p>
38
*/
39
40
public class SnmpInt extends SnmpValue {
41
private static final long serialVersionUID = -7163624758070343373L;
42
43
// CONSTRUCTORS
44
//-------------
45
/**
46
* Constructs a new <CODE>SnmpInt</CODE> from the specified integer value.
47
* @param v The initialization value.
48
* @exception IllegalArgumentException The specified value is smaller than <CODE>Integer.MIN_VALUE</CODE>
49
* or larger than <CODE>Integer.MAX_VALUE</CODE>.
50
*/
51
public SnmpInt(int v) throws IllegalArgumentException {
52
if ( isInitValueValid(v) == false ) {
53
throw new IllegalArgumentException() ;
54
}
55
value = (long)v ;
56
}
57
58
/**
59
* Constructs a new <CODE>SnmpInt</CODE> from the specified <CODE>Integer</CODE> value.
60
* @param v The initialization value.
61
* @exception IllegalArgumentException The specified value is smaller than <CODE>Integer.MIN_VALUE</CODE>
62
* or larger than <CODE>Integer.MAX_VALUE</CODE>.
63
*/
64
public SnmpInt(Integer v) throws IllegalArgumentException {
65
this(v.intValue()) ;
66
}
67
68
/**
69
* Constructs a new <CODE>SnmpInt</CODE> from the specified long value.
70
* @param v The initialization value.
71
* @exception IllegalArgumentException The specified value is smaller than <CODE>Integer.MIN_VALUE</CODE>
72
* or larger than <CODE>Integer.MAX_VALUE</CODE>.
73
*/
74
public SnmpInt(long v) throws IllegalArgumentException {
75
if ( isInitValueValid(v) == false ) {
76
throw new IllegalArgumentException() ;
77
}
78
value = v ;
79
}
80
81
/**
82
* Constructs a new <CODE>SnmpInt</CODE> from the specified <CODE>Long</CODE> value.
83
* @param v The initialization value.
84
* @exception IllegalArgumentException The specified value is smaller than <CODE>Integer.MIN_VALUE</CODE>
85
* or larger than <CODE>Integer.MAX_VALUE</CODE>.
86
*/
87
public SnmpInt(Long v) throws IllegalArgumentException {
88
this(v.longValue()) ;
89
}
90
91
/**
92
* Constructs a new <CODE>SnmpInt</CODE> from the specified <CODE>Enumerated</CODE> value.
93
* @param v The initialization value.
94
* @exception IllegalArgumentException The specified value is smaller than <CODE>Integer.MIN_VALUE</CODE>
95
* or larger than <CODE>Integer.MAX_VALUE</CODE>.
96
* @see Enumerated
97
*/
98
public SnmpInt(Enumerated v) throws IllegalArgumentException {
99
this(v.intValue()) ;
100
}
101
102
/**
103
* Constructs a new <CODE>SnmpInt</CODE> from the specified boolean value.
104
* This constructor applies rfc1903 rule:
105
* <p><blockquote><pre>
106
* TruthValue ::= TEXTUAL-CONVENTION
107
* STATUS current
108
* DESCRIPTION
109
* "Represents a boolean value."
110
* SYNTAX INTEGER { true(1), false(2) }
111
* </pre></blockquote>
112
* @param v The initialization value.
113
*/
114
public SnmpInt(boolean v) {
115
value = v ? 1 : 2 ;
116
}
117
118
// PUBLIC METHODS
119
//---------------
120
/**
121
* Returns the long value of this <CODE>SnmpInt</CODE>.
122
* @return The value.
123
*/
124
public long longValue() {
125
return value ;
126
}
127
128
/**
129
* Converts the integer value to its <CODE>Long</CODE> form.
130
* @return The <CODE>Long</CODE> representation of the value.
131
*/
132
public Long toLong() {
133
return new Long(value) ;
134
}
135
136
/**
137
* Converts the integer value to its integer form.
138
* @return The integer representation of the value.
139
*/
140
public int intValue() {
141
return (int) value ;
142
}
143
144
/**
145
* Converts the integer value to its <CODE>Integer</CODE> form.
146
* @return The <CODE>Integer</CODE> representation of the value.
147
*/
148
public Integer toInteger() {
149
return new Integer((int)value) ;
150
}
151
152
/**
153
* Converts the integer value to its <CODE>String</CODE> form.
154
* @return The <CODE>String</CODE> representation of the value.
155
*/
156
public String toString() {
157
return String.valueOf(value) ;
158
}
159
160
/**
161
* Converts the integer value to its <CODE>SnmpOid</CODE> form.
162
* @return The OID representation of the value.
163
*/
164
public SnmpOid toOid() {
165
return new SnmpOid(value) ;
166
}
167
168
/**
169
* Extracts the integer from an index OID and returns its
170
* value converted as an <CODE>SnmpOid</CODE>.
171
* @param index The index array.
172
* @param start The position in the index array.
173
* @return The OID representing the integer value.
174
* @exception SnmpStatusException There is no integer value
175
* available at the start position.
176
*/
177
public static SnmpOid toOid(long[] index, int start) throws SnmpStatusException {
178
try {
179
return new SnmpOid(index[start]) ;
180
}
181
catch(IndexOutOfBoundsException e) {
182
throw new SnmpStatusException(SnmpStatusException.noSuchName) ;
183
}
184
}
185
186
/**
187
* Scans an index OID, skips the integer value and returns the position
188
* of the next value.
189
* @param index The index array.
190
* @param start The position in the index array.
191
* @return The position of the next value.
192
* @exception SnmpStatusException There is no integer value
193
* available at the start position.
194
*/
195
public static int nextOid(long[] index, int start) throws SnmpStatusException {
196
if (start >= index.length) {
197
throw new SnmpStatusException(SnmpStatusException.noSuchName) ;
198
}
199
else {
200
return start + 1 ;
201
}
202
}
203
204
/**
205
* Appends an <CODE>SnmpOid</CODE> representing an <CODE>SnmpInt</CODE> to another OID.
206
* @param source An OID representing an <CODE>SnmpInt</CODE> value.
207
* @param dest Where source should be appended.
208
*/
209
public static void appendToOid(SnmpOid source, SnmpOid dest) {
210
if (source.getLength() != 1) {
211
throw new IllegalArgumentException() ;
212
}
213
dest.append(source) ;
214
}
215
216
/**
217
* Performs a clone action. This provides a workaround for the
218
* <CODE>SnmpValue</CODE> interface.
219
* @return The <CODE>SnmpValue</CODE> clone.
220
*/
221
final synchronized public SnmpValue duplicate() {
222
return (SnmpValue) clone() ;
223
}
224
225
/**
226
* Clones the <CODE>SnmpInt</CODE> object, making a copy of its data.
227
* @return The object clone.
228
*/
229
final synchronized public Object clone() {
230
SnmpInt newclone = null ;
231
try {
232
newclone = (SnmpInt) super.clone() ;
233
newclone.value = value ;
234
} catch (CloneNotSupportedException e) {
235
throw new InternalError(e) ; // vm bug.
236
}
237
return newclone ;
238
}
239
240
/**
241
* Returns a textual description of the type object.
242
* @return ASN.1 textual description.
243
*/
244
public String getTypeName() {
245
return name ;
246
}
247
248
/**
249
* This method has been defined to allow the sub-classes
250
* of SnmpInt to perform their own control at intialization time.
251
*/
252
boolean isInitValueValid(int v) {
253
if ((v < Integer.MIN_VALUE) || (v > Integer.MAX_VALUE)) {
254
return false;
255
}
256
return true;
257
}
258
259
/**
260
* This method has been defined to allow the sub-classes
261
* of SnmpInt to perform their own control at intialization time.
262
*/
263
boolean isInitValueValid(long v) {
264
if ((v < Integer.MIN_VALUE) || (v > Integer.MAX_VALUE)) {
265
return false;
266
}
267
return true;
268
}
269
270
// VARIABLES
271
//----------
272
/**
273
* Name of the type.
274
*/
275
final static String name = "Integer32" ;
276
277
/**
278
* This is where the value is stored. This long is signed.
279
* @serial
280
*/
281
protected long value = 0 ;
282
}
283
284