Updated Branches: refs/heads/camel-2.12.x 2f8e1ff72 -> 8e3fcabd6 refs/heads/master 103612428 -> 73202b3d7
CAMEL-7205: camel-twitter endpoint with JMX attributes so you can change search keywords at runtime. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/73202b3d Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/73202b3d Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/73202b3d Branch: refs/heads/master Commit: 73202b3d7efeca8cd77dfb66eec81b94282517b7 Parents: 1036124 Author: Claus Ibsen <davscl...@apache.org> Authored: Fri Feb 14 13:33:02 2014 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Fri Feb 14 13:33:02 2014 +0100 ---------------------------------------------------------------------- .../component/twitter/Twitter4JFactory.java | 4 +- .../component/twitter/TwitterConfiguration.java | 4 +- .../twitter/TwitterEndpointDirect.java | 116 ++++++++++++++++++- .../twitter/TwitterEndpointPolling.java | 111 ++++++++++++++++++ .../twitter/consumer/search/SearchConsumer.java | 4 +- 5 files changed, 231 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/73202b3d/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/Twitter4JFactory.java ---------------------------------------------------------------------- diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/Twitter4JFactory.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/Twitter4JFactory.java index e2a5e4f..5bdfd8c 100644 --- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/Twitter4JFactory.java +++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/Twitter4JFactory.java @@ -77,9 +77,9 @@ public final class Twitter4JFactory { case DIRECTMESSAGE: return new DirectMessageConsumer(te); case SEARCH: - boolean hasKeywords = te.getProperties().getKeywords() == null + boolean hasNoKeywords = te.getProperties().getKeywords() == null || te.getProperties().getKeywords().trim().isEmpty(); - if (hasKeywords) { + if (hasNoKeywords) { throw new IllegalArgumentException("Type set to SEARCH but no keywords were provided."); } else { return new SearchConsumer(te); http://git-wip-us.apache.org/repos/asf/camel/blob/73202b3d/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java ---------------------------------------------------------------------- diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java index e693daa..6edf057 100644 --- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java +++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java @@ -117,7 +117,7 @@ public class TwitterConfiguration { * Number of page to iterate before stop (default is 1) */ @UriParam - private Integer numberOfPages = new Integer(1); + private Integer numberOfPages = 1; @UriParam private String httpProxyHost; @@ -344,7 +344,7 @@ public class TwitterConfiguration { return count; } - public void setCount(int count) { + public void setCount(Integer count) { this.count = count; } http://git-wip-us.apache.org/repos/asf/camel/blob/73202b3d/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointDirect.java ---------------------------------------------------------------------- diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointDirect.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointDirect.java index 423758b..52c532c 100644 --- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointDirect.java +++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointDirect.java @@ -20,13 +20,14 @@ import org.apache.camel.Consumer; import org.apache.camel.ExchangePattern; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.ServiceStatus; +import org.apache.camel.api.management.ManagedAttribute; import org.apache.camel.component.direct.DirectEndpoint; import org.apache.camel.component.twitter.consumer.Twitter4JConsumer; import org.apache.camel.component.twitter.consumer.TwitterConsumerDirect; import org.apache.camel.component.twitter.data.EndpointType; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; -import org.apache.camel.spi.UriParams; /** * Twitter direct endpoint @@ -55,6 +56,11 @@ public class TwitterEndpointDirect extends DirectEndpoint implements TwitterEndp return Twitter4JFactory.getProducer(this, getEndpointUri()); } + @ManagedAttribute + public boolean isSingleton() { + return true; + } + public TwitterConfiguration getProperties() { return properties; } @@ -63,6 +69,112 @@ public class TwitterEndpointDirect extends DirectEndpoint implements TwitterEndp this.properties = properties; } + @ManagedAttribute(description = "Camel ID") + public String getCamelId() { + return getCamelContext().getName(); + } + + @ManagedAttribute(description = "Camel ManagementName") + public String getCamelManagementName() { + return getCamelContext().getManagementName(); + } + + @ManagedAttribute(description = "Endpoint Uri", mask = true) + @Override + public String getEndpointUri() { + return super.getEndpointUri(); + } + + @ManagedAttribute(description = "Service State") + public String getState() { + ServiceStatus status = this.getStatus(); + // if no status exists then its stopped + if (status == null) { + status = ServiceStatus.Stopped; + } + return status.name(); + } + + @ManagedAttribute + public String getKeywords() { + return getProperties().getKeywords(); + } + + @ManagedAttribute + public void setKeywords(String keywords) { + getProperties().setKeywords(keywords); + } + + @ManagedAttribute + public String getLocations() { + return getProperties().getLocations(); + } + + @ManagedAttribute + public void setLocations(String locations) { + getProperties().setLocations(locations); + } + + @ManagedAttribute + public void setFilterOld(boolean filterOld) { + getProperties().setFilterOld(filterOld); + } + + @ManagedAttribute + public boolean isFilterOld() { + return getProperties().isFilterOld(); + } + + @ManagedAttribute + public void setDate(String date) { + getProperties().setDate(date); + } + + @ManagedAttribute + public String getDate() { + return getProperties().getDate(); + } + + @ManagedAttribute + public void setSinceId(long sinceId) { + getProperties().setSinceId(sinceId); + } + + @ManagedAttribute + public long getSinceId() { + return getProperties().getSinceId(); + } + + @ManagedAttribute + public void setLang(String lang) { + getProperties().setLang(lang); + } + + @ManagedAttribute + public String getLang() { + return getProperties().getLang(); + } + + @ManagedAttribute + public void setCount(Integer count) { + getProperties().setCount(count); + } + + @ManagedAttribute + public Integer getCount() { + return getProperties().getCount(); + } + + @ManagedAttribute + public void setNumberOfPages(Integer numberOfPages) { + getProperties().setNumberOfPages(numberOfPages); + } + + @ManagedAttribute + public Integer getNumberOfPages() { + return getProperties().getNumberOfPages(); + } + @Override public EndpointType getEndpointType() { return EndpointType.DIRECT; @@ -78,5 +190,7 @@ public class TwitterEndpointDirect extends DirectEndpoint implements TwitterEndp super.shutdown(); properties.getTwitter().shutdown(); } + + } http://git-wip-us.apache.org/repos/asf/camel/blob/73202b3d/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointPolling.java ---------------------------------------------------------------------- diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointPolling.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointPolling.java index 61fd7bf..f670951 100644 --- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointPolling.java +++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointPolling.java @@ -19,6 +19,9 @@ package org.apache.camel.component.twitter; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.ServiceStatus; +import org.apache.camel.api.management.ManagedAttribute; +import org.apache.camel.api.management.ManagedResource; import org.apache.camel.component.twitter.consumer.Twitter4JConsumer; import org.apache.camel.component.twitter.consumer.TwitterConsumerPolling; import org.apache.camel.component.twitter.data.EndpointType; @@ -29,6 +32,7 @@ import org.apache.camel.spi.UriParam; /** * Twitter polling endpoint */ +@ManagedResource(description = "Managed Twitter Endpoint") @UriEndpoint(scheme = "twitter", consumerClass = Twitter4JConsumer.class) public class TwitterEndpointPolling extends DefaultPollingEndpoint implements TwitterEndpoint { @@ -55,6 +59,7 @@ public class TwitterEndpointPolling extends DefaultPollingEndpoint implements Tw return Twitter4JFactory.getProducer(this, getEndpointUri()); } + @ManagedAttribute public boolean isSingleton() { return true; } @@ -67,6 +72,112 @@ public class TwitterEndpointPolling extends DefaultPollingEndpoint implements Tw this.properties = properties; } + @ManagedAttribute(description = "Camel ID") + public String getCamelId() { + return getCamelContext().getName(); + } + + @ManagedAttribute(description = "Camel ManagementName") + public String getCamelManagementName() { + return getCamelContext().getManagementName(); + } + + @ManagedAttribute(description = "Endpoint Uri", mask = true) + @Override + public String getEndpointUri() { + return super.getEndpointUri(); + } + + @ManagedAttribute(description = "Service State") + public String getState() { + ServiceStatus status = this.getStatus(); + // if no status exists then its stopped + if (status == null) { + status = ServiceStatus.Stopped; + } + return status.name(); + } + + @ManagedAttribute + public String getKeywords() { + return getProperties().getKeywords(); + } + + @ManagedAttribute + public void setKeywords(String keywords) { + getProperties().setKeywords(keywords); + } + + @ManagedAttribute + public String getLocations() { + return getProperties().getLocations(); + } + + @ManagedAttribute + public void setLocations(String locations) { + getProperties().setLocations(locations); + } + + @ManagedAttribute + public void setFilterOld(boolean filterOld) { + getProperties().setFilterOld(filterOld); + } + + @ManagedAttribute + public boolean isFilterOld() { + return getProperties().isFilterOld(); + } + + @ManagedAttribute + public void setDate(String date) { + getProperties().setDate(date); + } + + @ManagedAttribute + public String getDate() { + return getProperties().getDate(); + } + + @ManagedAttribute + public void setSinceId(long sinceId) { + getProperties().setSinceId(sinceId); + } + + @ManagedAttribute + public long getSinceId() { + return getProperties().getSinceId(); + } + + @ManagedAttribute + public void setLang(String lang) { + getProperties().setLang(lang); + } + + @ManagedAttribute + public String getLang() { + return getProperties().getLang(); + } + + @ManagedAttribute + public void setCount(Integer count) { + getProperties().setCount(count); + } + + @ManagedAttribute + public Integer getCount() { + return getProperties().getCount(); + } + + @ManagedAttribute + public void setNumberOfPages(Integer numberOfPages) { + getProperties().setNumberOfPages(numberOfPages); + } + + @ManagedAttribute + public Integer getNumberOfPages() { + return getProperties().getNumberOfPages(); + } + @Override public EndpointType getEndpointType() { return EndpointType.POLLING; http://git-wip-us.apache.org/repos/asf/camel/blob/73202b3d/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/search/SearchConsumer.java ---------------------------------------------------------------------- diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/search/SearchConsumer.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/search/SearchConsumer.java index 47e0e2d..599f9f3 100644 --- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/search/SearchConsumer.java +++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/search/SearchConsumer.java @@ -42,7 +42,6 @@ public class SearchConsumer extends Twitter4JConsumer { } public List<Status> pollConsume() throws TwitterException { - String keywords = te.getProperties().getKeywords(); Query query = new Query(keywords); if (te.getProperties().isFilterOld()) { @@ -54,7 +53,6 @@ public class SearchConsumer extends Twitter4JConsumer { } public List<Status> directConsume() throws TwitterException { - String keywords = te.getProperties().getKeywords(); if (keywords == null || keywords.trim().length() == 0) { return Collections.emptyList(); @@ -80,7 +78,7 @@ public class SearchConsumer extends Twitter4JConsumer { numberOfPages = te.getProperties().getNumberOfPages(); } - LOG.debug("Searching with " + numberOfPages + " pages."); + LOG.debug("Searching with {} pages.", numberOfPages); Twitter twitter = te.getProperties().getTwitter(); QueryResult qr = twitter.search(query);