You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2014/12/19 14:06:25 UTC
[4/4] camel git commit: CAMEL-7999: More components include
documentation
CAMEL-7999: More components include documentation
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ca52ba53
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ca52ba53
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ca52ba53
Branch: refs/heads/master
Commit: ca52ba53091fa9e66a5e2fc677ad215946d62527
Parents: 0d99e50
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Dec 19 14:06:04 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Dec 19 14:06:04 2014 +0100
----------------------------------------------------------------------
.../camel/component/dns/DnsComponent.java | 24 +++---
.../camel/component/dns/DnsConstants.java | 10 +--
.../camel/component/dns/DnsDigEndpoint.java | 83 --------------------
.../camel/component/dns/DnsDigProducer.java | 69 ++++++++++++++++
.../apache/camel/component/dns/DnsEndpoint.java | 69 ++++++++++++++++
.../camel/component/dns/DnsIpEndpoint.java | 59 --------------
.../camel/component/dns/DnsIpProducer.java | 43 ++++++++++
.../camel/component/dns/DnsLookupEndpoint.java | 79 -------------------
.../camel/component/dns/DnsLookupProducer.java | 64 +++++++++++++++
.../org/apache/camel/component/dns/DnsType.java | 23 ++++++
.../component/dns/DnsWikipediaProducer.java | 61 ++++++++++++++
.../camel/component/dns/WikipediaEndpoint.java | 76 ------------------
12 files changed, 344 insertions(+), 316 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/ca52ba53/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsComponent.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsComponent.java
index 1321ab6..13a6fd8 100644
--- a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsComponent.java
+++ b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsComponent.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.dns;
import java.util.Map;
import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.impl.UriEndpointComponent;
/**
* The DNS components creates endpoints of the form: <br/>
@@ -65,20 +65,18 @@ import org.apache.camel.impl.DefaultComponent;
* <p/>
* </p>
*/
-public class DnsComponent extends DefaultComponent {
+public class DnsComponent extends UriEndpointComponent {
+
+ public DnsComponent() {
+ super(DnsEndpoint.class);
+ }
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
- if (DnsConstants.OPERATION_IP.equals(remaining)) {
- return new DnsIpEndpoint(this);
- } else if (DnsConstants.OPERATION_LOOKUP.equals(remaining)) {
- return new DnsLookupEndpoint(this);
- } else if (DnsConstants.OPERATION_DIG.equals(remaining)) {
- return new DnsDigEndpoint(this);
- } else if (DnsConstants.OPERATION_WIKIPEDIA.equals(remaining)) {
- return new WikipediaEndpoint(this);
- } else {
- throw new IllegalArgumentException(uri + " is unsupported by the DNS component");
- }
+ DnsType type = DnsType.valueOf(remaining);
+ DnsEndpoint endpoint = new DnsEndpoint(uri, this);
+ endpoint.setDnsType(type);
+ setProperties(endpoint, parameters);
+ return endpoint;
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/ca52ba53/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsConstants.java
----------------------------------------------------------------------
diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsConstants.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsConstants.java
index 8b4b22c..00aed88 100644
--- a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsConstants.java
+++ b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsConstants.java
@@ -19,12 +19,10 @@ package org.apache.camel.component.dns;
public class DnsConstants {
- public static final String OPERATION_DIG = "dig";
-
- public static final String OPERATION_IP = "ip";
- public static final String OPERATION_LOOKUP = "lookup";
-
- public static final String OPERATION_WIKIPEDIA = "wikipedia";
+ public static final String OPERATION_DIG = DnsType.dig.name();
+ public static final String OPERATION_IP = DnsType.ip.name();
+ public static final String OPERATION_LOOKUP = DnsType.lookup.name();
+ public static final String OPERATION_WIKIPEDIA = DnsType.wikipedia.name();
public static final String DNS_CLASS = "dns.class";
http://git-wip-us.apache.org/repos/asf/camel/blob/ca52ba53/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsDigEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsDigEndpoint.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsDigEndpoint.java
deleted file mode 100644
index 2058441..0000000
--- a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsDigEndpoint.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * 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.dns;
-
-import org.apache.camel.Consumer;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.camel.impl.DefaultProducer;
-import org.xbill.DNS.DClass;
-import org.xbill.DNS.Message;
-import org.xbill.DNS.Name;
-import org.xbill.DNS.Record;
-import org.xbill.DNS.SimpleResolver;
-import org.xbill.DNS.Type;
-
-/**
- * An endpoint for dig-like operations over DNS adresses.
- * <p/>
- * Inspired from Dig.java coming with the distribution of dnsjava,
- * though most if not all options are unsupported.
- */
-public class DnsDigEndpoint extends DefaultEndpoint {
-
- public DnsDigEndpoint(DnsComponent component) {
- super("dns://dig", component);
- }
-
- public Consumer createConsumer(Processor arg0) throws Exception {
- throw new UnsupportedOperationException();
- }
-
- public Producer createProducer() throws Exception {
- return new DefaultProducer(this) {
- public void process(Exchange exchange) throws Exception {
- String server = exchange.getIn().getHeader(DnsConstants.DNS_SERVER, String.class);
-
- SimpleResolver resolver = new SimpleResolver(server);
- int type = Type.value(exchange.getIn().getHeader(DnsConstants.DNS_TYPE, String.class));
- if (type == -1) {
- // default: if unparsable value given, use A.
- type = Type.A;
- }
-
- String dclassValue = exchange.getIn().getHeader(DnsConstants.DNS_CLASS, String.class);
- if (dclassValue == null) {
- dclassValue = "";
- }
-
- int dclass = DClass.value(dclassValue);
- if (dclass == -1) {
- // by default, value is IN.
- dclass = DClass.IN;
- }
-
- Name name = Name.fromString(exchange.getIn().getHeader(DnsConstants.DNS_NAME, String.class), Name.root);
- Record rec = Record.newRecord(name, type, dclass);
- Message query = Message.newQuery(rec);
- Message response = resolver.send(query);
- exchange.getIn().setBody(response);
- }
- };
- }
-
- public boolean isSingleton() {
- return false;
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/ca52ba53/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsDigProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsDigProducer.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsDigProducer.java
new file mode 100644
index 0000000..cd756ea
--- /dev/null
+++ b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsDigProducer.java
@@ -0,0 +1,69 @@
+/**
+ * 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.dns;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultProducer;
+import org.xbill.DNS.DClass;
+import org.xbill.DNS.Message;
+import org.xbill.DNS.Name;
+import org.xbill.DNS.Record;
+import org.xbill.DNS.SimpleResolver;
+import org.xbill.DNS.Type;
+
+/**
+ * A producer for dig-like operations over DNS adresses.
+ * <p/>
+ * Inspired from Dig.java coming with the distribution of dnsjava,
+ * though most if not all options are unsupported.
+ */
+public class DnsDigProducer extends DefaultProducer {
+
+ public DnsDigProducer(Endpoint endpoint) {
+ super(endpoint);
+ }
+
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ String server = exchange.getIn().getHeader(DnsConstants.DNS_SERVER, String.class);
+
+ SimpleResolver resolver = new SimpleResolver(server);
+ int type = Type.value(exchange.getIn().getHeader(DnsConstants.DNS_TYPE, String.class));
+ if (type == -1) {
+ // default: if unparsable value given, use A.
+ type = Type.A;
+ }
+
+ String dclassValue = exchange.getIn().getHeader(DnsConstants.DNS_CLASS, String.class);
+ if (dclassValue == null) {
+ dclassValue = "";
+ }
+
+ int dclass = DClass.value(dclassValue);
+ if (dclass == -1) {
+ // by default, value is IN.
+ dclass = DClass.IN;
+ }
+
+ Name name = Name.fromString(exchange.getIn().getHeader(DnsConstants.DNS_NAME, String.class), Name.root);
+ Record rec = Record.newRecord(name, type, dclass);
+ Message query = Message.newQuery(rec);
+ Message response = resolver.send(query);
+ exchange.getIn().setBody(response);
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ca52ba53/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsEndpoint.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsEndpoint.java
new file mode 100644
index 0000000..d36fdf0
--- /dev/null
+++ b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsEndpoint.java
@@ -0,0 +1,69 @@
+/**
+ * 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.dns;
+
+import org.apache.camel.Component;
+import org.apache.camel.Consumer;
+import org.apache.camel.Processor;
+import org.apache.camel.Producer;
+import org.apache.camel.impl.DefaultEndpoint;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriPath;
+
+@UriEndpoint(scheme = "dns", label = "networking")
+public class DnsEndpoint extends DefaultEndpoint {
+
+ @UriPath
+ private DnsType dnsType;
+
+ public DnsEndpoint(String endpointUri, Component component) {
+ super(endpointUri, component);
+ }
+
+ @Override
+ public Producer createProducer() throws Exception {
+ if (DnsType.dig == dnsType) {
+ return new DnsDigProducer(this);
+ } else if (DnsType.ip == dnsType) {
+ return new DnsIpProducer(this);
+ } else if (DnsType.lookup == dnsType) {
+ return new DnsLookupProducer(this);
+ } else if (DnsType.wikipedia == dnsType) {
+ return new DnsWikipediaProducer(this);
+ }
+ // should not happen
+ return null;
+ }
+
+ @Override
+ public Consumer createConsumer(Processor processor) throws Exception {
+ throw new UnsupportedOperationException("Consumer not supported");
+ }
+
+ @Override
+ public boolean isSingleton() {
+ return false;
+ }
+
+ public DnsType getDnsType() {
+ return dnsType;
+ }
+
+ public void setDnsType(DnsType dnsType) {
+ this.dnsType = dnsType;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ca52ba53/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsIpEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsIpEndpoint.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsIpEndpoint.java
deleted file mode 100644
index aec8119..0000000
--- a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsIpEndpoint.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * 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.dns;
-
-import java.net.InetAddress;
-
-import org.apache.camel.Component;
-import org.apache.camel.Consumer;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.camel.impl.DefaultProducer;
-import org.apache.camel.util.ObjectHelper;
-
-/**
- * An endpoint to conduct IP address lookup from the host name.
- */
-public class DnsIpEndpoint extends DefaultEndpoint {
-
- public DnsIpEndpoint(Component component) {
- super("dns://ip", component);
- }
-
- public Producer createProducer() throws Exception {
- return new DefaultProducer(this) {
-
- public void process(Exchange exchange) throws Exception {
- String domain = exchange.getIn().getHeader(DnsConstants.DNS_DOMAIN, String.class);
- ObjectHelper.notEmpty(domain, "Header " + DnsConstants.DNS_DOMAIN);
-
- InetAddress address = InetAddress.getByName(domain);
- exchange.getIn().setBody(address);
- }
- };
- }
-
- public Consumer createConsumer(Processor processor) throws Exception {
- throw new UnsupportedOperationException("Creating a consumer is not supported");
- }
-
- public boolean isSingleton() {
- return false;
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/ca52ba53/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsIpProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsIpProducer.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsIpProducer.java
new file mode 100644
index 0000000..d72ea56
--- /dev/null
+++ b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsIpProducer.java
@@ -0,0 +1,43 @@
+/**
+ * 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.dns;
+
+import java.net.InetAddress;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultProducer;
+import org.apache.camel.util.ObjectHelper;
+
+/**
+ * A producer to conduct IP address lookup from the host name.
+ */
+public class DnsIpProducer extends DefaultProducer {
+
+ public DnsIpProducer(Endpoint endpoint) {
+ super(endpoint);
+ }
+
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ String domain = exchange.getIn().getHeader(DnsConstants.DNS_DOMAIN, String.class);
+ ObjectHelper.notEmpty(domain, "Header " + DnsConstants.DNS_DOMAIN);
+
+ InetAddress address = InetAddress.getByName(domain);
+ exchange.getIn().setBody(address);
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ca52ba53/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsLookupEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsLookupEndpoint.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsLookupEndpoint.java
deleted file mode 100644
index facc27e..0000000
--- a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsLookupEndpoint.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * 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.dns;
-
-import org.apache.camel.CamelException;
-import org.apache.camel.Component;
-import org.apache.camel.Consumer;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.camel.impl.DefaultProducer;
-import org.apache.camel.util.ObjectHelper;
-import org.xbill.DNS.DClass;
-import org.xbill.DNS.Lookup;
-import org.xbill.DNS.Type;
-
-/**
- * An endpoint to manage lookup operations, using the API from dnsjava.
- */
-public class DnsLookupEndpoint extends DefaultEndpoint {
-
- public DnsLookupEndpoint(Component component) {
- super("dns://lookup", component);
- }
-
- public Consumer createConsumer(Processor processor) throws Exception {
- throw new UnsupportedOperationException();
- }
-
- public Producer createProducer() throws Exception {
- return new DefaultProducer(this) {
- public void process(Exchange exchange) throws Exception {
- String dnsName = exchange.getIn().getHeader(DnsConstants.DNS_NAME, String.class);
- ObjectHelper.notEmpty(dnsName, "Header " + DnsConstants.DNS_NAME);
-
- Object type = exchange.getIn().getHeader(DnsConstants.DNS_TYPE);
- Integer dnsType = null;
- if (type != null) {
- dnsType = Type.value(String.valueOf(type));
- }
- Object dclass = exchange.getIn().getHeader(DnsConstants.DNS_CLASS);
- Integer dnsClass = null;
- if (dclass != null) {
- dnsClass = DClass.value(String.valueOf(dclass));
- }
-
- Lookup lookup = (dnsClass == null)
- ? (dnsType == null ? new Lookup(dnsName) : new Lookup(dnsName, dnsType))
- : new Lookup(dnsName, dnsType, dnsClass);
-
- lookup.run();
- if (lookup.getAnswers() != null) {
- exchange.getIn().setBody(lookup.getAnswers());
- } else {
- throw new CamelException(lookup.getErrorString());
- }
- }
- };
- }
-
- public boolean isSingleton() {
- return false;
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/ca52ba53/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsLookupProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsLookupProducer.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsLookupProducer.java
new file mode 100644
index 0000000..54a6096
--- /dev/null
+++ b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsLookupProducer.java
@@ -0,0 +1,64 @@
+/**
+ * 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.dns;
+
+import org.apache.camel.CamelException;
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultProducer;
+import org.apache.camel.util.ObjectHelper;
+import org.xbill.DNS.DClass;
+import org.xbill.DNS.Lookup;
+import org.xbill.DNS.Type;
+
+/**
+ * A producer to manage lookup operations, using the API from dnsjava.
+ */
+public class DnsLookupProducer extends DefaultProducer {
+
+ public DnsLookupProducer(Endpoint endpoint) {
+ super(endpoint);
+ }
+
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ String dnsName = exchange.getIn().getHeader(DnsConstants.DNS_NAME, String.class);
+ ObjectHelper.notEmpty(dnsName, "Header " + DnsConstants.DNS_NAME);
+
+ Object type = exchange.getIn().getHeader(DnsConstants.DNS_TYPE);
+ Integer dnsType = null;
+ if (type != null) {
+ dnsType = Type.value(String.valueOf(type));
+ }
+ Object dclass = exchange.getIn().getHeader(DnsConstants.DNS_CLASS);
+ Integer dnsClass = null;
+ if (dclass != null) {
+ dnsClass = DClass.value(String.valueOf(dclass));
+ }
+
+ Lookup lookup = (dnsClass == null)
+ ? (dnsType == null ? new Lookup(dnsName) : new Lookup(dnsName, dnsType))
+ : new Lookup(dnsName, dnsType, dnsClass);
+
+ lookup.run();
+ if (lookup.getAnswers() != null) {
+ exchange.getIn().setBody(lookup.getAnswers());
+ } else {
+ throw new CamelException(lookup.getErrorString());
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ca52ba53/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsType.java
----------------------------------------------------------------------
diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsType.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsType.java
new file mode 100644
index 0000000..3a78d94
--- /dev/null
+++ b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsType.java
@@ -0,0 +1,23 @@
+/**
+ * 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.dns;
+
+public enum DnsType {
+
+ dig, ip, lookup, wikipedia
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ca52ba53/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsWikipediaProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsWikipediaProducer.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsWikipediaProducer.java
new file mode 100644
index 0000000..2a2ca70
--- /dev/null
+++ b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsWikipediaProducer.java
@@ -0,0 +1,61 @@
+/**
+ * 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.dns;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultProducer;
+import org.xbill.DNS.DClass;
+import org.xbill.DNS.Message;
+import org.xbill.DNS.Name;
+import org.xbill.DNS.Record;
+import org.xbill.DNS.Section;
+import org.xbill.DNS.SimpleResolver;
+import org.xbill.DNS.Type;
+
+/**
+ * an endpoint to make queries against wikipedia using
+ * the short TXT query.
+ * <p/>
+ * See here for a reference:
+ * http://www.commandlinefu.com/commands/view/2829/query-wikipedia-via-console-over-dns
+ * <p/>
+ * This endpoint accepts the following header:
+ * term: a simple term to use to query wikipedia.
+ */
+public class DnsWikipediaProducer extends DefaultProducer {
+
+ public DnsWikipediaProducer(Endpoint endpoint) {
+ super(endpoint);
+ }
+
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ SimpleResolver resolver = new SimpleResolver();
+ int type = Type.TXT;
+ Name name = Name.fromString(String.valueOf(exchange.getIn().getHeader(DnsConstants.TERM)) + ".wp.dg.cx", Name.root);
+ Record rec = Record.newRecord(name, type, DClass.IN);
+ Message query = Message.newQuery(rec);
+ Message response = resolver.send(query);
+ Record[] records = response.getSectionArray(Section.ANSWER);
+ if (records.length > 0) {
+ exchange.getIn().setBody(records[0].rdataToString());
+ } else {
+ exchange.getIn().setBody(null);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ca52ba53/components/camel-dns/src/main/java/org/apache/camel/component/dns/WikipediaEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/WikipediaEndpoint.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/WikipediaEndpoint.java
deleted file mode 100644
index 36e62b4..0000000
--- a/components/camel-dns/src/main/java/org/apache/camel/component/dns/WikipediaEndpoint.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * 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.dns;
-
-import org.apache.camel.Component;
-import org.apache.camel.Consumer;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.camel.impl.DefaultProducer;
-import org.xbill.DNS.DClass;
-import org.xbill.DNS.Message;
-import org.xbill.DNS.Name;
-import org.xbill.DNS.Record;
-import org.xbill.DNS.Section;
-import org.xbill.DNS.SimpleResolver;
-import org.xbill.DNS.Type;
-
-/**
- * an endpoint to make queries against wikipedia using
- * the short TXT query.
- * <p/>
- * See here for a reference:
- * http://www.commandlinefu.com/commands/view/2829/query-wikipedia-via-console-over-dns
- * <p/>
- * This endpoint accepts the following header:
- * term: a simple term to use to query wikipedia.
- */
-public class WikipediaEndpoint extends DefaultEndpoint {
-
- public WikipediaEndpoint(Component component) {
- super("dns:///wikipedia", component);
- }
-
- public Consumer createConsumer(Processor processor) throws Exception {
- throw new UnsupportedOperationException();
- }
-
- public Producer createProducer() throws Exception {
- return new DefaultProducer(this) {
- public void process(Exchange exchange) throws Exception {
- SimpleResolver resolver = new SimpleResolver();
- int type = Type.TXT;
- Name name = Name.fromString(String.valueOf(exchange.getIn().getHeader(DnsConstants.TERM)) + ".wp.dg.cx", Name.root);
- Record rec = Record.newRecord(name, type, DClass.IN);
- Message query = Message.newQuery(rec);
- Message response = resolver.send(query);
- Record[] records = response.getSectionArray(Section.ANSWER);
- if (records.length > 0) {
- exchange.getIn().setBody(records[0].rdataToString());
- } else {
- exchange.getIn().setBody(null);
- }
- }
- };
- }
-
- public boolean isSingleton() {
- return false;
- }
-}