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 /** 32 * Represents an SNMP null value. 33 * <p><b>This API is a Sun Microsystems internal API and is subject 34 * to change without notice.</b></p> 35 */ 36 37 public class SnmpNull extends SnmpValue { 38 private static final long serialVersionUID = 1783782515994279177L; 39 40 // CONSTRUCTORS 41 //------------- 42 /** 43 * Constructs a new <CODE>SnmpNull</CODE>. 44 */ 45 public SnmpNull() { 46 tag = NullTag ; 47 } 48 49 /** 50 * Constructs a new <CODE>SnmpNull</CODE>. 51 * <BR>For mibgen private use only. 52 */ 53 public SnmpNull(String dummy) { 54 this(); 55 } 56 57 /** 58 * Constructs a new <CODE>SnmpNull</CODE> from the specified tag value. 59 * @param t The initialization value. 60 */ 61 public SnmpNull(int t) { 62 tag = t ; 63 } 64 65 // PUBLIC METHODS 66 //--------------- 67 /** 68 * Returns the tag value of this <CODE>SnmpNull</CODE>. 69 * @return The value. 70 */ 71 public int getTag() { 72 return tag ; 73 } 74 75 /** 76 * Converts the <CODE>NULL</CODE> value to its ASN.1 <CODE>String</CODE> form. 77 * When the tag is not the universal one, it is preprended 78 * to the <CODE>String</CODE> form. 79 * @return The <CODE>String</CODE> representation of the value. 80 */ 81 public String toString() { 82 String result = "" ; 83 if (tag != 5) { 84 result += "[" + tag + "] " ; 85 } 86 result += "NULL" ; 87 switch(tag) { 88 case errNoSuchObjectTag : 89 result += " (noSuchObject)" ; 90 break ; 91 92 case errNoSuchInstanceTag : 93 result += " (noSuchInstance)" ; 94 break ; 95 96 case errEndOfMibViewTag : 97 result += " (endOfMibView)" ; 98 break ; 99 } 100 return result ; 101 } 102 103 /** 104 * Converts the <CODE>NULL</CODE> value to its <CODE>SnmpOid</CODE> form. 105 * Normally, a <CODE>NULL</CODE> value cannot be used as an index value, 106 * this method triggers an exception. 107 * @return The OID representation of the value. 108 */ 109 public SnmpOid toOid() { 110 throw new IllegalArgumentException() ; 111 } 112 113 /** 114 * Performs a clone action. This provides a workaround for the 115 * <CODE>SnmpValue</CODE> interface. 116 * @return The SnmpValue clone. 117 */ 118 final synchronized public SnmpValue duplicate() { 119 return (SnmpValue) clone() ; 120 } 121 122 /** 123 * Clones the <CODE>SnmpNull</CODE> object, making a copy of its data. 124 * @return The object clone. 125 */ 126 final synchronized public Object clone() { 127 SnmpNull newclone = null ; 128 try { 129 newclone = (SnmpNull) super.clone() ; 130 newclone.tag = tag ; 131 } catch (CloneNotSupportedException e) { 132 throw new InternalError(e) ; // vm bug. 133 } 134 return newclone ; 135 } 136 137 /** 138 * Returns a textual description of the type object. 139 * @return ASN.1 textual description. 140 */ 141 final public String getTypeName() { 142 return name ; 143 } 144 145 /** 146 * Checks if this <CODE>SnmpNull</CODE> object corresponds to a <CODE>noSuchObject</CODE> value. 147 * @return <CODE>true</CODE> if the tag equals {@link com.sun.jmx.snmp.SnmpDataTypeEnums#errNoSuchObjectTag}, 148 * <CODE>false</CODE> otherwise. 149 */ 150 public boolean isNoSuchObjectValue() { 151 return (tag == SnmpDataTypeEnums.errNoSuchObjectTag); 152 } 153 154 /** 155 * Checks if this <CODE>SnmpNull</CODE> object corresponds to a <CODE>noSuchInstance</CODE> value. 156 * @return <CODE>true</CODE> if the tag equals {@link com.sun.jmx.snmp.SnmpDataTypeEnums#errNoSuchInstanceTag}, 157 * <CODE>false</CODE> otherwise. 158 */ 159 public boolean isNoSuchInstanceValue() { 160 return (tag == SnmpDataTypeEnums.errNoSuchInstanceTag); 161 } 162 163 /** 164 * Checks if this <CODE>SnmpNull</CODE> object corresponds to an <CODE>endOfMibView</CODE> value. 165 * @return <CODE>true</CODE> if the tag equals {@link com.sun.jmx.snmp.SnmpDataTypeEnums#errEndOfMibViewTag}, 166 * <CODE>false</CODE> otherwise. 167 */ 168 public boolean isEndOfMibViewValue() { 169 return (tag == SnmpDataTypeEnums.errEndOfMibViewTag); 170 } 171 172 // VARIABLES 173 //---------- 174 /** 175 * Name of the type. 176 */ 177 final static String name = "Null" ; 178 179 /** 180 * This is the tag of the NULL value. By default, it is the universal tag value. 181 */ 182 private int tag = 5 ; 183 }