Return-Path: Delivered-To: apmail-activemq-commits-archive@www.apache.org Received: (qmail 89510 invoked from network); 19 Mar 2007 18:26:32 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 19 Mar 2007 18:26:32 -0000 Received: (qmail 53827 invoked by uid 500); 19 Mar 2007 18:26:40 -0000 Delivered-To: apmail-activemq-commits-archive@activemq.apache.org Received: (qmail 53801 invoked by uid 500); 19 Mar 2007 18:26:39 -0000 Mailing-List: contact commits-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list commits@activemq.apache.org Received: (qmail 53792 invoked by uid 99); 19 Mar 2007 18:26:39 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 19 Mar 2007 11:26:39 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 19 Mar 2007 11:26:30 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 63C551A983E; Mon, 19 Mar 2007 11:26:10 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r520036 - in /activemq/camel/trunk/camel-core/src: main/java/org/apache/camel/ main/java/org/apache/camel/queue/ main/java/org/apache/camel/seda/ main/resources/META-INF/services/org/apache/camel/EndpointResolver/ test/java/org/apache/camel/ Date: Mon, 19 Mar 2007 18:26:10 -0000 To: commits@activemq.apache.org From: chirino@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070319182610.63C551A983E@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: chirino Date: Mon Mar 19 11:26:09 2007 New Revision: 520036 URL: http://svn.apache.org/viewvc?view=rev&rev=520036 Log: renamed the seda component to queue Added: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/ - copied from r520020, activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/seda/ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueComponent.java activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueEndpoint.java activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueEndpointResolver.java activemq/camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/EndpointResolver/queue - copied, changed from r520020, activemq/camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/EndpointResolver/seda Removed: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/SedaEndpoint.java activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/SedaEndpointResolver.java activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/seda/ activemq/camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/EndpointResolver/seda Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContainer.java activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/RouteBuilderTest.java Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContainer.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContainer.java?view=diff&rev=520036&r1=520035&r2=520036 ============================================================================== --- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContainer.java (original) +++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContainer.java Mon Mar 19 11:26:09 2007 @@ -17,6 +17,10 @@ */ package org.apache.camel; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + import org.apache.camel.impl.DefaultEndpointResolver; import org.apache.camel.impl.DefaultExchangeConverter; @@ -26,8 +30,10 @@ * @version $Revision$ */ public class CamelContainer { + private EndpointResolver endpointResolver; private ExchangeConverter exchangeConverter; + private Map components = (Map)Collections.synchronizedMap(new HashMap()); public EndpointResolver getEndpointResolver() { if (endpointResolver == null) { @@ -63,4 +69,11 @@ protected ExchangeConverter createExchangeConverter() { return new DefaultExchangeConverter(); } + + public Map getComponents() { + return components; + } + public void setComponents(Map components) { + this.components = Collections.synchronizedMap(components); + } } Added: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueComponent.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueComponent.java?view=auto&rev=520036 ============================================================================== --- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueComponent.java (added) +++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueComponent.java Mon Mar 19 11:26:09 2007 @@ -0,0 +1,46 @@ +/* + * 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.queue; + +import java.util.HashMap; +import java.util.Queue; +import java.util.concurrent.LinkedBlockingQueue; + +/** + * Represents the component that manages {@link QueueEndpoint}. It holds the + * list of named queues that queue endpoints reference. + * + * @version $Revision: 519973 $ + */ +public class QueueComponent { + + private HashMap> registry = new HashMap>(); + + synchronized public Queue getOrCreateQueue(String uri) { + Queue queue = registry.get(uri); + if( queue == null ) { + queue = createQueue(); + registry.put(uri, queue); + } + return queue; + } + + private Queue createQueue() { + return new LinkedBlockingQueue(); + } + +} Added: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueEndpoint.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueEndpoint.java?view=auto&rev=520036 ============================================================================== --- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueEndpoint.java (added) +++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueEndpoint.java Mon Mar 19 11:26:09 2007 @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.queue; + +import java.util.Queue; + +import org.apache.camel.CamelContainer; +import org.apache.camel.impl.DefaultEndpoint; +import org.apache.camel.impl.DefaultExchange; + +/** + * Represents a queue endpoint that uses a {@link Queue} + * object to process inbound exchanges. + * + * @version $Revision: 519973 $ + */ +public class QueueEndpoint extends DefaultEndpoint { + private Queue queue; + + public QueueEndpoint(String uri, CamelContainer container, Queue queue) { + super(uri, container); + this.queue = queue; + } + + public void send(E exchange) { + queue.add(exchange); + } + + public E createExchange() { + // How can we create a specific Exchange if we are generic?? + // perhaps it would be better if we did not impement this. + return (E) new DefaultExchange(); + } + + public Queue getQueue() { + return queue; + } +} Added: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueEndpointResolver.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueEndpointResolver.java?view=auto&rev=520036 ============================================================================== --- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueEndpointResolver.java (added) +++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/queue/QueueEndpointResolver.java Mon Mar 19 11:26:09 2007 @@ -0,0 +1,45 @@ +/* + * 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.queue; + +import java.util.Queue; + +import org.apache.camel.CamelContainer; +import org.apache.camel.Endpoint; +import org.apache.camel.EndpointResolver; + +/** + * An implementation of {@link EndpointResolver} that creates + * {@link QueueEndpoint} objects. + * + * @version $Revision: 519901 $ + */ +public class QueueEndpointResolver implements EndpointResolver { + + static QueueComponent defaultComponent = new QueueComponent(); + + public Endpoint resolve(CamelContainer container, String uri) { + + // TODO: we could look at the uri scheme to look for a named + // component registered on the container + QueueComponent component = defaultComponent; + + Queue queue = component.getOrCreateQueue(uri); + return new QueueEndpoint(uri, container, queue); + } + +} Copied: activemq/camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/EndpointResolver/queue (from r520020, activemq/camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/EndpointResolver/seda) URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/EndpointResolver/queue?view=diff&rev=520036&p1=activemq/camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/EndpointResolver/seda&r1=520020&p2=activemq/camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/EndpointResolver/queue&r2=520036 ============================================================================== --- activemq/camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/EndpointResolver/seda (original) +++ activemq/camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/EndpointResolver/queue Mon Mar 19 11:26:09 2007 @@ -1 +1 @@ -class=org.apache.camel.seda.SedaEndpointResolver +class=org.apache.camel.queue.QueueEndpointResolver Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/RouteBuilderTest.java URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/RouteBuilderTest.java?view=diff&rev=520036&r1=520035&r2=520036 ============================================================================== --- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/RouteBuilderTest.java (original) +++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/RouteBuilderTest.java Mon Mar 19 11:26:09 2007 @@ -16,14 +16,14 @@ */ package org.apache.camel; -import junit.framework.TestCase; -import org.apache.camel.builder.RouteBuilder; - +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.Collection; -import java.util.ArrayList; + +import junit.framework.TestCase; + +import org.apache.camel.builder.RouteBuilder; /** * @version $Revision$ @@ -44,7 +44,7 @@ // START SNIPPET: e1 RouteBuilder builder = new RouteBuilder() { public void configure() { - from("seda:a").to("seda:b"); + from("queue:a").to("queue:b"); } }; // END SNIPPET: e1 @@ -54,12 +54,12 @@ assertEquals("Number routes created", 1, routes.size()); for (Map.Entry, Processor> route : routes) { Endpoint key = route.getKey(); - assertEquals("From endpoint", "seda:a", key.getEndpointUri()); + assertEquals("From endpoint", "queue:a", key.getEndpointUri()); Processor processor = route.getValue(); assertTrue("Processor should be a SendProcessor but was: " + processor + " with type: " + processor.getClass().getName(), processor instanceof SendProcessor); SendProcessor sendProcessor = (SendProcessor) processor; - assertEquals("Endpoint URI", "seda:b", sendProcessor.getDestination().getEndpointUri()); + assertEquals("Endpoint URI", "queue:b", sendProcessor.getDestination().getEndpointUri()); } } @@ -67,7 +67,7 @@ // START SNIPPET: e2 RouteBuilder builder = new RouteBuilder() { public void configure() { - from("seda:a").filter(headerEquals("foo", "bar")).to("seda:b"); + from("queue:a").filter(headerEquals("foo", "bar")).to("queue:b"); } }; // END SNIPPET: e2 @@ -79,14 +79,14 @@ assertEquals("Number routes created", 1, routes.size()); for (Map.Entry, Processor> route : routes) { Endpoint key = route.getKey(); - assertEquals("From endpoint", "seda:a", key.getEndpointUri()); + assertEquals("From endpoint", "queue:a", key.getEndpointUri()); Processor processor = route.getValue(); assertTrue("Processor should be a FilterProcessor but was: " + processor + " with type: " + processor.getClass().getName(), processor instanceof FilterProcessor); FilterProcessor filterProcessor = (FilterProcessor) processor; SendProcessor sendProcessor = (SendProcessor) filterProcessor.getProcessor(); - assertEquals("Endpoint URI", "seda:b", sendProcessor.getDestination().getEndpointUri()); + assertEquals("Endpoint URI", "queue:b", sendProcessor.getDestination().getEndpointUri()); } } @@ -94,10 +94,10 @@ // START SNIPPET: e3 RouteBuilder builder = new RouteBuilder() { public void configure() { - from("seda:a").choice() - .when(headerEquals("foo", "bar")).to("seda:b") - .when(headerEquals("foo", "cheese")).to("seda:c") - .otherwise().to("seda:d"); + from("queue:a").choice() + .when(headerEquals("foo", "bar")).to("queue:b") + .when(headerEquals("foo", "cheese")).to("queue:c") + .otherwise().to("queue:d"); } }; // END SNIPPET: e3 @@ -109,7 +109,7 @@ assertEquals("Number routes created", 1, routes.size()); for (Map.Entry, Processor> route : routes) { Endpoint key = route.getKey(); - assertEquals("From endpoint", "seda:a", key.getEndpointUri()); + assertEquals("From endpoint", "queue:a", key.getEndpointUri()); Processor processor = route.getValue(); assertTrue("Processor should be a ChoiceProcessor but was: " + processor + " with type: " + processor.getClass().getName(), processor instanceof ChoiceProcessor); @@ -119,12 +119,12 @@ assertEquals("Should be two when clauses", 2, filters.size()); FilterProcessor filter1 = filters.get(0); - assertSendTo(filter1.getProcessor(), "seda:b"); + assertSendTo(filter1.getProcessor(), "queue:b"); FilterProcessor filter2 = filters.get(1); - assertSendTo(filter2.getProcessor(), "seda:c"); + assertSendTo(filter2.getProcessor(), "queue:c"); - assertSendTo(choiceProcessor.getOtherwise(), "seda:d"); + assertSendTo(choiceProcessor.getOtherwise(), "queue:d"); } } @@ -138,7 +138,7 @@ RouteBuilder builder = new RouteBuilder() { public void configure() { - from("seda:a").process(myProcessor); + from("queue:a").process(myProcessor); } }; // END SNIPPET: e4 @@ -149,7 +149,7 @@ assertEquals("Number routes created", 1, routes.size()); for (Map.Entry, Processor> route : routes) { Endpoint key = route.getKey(); - assertEquals("From endpoint", "seda:a", key.getEndpointUri()); + assertEquals("From endpoint", "queue:a", key.getEndpointUri()); Processor processor = route.getValue(); assertEquals("Should be called with my processor", myProcessor, processor); @@ -160,7 +160,7 @@ // START SNIPPET: e5 RouteBuilder builder = new RouteBuilder() { public void configure() { - from("seda:a").filter(headerEquals("foo", "bar")).process(myProcessor); + from("queue:a").filter(headerEquals("foo", "bar")).process(myProcessor); } }; // END SNIPPET: e5 @@ -172,7 +172,7 @@ assertEquals("Number routes created", 1, routes.size()); for (Map.Entry, Processor> route : routes) { Endpoint key = route.getKey(); - assertEquals("From endpoint", "seda:a", key.getEndpointUri()); + assertEquals("From endpoint", "queue:a", key.getEndpointUri()); Processor processor = route.getValue(); assertTrue("Processor should be a FilterProcessor but was: " + processor + " with type: " + processor.getClass().getName(), processor instanceof FilterProcessor); @@ -185,7 +185,7 @@ // START SNIPPET: e6 RouteBuilder builder = new RouteBuilder() { public void configure() { - from("seda:a").to("seda:tap", "seda:b"); + from("queue:a").to("queue:tap", "queue:b"); } }; // END SNIPPET: e6 @@ -197,7 +197,7 @@ assertEquals("Number routes created", 1, routes.size()); for (Map.Entry, Processor> route : routes) { Endpoint key = route.getKey(); - assertEquals("From endpoint", "seda:a", key.getEndpointUri()); + assertEquals("From endpoint", "queue:a", key.getEndpointUri()); Processor processor = route.getValue(); assertTrue("Processor should be a CompositeProcessor but was: " + processor + " with type: " + processor.getClass().getName(), processor instanceof CompositeProcessor); @@ -205,8 +205,8 @@ List> processors = new ArrayList>(compositeProcessor.getProcessors()); assertEquals("Should have 2 processors", 2, processors.size()); - assertSendTo(processors.get(0), "seda:tap"); - assertSendTo(processors.get(1), "seda:b"); + assertSendTo(processors.get(0), "queue:tap"); + assertSendTo(processors.get(1), "queue:b"); } }