camel-beanstalk - make component expose uri options and doc.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/4976ca96 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4976ca96 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4976ca96 Branch: refs/heads/master Commit: 4976ca9649a6a149a11a583d262803a3a1e6ee53 Parents: db8dc0c Author: Claus Ibsen <[email protected]> Authored: Sun Sep 21 11:06:29 2014 +0200 Committer: Claus Ibsen <[email protected]> Committed: Sun Sep 21 11:06:29 2014 +0200 ---------------------------------------------------------------------- .../component/beanstalk/BeanstalkComponent.java | 10 ++-- .../component/beanstalk/BeanstalkEndpoint.java | 11 ++++- .../beanstalk/UriConfigurationTest.java | 52 ++++++++++++++++++++ 3 files changed, 65 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/4976ca96/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkComponent.java ---------------------------------------------------------------------- diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkComponent.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkComponent.java index ff59ed5..16c05e6 100644 --- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkComponent.java +++ b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkComponent.java @@ -18,9 +18,8 @@ package org.apache.camel.component.beanstalk; import java.util.Map; -import org.apache.camel.CamelContext; import org.apache.camel.Endpoint; -import org.apache.camel.impl.DefaultComponent; +import org.apache.camel.impl.UriEndpointComponent; /** * Beanstalk Camel component. @@ -40,7 +39,7 @@ import org.apache.camel.impl.DefaultComponent; * @see BeanstalkEndpoint * @see ConnectionSettingsFactory */ -public class BeanstalkComponent extends DefaultComponent { +public class BeanstalkComponent extends UriEndpointComponent { public static final String DEFAULT_TUBE = "default"; public static final String COMMAND_BURY = "bury"; @@ -57,10 +56,7 @@ public class BeanstalkComponent extends DefaultComponent { private static ConnectionSettingsFactory connectionSettingsFactory = ConnectionSettingsFactory.DEFAULT; public BeanstalkComponent() { - } - - public BeanstalkComponent(final CamelContext context) { - super(context); + super(BeanstalkEndpoint.class); } @Override http://git-wip-us.apache.org/repos/asf/camel/blob/4976ca96/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkEndpoint.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkEndpoint.java index f141223..db25c9d 100644 --- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkEndpoint.java +++ b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkEndpoint.java @@ -29,17 +29,26 @@ import org.apache.camel.component.beanstalk.processors.PutCommand; import org.apache.camel.component.beanstalk.processors.ReleaseCommand; import org.apache.camel.component.beanstalk.processors.TouchCommand; import org.apache.camel.impl.ScheduledPollEndpoint; +import org.apache.camel.spi.UriEndpoint; +import org.apache.camel.spi.UriParam; +@UriEndpoint(scheme = "beanstalk", consumerClass = BeanstalkConsumer.class) public class BeanstalkEndpoint extends ScheduledPollEndpoint { final ConnectionSettings conn; + @UriParam private String command = BeanstalkComponent.COMMAND_PUT; + @UriParam private long jobPriority = BeanstalkComponent.DEFAULT_PRIORITY; + @UriParam private int jobDelay = BeanstalkComponent.DEFAULT_DELAY; + @UriParam private int jobTimeToRun = BeanstalkComponent.DEFAULT_TIME_TO_RUN; - + @UriParam private String onFailure = BeanstalkComponent.COMMAND_BURY; + @UriParam private boolean useBlockIO = true; + @UriParam private boolean awaitJob = true; public BeanstalkEndpoint(final String uri, final Component component, final ConnectionSettings conn) { http://git-wip-us.apache.org/repos/asf/camel/blob/4976ca96/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/UriConfigurationTest.java ---------------------------------------------------------------------- diff --git a/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/UriConfigurationTest.java b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/UriConfigurationTest.java new file mode 100644 index 0000000..e52729d --- /dev/null +++ b/components/camel-beanstalk/src/test/java/org/apache/camel/component/beanstalk/UriConfigurationTest.java @@ -0,0 +1,52 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.beanstalk; + +import org.apache.camel.CamelContext; +import org.apache.camel.ComponentConfiguration; +import org.apache.camel.EndpointConfiguration; +import org.apache.camel.impl.DefaultCamelContext; +import org.junit.Assert; +import org.junit.Test; + +public class UriConfigurationTest extends Assert { + + @Test + public void testComponentConfiguration() throws Exception { + CamelContext context = new DefaultCamelContext(); + + BeanstalkComponent comp = context.getComponent("beanstalk", BeanstalkComponent.class); + EndpointConfiguration conf = comp.createConfiguration("beanstalk:tube?command=put"); + + assertEquals("put", conf.getParameter("command")); + + ComponentConfiguration compConf = comp.createComponentConfiguration(); + String json = compConf.createParameterJsonSchema(); + assertNotNull(json); + + assertTrue(json.contains("\"awaitJob\": { \"type\": \"boolean\" }")); + assertTrue(json.contains("\"command\": { \"type\": \"string\" }")); + assertTrue(json.contains("\"jobTimeToRun\": { \"type\": \"integer\" }")); + } + + @Test + public void testComponentDocumentation() throws Exception { + CamelContext context = new DefaultCamelContext(); + String html = context.getComponentDocumentation("beanstalk"); + assertNotNull("Should have found some auto-generated HTML if on Java 7", html); + } +}
