[jboss-cvs] JBossAS SVN: r111679 - in branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp: config/attribute and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Jun 27 17:03:19 EDT 2011
Author: thauser at redhat.com
Date: 2011-06-27 17:03:18 -0400 (Mon, 27 Jun 2011)
New Revision: 111679
Modified:
branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/RequestHandlerImpl.java
branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpAgentService.java
branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpRequest.java
branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapEmitter.java
branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactory.java
branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactorySupport.java
branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/config/attribute/ManagedBean.java
branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/config/notification/Mapping.java
Log:
merging from mobicents
Modified: branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/RequestHandlerImpl.java
===================================================================
--- branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/RequestHandlerImpl.java 2011-06-27 20:36:31 UTC (rev 111678)
+++ branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/RequestHandlerImpl.java 2011-06-27 21:03:18 UTC (rev 111679)
@@ -80,14 +80,16 @@
/** Bindings from oid to mbean */
- protected SortedMap bindings = new TreeMap();
+ protected SortedMap<OID, BindEntry> bindings = new TreeMap<OID, BindEntry>();
/** keep track of the instances of variables */
- private SortedSet oidKeys = null;
+ private SortedSet<OID> oidKeys = null;
/** keep track of the objects created */
- private SortedSet objectKeys = null;
-
+ private SortedSet<OID> objectKeys = null;
+
+ private TableMapper tableMapper = null;
+
/** Has this RequestHandler instance been initialized? */
private boolean initialized = false;
@@ -99,9 +101,9 @@
*/
public RequestHandlerImpl()
{
- bindings = new TreeMap();
- oidKeys = new TreeSet();
- objectKeys = new TreeSet();
+ bindings = new TreeMap<OID, BindEntry>();
+ oidKeys = new TreeSet<OID>();
+ objectKeys = new TreeSet<OID>();
}
// RequestHandler Implementation ---------------------------------
@@ -119,6 +121,7 @@
{
log.debug("initialize() with res=" + resourceName);
super.initialize(resourceName, server, log, uptime);
+ tableMapper = new TableMapper(server, log);
if (resourceName != null)
initializeBindings();
else
@@ -355,6 +358,8 @@
else {
newVB = new VariableBinding(oid);
var = null;
+ //TODO will be called for each get, not performing well, to be optimized
+ tableMapper.checkTables(oid);
// check the existence of the object for the requested instance
// the object is the OID with the last number removed.
if (checkObject(oid)){
@@ -432,6 +437,8 @@
VariableBinding newVB = new VariableBinding(oid,newVal);
try{
+ //TODO will be called for each set, not performing well, to be optimized
+ tableMapper.checkTables(oid);
oldVar = getValueFor(oid);
modified.add(new VariableBinding(oid, oldVar)); // keep a record of the old variable binding.
if (checkObject(oid)){
@@ -661,39 +668,32 @@
*/
public void addAttributeMappings(List<ManagedBean> mappings) {
Iterator<ManagedBean> it = mappings.iterator();
- ObjectName oname = null;
while (it.hasNext()) {
- // here we add a check for the mbean name being a pattern. if it is, we need to
- // do some additional operations
ManagedBean mmb = it.next();
+ ObjectName oname = null;
try{
oname = new ObjectName(mmb.getName());
} catch (Exception e) {}
if (oname.isPattern()){ //it is a pattern. the mat
- Set<ObjectName> mbeanNames = server.queryNames(oname, null); // get all ObjectNames of MBeans matched by the given name. they should be treated
- // as Rows of the table defined which will have the oid oidPrefix.
- createTableRows(mbeanNames, mmb.getAttributes(), mmb.getOidPrefix());
- }
- else {
- String oidPrefix = mmb.getOidPrefix();
- List attrs = mmb.getAttributes();
- Iterator aIt = attrs.iterator();
- while (aIt.hasNext()) {
- Object check = aIt.next();
- MappedAttribute ma = (MappedAttribute) check;
- String oid;
- if (oidPrefix != null) {
- oid = oidPrefix + ma.getOid();
- addObjectEntry(new OID(oidPrefix));
- } else {
- oid = ma.getOid();
- OID objectOID = new OID(oid);
- addObjectEntry(objectOID.trim());
+ tableMapper.addTableMapping(mmb, oname);
+ } else {
+ String oidPrefix = mmb.getOidPrefix();
+ List<MappedAttribute> attrs = mmb.getAttributes();
+ Iterator<MappedAttribute> aIt = attrs.iterator();
+ while (aIt.hasNext()) {
+ MappedAttribute ma = aIt.next();
+ String oid;
+ if (oidPrefix != null) {
+ oid = oidPrefix + ma.getOid();
+ addObjectEntry(new OID(oidPrefix));
+ } else {
+ oid = ma.getOid();
+ OID objectOID = new OID(oid);
+ addObjectEntry(objectOID.trim());
+ }
+ addBindEntry(oid, mmb.getName(), ma.getName(), ma.isReadWrite());
}
- addBindEntry(oid, mmb.getName(), ma.getName(), ma.isReadWrite());
- }//end while
}
-
}
}
@@ -704,28 +704,33 @@
Iterator<ManagedBean> it = mappings.iterator();
while (it.hasNext()) {
ManagedBean mmb = it.next();
- String oidPrefix = mmb.getOidPrefix();
- List attrs = mmb.getAttributes();
- Iterator aIt = attrs.iterator();
- while (aIt.hasNext()) {
- Object check = aIt.next();
-
- MappedAttribute ma = (MappedAttribute) check;
-
- String oid;
- if (oidPrefix != null) {
- oid = oidPrefix + ma.getOid();
- objectKeys.remove(new OID(oidPrefix));
- } else {
- oid = ma.getOid();
- OID objectOID = new OID(oid);
- objectKeys.remove(objectOID.trim());
+ ObjectName oname = null;
+ try{
+ oname = new ObjectName(mmb.getName());
+ } catch (Exception e) {}
+ if (oname.isPattern()){ //it is a pattern. the mat
+ tableMapper.removeTableMapping(mmb, oname);
+ } else {
+ String oidPrefix = mmb.getOidPrefix();
+ List<MappedAttribute> attrs = mmb.getAttributes();
+ Iterator<MappedAttribute> aIt = attrs.iterator();
+ while (aIt.hasNext()) {
+ MappedAttribute ma = aIt.next();
+ String oid;
+ if (oidPrefix != null) {
+ oid = oidPrefix + ma.getOid();
+ objectKeys.remove(new OID(oidPrefix));
+ } else {
+ oid = ma.getOid();
+ OID objectOID = new OID(oid);
+ objectKeys.remove(objectOID.trim());
+ }
+ OID coid = new OID(oid);
+ oidKeys.remove(coid);
+ bindings.remove(coid);
+
}
- OID coid = new OID(oid);
- oidKeys.remove(coid);
- bindings.remove(coid);
-
- }
+ }
}
}
@@ -750,10 +755,9 @@
* @param ma the name of the MBeam attribute the OID is concerning
* @param rw indicates whether this Attribute is read-write or not (readonly if false)
*/
-
private void addBindEntry(String oid, String mmb, String ma, boolean rw){
BindEntry be = new BindEntry(oid, mmb, ma);
- be.isReadWrite = rw;
+ be.setReadWrite(rw);
OID coid = new OID(oid);
if (log.isTraceEnabled())
@@ -787,7 +791,12 @@
private boolean checkObject(final OID oid) {
OID coid = oid.trim();
- return objectKeys.contains(coid);
+ boolean exists = objectKeys.contains(coid);
+ if(!exists) {
+ //needed for table
+ exists = tableMapper.belongsToTable(oid);
+ }
+ return exists;
}
/**
@@ -806,14 +815,14 @@
log.debug("getValueFor: Found entry " + be.toString() + " for oid " + oid);
try {
- Object val = server.getAttribute(be.mbean, be.attr.getName());
+ Object val = server.getAttribute(be.getMbean(), be.getAttr().getName());
ssy = prepForPdu(val);
} catch (VariableTypeException e){
log.debug("getValueFor: didn't find a suitable data type for the requested data");
throw e;
} catch (Exception e) {
- log.warn("getValueFor: (" + be.mbean.toString() + ", "
- + be.attr.getName() + ": " + e.toString());
+ log.warn("getValueFor: (" + be.getMbean().toString() + ", "
+ + be.getAttr().getName() + ": " + e.toString());
}
} else {
log.debug("getValueFor: " + NO_ENTRY_FOUND_FOR_OID + oid);
@@ -934,7 +943,7 @@
if (trace)
log.trace("setValueFor: " + be.toString());
- if (be.isReadWrite == false)
+ if (be.isReadWrite() == false)
{
if (trace)
log.trace("setValueFor: this is marked read only");
@@ -943,7 +952,7 @@
}
try
{
- Object other = server.getAttribute(be.mbean, be.attr.getName());
+ Object other = server.getAttribute(be.getMbean(), be.getAttr().getName());
Object val = convertVariableToValue(newVal, other);
if (other != null && val.getClass() != other.getClass() ){
@@ -951,8 +960,8 @@
ssy = newVal;
}
- Attribute at = new Attribute(be.attr.getName(), val);
- server.setAttribute(be.mbean, at);
+ Attribute at = new Attribute(be.getAttr().getName(), val);
+ server.setAttribute(be.getMbean(), at);
if (trace)
log.trace("setValueFor: set attribute in mbean server");
@@ -982,7 +991,7 @@
*
* @param modified HashSet containing OID,Val mappings
*/
- private void undoSets(HashSet modified){
+ private void undoSets(HashSet<VariableBinding> modified){
Iterator<VariableBinding> iter = modified.iterator();
while (iter.hasNext()){
@@ -1024,6 +1033,10 @@
coid.removeLast();
}*/
BindEntry be = (BindEntry)bindings.get(coid);
+ if(be == null) {
+ //needed for tables
+ be = tableMapper.getTableBinding(coid);
+ }
return be;
}
@@ -1055,11 +1068,15 @@
*/
private OID getNextOid(final OID oid) throws EndOfMibViewException {
OID coid = new OID(oid);
-
-
- SortedSet ret;
+ //TODO will be called for each get, not performing well, to be optimized
+ tableMapper.checkTables(oid);
+ OID nextOid = tableMapper.getNextTable(coid);
+ if(nextOid != null) {
+ return nextOid;
+ }
+ SortedSet<OID> ret;
ret=oidKeys.tailSet(oid); // get oids >= oid
- Iterator it = ret.iterator();
+ Iterator<OID> it = ret.iterator();
OID roid=null;
/*
@@ -1103,129 +1120,12 @@
* @param response This PDU is the one being modified into an error PDU.
* @param oid The OID to contain the error Null instance.
* @param errIndex the VariableBinding in the PDU that caused the error.
- * @param errNo The error number defined in the PDU class that indicates a given failure
+ * @param err The error number defined in the PDU class that indicates a given failure
*/
- private void makeErrorPdu(PDU response, PDU pdu, int errIndex, int errNo){
+ private void makeErrorPdu(PDU response, PDU pdu, int errorIndex, int err){
response.clear();
response.addAll(pdu.toArray());
- response.setErrorIndex(errIndex);
- response.setErrorStatus(errNo);
- }
-
- // Inner Class ---------------------------------------------------
-
- /**
- * An entry containing the mapping between oid and mbean/attribute
- *
- * @author <a href="mailto:pilhuhn at user.sf.net>">Heiko W. Rupp</a>
- */
- private class BindEntry implements Comparable {
- private final OID oid;
-
- private ObjectName mbean;
- private Attribute attr;
- private String mName;
- private String aName;
- private boolean isReadWrite = false;
-
- /**
- * Constructs a new BindEntry
- *
- * @param oid
- * The SNMP-oid, this entry will use.
- * @param mbName
- * The name of an MBean with attribute to query
- * @param attrName
- * The name of the attribute to query
- */
- BindEntry(final String oidString, final String mbName, final String attrName) {
- this(new OID(oidString),
- mbName,
- attrName);
- }
-
- /**
- * Constructs a new BindEntry.
- * @param coid The SNMP-oid, this entry will use.
- * @param mbName The name of an MBean with attribute to query
- * @param attrName The name of the attribute to query
- */
- BindEntry(final OID coid, final String mbName, final String attrName) {
- oid = coid;
- this.mName = mbName;
- this.aName = attrName;
- try
- {
- mbean = new ObjectName(mbName);
- attr = new Attribute(attrName, null);
-
- }
- catch (Exception e)
- {
- log.warn(e.toString());
- mName = "-unset-";
- aName = "-unset-";
- }
- }
-
- /**
- * A string representation of this BindEntry
- */
- public String toString() {
- StringBuffer buf = new StringBuffer();
- buf.append("[oid=");
- buf.append(oid).append(", mbean=");
- buf.append(mName).append(", attr=");
- buf.append(aName).append(", rw=");
- buf.append(isReadWrite).append("]");
-
- return buf.toString();
- }
-
- public Attribute getAttr() {
- return attr;
- }
-
- public ObjectName getMbean()
- {
- return mbean;
- }
-
- public OID getOid()
- {
- return oid;
- }
-
-
- /**
- * Compare two BindEntries. Ordering is defined at oid-level.
- *
- * @param other
- * The BindEntry to compare to.
- * @return 0 on equals, 1 if this is bigger than other
- */
- public int compareTo(Object other)
- {
- if (other == null)
- throw new NullPointerException("Can't compare to NULL");
-
- if (!(other instanceof BindEntry))
- throw new ClassCastException("Parameter is no BindEntry");
-
- // trivial case
- if (this.equals(other))
- return 0;
-
- BindEntry obe = (BindEntry) other;
-// if (getOid().equals(obe.getOid()))
-// return 0;
-
- int res =oid.compareTo(obe.getOid());
- return res;
- }
-
- }
-
-
-
+ response.setErrorIndex(errorIndex);
+ response.setErrorStatus(err);
+ }
}
\ No newline at end of file
Modified: branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpAgentService.java
===================================================================
--- branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpAgentService.java 2011-06-27 20:36:31 UTC (rev 111678)
+++ branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpAgentService.java 2011-06-27 21:03:18 UTC (rev 111679)
@@ -35,8 +35,6 @@
import org.jboss.jmx.adaptor.snmp.config.attribute.ManagedBean;
import org.jboss.jmx.adaptor.snmp.config.notification.Mapping;
import org.jboss.jmx.adaptor.snmp.config.user.User;
-import org.jboss.jmx.adaptor.snmp.generator.Parser;
-import org.jboss.jmx.adaptor.snmp.generator.Generator;
import org.jboss.system.ListenerServiceMBeanSupport;
import org.jboss.xb.binding.MappingObjectModelFactory;
import org.jboss.xb.binding.Unmarshaller;
@@ -657,7 +655,6 @@
this.session.addCommandResponder(responder);
}
-
/*
* Read the users from the users.xml and add them to the usm
*/
Modified: branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpRequest.java
===================================================================
--- branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpRequest.java 2011-06-27 20:36:31 UTC (rev 111678)
+++ branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpRequest.java 2011-06-27 21:03:18 UTC (rev 111679)
@@ -51,7 +51,9 @@
return;
}
- log.info("Received Snmp request of type: "+PDU.getTypeString(pdu.getType()));
+ if(log.isDebugEnabled()) {
+ log.debug("Received Snmp request of type: "+PDU.getTypeString(pdu.getType()));
+ }
int type = pdu.getType();
PDU response = null;
Modified: branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapEmitter.java
===================================================================
--- branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapEmitter.java 2011-06-27 20:36:31 UTC (rev 111678)
+++ branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapEmitter.java 2011-06-27 21:03:18 UTC (rev 111679)
@@ -28,7 +28,6 @@
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
-import java.util.SortedMap;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
Modified: branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactory.java
===================================================================
--- branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactory.java 2011-06-27 20:36:31 UTC (rev 111678)
+++ branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactory.java 2011-06-27 21:03:18 UTC (rev 111679)
@@ -20,13 +20,11 @@
package org.jboss.jmx.adaptor.snmp.agent;
import javax.management.Notification;
-import javax.management.MBeanServer;
import org.jboss.jmx.adaptor.snmp.config.notification.Mapping;
import org.snmp4j.PDUv1;
import org.snmp4j.PDU;
import org.snmp4j.ScopedPDU;
-import java.util.SortedMap;
/**
* <tt>TrapFactory </tt> takes care of translation of Notifications into
Modified: branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactorySupport.java
===================================================================
--- branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactorySupport.java 2011-06-27 20:36:31 UTC (rev 111678)
+++ branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactorySupport.java 2011-06-27 21:03:18 UTC (rev 111679)
@@ -21,10 +21,8 @@
import java.util.ArrayList;
import java.util.List;
-import java.util.SortedMap;
import javax.management.Notification;
-import javax.management.MBeanServer;
import org.jboss.jmx.adaptor.snmp.config.notification.Mapping;
import org.jboss.jmx.adaptor.snmp.config.notification.VarBind;
Modified: branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/config/attribute/ManagedBean.java
===================================================================
--- branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/config/attribute/ManagedBean.java 2011-06-27 20:36:31 UTC (rev 111678)
+++ branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/config/attribute/ManagedBean.java 2011-06-27 21:03:18 UTC (rev 111679)
@@ -21,7 +21,6 @@
*/
package org.jboss.jmx.adaptor.snmp.config.attribute;
-import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAttribute;
Modified: branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/config/notification/Mapping.java
===================================================================
--- branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/config/notification/Mapping.java 2011-06-27 20:36:31 UTC (rev 111678)
+++ branches/snmp4j-int/varia/src/main/java/org/jboss/jmx/adaptor/snmp/config/notification/Mapping.java 2011-06-27 21:03:18 UTC (rev 111679)
@@ -33,51 +33,45 @@
*/
public class Mapping
{
- // Private Data --------------------------------------------------
+ private String notificationType;
+ private int generic;
+ private int specific;
+ private String enterprise;
+ private boolean inform;
+ private String securityName;
+ private VarBindList varBindList;
- private String notificationType;
- private int generic;
- private int specific;
- private String enterprise;
- private boolean inform;
- private String securityName;
- private VarBindList varBindList;
- private String name;
- private String oidDefName;
+ // Constructors -------------------------------------------------
- // Constructors -------------------------------------------------
-
- /**
- * Default CTOR
- */
- public Mapping() {
- // empty
- }
+ /**
+ * Default CTOR
+ */
+ public Mapping() {
+ // empty
+ }
- // Accessors/Modifiers -------------------------------------------
-
- public String getEnterprise(){
- return enterprise;
- }
+ // Accessors/Modifiers -------------------------------------------
- public int getGeneric() {
- return generic;
- }
+ public String getEnterprise() {
+ return enterprise;
+ }
- public String getNotificationType() {
- return notificationType;
- }
+ public int getGeneric() {
+ return generic;
+ }
- public int getSpecific() {
- return specific;
- }
+ public String getNotificationType() {
+ return notificationType;
+ }
- public VarBindList getVarBindList() {
- return varBindList;
- }
-
+ public int getSpecific() {
+ return specific;
+ }
-
+ public VarBindList getVarBindList() {
+ return varBindList;
+ }
+
@XmlAttribute(name="enterprise")
public void setEnterprise(String enterprise) {
this.enterprise = enterprise;
@@ -93,8 +87,7 @@
this.notificationType = notificationType;
}
-
- @XmlAttribute(name="specific")
+ @XmlAttribute(name="specific")
public void setSpecific(int specific) {
this.specific = specific;
}
@@ -128,14 +121,6 @@
public void setSecurityName(String securityName) {
this.securityName = securityName;
}
-
- public void setOidDef(String en){
- this.oidDefName = en;
- }
-
- public String getOidDef(){
- return this.oidDefName;
- }
/**
* @return the securityName
@@ -144,34 +129,18 @@
return securityName;
}
+ // Object overrides ----------------------------------------------
+ public String toString() {
+ StringBuffer sbuf = new StringBuffer(256);
- public void setName(String name){
- this.name = name;
- }
+ sbuf.append('[').append("notificationType=").append(notificationType)
+ .append(", generic=").append(generic).append(", specific=")
+ .append(specific).append(", enterprise=").append(enterprise)
+ .append(", inform=").append(inform).append(", securityName=")
+ .append(securityName).append(", varBindList=")
+ .append(varBindList).append(']');
- public String getName(){
- return this.name;
- }
-
-
-
- // Object overrides ----------------------------------------------
-
- public String toString()
- {
- StringBuffer sbuf = new StringBuffer(256);
-
- sbuf.append('[')
- .append("notificationType=").append(notificationType)
- .append(", generic=").append(generic)
- .append(", specific=").append(specific)
- .append(", enterprise=").append(enterprise)
- .append(", inform=").append(inform)
- .append(", securityName=").append(securityName)
- .append(", varBindList=").append(varBindList)
- .append(']');
-
- return sbuf.toString();
- }
+ return sbuf.toString();
+ }
}
More information about the jboss-cvs-commits
mailing list