jdk/src/jdk.snmp/share/classes/com/sun/jmx/snmp/agent/SnmpMibAgent.java
changeset 27220 315d620f5726
parent 27219 c4918033790e
parent 27214 d9f500808d8a
child 27222 422e90d83a4e
--- a/jdk/src/jdk.snmp/share/classes/com/sun/jmx/snmp/agent/SnmpMibAgent.java	Thu Oct 23 13:45:30 2014 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,768 +0,0 @@
-/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-package com.sun.jmx.snmp.agent;
-
-
-
-// java imports
-//
-import java.io.Serializable;
-import java.util.Vector;
-import java.util.Enumeration;
-
-// jmx imports
-//
-import javax.management.MBeanServer;
-import javax.management.MBeanRegistration;
-import javax.management.ObjectName;
-import javax.management.InstanceNotFoundException;
-import javax.management.ServiceNotFoundException;
-import javax.management.ReflectionException;
-import javax.management.MBeanException;
-import com.sun.jmx.snmp.SnmpVarBind;
-import com.sun.jmx.snmp.SnmpDefinitions;
-import com.sun.jmx.snmp.SnmpStatusException;
-import com.sun.jmx.snmp.SnmpPdu;
-import com.sun.jmx.snmp.SnmpOid;
-import com.sun.jmx.snmp.SnmpEngine;
-
-/**
- * Abstract class for representing an SNMP agent.
- *
- * The class is used by the SNMP protocol adaptor as the entry point in
- * the SNMP agent to query.
- *
- * <p><b>This API is a Sun Microsystems internal API  and is subject
- * to change without notice.</b></p>
- */
-@SuppressWarnings("serial") // JDK implementation class
-public abstract class SnmpMibAgent
-    implements SnmpMibAgentMBean, MBeanRegistration, Serializable {
-
-    /**
-     * Default constructor.
-     */
-    public SnmpMibAgent() {
-    }
-
-    // ---------------------------------------------------------------------
-    // PUBLIC METHODS
-    //----------------------------------------------------------------------
-
-    /**
-     * Initializes the MIB (with no registration of the MBeans into the
-     * MBean server).
-     *
-     * @exception IllegalAccessException The MIB can not be initialized.
-     */
-    public abstract void init() throws IllegalAccessException;
-
-    /**
-     * Initializes the MIB but each single MBean representing the MIB
-     * is inserted into the MBean server.
-     *
-     * @param server The MBean server to register the service with.
-     * @param name The object name.
-     *
-     * @return The name of the SNMP MIB registered.
-     *
-     * @exception java.lang.Exception
-     */
-    @Override
-    public abstract ObjectName preRegister(MBeanServer server,
-                                           ObjectName name)
-        throws java.lang.Exception;
-
-    /**
-     * Not used in this context.
-     */
-    @Override
-    public void postRegister (Boolean registrationDone) {
-    }
-
-    /**
-     * Not used in this context.
-     */
-    @Override
-    public void preDeregister() throws java.lang.Exception {
-    }
-
-    /**
-     * Not used in this context.
-     */
-    @Override
-    public void postDeregister() {
-    }
-
-    /**
-     * Processes a <CODE>get</CODE> operation.
-     * This method must update the SnmpVarBinds contained in the
-     * <var>{@link SnmpMibRequest} req</var> parameter.
-     *
-     * @param req The SnmpMibRequest object holding the list of variable to
-     *            be retrieved. This list is composed of
-     *            <CODE>SnmpVarBind</CODE> objects.
-     *
-     * @exception SnmpStatusException An error occurred during the operation.
-     */
-    @Override
-    public abstract void get(SnmpMibRequest req)
-        throws SnmpStatusException;
-
-    /**
-     * Processes a <CODE>getNext</CODE> operation.
-     * This method must update the SnmpVarBinds contained in the
-     * <var>{@link SnmpMibRequest} req</var> parameter.
-     *
-     * @param req The SnmpMibRequest object holding the list of
-     *            OIDs from which the next variables should be retrieved.
-     *            This list is composed of <CODE>SnmpVarBind</CODE> objects.
-     *
-     * @exception SnmpStatusException An error occurred during the operation.
-     */
-    @Override
-    public abstract void getNext(SnmpMibRequest req)
-        throws SnmpStatusException;
-
-    /**
-     * Processes a <CODE>getBulk</CODE> operation.
-     * This method must update the SnmpVarBinds contained in the
-     * <var>{@link SnmpMibRequest} req</var> parameter.
-     *
-     * @param req The SnmpMibRequest object holding the list of variable to
-     *            be retrieved. This list is composed of
-     *            <CODE>SnmpVarBind</CODE> objects.
-     *
-     * @param nonRepeat The number of variables, starting with the first
-     *    variable in the variable-bindings, for which a single
-     *    lexicographic successor is requested.
-     *
-     * @param maxRepeat The number of lexicographic successors requested
-     *    for each of the last R variables. R is the number of variables
-     *    following the first <CODE>nonRepeat</CODE> variables for which
-     *    multiple lexicographic successors are requested.
-     *
-     * @exception SnmpStatusException An error occurred during the operation.
-     */
-    @Override
-    public abstract void getBulk(SnmpMibRequest req, int nonRepeat,
-                                 int maxRepeat)
-        throws SnmpStatusException;
-
-    /**
-     * Processes a <CODE>set</CODE> operation.
-     * This method must update the SnmpVarBinds contained in the
-     * <var>{@link SnmpMibRequest} req</var> parameter.
-     * This method is called during the second phase of the SET two-phase
-     * commit.
-     *
-     * @param req The SnmpMibRequest object holding the list of variable to
-     *            be set. This list is composed of
-     *            <CODE>SnmpVarBind</CODE> objects.
-     *
-     * @exception SnmpStatusException An error occurred during the operation.
-     *            Throwing an exception in this method will break the
-     *            atomicity of the SET operation. Care must be taken so that
-     *            the exception is thrown in the {@link #check(SnmpMibRequest)}
-     *            method instead.
-     */
-    @Override
-    public abstract void set(SnmpMibRequest req)
-        throws SnmpStatusException;
-
-
-    /**
-     * Checks if a <CODE>set</CODE> operation can be performed.
-     * If the operation can not be performed, the method should throw an
-     * <CODE>SnmpStatusException</CODE>.
-     * This method is called during the first phase of the SET two-phase
-     * commit.
-     *
-     * @param req The SnmpMibRequest object holding the list of variable to
-     *            be set. This list is composed of
-     *            <CODE>SnmpVarBind</CODE> objects.
-     *
-     * @exception SnmpStatusException The <CODE>set</CODE> operation
-     *    cannot be performed.
-     */
-    @Override
-    public abstract void check(SnmpMibRequest req)
-        throws SnmpStatusException;
-
-    /**
-     * Gets the root object identifier of the MIB.
-     * <P>The root object identifier is the object identifier uniquely
-     * identifying the MIB.
-     *
-     * @return The root object identifier.
-     */
-    public abstract long[] getRootOid();
-
-    // ---------------------------------------------------------------------
-    // GETTERS AND SETTERS
-    // ---------------------------------------------------------------------
-
-    /**
-     * Gets the reference to the MBean server in which the SNMP MIB is
-     * registered.
-     *
-     * @return The MBean server or null if the MIB is not registered in any
-     *     MBean server.
-     */
-    @Override
-    public MBeanServer getMBeanServer() {
-        return server;
-    }
-
-    /**
-     * Gets the reference to the SNMP protocol adaptor to which the MIB is
-     * bound.
-     *
-     * @return The SNMP MIB handler.
-     */
-    @Override
-    public SnmpMibHandler getSnmpAdaptor() {
-        return adaptor;
-    }
-
-    /**
-     * Sets the reference to the SNMP protocol adaptor through which the MIB
-     * will be SNMP accessible and add this new MIB in the SNMP MIB handler.
-     *
-     * @param stack The SNMP MIB handler.
-     */
-    @Override
-    public void setSnmpAdaptor(SnmpMibHandler stack) {
-        if (adaptor != null) {
-            adaptor.removeMib(this);
-        }
-        adaptor = stack;
-        if (adaptor != null) {
-            adaptor.addMib(this);
-        }
-    }
-
-     /**
-     * Sets the reference to the SNMP protocol adaptor through which the MIB
-     * will be SNMP accessible and add this new MIB in the SNMP MIB handler.
-     * This method is to be called to set a specific agent to a specific OID. This can be useful when dealing with MIB overlapping.
-     * Some OID can be implemented in more than one MIB. In this case, the OID nearest the agent will be used on SNMP operations.
-     * @param stack The SNMP MIB handler.
-     * @param oids The set of OIDs this agent implements.
-     *
-     * @since 1.5
-     */
-    @Override
-    public void setSnmpAdaptor(SnmpMibHandler stack, SnmpOid[] oids) {
-        if (adaptor != null) {
-            adaptor.removeMib(this);
-        }
-        adaptor = stack;
-        if (adaptor != null) {
-            adaptor.addMib(this, oids);
-        }
-    }
-
-    /**
-     * Sets the reference to the SNMP protocol adaptor through which the MIB
-     * will be SNMP accessible and adds this new MIB in the SNMP MIB handler.
-     * Adds a new contextualized MIB in the SNMP MIB handler.
-     *
-     * @param stack The SNMP MIB handler.
-     * @param contextName The MIB context name. If null is passed, will be registered in the default context.
-     *
-     * @exception IllegalArgumentException If the parameter is null.
-     *
-     * @since 1.5
-     */
-    @Override
-    public void setSnmpAdaptor(SnmpMibHandler stack, String contextName) {
-        if (adaptor != null) {
-            adaptor.removeMib(this, contextName);
-        }
-        adaptor = stack;
-        if (adaptor != null) {
-            adaptor.addMib(this, contextName);
-        }
-    }
-    /**
-     * Sets the reference to the SNMP protocol adaptor through which the MIB
-     * will be SNMP accessible and adds this new MIB in the SNMP MIB handler.
-     * Adds a new contextualized MIB in the SNMP MIB handler.
-     *
-     * @param stack The SNMP MIB handler.
-     * @param contextName The MIB context name. If null is passed, will be registered in the default context.
-     * @param oids The set of OIDs this agent implements.
-     * @exception IllegalArgumentException If the parameter is null.
-     *
-     * @since 1.5
-     */
-    @Override
-    public void setSnmpAdaptor(SnmpMibHandler stack,
-                               String contextName,
-                               SnmpOid[] oids) {
-        if (adaptor != null) {
-            adaptor.removeMib(this, contextName);
-        }
-        adaptor = stack;
-        if (adaptor != null) {
-            adaptor.addMib(this, contextName, oids);
-        }
-    }
-
-    /**
-     * Gets the object name of the SNMP protocol adaptor to which the MIB
-     * is bound.
-     *
-     * @return The name of the SNMP protocol adaptor.
-     */
-    @Override
-    public ObjectName getSnmpAdaptorName() {
-        return adaptorName;
-    }
-
-    /**
-     * Sets the reference to the SNMP protocol adaptor through which the MIB
-     * will be SNMP accessible and add this new MIB in the SNMP MIB handler
-     * associated to the specified <CODE>name</CODE>.
-     *
-     * @param name The name of the SNMP protocol adaptor.
-     *
-     * @exception InstanceNotFoundException The SNMP protocol adaptor does
-     *     not exist in the MBean server.
-     *
-     * @exception ServiceNotFoundException This SNMP MIB is not registered
-     *     in the MBean server or the requested service is not supported.
-     */
-    @Override
-    public void setSnmpAdaptorName(ObjectName name)
-        throws InstanceNotFoundException, ServiceNotFoundException {
-
-        if (server == null) {
-            throw new ServiceNotFoundException(mibName + " is not registered in the MBean server");
-        }
-        // First remove the reference on the old adaptor server.
-        //
-        if (adaptor != null) {
-            adaptor.removeMib(this);
-        }
-
-        // Then update the reference to the new adaptor server.
-        //
-        Object[] params = {this};
-        String[] signature = {"com.sun.jmx.snmp.agent.SnmpMibAgent"};
-        try {
-            adaptor = (SnmpMibHandler)(server.invoke(name, "addMib", params,
-                                                     signature));
-        } catch (InstanceNotFoundException e) {
-            throw new InstanceNotFoundException(name.toString());
-        } catch (ReflectionException e) {
-            throw new ServiceNotFoundException(name.toString());
-        } catch (MBeanException e) {
-            // Should never occur...
-        }
-
-        adaptorName = name;
-    }
-    /**
-     * Sets the reference to the SNMP protocol adaptor through which the MIB
-     * will be SNMP accessible and add this new MIB in the SNMP MIB handler
-     * associated to the specified <CODE>name</CODE>.
-     * This method is to be called to set a specific agent to a specific OID. This can be useful when dealing with MIB overlapping.
-     * Some OID can be implemented in more than one MIB. In this case, the OID nearer agent will be used on SNMP operations.
-     * @param name The name of the SNMP protocol adaptor.
-     * @param oids The set of OIDs this agent implements.
-     * @exception InstanceNotFoundException The SNMP protocol adaptor does
-     *     not exist in the MBean server.
-     *
-     * @exception ServiceNotFoundException This SNMP MIB is not registered
-     *     in the MBean server or the requested service is not supported.
-     *
-     * @since 1.5
-     */
-    @Override
-    public void setSnmpAdaptorName(ObjectName name, SnmpOid[] oids)
-        throws InstanceNotFoundException, ServiceNotFoundException {
-
-        if (server == null) {
-            throw new ServiceNotFoundException(mibName + " is not registered in the MBean server");
-        }
-        // First remove the reference on the old adaptor server.
-        //
-        if (adaptor != null) {
-            adaptor.removeMib(this);
-        }
-
-        // Then update the reference to the new adaptor server.
-        //
-        Object[] params = {this, oids};
-        String[] signature = {"com.sun.jmx.snmp.agent.SnmpMibAgent",
-        oids.getClass().getName()};
-        try {
-            adaptor = (SnmpMibHandler)(server.invoke(name, "addMib", params,
-                                                     signature));
-        } catch (InstanceNotFoundException e) {
-            throw new InstanceNotFoundException(name.toString());
-        } catch (ReflectionException e) {
-            throw new ServiceNotFoundException(name.toString());
-        } catch (MBeanException e) {
-            // Should never occur...
-        }
-
-        adaptorName = name;
-    }
-    /**
-     * Sets the reference to the SNMP protocol adaptor through which the MIB
-     * will be SNMP accessible and add this new MIB in the SNMP MIB handler
-     * associated to the specified <CODE>name</CODE>.
-     *
-     * @param name The name of the SNMP protocol adaptor.
-     * @param contextName The MIB context name. If null is passed, will be registered in the default context.
-     * @exception InstanceNotFoundException The SNMP protocol adaptor does
-     *     not exist in the MBean server.
-     *
-     * @exception ServiceNotFoundException This SNMP MIB is not registered
-     *     in the MBean server or the requested service is not supported.
-     *
-     * @since 1.5
-     */
-    @Override
-    public void setSnmpAdaptorName(ObjectName name, String contextName)
-        throws InstanceNotFoundException, ServiceNotFoundException {
-
-        if (server == null) {
-            throw new ServiceNotFoundException(mibName + " is not registered in the MBean server");
-        }
-
-        // First remove the reference on the old adaptor server.
-        //
-        if (adaptor != null) {
-            adaptor.removeMib(this, contextName);
-        }
-
-        // Then update the reference to the new adaptor server.
-        //
-        Object[] params = {this, contextName};
-        String[] signature = {"com.sun.jmx.snmp.agent.SnmpMibAgent", "java.lang.String"};
-        try {
-            adaptor = (SnmpMibHandler)(server.invoke(name, "addMib", params,
-                                                     signature));
-        } catch (InstanceNotFoundException e) {
-            throw new InstanceNotFoundException(name.toString());
-        } catch (ReflectionException e) {
-            throw new ServiceNotFoundException(name.toString());
-        } catch (MBeanException e) {
-            // Should never occur...
-        }
-
-        adaptorName = name;
-    }
-
-    /**
-     * Sets the reference to the SNMP protocol adaptor through which the MIB
-     * will be SNMP accessible and add this new MIB in the SNMP MIB handler
-     * associated to the specified <CODE>name</CODE>.
-     *
-     * @param name The name of the SNMP protocol adaptor.
-     * @param contextName The MIB context name. If null is passed, will be registered in the default context.
-     * @param oids The set of OIDs this agent implements.
-     * @exception InstanceNotFoundException The SNMP protocol adaptor does
-     *     not exist in the MBean server.
-     *
-     * @exception ServiceNotFoundException This SNMP MIB is not registered
-     *     in the MBean server or the requested service is not supported.
-     *
-     * @since 1.5
-     */
-    @Override
-    public void setSnmpAdaptorName(ObjectName name,
-                                   String contextName, SnmpOid[] oids)
-        throws InstanceNotFoundException, ServiceNotFoundException {
-
-        if (server == null) {
-            throw new ServiceNotFoundException(mibName + " is not registered in the MBean server");
-        }
-
-        // First remove the reference on the old adaptor server.
-        //
-        if (adaptor != null) {
-            adaptor.removeMib(this, contextName);
-        }
-
-        // Then update the reference to the new adaptor server.
-        //
-        Object[] params = {this, contextName, oids};
-        String[] signature = {"com.sun.jmx.snmp.agent.SnmpMibAgent", "java.lang.String", oids.getClass().getName()};
-        try {
-            adaptor = (SnmpMibHandler)(server.invoke(name, "addMib", params,
-                                                     signature));
-        } catch (InstanceNotFoundException e) {
-            throw new InstanceNotFoundException(name.toString());
-        } catch (ReflectionException e) {
-            throw new ServiceNotFoundException(name.toString());
-        } catch (MBeanException e) {
-            // Should never occur...
-        }
-
-        adaptorName = name;
-    }
-
-    /**
-     * Indicates whether or not the MIB module is bound to a SNMP protocol
-     * adaptor.
-     * As a reminder, only bound MIBs can be accessed through SNMP protocol
-     * adaptor.
-     *
-     * @return <CODE>true</CODE> if the MIB module is bound,
-     *         <CODE>false</CODE> otherwise.
-     */
-    @Override
-    public boolean getBindingState() {
-        if (adaptor == null)
-            return false;
-        else
-            return true;
-    }
-
-    /**
-     * Gets the MIB name.
-     *
-     * @return The MIB name.
-     */
-    @Override
-    public String getMibName() {
-        return mibName;
-    }
-
-    /**
-     * This is a factory method for creating new SnmpMibRequest objects.
-     * @param reqPdu The received PDU.
-     * @param vblist   The vector of SnmpVarBind objects in which the
-     *        MIB concerned by this request is involved.
-     * @param version  The protocol version of the SNMP request.
-     * @param userData User allocated contextual data.
-     *
-     * @return A new SnmpMibRequest object.
-     *
-     * @since 1.5
-     **/
-    public static SnmpMibRequest newMibRequest(SnmpPdu reqPdu,
-                                               Vector<SnmpVarBind> vblist,
-                                               int version,
-                                               Object userData)
-    {
-        return new SnmpMibRequestImpl(null,
-                                      reqPdu,
-                                      vblist,
-                                      version,
-                                      userData,
-                                      null,
-                                      SnmpDefinitions.noAuthNoPriv,
-                                      getSecurityModel(version),
-                                      null,null);
-    }
-    /**
-     * This is a factory method for creating new SnmpMibRequest objects.
-     * @param engine The local engine.
-     * @param reqPdu The received pdu.
-     * @param vblist The vector of SnmpVarBind objects in which the
-     *        MIB concerned by this request is involved.
-     * @param version The protocol version of the SNMP request.
-     * @param userData User allocated contextual data.
-     *
-     * @return A new SnmpMibRequest object.
-     *
-     * @since 1.5
-     **/
-    public static SnmpMibRequest newMibRequest(SnmpEngine engine,
-                                               SnmpPdu reqPdu,
-                                               Vector<SnmpVarBind> vblist,
-                                               int version,
-                                               Object userData,
-                                               String principal,
-                                               int securityLevel,
-                                               int securityModel,
-                                               byte[] contextName,
-                                               byte[] accessContextName) {
-        return new SnmpMibRequestImpl(engine,
-                                      reqPdu,
-                                      vblist,
-                                      version,
-                                      userData,
-                                      principal,
-                                      securityLevel,
-                                      securityModel,
-                                      contextName,
-                                      accessContextName);
-    }
-    // ---------------------------------------------------------------------
-    // PACKAGE METHODS
-    // ---------------------------------------------------------------------
-
-    /**
-     * Processes a <CODE>getBulk</CODE> operation using call to
-     * <CODE>getNext</CODE>.
-     * The method implements the <CODE>getBulk</CODE> operation by calling
-     * appropriately the <CODE>getNext</CODE> method.
-     *
-     * @param req The SnmpMibRequest containing the variable list to be
-     *        retrieved.
-     *
-     * @param nonRepeat The number of variables, starting with the first
-     *    variable in the variable-bindings, for which a single lexicographic
-     *    successor is requested.
-     *
-     * @param maxRepeat The number of lexicographic successors
-     *    requested for each of the last R variables. R is the number of
-     *    variables following the first nonRepeat variables for which
-     *    multiple lexicographic successors are requested.
-     *
-     * @return The variable list containing returned values.
-     *
-     * @exception SnmpStatusException An error occurred during the operation.
-     */
-    void getBulkWithGetNext(SnmpMibRequest req, int nonRepeat, int maxRepeat)
-        throws SnmpStatusException {
-        final Vector<SnmpVarBind> list = req.getSubList();
-
-        // RFC 1905, Section 4.2.3, p14
-        final int L = list.size() ;
-        final int N = Math.max(Math.min(nonRepeat, L), 0) ;
-        final int M = Math.max(maxRepeat, 0) ;
-        final int R = L - N ;
-
-        // Let's build the varBindList for the response pdu
-        //
-        // int errorStatus = SnmpDefinitions.snmpRspNoError ;
-        // int errorIndex = 0 ;
-        if (L != 0) {
-
-            // Non-repeaters and first row of repeaters
-            //
-            getNext(req);
-
-            // Now the remaining repeaters
-            //
-            Vector<SnmpVarBind> repeaters= splitFrom(list, N);
-            SnmpMibRequestImpl repeatedReq =
-                new SnmpMibRequestImpl(req.getEngine(),
-                                       req.getPdu(),
-                                       repeaters,
-                                       SnmpDefinitions.snmpVersionTwo,
-                                       req.getUserData(),
-                                       req.getPrincipal(),
-                                       req.getSecurityLevel(),
-                                       req.getSecurityModel(),
-                                       req.getContextName(),
-                                       req.getAccessContextName());
-            for (int i = 2 ; i <= M ; i++) {
-                getNext(repeatedReq);
-                concatVector(req, repeaters);
-            }
-        }
-    }
-
-
-    // ---------------------------------------------------------------------
-    // PRIVATE METHODS
-    // ---------------------------------------------------------------------
-
-    /**
-     * This method creates a new Vector which does not contain the first
-     * element up to the specified limit.
-     *
-     * @param original The original vector.
-     * @param limit The limit.
-     */
-    private Vector<SnmpVarBind> splitFrom(Vector<SnmpVarBind> original, int limit) {
-
-        int max= original.size();
-        Vector<SnmpVarBind> result= new Vector<>(max - limit);
-        int i= limit;
-
-        // Ok the loop looks a bit strange. But in order to improve the
-        // perf, we try to avoid reference to the limit variable from
-        // within the loop ...
-        //
-        for(Enumeration<SnmpVarBind> e= original.elements(); e.hasMoreElements(); --i) {
-            SnmpVarBind var= e.nextElement();
-            if (i >0)
-                continue;
-            result.addElement(new SnmpVarBind(var.oid, var.value));
-        }
-        return result;
-    }
-
-    private void concatVector(SnmpMibRequest req, Vector<SnmpVarBind> source) {
-        for(Enumeration<SnmpVarBind> e= source.elements(); e.hasMoreElements(); ) {
-            SnmpVarBind var= e.nextElement();
-            // We need to duplicate the SnmpVarBind otherwise it is going
-            // to be overloaded by the next get Next ...
-            req.addVarBind(new SnmpVarBind(var.oid, var.value));
-        }
-    }
-
-    private static int getSecurityModel(int version) {
-        switch(version) {
-        case SnmpDefinitions.snmpVersionOne:
-            return SnmpDefinitions.snmpV1SecurityModel;
-        default:
-            return SnmpDefinitions.snmpV2SecurityModel;
-        }
-    }
-
-    // ---------------------------------------------------------------------
-    // PROTECTED VARIABLES
-    // ---------------------------------------------------------------------
-
-    /**
-     * The object name of the MIB.
-     * @serial
-     */
-    protected String mibName;
-
-    /**
-     * The reference to the MBean server.
-     * @serial
-     */
-    protected MBeanServer server;
-
-    // ---------------------------------------------------------------------
-    // PRIVATE VARIABLES
-    // ---------------------------------------------------------------------
-
-    /**
-     * The object name of the SNMP protocol adaptor.
-     * @serial
-     */
-    private ObjectName adaptorName;
-
-    /**
-     * The reference to the SNMP stack.
-     */
-    private transient SnmpMibHandler adaptor;
-}