jdk/src/jdk.snmp/share/classes/com/sun/jmx/snmp/daemon/SnmpSubNextRequestHandler.java
changeset 27220 315d620f5726
parent 27219 c4918033790e
parent 27214 d9f500808d8a
child 27222 422e90d83a4e
--- a/jdk/src/jdk.snmp/share/classes/com/sun/jmx/snmp/daemon/SnmpSubNextRequestHandler.java	Thu Oct 23 13:45:30 2014 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-/*
- * Copyright (c) 1998, 2013, 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.daemon;
-
-// java imports
-//
-import java.util.logging.Level;
-import java.util.Vector;
-
-// jmx imports
-//
-import com.sun.jmx.snmp.SnmpEngine;
-import com.sun.jmx.snmp.SnmpPdu;
-import com.sun.jmx.snmp.SnmpValue;
-import com.sun.jmx.snmp.SnmpVarBind;
-import com.sun.jmx.snmp.SnmpVarBindList;
-import com.sun.jmx.snmp.SnmpOid;
-import com.sun.jmx.snmp.SnmpDefinitions;
-import com.sun.jmx.snmp.SnmpStatusException;
-// SNMP Runtime import
-//
-import static com.sun.jmx.defaults.JmxProperties.SNMP_ADAPTOR_LOGGER;
-import com.sun.jmx.snmp.agent.SnmpMibAgent;
-import com.sun.jmx.snmp.agent.SnmpMibRequest;
-import com.sun.jmx.snmp.daemon.SnmpAdaptorServer;
-import com.sun.jmx.snmp.internal.SnmpIncomingRequest;
-
-/* NPCTE fix for bugId 4492741, esc 0 */
-import com.sun.jmx.snmp.ThreadContext;
-/* end of NPCTE fix for bugId 4492741 */
-
-class SnmpSubNextRequestHandler extends SnmpSubRequestHandler {
-    private SnmpAdaptorServer server = null;
-    /**
-     * The constructor initialize the subrequest with the whole varbind
-     * list contained in the original request.
-     */
-    protected SnmpSubNextRequestHandler(SnmpAdaptorServer server,
-                                        SnmpMibAgent agent,
-                                        SnmpPdu req) {
-        super(agent,req);
-        init(req, server);
-    }
-
-    protected SnmpSubNextRequestHandler(SnmpEngine engine,
-                                        SnmpAdaptorServer server,
-                                        SnmpIncomingRequest incRequest,
-                                        SnmpMibAgent agent,
-                                        SnmpPdu req) {
-        super(engine, incRequest, agent, req);
-        init(req, server);
-        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
-            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubNextRequestHandler.class.getName(),
-                "SnmpSubNextRequestHandler", "Constructor : " + this);
-        }
-    }
-
-    private void init(SnmpPdu req, SnmpAdaptorServer server) {
-        this.server = server;
-
-        // The translation table is easy in this case ...
-        //
-        final int max= translation.length;
-        final SnmpVarBind[] list= req.varBindList;
-        final NonSyncVector<SnmpVarBind> nonSyncVarBind =
-                ((NonSyncVector<SnmpVarBind>)varBind);
-        for(int i=0; i < max; i++) {
-            translation[i]= i;
-            // we need to allocate a new SnmpVarBind. Otherwise the first
-            // sub request will modify the list...
-            //
-            final SnmpVarBind newVarBind =
-                new SnmpVarBind(list[i].oid, list[i].value);
-            nonSyncVarBind.addNonSyncElement(newVarBind);
-        }
-    }
-
-    public void run() {
-
-        try {
-            /* NPCTE fix for bugId 4492741, esc 0, 16-August-2001 */
-            final ThreadContext oldContext =
-                ThreadContext.push("SnmpUserData",data);
-            try {
-                if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
-                    SNMP_ADAPTOR_LOGGER.logp(Level.FINER, SnmpSubRequestHandler.class.getName(),
-                        "run", "[" + Thread.currentThread() +
-                          "]:getNext operation on " + agent.getMibName());
-                }
-
-                // Always call with V2. So the merge of the responses will
-                // be easier.
-                //
-                agent.getNext(createMibRequest(varBind, snmpVersionTwo, data));
-            } finally {
-                ThreadContext.restore(oldContext);
-            }
-            /* end of NPCTE fix for bugId 4492741 */
-
-
-        } catch(SnmpStatusException x) {
-            errorStatus = x.getStatus() ;
-            errorIndex=  x.getErrorIndex();
-            if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
-                SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(),
-                    "run", "[" + Thread.currentThread() +
-                      "]:an Snmp error occurred during the operation", x);
-            }
-        }
-        catch(Exception x) {
-            errorStatus = SnmpDefinitions.snmpRspGenErr ;
-            if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
-                SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(),
-                    "run", "[" + Thread.currentThread() +
-                      "]:a generic error occurred during the operation", x);
-            }
-        }
-        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
-            SNMP_ADAPTOR_LOGGER.logp(Level.FINER, SnmpSubRequestHandler.class.getName(),
-                "run", "[" + Thread.currentThread() +  "]:operation completed");
-        }
-    }
-
-    /**
-     * The method updates the varbind list of the subrequest.
-     */
-    protected  void updateRequest(SnmpVarBind var, int pos) {
-        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
-            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(),
-                "updateRequest", "Copy :" + var);
-        }
-        int size= varBind.size();
-        translation[size]= pos;
-        final SnmpVarBind newVarBind =
-            new SnmpVarBind(var.oid, var.value);
-        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
-            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(),
-                "updateRequest", "Copied :" + newVarBind);
-        }
-
-        varBind.addElement(newVarBind);
-    }
-    /**
-     * The method updates a given var bind list with the result of a
-     * previsouly invoked operation.
-     * Prior to calling the method, one must make sure that the operation was
-     * successful. As such the method getErrorIndex or getErrorStatus should be
-     * called.
-     */
-    protected void updateResult(SnmpVarBind[] result) {
-
-        final int max=varBind.size();
-        for(int i= 0; i< max ; i++) {
-            // May be we should control the position ...
-            //
-            final int index= translation[i];
-            final SnmpVarBind elmt=
-                (SnmpVarBind)((NonSyncVector)varBind).elementAtNonSync(i);
-
-            final SnmpVarBind vb= result[index];
-            if (vb == null) {
-                result[index]= elmt;
-                /* NPCTE fix for bugid 4381195 esc 0. <J.C.> < 17-Oct-2000> */
-                // if ((elmt != null) &&  (elmt.value == null) &&
-                //    (version == snmpVersionTwo))
-                //    elmt.value = SnmpVarBind.endOfMibView;
-                /* end of NPCTE fix for bugid 4381195 */
-                continue;
-            }
-
-            final SnmpValue val= vb.value;
-            if ((val == null)|| (val == SnmpVarBind.endOfMibView)){
-                /* NPCTE fix for bugid 4381195 esc 0. <J.C.> < 17-Oct-2000> */
-                if ((elmt != null) &&
-                    (elmt.value != SnmpVarBind.endOfMibView))
-                    result[index]= elmt;
-                // else if ((val == null) && (version == snmpVersionTwo))
-                //    vb.value = SnmpVarBind.endOfMibView;
-                continue;
-                /* end of NPCTE fix for bugid 4381195 */
-            }
-
-            /* NPCTE fix for bugid 4381195 esc 0. <J.C.> < 17-Oct-2000> */
-            if (elmt == null) continue;
-            /* end of NPCTE fix for bugid 4381195 */
-
-            if (elmt.value == SnmpVarBind.endOfMibView) continue;
-
-
-            // Now we need to take the smallest oid ...
-            //
-            int comp = elmt.oid.compareTo(vb.oid);
-            if (comp < 0) {
-              // Take the smallest (lexicographically)
-                //
-                result[index]= elmt;
-            }
-            else {
-                if(comp == 0) {
-                    // Must compare agent used for reply
-                    // Take the deeper within the reply
-                    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
-                        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, SnmpSubRequestHandler.class.getName(),
-                            "updateResult"," oid overlapping. Oid : " +
-                              elmt.oid + "value :" + elmt.value);
-                        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, SnmpSubRequestHandler.class.getName(),
-                            "updateResult","Already present varBind : " +
-                              vb);
-                    }
-
-                    SnmpOid oid = vb.oid;
-                    SnmpMibAgent deeperAgent = server.getAgentMib(oid);
-
-                    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
-                        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, SnmpSubRequestHandler.class.getName(),
-                            "updateResult","Deeper agent : " + deeperAgent);
-                    }
-                    if(deeperAgent == agent) {
-                        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
-                            SNMP_ADAPTOR_LOGGER.logp(Level.FINER, SnmpSubRequestHandler.class.getName(),
-                                "updateResult","The current agent is the deeper one. Update the value with the current one");
-                        }
-                        result[index].value = elmt.value;
-                    }
-
-                    /*
-                      Vector v = new Vector();
-                      SnmpMibRequest getReq = createMibRequest(v,
-                      version,
-                      null);
-                      SnmpVarBind realValue = new SnmpVarBind(oid);
-                      getReq.addVarBind(realValue);
-                      try {
-                      deeperAgent.get(getReq);
-                      } catch(SnmpStatusException e) {
-                      e.printStackTrace();
-                      }
-
-                      if(isDebugOn())
-                      trace("updateResult", "Biggest priority value is : " +
-                      realValue.value);
-
-                      result[index].value = realValue.value;
-                    */
-                }
-            }
-        }
-    }
-}