Return-Path: Delivered-To: apmail-camel-dev-archive@www.apache.org Received: (qmail 80961 invoked from network); 30 Jul 2010 08:46:05 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 30 Jul 2010 08:46:05 -0000 Received: (qmail 75906 invoked by uid 500); 30 Jul 2010 08:46:04 -0000 Delivered-To: apmail-camel-dev-archive@camel.apache.org Received: (qmail 75684 invoked by uid 500); 30 Jul 2010 08:46:02 -0000 Mailing-List: contact dev-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list dev@camel.apache.org Received: (qmail 75675 invoked by uid 99); 30 Jul 2010 08:46:01 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 30 Jul 2010 08:46:01 +0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests=FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of willem.jiang@gmail.com designates 209.85.160.45 as permitted sender) Received: from [209.85.160.45] (HELO mail-pw0-f45.google.com) (209.85.160.45) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 30 Jul 2010 08:45:53 +0000 Received: by pwi2 with SMTP id 2so410554pwi.32 for ; Fri, 30 Jul 2010 01:45:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=0jDtGtx1nIhpbQQdzkHznAZCXN2M7qwlMyO4B5x7Vgk=; b=HW3gxl2acsizb4SD/wJ9ZJ6a0fjPO797OR19QUXDPNX6oLM4/cBVsRRqWWIO3WQPWV Y0p3yCudSKvg7ZXF5dXncgyA6xtO1WE6sn63KarvHELjg6dbBJAApAebbMpgYJldu+se OsGJQWt1KNsnH0izDeTxzK4x/RLsytFptjqBA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; b=nADsmSDMoAbRwjdgn6IqFasuw/J8fDgDb3UWqpF1vd0RFi1VmJOhUM6GKXJE6H+mue lbLaZ4iL987+Y3l17uDMBJ+UfUNs1r1gbKPYOFtyoZ/FKIJyl5RIcmVNSsvSwnlOo6Li cM0FiKZL3gL1/su2Jt4QQ3/Bjyybp5SSY2bFI= Received: by 10.143.26.4 with SMTP id d4mr1297528wfj.338.1280479533602; Fri, 30 Jul 2010 01:45:33 -0700 (PDT) Received: from [192.168.0.158] ([125.34.2.169]) by mx.google.com with ESMTPS id w27sm2216528wfd.17.2010.07.30.01.45.30 (version=TLSv1/SSLv3 cipher=RC4-MD5); Fri, 30 Jul 2010 01:45:32 -0700 (PDT) Message-ID: <4C529127.4080401@gmail.com> Date: Fri, 30 Jul 2010 16:45:27 +0800 From: Willem Jiang User-Agent: Thunderbird 2.0.0.24 (Macintosh/20100228) MIME-Version: 1.0 To: dev@camel.apache.org Subject: Re: svn commit: r980675 - in /camel/trunk/components/camel-josql: ./ src/main/java/org/apache/camel/language/ src/main/java/org/apache/camel/language/sql/ src/main/resources/META-INF/services/ src/main/resources/META-INF/services/org/ src/main/resour References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Well spot, I will change it in my next commit. Willem Claus Ibsen wrote: > 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, 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 @@ >> >> >> commons-logging >> - commons-logging-api >> + commons-logging >> + test >> + >> + >> + log4j >> + log4j >> + test >> >> >> >> >> 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 list = (List)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 >> >> >> > > >