CAMEL-10319, SNMP Producer

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b7b6ff22
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b7b6ff22
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b7b6ff22

Branch: refs/heads/master
Commit: b7b6ff22553311e75346d72dde35930fbf1000a1
Parents: 83d6e4f
Author: Fabrizio Spataro <fabrizio.spat...@bizmate.it>
Authored: Wed Sep 14 18:02:15 2016 +0200
Committer: Andrea Cosentino <anco...@gmail.com>
Committed: Thu Sep 15 10:52:13 2016 +0200

----------------------------------------------------------------------
 .../camel/component/snmp/SnmpProducer.java      | 35 +++++++++++++++-----
 1 file changed, 26 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/b7b6ff22/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpProducer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpProducer.java
 
b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpProducer.java
index 43cfe0c..0da0b00 100644
--- 
a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpProducer.java
+++ 
b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpProducer.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.snmp;
 
+import java.util.concurrent.TimeoutException;
+
 import org.apache.camel.Exchange;
 import org.apache.camel.impl.DefaultProducer;
 import org.slf4j.Logger;
@@ -48,12 +50,34 @@ public class SnmpProducer extends DefaultProducer {
     
     private SnmpEndpoint endpoint;
     
+    private Address targetAddress;
+    private USM usm;
+
     public SnmpProducer(SnmpEndpoint endpoint) {
         super(endpoint);
         this.endpoint = endpoint;
     }
     
     @Override
+    public void start() throws Exception {
+        super.start();
+
+        this.targetAddress = GenericAddress.parse(endpoint.getAddress());
+        LOG.debug("targetAddress: {}", targetAddress);
+
+        this.usm = new USM(SecurityProtocols.getInstance(), new 
OctetString(MPv3.createLocalEngineID()), 0);
+        SecurityModels.getInstance().addSecurityModel(this.usm);
+    }
+    
+    @Override
+    public void stop() throws Exception {
+        super.stop();
+
+        this.targetAddress = null;
+        this.usm = null;
+    }
+    
+    @Override
     public void process(final Exchange exchange) throws Exception {
         // load connection data only if the endpoint is enabled
         Snmp snmp = null;
@@ -61,10 +85,6 @@ public class SnmpProducer extends DefaultProducer {
 
         try {
             LOG.debug("Starting SNMP producer on {}", endpoint.getAddress());
-    
-            Address targetAddress = 
GenericAddress.parse(endpoint.getAddress());
-            
-            LOG.debug("targetAddress: " + targetAddress);
             
             // either tcp or udp
             if ("tcp".equals(endpoint.getProtocol())) {
@@ -72,14 +92,11 @@ public class SnmpProducer extends DefaultProducer {
             } else if ("udp".equals(endpoint.getProtocol())) {
                 transport = new DefaultUdpTransportMapping();
             } else {
-                throw new IllegalArgumentException("Unknown protocol: " + 
endpoint.getProtocol());
+                throw new IllegalArgumentException("Unknown protocol: {} " + 
endpoint.getProtocol());
             }
     
             snmp = new Snmp(transport);
-            USM usm = new USM(SecurityProtocols.getInstance(), new 
OctetString(MPv3.createLocalEngineID()), 0);
             
-            SecurityModels.getInstance().addSecurityModel(usm);
-    
             // setting up target
             CommunityTarget target = new CommunityTarget();
             target.setCommunity(new OctetString(endpoint.getSnmpCommunity()));
@@ -107,7 +124,7 @@ public class SnmpProducer extends DefaultProducer {
             if (responseEvent.getResponse() != null) {
                 exchange.getIn().setBody(new 
SnmpMessage(responseEvent.getResponse()));
             } else {
-                throw new Exception("SNMP Producer Timeout");
+                throw new TimeoutException("SNMP Producer Timeout");
             }
         } finally {
             try {

Reply via email to