SqlLanguage should be singleton as it doesnt store any internal state
+ public boolean isSingleton() {
+ return false;
+ }
Should return true;
On Fri, Jul 30, 2010 at 10:22 AM, <[email protected]> wrote:
> Author: ningjiang
> Date: Fri Jul 30 08:22:09 2010
> New Revision: 980675
>
> URL: http://svn.apache.org/viewvc?rev=980675&view=rev
> Log:
> CAMEL-3014 camel-josql should have SQL language META-INF which can be found
> automatically by camel-core
>
> Added:
> camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/
>
> camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/sql/
>
> camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/sql/SqlLanguage.java
> (with props)
> camel/trunk/components/camel-josql/src/main/resources/META-INF/services/
>
> camel/trunk/components/camel-josql/src/main/resources/META-INF/services/org/
>
> camel/trunk/components/camel-josql/src/main/resources/META-INF/services/org/apache/
>
> camel/trunk/components/camel-josql/src/main/resources/META-INF/services/org/apache/camel/
>
> camel/trunk/components/camel-josql/src/main/resources/META-INF/services/org/apache/camel/language/
>
> camel/trunk/components/camel-josql/src/main/resources/META-INF/services/org/apache/camel/language/sql
>
> camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/
>
> camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/
>
> camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlLanguageTest.java
> (with props)
> Modified:
> camel/trunk/components/camel-josql/pom.xml
>
> camel/trunk/components/camel-josql/src/test/java/org/apache/camel/builder/sql/SqlTest.java
>
> Modified: camel/trunk/components/camel-josql/pom.xml
> URL:
> http://svn.apache.org/viewvc/camel/trunk/components/camel-josql/pom.xml?rev=980675&r1=980674&r2=980675&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-josql/pom.xml (original)
> +++ camel/trunk/components/camel-josql/pom.xml Fri Jul 30 08:22:09 2010
> @@ -64,7 +64,13 @@
>
> <dependency>
> <groupId>commons-logging</groupId>
> - <artifactId>commons-logging-api</artifactId>
> + <artifactId>commons-logging</artifactId>
> + <scope>test</scope>
> + </dependency>
> + <dependency>
> + <groupId>log4j</groupId>
> + <artifactId>log4j</artifactId>
> + <scope>test</scope>
> </dependency>
>
> <dependency>
>
> Added:
> camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/sql/SqlLanguage.java
> URL:
> http://svn.apache.org/viewvc/camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/sql/SqlLanguage.java?rev=980675&view=auto
> ==============================================================================
> ---
> camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/sql/SqlLanguage.java
> (added)
> +++
> camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/sql/SqlLanguage.java
> Fri Jul 30 08:22:09 2010
> @@ -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.language.sql;
> +
> +import javax.xml.namespace.QName;
> +
> +import org.apache.camel.Expression;
> +import org.apache.camel.IsSingleton;
> +import org.apache.camel.Predicate;
> +import org.apache.camel.RuntimeCamelException;
> +import org.apache.camel.builder.sql.SqlBuilder;
> +import org.apache.camel.builder.xml.XPathBuilder;
> +import org.apache.camel.spi.Language;
> +import org.josql.QueryParseException;
> +
> +/**
> + * XPath language.
> + *
> + * @version $Revision$
> + */
> +public class SqlLanguage implements Language, IsSingleton {
> +
> + public Predicate createPredicate(String expression) {
> + try {
> + SqlBuilder builder = SqlBuilder.sql(expression);
> + return builder;
> + } catch (QueryParseException e) {
> + RuntimeException exception = new RuntimeCamelException("Canont
> create the SqlBuilder.", e);
> + throw exception;
> + }
> +
> + }
> +
> + public Expression createExpression(String expression) {
> + try {
> + SqlBuilder builder = SqlBuilder.sql(expression);
> + return builder;
> + } catch (QueryParseException e) {
> + RuntimeException exception = new RuntimeCamelException("Canont
> create the SqlBuilder.", e);
> + throw exception;
> + }
> + }
> +
> + public boolean isSingleton() {
> + return false;
> + }
> +}
>
> Propchange:
> camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/sql/SqlLanguage.java
> ------------------------------------------------------------------------------
> svn:eol-style = native
>
> Propchange:
> camel/trunk/components/camel-josql/src/main/java/org/apache/camel/language/sql/SqlLanguage.java
> ------------------------------------------------------------------------------
> svn:keywords = Rev Date
>
> Added:
> camel/trunk/components/camel-josql/src/main/resources/META-INF/services/org/apache/camel/language/sql
> URL:
> http://svn.apache.org/viewvc/camel/trunk/components/camel-josql/src/main/resources/META-INF/services/org/apache/camel/language/sql?rev=980675&view=auto
> ==============================================================================
> ---
> camel/trunk/components/camel-josql/src/main/resources/META-INF/services/org/apache/camel/language/sql
> (added)
> +++
> camel/trunk/components/camel-josql/src/main/resources/META-INF/services/org/apache/camel/language/sql
> Fri Jul 30 08:22:09 2010
> @@ -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.language.sql.SqlLanguage
>
> Modified:
> camel/trunk/components/camel-josql/src/test/java/org/apache/camel/builder/sql/SqlTest.java
> URL:
> http://svn.apache.org/viewvc/camel/trunk/components/camel-josql/src/test/java/org/apache/camel/builder/sql/SqlTest.java?rev=980675&r1=980674&r2=980675&view=diff
> ==============================================================================
> ---
> camel/trunk/components/camel-josql/src/test/java/org/apache/camel/builder/sql/SqlTest.java
> (original)
> +++
> camel/trunk/components/camel-josql/src/test/java/org/apache/camel/builder/sql/SqlTest.java
> Fri Jul 30 08:22:09 2010
> @@ -24,6 +24,7 @@ import org.apache.camel.Expression;
> import org.apache.camel.Message;
> import org.apache.camel.impl.DefaultCamelContext;
> import org.apache.camel.impl.DefaultExchange;
> +import org.apache.camel.test.junit4.CamelTestSupport;
> import org.apache.camel.test.junit4.TestSupport;
> import org.junit.Before;
> import org.junit.Test;
> @@ -33,9 +34,9 @@ import static org.apache.camel.builder.s
> /**
> * @version $Revision$
> */
> -public class SqlTest extends TestSupport {
> +public class SqlTest extends CamelTestSupport {
>
> - protected CamelContext context = new DefaultCamelContext();
> + //protected CamelContext context = new DefaultCamelContext();
> protected Exchange exchange;
>
> @Test
> @@ -79,7 +80,8 @@ public class SqlTest extends TestSupport
> }
>
> @Before
> - public void setUp() throws Exception {
> + public void setUp() throws Exception {
> + super.setUp();
> exchange = createExchange();
> }
>
>
> Added:
> camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlLanguageTest.java
> URL:
> http://svn.apache.org/viewvc/camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlLanguageTest.java?rev=980675&view=auto
> ==============================================================================
> ---
> camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlLanguageTest.java
> (added)
> +++
> camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlLanguageTest.java
> Fri Jul 30 08:22:09 2010
> @@ -0,0 +1,82 @@
> +/**
> + * 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.lanaguage.sql;
> +
> +import java.util.List;
> +
> +import org.apache.camel.Expression;
> +import org.apache.camel.builder.sql.Person;
> +import org.apache.camel.builder.sql.SqlTest;
> +import org.apache.camel.spi.Language;
> +import org.junit.Test;
> +
> +/**
> + * @version $Revision$
> + */
> +public class SqlLanguageTest extends SqlTest {
> +
> + �...@test
> + public void testExpression() throws Exception {
> + Language language = assertResolveLanguage(getLanguageName());
> +
> + Expression expression = language.createExpression("SELECT * FROM
> org.apache.camel.builder.sql.Person where city = 'London'");
> + List value = expression.evaluate(exchange, List.class);
> +
> + List list = (List)value;
> + assertEquals("List size", 2, list.size());
> +
> + for (Object person : list) {
> + log.info("Found: " + person);
> + }
> + }
> +
> + �...@suppresswarnings("unchecked")
> + �...@test
> + public void testExpressionWithHeaderVariable() throws Exception {
> + Language language = assertResolveLanguage(getLanguageName());
> +
> + Expression expression = language.createExpression("SELECT * FROM
> org.apache.camel.builder.sql.Person where name = :fooHeader");
> + List value = expression.evaluate(exchange, List.class);
> +
> + List<Person> list = (List<Person>)value;
> + assertEquals("List size", 1, list.size());
> +
> + for (Person person : list) {
> + log.info("Found: " + person);
> +
> + assertEquals("name", "James", person.getName());
> + }
> + }
> +
> + �...@test
> + public void testPredicates() throws Exception {
> + Language language = assertResolveLanguage(getLanguageName());
> + assertPredicate(language.createPredicate("SELECT * FROM
> org.apache.camel.builder.sql.Person where city = 'London'"), exchange, true);
> + assertPredicate(language.createPredicate("SELECT * FROM
> org.apache.camel.builder.sql.Person where city = 'Manchester'"), exchange,
> false);
> + }
> +
> + �...@test
> + public void testPredicateWithHeaderVariable() throws Exception {
> + Language language = assertResolveLanguage(getLanguageName());
> + assertPredicate(language.createPredicate("SELECT * FROM
> org.apache.camel.builder.sql.Person where name = :fooHeader"), exchange,
> true);
> + }
> +
> + protected String getLanguageName() {
> + return "sql";
> + }
> +
> +}
>
> Propchange:
> camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlLanguageTest.java
> ------------------------------------------------------------------------------
> svn:eol-style = native
>
> Propchange:
> camel/trunk/components/camel-josql/src/test/java/org/apache/camel/lanaguage/sql/SqlLanguageTest.java
> ------------------------------------------------------------------------------
> svn:keywords = Rev Date
>
>
>
--
Claus Ibsen
Apache Camel Committer
Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus