1 /* 2 * Copyright (c) 2003, 2012, 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 sun.management.snmp.jvmmib; 27 28 // 29 // Generated by mibgen version 5.0 (06/02/03) when compiling JVM-MANAGEMENT-MIB in standard metadata mode. 30 // 31 32 // java imports 33 // 34 import java.io.Serializable; 35 36 // jmx imports 37 // 38 import javax.management.MBeanServer; 39 import com.sun.jmx.snmp.SnmpCounter; 40 import com.sun.jmx.snmp.SnmpCounter64; 41 import com.sun.jmx.snmp.SnmpGauge; 42 import com.sun.jmx.snmp.SnmpInt; 43 import com.sun.jmx.snmp.SnmpUnsignedInt; 44 import com.sun.jmx.snmp.SnmpIpAddress; 45 import com.sun.jmx.snmp.SnmpTimeticks; 46 import com.sun.jmx.snmp.SnmpOpaque; 47 import com.sun.jmx.snmp.SnmpString; 48 import com.sun.jmx.snmp.SnmpStringFixed; 49 import com.sun.jmx.snmp.SnmpOid; 50 import com.sun.jmx.snmp.SnmpNull; 51 import com.sun.jmx.snmp.SnmpValue; 52 import com.sun.jmx.snmp.SnmpVarBind; 53 import com.sun.jmx.snmp.SnmpStatusException; 54 55 // jdmk imports 56 // 57 import com.sun.jmx.snmp.agent.SnmpMib; 58 import com.sun.jmx.snmp.agent.SnmpMibGroup; 59 import com.sun.jmx.snmp.agent.SnmpStandardObjectServer; 60 import com.sun.jmx.snmp.agent.SnmpStandardMetaServer; 61 import com.sun.jmx.snmp.agent.SnmpMibSubRequest; 62 import com.sun.jmx.snmp.agent.SnmpMibTable; 63 import com.sun.jmx.snmp.EnumRowStatus; 64 import com.sun.jmx.snmp.SnmpDefinitions; 65 66 /** 67 * The class is used for representing SNMP metadata for the "JvmThreading" group. 68 * The group is defined with the following oid: 1.3.6.1.4.1.42.2.145.3.163.1.1.3. 69 */ 70 public class JvmThreadingMeta extends SnmpMibGroup 71 implements Serializable, SnmpStandardMetaServer { 72 73 static final long serialVersionUID = 5223833578005322854L; 74 /** 75 * Constructor for the metadata associated to "JvmThreading". 76 */ 77 public JvmThreadingMeta(SnmpMib myMib, SnmpStandardObjectServer objserv) { 78 objectserver = objserv; 79 try { 80 registerObject(6); 81 registerObject(5); 82 registerObject(4); 83 registerObject(3); 84 registerObject(2); 85 registerObject(1); 86 registerObject(10); 87 registerObject(7); 88 } catch (IllegalAccessException e) { 89 throw new RuntimeException(e.getMessage()); 90 } 91 } 92 93 /** 94 * Get the value of a scalar variable 95 */ 96 public SnmpValue get(long var, Object data) 97 throws SnmpStatusException { 98 switch((int)var) { 99 case 6: 100 return new SnmpInt(node.getJvmThreadCpuTimeMonitoring()); 101 102 case 5: 103 return new SnmpInt(node.getJvmThreadContentionMonitoring()); 104 105 case 4: 106 return new SnmpCounter64(node.getJvmThreadTotalStartedCount()); 107 108 case 3: 109 return new SnmpCounter(node.getJvmThreadPeakCount()); 110 111 case 2: 112 return new SnmpGauge(node.getJvmThreadDaemonCount()); 113 114 case 1: 115 return new SnmpGauge(node.getJvmThreadCount()); 116 117 case 10: { 118 throw new SnmpStatusException(SnmpStatusException.noSuchInstance); 119 } 120 121 case 7: 122 return new SnmpCounter64(node.getJvmThreadPeakCountReset()); 123 124 default: 125 break; 126 } 127 throw new SnmpStatusException(SnmpStatusException.noSuchObject); 128 } 129 130 /** 131 * Set the value of a scalar variable 132 */ 133 public SnmpValue set(SnmpValue x, long var, Object data) 134 throws SnmpStatusException { 135 switch((int)var) { 136 case 6: 137 if (x instanceof SnmpInt) { 138 try { 139 node.setJvmThreadCpuTimeMonitoring( new EnumJvmThreadCpuTimeMonitoring (((SnmpInt)x).toInteger())); 140 } catch(IllegalArgumentException e) { 141 throw new SnmpStatusException(SnmpStatusException.snmpRspWrongValue); 142 } 143 return new SnmpInt(node.getJvmThreadCpuTimeMonitoring()); 144 } else { 145 throw new SnmpStatusException(SnmpStatusException.snmpRspWrongType); 146 } 147 148 case 5: 149 if (x instanceof SnmpInt) { 150 try { 151 node.setJvmThreadContentionMonitoring( new EnumJvmThreadContentionMonitoring (((SnmpInt)x).toInteger())); 152 } catch(IllegalArgumentException e) { 153 throw new SnmpStatusException(SnmpStatusException.snmpRspWrongValue); 154 } 155 return new SnmpInt(node.getJvmThreadContentionMonitoring()); 156 } else { 157 throw new SnmpStatusException(SnmpStatusException.snmpRspWrongType); 158 } 159 160 case 4: 161 throw new SnmpStatusException(SnmpStatusException.snmpRspNotWritable); 162 163 case 3: 164 throw new SnmpStatusException(SnmpStatusException.snmpRspNotWritable); 165 166 case 2: 167 throw new SnmpStatusException(SnmpStatusException.snmpRspNotWritable); 168 169 case 1: 170 throw new SnmpStatusException(SnmpStatusException.snmpRspNotWritable); 171 172 case 10: { 173 throw new SnmpStatusException(SnmpStatusException.snmpRspNotWritable); 174 } 175 176 case 7: 177 if (x instanceof SnmpCounter64) { 178 node.setJvmThreadPeakCountReset(((SnmpCounter64)x).toLong()); 179 return new SnmpCounter64(node.getJvmThreadPeakCountReset()); 180 } else { 181 throw new SnmpStatusException(SnmpStatusException.snmpRspWrongType); 182 } 183 184 default: 185 break; 186 } 187 throw new SnmpStatusException(SnmpStatusException.snmpRspNotWritable); 188 } 189 190 /** 191 * Check the value of a scalar variable 192 */ 193 public void check(SnmpValue x, long var, Object data) 194 throws SnmpStatusException { 195 switch((int) var) { 196 case 6: 197 if (x instanceof SnmpInt) { 198 try { 199 node.checkJvmThreadCpuTimeMonitoring( new EnumJvmThreadCpuTimeMonitoring (((SnmpInt)x).toInteger())); 200 } catch(IllegalArgumentException e) { 201 throw new SnmpStatusException(SnmpStatusException.snmpRspWrongValue); 202 } 203 } else { 204 throw new SnmpStatusException(SnmpStatusException.snmpRspWrongType); 205 } 206 break; 207 208 case 5: 209 if (x instanceof SnmpInt) { 210 try { 211 node.checkJvmThreadContentionMonitoring( new EnumJvmThreadContentionMonitoring (((SnmpInt)x).toInteger())); 212 } catch(IllegalArgumentException e) { 213 throw new SnmpStatusException(SnmpStatusException.snmpRspWrongValue); 214 } 215 } else { 216 throw new SnmpStatusException(SnmpStatusException.snmpRspWrongType); 217 } 218 break; 219 220 case 4: 221 throw new SnmpStatusException(SnmpStatusException.snmpRspNotWritable); 222 223 case 3: 224 throw new SnmpStatusException(SnmpStatusException.snmpRspNotWritable); 225 226 case 2: 227 throw new SnmpStatusException(SnmpStatusException.snmpRspNotWritable); 228 229 case 1: 230 throw new SnmpStatusException(SnmpStatusException.snmpRspNotWritable); 231 232 case 10: { 233 throw new SnmpStatusException(SnmpStatusException.snmpRspNotWritable); 234 } 235 236 case 7: 237 if (x instanceof SnmpCounter64) { 238 node.checkJvmThreadPeakCountReset(((SnmpCounter64)x).toLong()); 239 } else { 240 throw new SnmpStatusException(SnmpStatusException.snmpRspWrongType); 241 } 242 break; 243 244 default: 245 throw new SnmpStatusException(SnmpStatusException.snmpRspNotWritable); 246 } 247 } 248 249 /** 250 * Allow to bind the metadata description to a specific object. 251 */ 252 protected void setInstance(JvmThreadingMBean var) { 253 node = var; 254 } 255 256 257 // ------------------------------------------------------------ 258 // 259 // Implements the "get" method defined in "SnmpMibGroup". 260 // See the "SnmpMibGroup" Javadoc API for more details. 261 // 262 // ------------------------------------------------------------ 263 264 public void get(SnmpMibSubRequest req, int depth) 265 throws SnmpStatusException { 266 objectserver.get(this,req,depth); 267 } 268 269 270 // ------------------------------------------------------------ 271 // 272 // Implements the "set" method defined in "SnmpMibGroup". 273 // See the "SnmpMibGroup" Javadoc API for more details. 274 // 275 // ------------------------------------------------------------ 276 277 public void set(SnmpMibSubRequest req, int depth) 278 throws SnmpStatusException { 279 objectserver.set(this,req,depth); 280 } 281 282 283 // ------------------------------------------------------------ 284 // 285 // Implements the "check" method defined in "SnmpMibGroup". 286 // See the "SnmpMibGroup" Javadoc API for more details. 287 // 288 // ------------------------------------------------------------ 289 290 public void check(SnmpMibSubRequest req, int depth) 291 throws SnmpStatusException { 292 objectserver.check(this,req,depth); 293 } 294 295 /** 296 * Returns true if "arc" identifies a scalar object. 297 */ 298 public boolean isVariable(long arc) { 299 300 switch((int)arc) { 301 case 6: 302 case 5: 303 case 4: 304 case 3: 305 case 2: 306 case 1: 307 case 7: 308 return true; 309 default: 310 break; 311 } 312 return false; 313 } 314 315 /** 316 * Returns true if "arc" identifies a readable scalar object. 317 */ 318 public boolean isReadable(long arc) { 319 320 switch((int)arc) { 321 case 6: 322 case 5: 323 case 4: 324 case 3: 325 case 2: 326 case 1: 327 case 7: 328 return true; 329 default: 330 break; 331 } 332 return false; 333 } 334 335 336 // ------------------------------------------------------------ 337 // 338 // Implements the "skipVariable" method defined in "SnmpMibGroup". 339 // See the "SnmpMibGroup" Javadoc API for more details. 340 // 341 // ------------------------------------------------------------ 342 343 public boolean skipVariable(long var, Object data, int pduVersion) { 344 switch((int)var) { 345 case 4: 346 case 7: 347 if (pduVersion==SnmpDefinitions.snmpVersionOne) return true; 348 break; 349 default: 350 break; 351 } 352 return super.skipVariable(var,data,pduVersion); 353 } 354 355 /** 356 * Return the name of the attribute corresponding to the SNMP variable identified by "id". 357 */ 358 public String getAttributeName(long id) 359 throws SnmpStatusException { 360 switch((int)id) { 361 case 6: 362 return "JvmThreadCpuTimeMonitoring"; 363 364 case 5: 365 return "JvmThreadContentionMonitoring"; 366 367 case 4: 368 return "JvmThreadTotalStartedCount"; 369 370 case 3: 371 return "JvmThreadPeakCount"; 372 373 case 2: 374 return "JvmThreadDaemonCount"; 375 376 case 1: 377 return "JvmThreadCount"; 378 379 case 10: { 380 throw new SnmpStatusException(SnmpStatusException.noSuchInstance); 381 } 382 383 case 7: 384 return "JvmThreadPeakCountReset"; 385 386 default: 387 break; 388 } 389 throw new SnmpStatusException(SnmpStatusException.noSuchObject); 390 } 391 392 /** 393 * Returns true if "arc" identifies a table object. 394 */ 395 public boolean isTable(long arc) { 396 397 switch((int)arc) { 398 case 10: 399 return true; 400 default: 401 break; 402 } 403 return false; 404 } 405 406 /** 407 * Returns the table object identified by "arc". 408 */ 409 public SnmpMibTable getTable(long arc) { 410 411 switch((int)arc) { 412 case 10: 413 return tableJvmThreadInstanceTable; 414 default: 415 break; 416 } 417 return null; 418 } 419 420 /** 421 * Register the group's SnmpMibTable objects with the meta-data. 422 */ 423 public void registerTableNodes(SnmpMib mib, MBeanServer server) { 424 tableJvmThreadInstanceTable = createJvmThreadInstanceTableMetaNode("JvmThreadInstanceTable", "JvmThreading", mib, server); 425 if ( tableJvmThreadInstanceTable != null) { 426 tableJvmThreadInstanceTable.registerEntryNode(mib,server); 427 mib.registerTableMeta("JvmThreadInstanceTable", tableJvmThreadInstanceTable); 428 } 429 430 } 431 432 433 /** 434 * Factory method for "JvmThreadInstanceTable" table metadata class. 435 * 436 * You can redefine this method if you need to replace the default 437 * generated metadata class with your own customized class. 438 * 439 * @param tableName Name of the table object ("JvmThreadInstanceTable") 440 * @param groupName Name of the group to which this table belong ("JvmThreading") 441 * @param mib The SnmpMib object in which this table is registered 442 * @param server MBeanServer for this table entries (may be null) 443 * 444 * @return An instance of the metadata class generated for the 445 * "JvmThreadInstanceTable" table (JvmThreadInstanceTableMeta) 446 * 447 **/ 448 protected JvmThreadInstanceTableMeta createJvmThreadInstanceTableMetaNode(String tableName, String groupName, SnmpMib mib, MBeanServer server) { 449 return new JvmThreadInstanceTableMeta(mib, objectserver); 450 } 451 452 protected JvmThreadingMBean node; 453 protected SnmpStandardObjectServer objectserver = null; 454 protected JvmThreadInstanceTableMeta tableJvmThreadInstanceTable = null; 455 }