From 7e2d2c074c3f09266dda31c772f4bec61e8d5742 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Tue, 6 May 2014 22:03:39 +0200 Subject: o Support for listening on messages too. o Configurable topic name. --- .../plugins/activemq/ActiveMqGlobalConfig.java | 82 +++++++++++++--------- 1 file changed, 48 insertions(+), 34 deletions(-) (limited to 'src/main/java/org/jenkinsci/plugins/activemq/ActiveMqGlobalConfig.java') diff --git a/src/main/java/org/jenkinsci/plugins/activemq/ActiveMqGlobalConfig.java b/src/main/java/org/jenkinsci/plugins/activemq/ActiveMqGlobalConfig.java index 4bc8066..008613b 100644 --- a/src/main/java/org/jenkinsci/plugins/activemq/ActiveMqGlobalConfig.java +++ b/src/main/java/org/jenkinsci/plugins/activemq/ActiveMqGlobalConfig.java @@ -5,24 +5,27 @@ import hudson.util.FormValidation; import jenkins.model.GlobalConfiguration; import jenkins.model.Jenkins; import net.sf.json.JSONObject; -import org.apache.activemq.ActiveMQConnectionFactory; import org.kohsuke.stapler.QueryParameter; import org.kohsuke.stapler.StaplerRequest; import org.slf4j.Logger; -import javax.jms.Connection; import javax.jms.JMSException; -import java.net.URI; import java.net.URISyntaxException; +import static org.apache.commons.lang.StringUtils.trimToNull; +import static org.apache.commons.lang.builder.ToStringBuilder.reflectionToString; import static org.slf4j.LoggerFactory.getLogger; +@SuppressWarnings("UnusedDeclaration") @Extension public class ActiveMqGlobalConfig extends GlobalConfiguration { + public static final String DEFAULT_TOPIC_NAME = "jenkins"; + private static final Logger log = getLogger(ActiveMqPlugin.class); private String brokerUrl; private boolean enable; + private String topicName; public ActiveMqGlobalConfig() { log.info("ActiveMqGlobalConfig.ActiveMqGlobalConfig"); @@ -30,21 +33,9 @@ public class ActiveMqGlobalConfig extends GlobalConfiguration { log.info("this = " + this); } - public String getUrl() { - log.info("ActiveMqGlobalConfig.getUrl"); - return brokerUrl; - } - - public void setUrl(String url) { - log.info("ActiveMqGlobalConfig.setUrl"); - log.info("url = " + url); - this.brokerUrl = url; - } - - public FormValidation doCheckUrl(@QueryParameter String value) { - log.info("ActiveMqGlobalConfig.doCheckUrl"); - return doCheckBrokerUrl(value); - } + // ----------------------------------------------------------------------- + // Broker url + // ----------------------------------------------------------------------- public String getBrokerUrl() { log.info("ActiveMqGlobalConfig.getBrokerUrl"); @@ -67,30 +58,25 @@ public class ActiveMqGlobalConfig extends GlobalConfiguration { return FormValidation.ok(); } - ActiveMQConnectionFactory connectionFactory; + ActiveMqClient client; try { - URI uri = new URI(value); - connectionFactory = new ActiveMQConnectionFactory(uri); + client = new ActiveMqClient(brokerUrl, DEFAULT_TOPIC_NAME, null); } catch (URISyntaxException e) { return FormValidation.error("Invalid URI: " + e.getMessage()); - } - - Connection connection; - try { - connection = connectionFactory.createConnection(); } catch (JMSException e) { return FormValidation.warning("Unable to connect to broker"); } - try { - connection.close(); - } catch (JMSException ignore) { - } + client.close(); return FormValidation.ok("Successfully connected to broker"); } + // ----------------------------------------------------------------------- + // Enable + // ----------------------------------------------------------------------- + public boolean isEnable() { log.info("ActiveMqGlobalConfig.isEnable"); return enable; @@ -102,6 +88,37 @@ public class ActiveMqGlobalConfig extends GlobalConfiguration { save(); } + // ----------------------------------------------------------------------- + // Topic Name + // ----------------------------------------------------------------------- + + public String getTopicName() { + if (topicName == null || doCheckBrokerUrl(topicName).kind != FormValidation.Kind.OK) { + topicName = DEFAULT_TOPIC_NAME; + } + + return topicName; + } + + public void setTopicName(String topicName) { + this.topicName = topicName; + save(); + } + + public FormValidation doCheckTopicName(@QueryParameter String value) { + value = trimToNull(value); + + if (value == null) { + return FormValidation.ok(); + } + + if (value.matches("^[a-zA-Z]+")) { + return FormValidation.ok(); + } + + return FormValidation.error("Invalid topic name."); + } + @Override public boolean configure(StaplerRequest req, JSONObject json) throws FormException { log.info("ActiveMqGlobalConfig.configure"); @@ -116,9 +133,6 @@ public class ActiveMqGlobalConfig extends GlobalConfiguration { @Override public String toString() { - return "ActiveMqGlobalConfig{" + - ", brokerUrl='" + brokerUrl + '\'' + - ", enable=" + enable + - "} " + super.toString(); + return reflectionToString(this); } } -- cgit v1.2.3