1 22 23 package org.snmp4j.agent.mo.jmx; 24 25 import org.snmp4j.smi.*; 26 import java.util.Map ; 27 import javax.management.MBeanServerConnection ; 28 import org.snmp4j.PDU; 29 import org.snmp4j.agent.mo.jmx.types.SMIVariant; 30 import org.snmp4j.agent.mo.jmx.types.TypedAttribute; 31 import org.snmp4j.agent.mo.jmx.types.CombinedTypedAttribute; 32 import javax.management.ObjectName ; 33 import org.snmp4j.agent.mo.MOScalar; 35 36 43 public class MBeanAttributeMOScalarSupport extends AbstractMBeanSupport 44 implements JMXScalarSupport { 45 46 public MBeanAttributeMOScalarSupport(MBeanServerConnection server) { 47 super(server); 48 } 49 50 57 public synchronized void add(OID oid, MBeanAttributeMOInfo mBean) { 58 oid2MBeanMap.put(oid, mBean); 59 } 60 61 74 public synchronized void addAll(ObjectName mBeanName, 75 Object [][] mBeanScalarAttributeDescriptions) { 76 for (Object [] attrDescr : mBeanScalarAttributeDescriptions) { 77 MBeanAttributeMOInfo mBeanInfo; 78 if (attrDescr[1] instanceof CombinedTypedAttribute) { 79 mBeanInfo = new MBeanMultiAttributeMOInfo(mBeanName, 80 (CombinedTypedAttribute) 81 attrDescr[1]); 82 } 83 else if (attrDescr[1] instanceof TypedAttribute) { 84 mBeanInfo = new MBeanAttributeMOInfo(mBeanName, 85 (TypedAttribute) attrDescr[1]); 86 } 87 else { 88 mBeanInfo = new MBeanAttributeMOInfo(mBeanName, 89 (String ) attrDescr[1], 90 (Class ) attrDescr[2]); 91 } 92 oid2MBeanMap.put((OID)attrDescr[0], mBeanInfo); 93 } 94 } 95 96 104 public int checkScalarValue(OID scalarInstanceOID, Variable value) { 105 MBeanAttributeMOInfo mBeanAttrMOInfo = 106 (MBeanAttributeMOInfo) getMBeanMOInfo(scalarInstanceOID); 107 if (mBeanAttrMOInfo != null) { 108 109 return PDU.noError; 110 } 111 return PDU.resourceUnavailable; 112 } 113 114 122 public int getScalarValue(OID scalarInstanceOID, Variable value) { 123 MBeanAttributeMOInfo mBeanAttrMOInfo = 124 (MBeanAttributeMOInfo) getMBeanMOInfo(scalarInstanceOID); 125 if (mBeanAttrMOInfo != null) { 126 try { 127 Object attr = mBeanAttrMOInfo.getAttribute(server); 128 if (attr == null) { 129 return PDU.noError; 130 } 131 SMIVariant v = new SMIVariant(value); 132 return v.setValue(attr); 133 } 134 catch (Exception ex) { 135 ex.printStackTrace(); 136 } 137 return PDU.genErr; 138 } 139 return PDU.noSuchName; 140 } 141 142 150 public int setScalarValue(OID scalarInstanceOID, Variable value) { 151 MBeanAttributeMOInfo mBeanAttrMOInfo = 152 (MBeanAttributeMOInfo) getMBeanMOInfo(scalarInstanceOID); 153 if (mBeanAttrMOInfo != null) { 154 try { 155 Object attr = mBeanAttrMOInfo.getAttribute().transformSMI2Object(value); 156 mBeanAttrMOInfo.setAttribute(server, attr); 157 return PDU.noError; 158 } 159 catch (Exception ex) { 160 ex.printStackTrace(); 161 } 162 } 163 return PDU.genErr; 164 } 165 } 166 | Popular Tags |