This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 59d5a62fa069cb7fd6fa536daf10056ab8fb8111 Author: Carl-Philipp Harmant <[email protected]> AuthorDate: Mon Oct 30 21:20:57 2017 -0500 CAMEL-11959: Add new camel-yql component --- apache-camel/pom.xml | 4 + apache-camel/src/main/descriptors/common-bin.xml | 1 + bom/camel-bom/pom.xml | 5 + components/camel-yql/pom.xml | 116 ++++++++++++ .../camel-yql/src/main/docs/yql-component.adoc | 117 ++++++++++++ .../apache/camel/component/yql/YqlComponent.java | 42 +++++ .../apache/camel/component/yql/YqlEndpoint.java | 56 ++++++ .../apache/camel/component/yql/YqlProducer.java | 55 ++++++ .../camel/component/yql/client/YqlClient.java | 60 ++++++ .../camel/component/yql/client/YqlResponse.java | 74 ++++++++ .../yql/configuration/YqlConfiguration.java | 83 +++++++++ .../configuration/YqlConfigurationValidator.java | 36 ++++ .../component/yql/exception/YqlException.java | 24 +++ .../camel-yql/src/main/resources/LICENSE.txt | 203 +++++++++++++++++++++ .../services/org/apache/camel/component/yql | 18 ++ components/camel-yql/src/main/resources/NOTICE.txt | 11 ++ .../component/yql/YqlComponentIntegrationTest.java | 68 +++++++ .../camel/component/yql/YqlComponentTest.java | 103 +++++++++++ .../YqlConfigurationValidatorTest.java | 112 ++++++++++++ .../camel-yql/src/test/resources/log4j2.properties | 33 ++++ components/pom.xml | 1 + components/readme.adoc | 9 +- docs/user-manual/en/SUMMARY.md | 2 + parent/pom.xml | 5 + .../components-starter/camel-yql-starter/pom.xml | 61 +++++++ .../springboot/YqlComponentAutoConfiguration.java | 128 +++++++++++++ .../yql/springboot/YqlComponentConfiguration.java | 49 +++++ .../src/main/resources/META-INF/LICENSE.txt | 203 +++++++++++++++++++++ .../src/main/resources/META-INF/NOTICE.txt | 11 ++ .../src/main/resources/META-INF/spring.factories | 19 ++ .../src/main/resources/META-INF/spring.provides | 17 ++ platforms/spring-boot/components-starter/pom.xml | 1 + .../camel-spring-boot-dependencies/pom.xml | 5 + 33 files changed, 1730 insertions(+), 2 deletions(-) diff --git a/apache-camel/pom.xml b/apache-camel/pom.xml index faf8991..99439e3 100644 --- a/apache-camel/pom.xml +++ b/apache-camel/pom.xml @@ -1143,6 +1143,10 @@ </dependency> <dependency> <groupId>org.apache.camel</groupId> + <artifactId>camel-yql</artifactId> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> <artifactId>camel-zendesk</artifactId> </dependency> <dependency> diff --git a/apache-camel/src/main/descriptors/common-bin.xml b/apache-camel/src/main/descriptors/common-bin.xml index 51c46bf..d795394 100644 --- a/apache-camel/src/main/descriptors/common-bin.xml +++ b/apache-camel/src/main/descriptors/common-bin.xml @@ -293,6 +293,7 @@ <include>org.apache.camel:camel-xmpp</include> <include>org.apache.camel:camel-xstream</include> <include>org.apache.camel:camel-yammer</include> + <include>org.apache.camel:camel-yql</include> <include>org.apache.camel:camel-zendesk</include> <include>org.apache.camel:camel-zipfile</include> <include>org.apache.camel:camel-zipkin</include> diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml index 97e51ed..bbf6f0b 100644 --- a/bom/camel-bom/pom.xml +++ b/bom/camel-bom/pom.xml @@ -2720,6 +2720,11 @@ </dependency> <dependency> <groupId>org.apache.camel</groupId> + <artifactId>camel-yql</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> <artifactId>camel-zendesk</artifactId> <version>${project.version}</version> </dependency> diff --git a/components/camel-yql/pom.xml b/components/camel-yql/pom.xml new file mode 100644 index 0000000..e8ec4d9 --- /dev/null +++ b/components/camel-yql/pom.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + 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. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.camel</groupId> + <artifactId>components</artifactId> + <version>2.21.0-SNAPSHOT</version> + </parent> + + <artifactId>camel-yql</artifactId> + <packaging>jar</packaging> + + <name>Camel :: Yql</name> + <description>Camel Yahoo Query Language Component</description> + + <properties> + <camel.osgi.export.pkg>org.apache.camel.component.yql.*</camel.osgi.export.pkg> + <camel.osgi.export.service>org.apache.camel.spi.ComponentResolver;component=yql</camel.osgi.export.service> + </properties> + + <dependencies> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-core</artifactId> + </dependency> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <version>${commons-lang3-version}</version> + </dependency> + + <!-- testing --> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-test</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>java-hamcrest</artifactId> + <version>${hamcrest-version}</version> + <scope>test</scope> + </dependency> + + <!-- logging --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-api</artifactId> + <version>${log4j2-version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-core</artifactId> + <version>${log4j2-version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-slf4j-impl</artifactId> + <version>${log4j2-version}</version> + <scope>test</scope> + </dependency> + </dependencies> + + <profiles> + <profile> + <id>integration</id> + <build> + <plugins> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds> + <childDelegation>false</childDelegation> + <useFile>true</useFile> + <failIfNoTests>false</failIfNoTests> + <runOrder>alphabetical</runOrder> + <includes> + <include>**/*IntegrationTest.java</include> + </includes> + <excludes> + <exclude>**/*XXXTest.java</exclude> + </excludes> + </configuration> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> \ No newline at end of file diff --git a/components/camel-yql/src/main/docs/yql-component.adoc b/components/camel-yql/src/main/docs/yql-component.adoc new file mode 100644 index 0000000..e7b0951 --- /dev/null +++ b/components/camel-yql/src/main/docs/yql-component.adoc @@ -0,0 +1,117 @@ +== Yahoo Query Language Component + +*Available as of Camel version 2.21* + +The *yql* component is used for accessing the https://developer.yahoo.com/yql/[Yahoo Query Language platform]. + +Maven users will need to add the following dependency to their `pom.xml` +for this component: + +[source,xml] +------------------------------------------------------------ +<dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-yql</artifactId> + <version>x.x.x</version> + <!-- use the same version as your Camel core version --> +</dependency> +------------------------------------------------------------ + +### URI format + +[source,java] +-------------------------------------------- +yql://query[?options] +-------------------------------------------- + +Where *query* represents the YQL query. + +### Options + +// component options: START +The Yahoo Query Language component has no options. +// component options: END + +// endpoint options: START +The Yahoo Query Language endpoint is configured using URI syntax: + +---- +yql:query +---- + +with the following path and query parameters: + +==== Path Parameters (1 parameters): + +[width="100%",cols="2,5,^1,2",options="header"] +|=== +| Name | Description | Default | Type +| *query* | *Required* Set the YQL query | | String +|=== + +==== Query Parameters (4 parameters): + +[width="100%",cols="2,5,^1,2",options="header"] +|=== +| Name | Description | Default | Type +| *callback* (producer) | Set the callback function | | String +| *diagnostics* (producer) | Set if diagnostics should be included in the query | false | boolean +| *format* (producer) | Set the YQL format xml or json | | String +| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean +|=== +// endpoint options: END + +### Exchange data format + +Camel will deliver the body as a JSON or XML formatted java.lang.String (see +the `format` option above). + +### Message Headers + +[width="100%",cols="10%,90%",options="header",] +|======================================================================= +|Header |Description +|`CamelYqlHttpRequest` | Http request sent to YQL +|`CamelYqlHttpStatus` | Status code from the response +|======================================================================= + +### Samples + +In this example we query YQL to obtain Google quote: + +[source,java] +-------------------------------------------------------- +from("direct:start") + .to("yql://select * from yahoo.finance.quotes where symbol in ('GOOG')?format=json"); +-------------------------------------------------------- + +Which will setup the body as: + +[source,json] +-------------------------------------------------------- +{ + "query": { + "count": 1, + "created": "2017-10-29T03:17:28Z", + "lang": "en-US", + "results": { + "quote": { + "symbol": "GOOG", + "Ask": "1024.50", + "AverageDailyVolume": "1356700", + "Bid": "1019.27", + ... + } + } + } +} +-------------------------------------------------------- + +and the headers: + +[width="100%",cols="30%,70%",options="header",] +|======================================================================= +|Header |Value +|`CamelYqlHttpRequest` |http://query.yahooapis.com/v1/public/yql?format=json&diagnostics=false&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=yqlCallback&q=select+*+from+yahoo.finance.quotes+where+symbol+in+%28%27GOOG%27%29 +|`CamelYqlHttpStatus` |200 +|======================================================================= diff --git a/components/camel-yql/src/main/java/org/apache/camel/component/yql/YqlComponent.java b/components/camel-yql/src/main/java/org/apache/camel/component/yql/YqlComponent.java new file mode 100644 index 0000000..8f5d496 --- /dev/null +++ b/components/camel-yql/src/main/java/org/apache/camel/component/yql/YqlComponent.java @@ -0,0 +1,42 @@ +/** + * 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.yql; + +import java.util.Map; +import org.apache.camel.Endpoint; +import org.apache.camel.component.yql.configuration.YqlConfiguration; +import org.apache.camel.component.yql.configuration.YqlConfigurationValidator; +import org.apache.camel.impl.DefaultComponent; + +public class YqlComponent extends DefaultComponent { + + @Override + protected Endpoint createEndpoint(final String uri, final String remaining, final Map<String, Object> parameters) throws Exception { + final YqlConfiguration configuration = new YqlConfiguration(); + configuration.setQuery(remaining); + configuration.setFormat((String) parameters.getOrDefault("format", "json")); + configuration.setDiagnostics(Boolean.getBoolean((String) parameters.getOrDefault("diagnostics", "false"))); + configuration.setCallback((String) parameters.getOrDefault("callback", "")); + + final Endpoint endpoint = new YqlEndpoint(uri, this, configuration); + + YqlConfigurationValidator.validateProperties(configuration); + + setProperties(configuration, parameters); + return endpoint; + } +} diff --git a/components/camel-yql/src/main/java/org/apache/camel/component/yql/YqlEndpoint.java b/components/camel-yql/src/main/java/org/apache/camel/component/yql/YqlEndpoint.java new file mode 100644 index 0000000..af283e4 --- /dev/null +++ b/components/camel-yql/src/main/java/org/apache/camel/component/yql/YqlEndpoint.java @@ -0,0 +1,56 @@ +/** + * 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.yql; + +import org.apache.camel.Consumer; +import org.apache.camel.Processor; +import org.apache.camel.Producer; +import org.apache.camel.component.yql.configuration.YqlConfiguration; +import org.apache.camel.impl.DefaultEndpoint; +import org.apache.camel.spi.UriEndpoint; +import org.apache.camel.spi.UriParam; + +@UriEndpoint(firstVersion = "2.21.0", scheme = "yql", title = "Yahoo Query Language", syntax = "yql:query", producerOnly = true, label = "api,http") +public class YqlEndpoint extends DefaultEndpoint { + + @UriParam + private final YqlConfiguration configuration; + + YqlEndpoint(final String uri, final YqlComponent component, final YqlConfiguration configuration) { + super(uri, component); + this.configuration = configuration; + } + + @Override + public Producer createProducer() throws Exception { + return new YqlProducer(this); + } + + @Override + public Consumer createConsumer(final Processor processor) throws Exception { + throw new UnsupportedOperationException("Consumer does not supported for YQL component: " + getEndpointUri()); + } + + @Override + public boolean isSingleton() { + return true; + } + + YqlConfiguration getConfiguration() { + return configuration; + } +} diff --git a/components/camel-yql/src/main/java/org/apache/camel/component/yql/YqlProducer.java b/components/camel-yql/src/main/java/org/apache/camel/component/yql/YqlProducer.java new file mode 100644 index 0000000..c63dc7b --- /dev/null +++ b/components/camel-yql/src/main/java/org/apache/camel/component/yql/YqlProducer.java @@ -0,0 +1,55 @@ +/** + * 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.yql; + +import org.apache.camel.Exchange; +import org.apache.camel.component.yql.client.YqlClient; +import org.apache.camel.component.yql.client.YqlResponse; +import org.apache.camel.component.yql.configuration.YqlConfiguration; +import org.apache.camel.impl.DefaultProducer; + +/** + * A Producer that send messages to YQL + */ +public class YqlProducer extends DefaultProducer { + + static final String CAMEL_YQL_HTTP_STATUS = "CamelYqlHttpStatus"; + static final String CAMEL_YQL_HTTP_REQUEST = "CamelYqlHttpRequest"; + + private final YqlEndpoint endpoint; + private final YqlClient yahooClient; + + YqlProducer(final YqlEndpoint endpoint) { + super(endpoint); + this.endpoint = endpoint; + this.yahooClient = new YqlClient(); + } + + @Override + public void process(final Exchange exchange) throws Exception { + final YqlConfiguration configuration = endpoint.getConfiguration(); + final YqlResponse yqlResponse = yahooClient.get( + configuration.getQuery(), + configuration.getFormat(), + configuration.isDiagnostics(), + configuration.getCallback() + ); + exchange.getIn().setHeader(CAMEL_YQL_HTTP_STATUS, yqlResponse.getStatus()); + exchange.getIn().setHeader(CAMEL_YQL_HTTP_REQUEST, yqlResponse.getHttpRequest()); + exchange.getIn().setBody(yqlResponse.getBody()); + } +} diff --git a/components/camel-yql/src/main/java/org/apache/camel/component/yql/client/YqlClient.java b/components/camel-yql/src/main/java/org/apache/camel/component/yql/client/YqlClient.java new file mode 100644 index 0000000..0d5f00d --- /dev/null +++ b/components/camel-yql/src/main/java/org/apache/camel/component/yql/client/YqlClient.java @@ -0,0 +1,60 @@ +/** + * 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.yql.client; + +import java.net.URI; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class YqlClient { + + private static final Logger LOG = LoggerFactory.getLogger(YqlClient.class); + private static final CloseableHttpClient HTTP_CLIENT = HttpClients.createDefault(); + + public YqlResponse get(final String query, final String format, final boolean diagnostics, final String callback) throws Exception { + + final URI uri = new URIBuilder() + .setScheme("http") + .setHost("query.yahooapis.com") + .setPath("/v1/public/yql") + .setParameter("format", format) + .setParameter("diagnostics", Boolean.toString(diagnostics)) + .setParameter("env", "store://datatables.org/alltableswithkeys") + .setParameter("callback", callback) + .setParameter("q", query) + .build(); + + LOG.debug("YQL query: {}", uri); + + final HttpGet httpget = new HttpGet(uri); + try (final CloseableHttpResponse response = HTTP_CLIENT.execute(httpget)) { + final YqlResponse yqlResponse = YqlResponse.builder() + .httpRequest(uri.toString()) + .status(response.getStatusLine().getStatusCode()) + .body(EntityUtils.toString(response.getEntity())) + .build(); + LOG.debug("YQL response: {}", yqlResponse.getBody()); + return yqlResponse; + } + } +} \ No newline at end of file diff --git a/components/camel-yql/src/main/java/org/apache/camel/component/yql/client/YqlResponse.java b/components/camel-yql/src/main/java/org/apache/camel/component/yql/client/YqlResponse.java new file mode 100644 index 0000000..104ef53 --- /dev/null +++ b/components/camel-yql/src/main/java/org/apache/camel/component/yql/client/YqlResponse.java @@ -0,0 +1,74 @@ +/** + * 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.yql.client; + +public final class YqlResponse { + + private final int status; + private final String body; + private final String httpRequest; + + private YqlResponse(final Builder builder) { + this.status = builder.status; + this.body = builder.body; + this.httpRequest = builder.httpRequest; + } + + public int getStatus() { + return status; + } + + public String getBody() { + return body; + } + + public String getHttpRequest() { + return httpRequest; + } + + static YqlResponse.Builder builder() { + return new YqlResponse.Builder(); + } + + static class Builder { + private int status; + private String body; + private String httpRequest; + + Builder() { + } + + Builder status(final int status) { + this.status = status; + return this; + } + + Builder body(final String body) { + this.body = body; + return this; + } + + Builder httpRequest(final String httpRequest) { + this.httpRequest = httpRequest; + return this; + } + + YqlResponse build() { + return new YqlResponse(this); + } + } +} diff --git a/components/camel-yql/src/main/java/org/apache/camel/component/yql/configuration/YqlConfiguration.java b/components/camel-yql/src/main/java/org/apache/camel/component/yql/configuration/YqlConfiguration.java new file mode 100644 index 0000000..056327d --- /dev/null +++ b/components/camel-yql/src/main/java/org/apache/camel/component/yql/configuration/YqlConfiguration.java @@ -0,0 +1,83 @@ +/** + * 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.yql.configuration; + +import org.apache.camel.spi.Metadata; +import org.apache.camel.spi.UriParam; +import org.apache.camel.spi.UriParams; +import org.apache.camel.spi.UriPath; + +@UriParams +public class YqlConfiguration { + + @UriPath + @Metadata(required = "true") + private String query; + + @UriParam + private String format; + + @UriParam + private boolean diagnostics; + + @UriParam + private String callback; + + public String getQuery() { + return query; + } + + /** + * Set the YQL query + */ + public void setQuery(final String query) { + this.query = query; + } + + public String getFormat() { + return format; + } + + /** + * Set the YQL format, xml or json + */ + public void setFormat(final String format) { + this.format = format; + } + + public boolean isDiagnostics() { + return diagnostics; + } + + /** + * Set if diagnostics should be included in the query + */ + public void setDiagnostics(final boolean diagnostics) { + this.diagnostics = diagnostics; + } + + public String getCallback() { + return callback; + } + + /** + * Set the callback function + */ + public void setCallback(final String callback) { + this.callback = callback; + } +} diff --git a/components/camel-yql/src/main/java/org/apache/camel/component/yql/configuration/YqlConfigurationValidator.java b/components/camel-yql/src/main/java/org/apache/camel/component/yql/configuration/YqlConfigurationValidator.java new file mode 100644 index 0000000..0ab0ff7 --- /dev/null +++ b/components/camel-yql/src/main/java/org/apache/camel/component/yql/configuration/YqlConfigurationValidator.java @@ -0,0 +1,36 @@ +/** + * 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.yql.configuration; + +import org.apache.camel.component.yql.exception.YqlException; +import org.apache.commons.lang3.StringUtils; + +public final class YqlConfigurationValidator { + + private YqlConfigurationValidator() { + } + + public static void validateProperties(final YqlConfiguration configuration) { + if (StringUtils.isEmpty(configuration.getQuery())) { + throw new YqlException("<query> is not present or not valid!"); + } + + if (!StringUtils.equalsAny(configuration.getFormat(), "json", "xml")) { + throw new YqlException("<format> is not valid!"); + } + } +} diff --git a/components/camel-yql/src/main/java/org/apache/camel/component/yql/exception/YqlException.java b/components/camel-yql/src/main/java/org/apache/camel/component/yql/exception/YqlException.java new file mode 100644 index 0000000..d422e5c --- /dev/null +++ b/components/camel-yql/src/main/java/org/apache/camel/component/yql/exception/YqlException.java @@ -0,0 +1,24 @@ +/** + * 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.yql.exception; + +public class YqlException extends RuntimeException { + + public YqlException(final String message) { + super(message); + } +} diff --git a/components/camel-yql/src/main/resources/LICENSE.txt b/components/camel-yql/src/main/resources/LICENSE.txt new file mode 100644 index 0000000..6b0b127 --- /dev/null +++ b/components/camel-yql/src/main/resources/LICENSE.txt @@ -0,0 +1,203 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. + diff --git a/components/camel-yql/src/main/resources/META-INF/services/org/apache/camel/component/yql b/components/camel-yql/src/main/resources/META-INF/services/org/apache/camel/component/yql new file mode 100644 index 0000000..748b461 --- /dev/null +++ b/components/camel-yql/src/main/resources/META-INF/services/org/apache/camel/component/yql @@ -0,0 +1,18 @@ +# +# 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. +# + +class=org.apache.camel.component.yql.YqlComponent diff --git a/components/camel-yql/src/main/resources/NOTICE.txt b/components/camel-yql/src/main/resources/NOTICE.txt new file mode 100644 index 0000000..2e215bf --- /dev/null +++ b/components/camel-yql/src/main/resources/NOTICE.txt @@ -0,0 +1,11 @@ + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the Apache Camel distribution. == + ========================================================================= + + This product includes software developed by + The Apache Software Foundation (http://www.apache.org/). + + Please read the different LICENSE files present in the licenses directory of + this distribution. diff --git a/components/camel-yql/src/test/java/org/apache/camel/component/yql/YqlComponentIntegrationTest.java b/components/camel-yql/src/test/java/org/apache/camel/component/yql/YqlComponentIntegrationTest.java new file mode 100644 index 0000000..6bbf8ee --- /dev/null +++ b/components/camel-yql/src/test/java/org/apache/camel/component/yql/YqlComponentIntegrationTest.java @@ -0,0 +1,68 @@ +/** + * 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.yql; + +import org.apache.camel.EndpointInject; +import org.apache.camel.Exchange; +import org.apache.camel.Produce; +import org.apache.camel.ProducerTemplate; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.test.junit4.CamelTestSupport; +import org.junit.Test; + +import static org.apache.camel.component.yql.YqlProducer.CAMEL_YQL_HTTP_REQUEST; +import static org.apache.camel.component.yql.YqlProducer.CAMEL_YQL_HTTP_STATUS; +import static org.hamcrest.CoreMatchers.containsString; + +public class YqlComponentIntegrationTest extends CamelTestSupport { + + private static final String QUERY = "select * from yahoo.finance.quotes where symbol in ('GOOG')"; + private static final String CALLBACK = "yqlCallback"; + + @Produce(uri = "direct:start") + private ProducerTemplate template; + + @EndpointInject(uri = "mock:result") + private MockEndpoint end; + + @Override + protected RouteBuilder createRouteBuilder() { + return new RouteBuilder() { + public void configure() { + from("direct:start") + .to("yql://" + QUERY + "?format=json&callback=" + CALLBACK) + .to("mock:result"); + } + }; + } + + @Test + public void testFinanceQuote() { + template.sendBody(""); + + final Exchange exchange = end.getReceivedExchanges().get(0); + final String body = exchange.getIn().getBody(String.class); + final Integer status = exchange.getIn().getHeader(CAMEL_YQL_HTTP_STATUS, Integer.class); + final String httpRequest = exchange.getIn().getHeader(CAMEL_YQL_HTTP_REQUEST, String.class); + assertNotNull(body); + assertThat(body, containsString(CALLBACK + "(")); + assertNotNull(status); + assertEquals("http://query.yahooapis.com/v1/public/yql?format=json&diagnostics=false&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=yqlCallback&q=select+*+from+" + + "yahoo.finance.quotes+where+symbol+in+%28%27GOOG%27%29", httpRequest); + } +} diff --git a/components/camel-yql/src/test/java/org/apache/camel/component/yql/YqlComponentTest.java b/components/camel-yql/src/test/java/org/apache/camel/component/yql/YqlComponentTest.java new file mode 100644 index 0000000..dfa03e6 --- /dev/null +++ b/components/camel-yql/src/test/java/org/apache/camel/component/yql/YqlComponentTest.java @@ -0,0 +1,103 @@ +/** + * 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.yql; + +import org.apache.camel.Endpoint; +import org.apache.camel.Producer; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.yql.configuration.YqlConfiguration; +import org.apache.camel.test.junit4.CamelTestSupport; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.text.IsEmptyString.emptyString; + +public class YqlComponentTest extends CamelTestSupport { + + @Rule + public final ExpectedException thrown = ExpectedException.none(); + + @Override + protected RouteBuilder createRouteBuilder() { + return new RouteBuilder() { + public void configure() { + from("direct:start") + .to("yql://query?format=json") + .to("mock:result"); + } + }; + } + + @Test + public void testCreateProducer() throws Exception { + // given + final Endpoint yqlEndpoint = context.getEndpoint("yql://query?format=json"); + + // when + final Producer producer = yqlEndpoint.createProducer(); + + // then + assertNotNull(producer); + assertTrue(producer instanceof YqlProducer); + } + + @Test + public void testConfigurationSetup() { + // given + final YqlEndpoint yqlEndpoint = (YqlEndpoint) context.getEndpoint("yql://query?format=xml&callback=yqlCallback&diagnostics=true"); + + // when + final YqlConfiguration yqlConfiguration = yqlEndpoint.getConfiguration(); + + // then + assertNotNull(yqlConfiguration); + assertEquals("query", yqlConfiguration.getQuery()); + assertEquals("xml", yqlConfiguration.getFormat()); + assertEquals("yqlCallback", yqlConfiguration.getCallback()); + assertTrue(yqlConfiguration.isDiagnostics()); + } + + @Test + public void testConfigurationSetupDefault() { + // given + final YqlEndpoint yqlEndpoint = (YqlEndpoint) context.getEndpoint("yql://query"); + + // when + final YqlConfiguration yqlConfiguration = yqlEndpoint.getConfiguration(); + + // then + assertNotNull(yqlConfiguration); + assertEquals("query", yqlConfiguration.getQuery()); + assertEquals("json", yqlConfiguration.getFormat()); + assertThat(yqlConfiguration.getCallback(), is(emptyString())); + assertFalse(yqlConfiguration.isDiagnostics()); + } + + @Test + public void testCreateConsumer() throws Exception { + // then + thrown.expect(UnsupportedOperationException.class); + + // given + final Endpoint yqlEndpoint = context.getEndpoint("yql://query?format=json"); + + // when + yqlEndpoint.createConsumer(null); + } +} diff --git a/components/camel-yql/src/test/java/org/apache/camel/component/yql/configuration/YqlConfigurationValidatorTest.java b/components/camel-yql/src/test/java/org/apache/camel/component/yql/configuration/YqlConfigurationValidatorTest.java new file mode 100644 index 0000000..b7747a8 --- /dev/null +++ b/components/camel-yql/src/test/java/org/apache/camel/component/yql/configuration/YqlConfigurationValidatorTest.java @@ -0,0 +1,112 @@ +/** + * 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.yql.configuration; + +import org.apache.camel.component.yql.exception.YqlException; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +public class YqlConfigurationValidatorTest { + + @Rule + public final ExpectedException thrown = ExpectedException.none(); + + @Test + public void testGoodQuery() { + // given + final YqlConfiguration yqlConfiguration = new YqlConfiguration(); + yqlConfiguration.setQuery("select * from ..."); + yqlConfiguration.setFormat("json"); + + // when + YqlConfigurationValidator.validateProperties(yqlConfiguration); + + // then + // no exception + } + + @Test + public void testMissingQuery() { + // then + thrown.expect(YqlException.class); + thrown.expectMessage("<query> is not present or not valid!"); + + // given + final YqlConfiguration yqlConfiguration = new YqlConfiguration(); + + // when + YqlConfigurationValidator.validateProperties(yqlConfiguration); + } + + @Test + public void testJsonFormat() { + // given + final YqlConfiguration yqlConfiguration = new YqlConfiguration(); + yqlConfiguration.setQuery("query"); + yqlConfiguration.setFormat("json"); + + // when + YqlConfigurationValidator.validateProperties(yqlConfiguration); + + // then + // no exception + } + + @Test + public void testXmlFormat() { + // given + final YqlConfiguration yqlConfiguration = new YqlConfiguration(); + yqlConfiguration.setQuery("query"); + yqlConfiguration.setFormat("xml"); + + // when + YqlConfigurationValidator.validateProperties(yqlConfiguration); + + // then + // no exception + } + + @Test + public void testEmptyFormat() { + // then + thrown.expect(YqlException.class); + thrown.expectMessage("<format> is not valid!"); + + // given + final YqlConfiguration yqlConfiguration = new YqlConfiguration(); + yqlConfiguration.setQuery("query"); + + // when + YqlConfigurationValidator.validateProperties(yqlConfiguration); + } + + @Test + public void testWrongFormat() { + // then + thrown.expect(YqlException.class); + thrown.expectMessage("<format> is not valid!"); + + // given + final YqlConfiguration yqlConfiguration = new YqlConfiguration(); + yqlConfiguration.setQuery("query"); + yqlConfiguration.setFormat("format"); + + // when + YqlConfigurationValidator.validateProperties(yqlConfiguration); + } +} diff --git a/components/camel-yql/src/test/resources/log4j2.properties b/components/camel-yql/src/test/resources/log4j2.properties new file mode 100644 index 0000000..3b123ad --- /dev/null +++ b/components/camel-yql/src/test/resources/log4j2.properties @@ -0,0 +1,33 @@ +## --------------------------------------------------------------------------- +## 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. +## --------------------------------------------------------------------------- + +appender.file.type = File +appender.file.name = file +appender.file.fileName = target/camel-sql-component-test.log +appender.file.layout.type = PatternLayout +appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n +appender.out.type = Console +appender.out.name = out +appender.out.layout.type = PatternLayout +appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n + +# uncomment the following line to turn on Camel debugging +#logger.camel.name = org.apache.camel +#logger.camel.level =DEBUG + +rootLogger.level = INFO +rootLogger.appenderRef.out.ref = out diff --git a/components/pom.xml b/components/pom.xml index 1be411f..00f4967 100644 --- a/components/pom.xml +++ b/components/pom.xml @@ -309,6 +309,7 @@ <module>camel-xmpp</module> <module>camel-xstream</module> <module>camel-yammer</module> + <module>camel-yql</module> <module>camel-zendesk</module> <module>camel-zipfile</module> <module>camel-zipkin</module> diff --git a/components/readme.adoc b/components/readme.adoc index d3fd456..ca1a164 100644 --- a/components/readme.adoc +++ b/components/readme.adoc @@ -2,7 +2,7 @@ Components ^^^^^^^^^^ // components: START -Number of Components: 285 in 196 JAR artifacts (19 deprecated) +Number of Components: 286 in 197 JAR artifacts (19 deprecated) [width="100%",cols="4,1,5",options="header"] |=== @@ -851,6 +851,9 @@ Number of Components: 285 in 196 JAR artifacts (19 deprecated) | link:../camel-core/src/main/docs/xslt-component.adoc[XSLT] (camel-core) + `xslt:resourceUri` | 1.3 | Transforms the message using a XSLT template. +| link:camel-yql/src/main/docs/yql-component.adoc[Yahoo Query Language] (camel-yql) + +`yql:query` | 2.21 | Camel Yahoo Query Language Component + | link:camel-yammer/src/main/docs/yammer-component.adoc[Yammer] (camel-yammer) + `yammer:function` | 2.12 | The yammer component allows you to interact with the Yammer enterprise social network. @@ -1041,7 +1044,7 @@ Miscellaneous Components ^^^^^^^^^^^^^^^^^^^^^^^^ // others: START -Number of Miscellaneous Components: 37 in 37 JAR artifacts (13 deprecated) +Number of Miscellaneous Components: 38 in 38 JAR artifacts (14 deprecated) [width="100%",cols="4,1,5",options="header"] |=== @@ -1097,6 +1100,8 @@ Number of Miscellaneous Components: 37 in 37 JAR artifacts (13 deprecated) | link:camel-spring-cloud-netflix/src/main/docs/spring-cloud-netflix.adoc[Spring Cloud Netflix] (camel-spring-cloud-netflix) | 2.19 | Camel Cloud integration with Spring Cloud Netflix +| link:camel-spring-dm/src/main/docs/spring-dm.adoc[Spring DM] (camel-spring-dm) | 2.18 | *deprecated* Camel SpringDM (OSGi) XML DSL + | link:camel-spring-javaconfig/src/main/docs/spring-javaconfig.adoc[Spring Java Configuration] (camel-spring-javaconfig) | 2.0 | Using Camel with Spring Java Configuration | link:camel-spring-security/src/main/docs/spring-security.adoc[Spring Security] (camel-spring-security) | 2.3 | Security using Spring Security diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md index 7ff258f..b55a6a5 100644 --- a/docs/user-manual/en/SUMMARY.md +++ b/docs/user-manual/en/SUMMARY.md @@ -380,6 +380,7 @@ * [XML Security](xmlsecurity-component.adoc) * [XMPP](xmpp-component.adoc) * [XQuery](xquery-component.adoc) + * [Yahoo Query Language](yql-component.adoc) * [Yammer](yammer-component.adoc) * [Zendesk](zendesk-component.adoc) * [ZooKeeper](zookeeper-component.adoc) @@ -416,6 +417,7 @@ * [Spring Boot](spring-boot.adoc) * [Spring Cloud](spring-cloud.adoc) * [Spring Cloud Netflix](spring-cloud-netflix.adoc) + * [Spring DM](spring-dm.adoc) * [Spring Java Configuration](spring-javaconfig.adoc) * [Spring Security](spring-security.adoc) * [Swagger](swagger.adoc) diff --git a/parent/pom.xml b/parent/pom.xml index de62823..d3c2b9e 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -2197,6 +2197,11 @@ </dependency> <dependency> <groupId>org.apache.camel</groupId> + <artifactId>camel-yql</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> <artifactId>camel-zendesk</artifactId> <version>${project.version}</version> </dependency> diff --git a/platforms/spring-boot/components-starter/camel-yql-starter/pom.xml b/platforms/spring-boot/components-starter/camel-yql-starter/pom.xml new file mode 100644 index 0000000..ced5b4c --- /dev/null +++ b/platforms/spring-boot/components-starter/camel-yql-starter/pom.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.camel</groupId> + <artifactId>components-starter</artifactId> + <version>2.21.0-SNAPSHOT</version> + </parent> + <artifactId>camel-yql-starter</artifactId> + <packaging>jar</packaging> + <name>Spring-Boot Starter :: Camel :: Yql</name> + <description>Spring-Boot Starter for Camel Yahoo Query Language Component</description> + <dependencies> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter</artifactId> + <version>${spring-boot-version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-yql</artifactId> + <version>${project.version}</version> + <!--START OF GENERATED CODE--> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + <!--END OF GENERATED CODE--> + </dependency> + <!--START OF GENERATED CODE--> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-core-starter</artifactId> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-spring-boot-starter</artifactId> + </dependency> + <!--END OF GENERATED CODE--> + </dependencies> +</project> diff --git a/platforms/spring-boot/components-starter/camel-yql-starter/src/main/java/org/apache/camel/component/yql/springboot/YqlComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-yql-starter/src/main/java/org/apache/camel/component/yql/springboot/YqlComponentAutoConfiguration.java new file mode 100644 index 0000000..7f86140 --- /dev/null +++ b/platforms/spring-boot/components-starter/camel-yql-starter/src/main/java/org/apache/camel/component/yql/springboot/YqlComponentAutoConfiguration.java @@ -0,0 +1,128 @@ +/** + * 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.yql.springboot; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Generated; +import org.apache.camel.CamelContext; +import org.apache.camel.component.yql.YqlComponent; +import org.apache.camel.spi.ComponentCustomizer; +import org.apache.camel.spi.HasId; +import org.apache.camel.spring.boot.CamelAutoConfiguration; +import org.apache.camel.spring.boot.ComponentConfigurationProperties; +import org.apache.camel.spring.boot.util.CamelPropertiesHelper; +import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans; +import org.apache.camel.spring.boot.util.GroupCondition; +import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator; +import org.apache.camel.util.IntrospectionSupport; +import org.apache.camel.util.ObjectHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Conditional; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; + +/** + * Generated by camel-package-maven-plugin - do not edit this file! + */ +@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo") +@Configuration +@Conditional({ConditionalOnCamelContextAndAutoConfigurationBeans.class, + YqlComponentAutoConfiguration.GroupConditions.class}) +@AutoConfigureAfter(CamelAutoConfiguration.class) +@EnableConfigurationProperties({ComponentConfigurationProperties.class, + YqlComponentConfiguration.class}) +public class YqlComponentAutoConfiguration { + + private static final Logger LOGGER = LoggerFactory + .getLogger(YqlComponentAutoConfiguration.class); + @Autowired + private ApplicationContext applicationContext; + @Autowired + private CamelContext camelContext; + @Autowired + private YqlComponentConfiguration configuration; + @Autowired(required = false) + private List<ComponentCustomizer<YqlComponent>> customizers; + + static class GroupConditions extends GroupCondition { + public GroupConditions() { + super("camel.component", "camel.component.yql"); + } + } + + @Lazy + @Bean(name = "yql-component") + @ConditionalOnMissingBean(YqlComponent.class) + public YqlComponent configureYqlComponent() throws Exception { + YqlComponent component = new YqlComponent(); + component.setCamelContext(camelContext); + Map<String, Object> parameters = new HashMap<>(); + IntrospectionSupport.getProperties(configuration, parameters, null, + false); + for (Map.Entry<String, Object> entry : parameters.entrySet()) { + Object value = entry.getValue(); + Class<?> paramClass = value.getClass(); + if (paramClass.getName().endsWith("NestedConfiguration")) { + Class nestedClass = null; + try { + nestedClass = (Class) paramClass.getDeclaredField( + "CAMEL_NESTED_CLASS").get(null); + HashMap<String, Object> nestedParameters = new HashMap<>(); + IntrospectionSupport.getProperties(value, nestedParameters, + null, false); + Object nestedProperty = nestedClass.newInstance(); + CamelPropertiesHelper.setCamelProperties(camelContext, + nestedProperty, nestedParameters, false); + entry.setValue(nestedProperty); + } catch (NoSuchFieldException e) { + } + } + } + CamelPropertiesHelper.setCamelProperties(camelContext, component, + parameters, false); + if (ObjectHelper.isNotEmpty(customizers)) { + for (ComponentCustomizer<YqlComponent> customizer : customizers) { + boolean useCustomizer = (customizer instanceof HasId) + ? HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.yql.customizer", + ((HasId) customizer).getId()) + : HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.yql.customizer"); + if (useCustomizer) { + LOGGER.debug("Configure component {}, with customizer {}", + component, customizer); + customizer.customize(component); + } + } + } + return component; + } +} \ No newline at end of file diff --git a/platforms/spring-boot/components-starter/camel-yql-starter/src/main/java/org/apache/camel/component/yql/springboot/YqlComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-yql-starter/src/main/java/org/apache/camel/component/yql/springboot/YqlComponentConfiguration.java new file mode 100644 index 0000000..9fccdf3 --- /dev/null +++ b/platforms/spring-boot/components-starter/camel-yql-starter/src/main/java/org/apache/camel/component/yql/springboot/YqlComponentConfiguration.java @@ -0,0 +1,49 @@ +/** + * 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.yql.springboot; + +import javax.annotation.Generated; +import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * Camel Yahoo Query Language Component + * + * Generated by camel-package-maven-plugin - do not edit this file! + */ +@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo") +@ConfigurationProperties(prefix = "camel.component.yql") +public class YqlComponentConfiguration + extends + ComponentConfigurationPropertiesCommon { + + /** + * Whether the component should resolve property placeholders on itself when + * starting. Only properties which are of String type can use property + * placeholders. + */ + private Boolean resolvePropertyPlaceholders = true; + + public Boolean getResolvePropertyPlaceholders() { + return resolvePropertyPlaceholders; + } + + public void setResolvePropertyPlaceholders( + Boolean resolvePropertyPlaceholders) { + this.resolvePropertyPlaceholders = resolvePropertyPlaceholders; + } +} \ No newline at end of file diff --git a/platforms/spring-boot/components-starter/camel-yql-starter/src/main/resources/META-INF/LICENSE.txt b/platforms/spring-boot/components-starter/camel-yql-starter/src/main/resources/META-INF/LICENSE.txt new file mode 100644 index 0000000..6b0b127 --- /dev/null +++ b/platforms/spring-boot/components-starter/camel-yql-starter/src/main/resources/META-INF/LICENSE.txt @@ -0,0 +1,203 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. + diff --git a/platforms/spring-boot/components-starter/camel-yql-starter/src/main/resources/META-INF/NOTICE.txt b/platforms/spring-boot/components-starter/camel-yql-starter/src/main/resources/META-INF/NOTICE.txt new file mode 100644 index 0000000..2e215bf --- /dev/null +++ b/platforms/spring-boot/components-starter/camel-yql-starter/src/main/resources/META-INF/NOTICE.txt @@ -0,0 +1,11 @@ + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the Apache Camel distribution. == + ========================================================================= + + This product includes software developed by + The Apache Software Foundation (http://www.apache.org/). + + Please read the different LICENSE files present in the licenses directory of + this distribution. diff --git a/platforms/spring-boot/components-starter/camel-yql-starter/src/main/resources/META-INF/spring.factories b/platforms/spring-boot/components-starter/camel-yql-starter/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..6418b38 --- /dev/null +++ b/platforms/spring-boot/components-starter/camel-yql-starter/src/main/resources/META-INF/spring.factories @@ -0,0 +1,19 @@ +## --------------------------------------------------------------------------- +## 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. +## --------------------------------------------------------------------------- + +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +org.apache.camel.component.yql.springboot.YqlComponentAutoConfiguration diff --git a/platforms/spring-boot/components-starter/camel-yql-starter/src/main/resources/META-INF/spring.provides b/platforms/spring-boot/components-starter/camel-yql-starter/src/main/resources/META-INF/spring.provides new file mode 100644 index 0000000..edc4c9d --- /dev/null +++ b/platforms/spring-boot/components-starter/camel-yql-starter/src/main/resources/META-INF/spring.provides @@ -0,0 +1,17 @@ +## --------------------------------------------------------------------------- +## 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. +## --------------------------------------------------------------------------- +provides: camel-yql diff --git a/platforms/spring-boot/components-starter/pom.xml b/platforms/spring-boot/components-starter/pom.xml index 1bea2af..e5f0a67 100644 --- a/platforms/spring-boot/components-starter/pom.xml +++ b/platforms/spring-boot/components-starter/pom.xml @@ -323,6 +323,7 @@ <module>camel-xmpp-starter</module> <module>camel-xstream-starter</module> <module>camel-yammer-starter</module> + <module>camel-yql-starter</module> <module>camel-zendesk-starter</module> <module>camel-zipfile-starter</module> <module>camel-zipkin-starter</module> diff --git a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml index 8cac9af..2e960d9 100644 --- a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml +++ b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml @@ -2916,6 +2916,11 @@ </dependency> <dependency> <groupId>org.apache.camel</groupId> + <artifactId>camel-yql</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> <artifactId>camel-zendesk</artifactId> <version>${project.version}</version> </dependency> -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
