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 {