This is an automated email from the ASF dual-hosted git repository.
nfilotto pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karaf.git
The following commit(s) were added to refs/heads/main by this push:
new efdad808 Ref #410: Add camel-atom integration-test (#411)
efdad808 is described below
commit efdad808a1db2a2d7d938ed00584cb0417f18acd
Author: François de Parscau <[email protected]>
AuthorDate: Tue Jul 9 16:28:48 2024 +0200
Ref #410: Add camel-atom integration-test (#411)
---
tests/features/camel-atom/pom.xml | 40 +++
.../karaf/camel/test/CamelAtomRouteSupplier.java | 43 +++
.../apache/karaf/camel/itest/CamelAtomITest.java | 66 +++++
.../camel-atom/src/test/resources/data/feed.atom | 316 +++++++++++++++++++++
tests/features/pom.xml | 3 +-
5 files changed, 467 insertions(+), 1 deletion(-)
diff --git a/tests/features/camel-atom/pom.xml
b/tests/features/camel-atom/pom.xml
new file mode 100644
index 00000000..05562c0c
--- /dev/null
+++ b/tests/features/camel-atom/pom.xml
@@ -0,0 +1,40 @@
+<?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/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>camel-karaf-features-test</artifactId>
+ <version>4.6.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>camel-atom-test</artifactId>
+ <name>Apache Camel :: Karaf :: Tests :: Features :: Atom</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-atom</artifactId>
+ <version>${camel-version}</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
diff --git
a/tests/features/camel-atom/src/main/java/org/apache/karaf/camel/test/CamelAtomRouteSupplier.java
b/tests/features/camel-atom/src/main/java/org/apache/karaf/camel/test/CamelAtomRouteSupplier.java
new file mode 100644
index 00000000..c146c7d2
--- /dev/null
+++
b/tests/features/camel-atom/src/main/java/org/apache/karaf/camel/test/CamelAtomRouteSupplier.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.karaf.camel.test;
+
+import java.util.function.Function;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.RouteDefinition;
+import
org.apache.karaf.camel.itests.AbstractCamelSingleFeatureResultMockBasedRouteSupplier;
+import org.osgi.service.component.annotations.Component;
+
+@Component(
+ name = "karaf-camel-atom-test",
+ immediate = true,
+ service = CamelAtomRouteSupplier.class
+)
+public class CamelAtomRouteSupplier extends
AbstractCamelSingleFeatureResultMockBasedRouteSupplier {
+
+ @Override
+ protected Function<RouteBuilder, RouteDefinition> consumerRoute() {
+ return builder ->
+
builder.fromF("atom://file:%s/test-classes/data/feed.atom?delay=500",
System.getProperty("project.target"))
+ .log("received message ${body}");
+ }
+
+ protected boolean producerEnabled() {
+ return false;
+ }
+}
+
diff --git
a/tests/features/camel-atom/src/test/java/org/apache/karaf/camel/itest/CamelAtomITest.java
b/tests/features/camel-atom/src/test/java/org/apache/karaf/camel/itest/CamelAtomITest.java
new file mode 100644
index 00000000..1ad01eb1
--- /dev/null
+++
b/tests/features/camel-atom/src/test/java/org/apache/karaf/camel/itest/CamelAtomITest.java
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+package org.apache.karaf.camel.itest;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.List;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.component.mock.MockEndpoint;
+import
org.apache.karaf.camel.itests.AbstractCamelSingleFeatureResultMockBasedRouteITest;
+import org.apache.karaf.camel.itests.CamelKarafTestHint;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerClass;
+
+import com.apptasticsoftware.rssreader.Item;
+
+@RunWith(PaxExam.class)
+@ExamReactorStrategy(PerClass.class)
+public class CamelAtomITest extends
AbstractCamelSingleFeatureResultMockBasedRouteITest {
+
+ @Override
+ public void configureMock(MockEndpoint mock) {
+ mock.expectedMessageCount(7);
+ List<Exchange> list = mock.getReceivedExchanges();
+ String[] expectedTitles = {
+ "Speaking at the Irish Java Technology Conference on Thursday
and Friday",
+ "a great presentation on REST, JAX-WS and JSR 311",
+ "my slides on ActiveMQ and Camel from last weeks Dublin
Conference",
+ "webcast today on Apache ActiveMQ",
+ "Feedback on my Camel talk at the IJTC conference",
+ "More thoughts on RESTful Message Queues",
+ "ActiveMQ webinar archive available" };
+ int counter = 0;
+ for (Exchange exchange : list) {
+ Item entry = exchange.getIn().getBody(Item.class);
+ assertNotNull("No entry found for exchange: " + exchange, entry);
+
+ String expectedTitle = expectedTitles[counter];
+ String title = entry.getTitle().get();
+ assertEquals(expectedTitle, title, "Title of message " + counter);
+
+ counter++;
+ }
+ }
+
+ @Test
+ public void testResultMock() throws Exception {
+ assertMockEndpointsSatisfied();
+ }
+}
\ No newline at end of file
diff --git a/tests/features/camel-atom/src/test/resources/data/feed.atom
b/tests/features/camel-atom/src/test/resources/data/feed.atom
new file mode 100644
index 00000000..ce79de42
--- /dev/null
+++ b/tests/features/camel-atom/src/test/resources/data/feed.atom
@@ -0,0 +1,316 @@
+<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet
href="http://www.blogger.com/styles/atom.css" type="text/css"?>
+<!--
+
+ 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.
+
+-->
+<feed xmlns='http://www.w3.org/2005/Atom'
xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'>
+ <id>tag:blogger.com,1999:blog-637417304187784899</id>
+ <updated>2007-12-01T12:33:31.529Z</updated>
+ <title type='text'>James Strachan's Blog</title>
+ <link rel='alternate' type='text/html' href='http://macstrac.blogspot.com/'/>
+ <link rel='next' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/posts/default?start-index=26&max-results=25'/>
+ <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml'
+ href='http://macstrac.blogspot.com/feeds/posts/default'/>
+ <link rel='self' type='application/atom+xml'
href='http://macstrac.blogspot.com/feeds/posts/default'/>
+ <author>
+ <name>James Strachan</name>
+ </author>
+ <generator version='7.00' uri='http://www.blogger.com'>Blogger</generator>
+ <openSearch:totalResults>54</openSearch:totalResults>
+ <openSearch:startIndex>1</openSearch:startIndex>
+ <openSearch:itemsPerPage>25</openSearch:itemsPerPage>
+
+ <entry>
+
<id>tag:blogger.com,1999:blog-637417304187784899.post-597595982330434286</id>
+ <published>2007-11-26T08:46:00.000Z</published>
+ <updated>2007-11-26T08:49:10.354Z</updated>
+ <title type='text'>ActiveMQ webinar archive available</title>
+ <content type='html'>Our <a
href="http://macstrac.blogspot.com/2007/11/webcast-today-on-apache-activemq.html">previously
+ announced webinar on ActiveMQ</a> is now available on <a
+ href="http://open.iona.com/resources/video-archived-webinars/">IONA's
webinar and screencast archive</a>.
+ You can <a href="https://cc.readytalk.com/play?id=go5pfj81">view
it here</a>.
+ </content>
+ <link rel='alternate' type='text/html'
+
href='http://macstrac.blogspot.com/2007/11/activemq-webinar-archive-available.html'
+ title='ActiveMQ webinar archive available'/>
+ <link rel='replies' type='text/html'
+
href='http://www.blogger.com/comment.g?blogID=637417304187784899&postID=597595982330434286'
+ title='0 Comments'/>
+ <link rel='replies' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/597595982330434286/comments/default'
title='Post Comments'/>
+ <link rel='self' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/posts/default/597595982330434286'/>
+ <link rel='edit' type='application/atom+xml'
+
href='http://www.blogger.com/feeds/637417304187784899/posts/default/597595982330434286'/>
+ <author>
+ <name>James Strachan</name>
+ </author>
+ </entry>
+ <entry>
+
<id>tag:blogger.com,1999:blog-637417304187784899.post-6948835939296895803</id>
+ <published>2007-11-14T14:18:00.001Z</published>
+ <updated>2007-11-14T19:43:38.291Z</updated>
+ <title type='text'>More thoughts on RESTful Message Queues</title>
+ <content type='html'>Just a small follow up on my previous <span
style="font-size:100%;"><a
+ style="font-weight: normal;"
href="http://macstrac.blogspot.com/2007/08/pure-restful-api-to-activemq-via.html">Pure
+ RESTful API to ActiveMQ via AtomPub</a></span>. AtomPub
rocks and all - I was thinking whats the
+ easiest possible RESTful client to subscribe to a message queue.<br
/><blockquote></blockquote><blockquote>GET
+
queues/foo.bar?user=myUniqueId&amp;timeout=5000</blockquote>This
would activate my subscription to the
+ queue <span style="font-style: italic;">foo.bar</span> (or
help to keep it alive) and return my own
+ list of messages as an Atom feed that I am allowed to view and DELETE
when I have consumed them.<br /><br
+ />This operation is idempotent and would work great with proxies and
caches (assuming the right HTTP headers /
+ ETags stuff) letting clients to keep GETing as often as they like.
Though if you don't use the subscription for
+ period of time, your subscription can go stale and timeout; any messages
in your message collection could be
+ removed.<br /><br />The slightly smelly thing here is we
need to either use cookies (such as for HTTP
+ session handling with servlets) or use a custom session ID header in the
URL to uniquely differentiate the
+ subscriptions. Anyone got a better idea?<br /><br />I guess
we could demand that clients PUT/POST to
+ get a new Location URL on which to GET their subscriptions; but this
would require a custom REST client.
+ </content>
+ <link rel='alternate' type='text/html'
+
href='http://macstrac.blogspot.com/2007/11/more-thoughts-on-restful-message-queues.html'
+ title='More thoughts on RESTful Message Queues'/>
+ <link rel='replies' type='text/html'
+
href='http://www.blogger.com/comment.g?blogID=637417304187784899&postID=6948835939296895803'
+ title='3 Comments'/>
+ <link rel='replies' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/6948835939296895803/comments/default'
title='Post Comments'/>
+ <link rel='self' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/posts/default/6948835939296895803'/>
+ <link rel='edit' type='application/atom+xml'
+
href='http://www.blogger.com/feeds/637417304187784899/posts/default/6948835939296895803'/>
+ <author>
+ <name>James Strachan</name>
+ </author>
+ </entry>
+ <entry>
+
<id>tag:blogger.com,1999:blog-637417304187784899.post-8132857663967818867</id>
+ <published>2007-11-13T15:30:00.000Z</published>
+ <updated>2007-11-13T16:40:47.166Z</updated>
+ <category scheme='http://www.blogger.com/atom/ns#' term='camel'/>
+ <title type='text'>Feedback on my Camel talk at the IJTC conference</title>
+ <content type='html'>Thanks to <a
href="http://capedcrusading.blogspot.com/">John</a> for the <a
+
href="http://capedcrusading.blogspot.com/2007/11/ijtc-conference-spring-grails-camel.html">great
feedback on my
+ Camel talk</a> (and other talks too). I started to write a huge
reply and figured I'd post it here instead
+ then link to it as its easier to reply to different parts.<br
/><blockquote>Camel itself is not an ESB
+ per-se, it is a component of an ESB </blockquote>Agreed. The idea
is Camel does the routing and <a
+
href="http://activemq.apache.org/camel/enterprise-integration-patterns.html"
title="Enterprise Integration
+ Patterns">Enterprise Integration Patterns</a> - you can then
use it inside a web service stack like <span
+ class="nobr"></span><a
href="http://incubator.apache.org/cxf/" title="Visit page outside Confluence"
+ rel="nofollow">Apache CXF</a>, a message broker like <span
style="text-decoration: underline;"></span><span
+ class="nobr"><a href="http://activemq.apache.org/" title="Visit
page outside Confluence" rel="nofollow">Apache
+ ActiveMQ</a></span> or an ESB like<span
class="nobr"><a
+ href="http://incubator.apache.org/servicemix/" title="Visit page outside
Confluence" rel="nofollow"> Apache
+ ServiceMix</a></span><br /><blockquote>1. One of
the key messages that came out of the
+ session was how Java-centric the Camel solution is - Strachan went so
far as to articulate the view that coding in
+ XML was a fundamentally bad idea.<br /></blockquote>Maybe
being the author of <a
+ href="http://commons.apache.org/jelly/">Jelly</a> and hating
writing XSLT has made me a bit too sensitive
+ to the idea of programming by XML. Quite a few customers I talk with
report frustration of too much XML hacking
+ with Spring (which is being addressed in Guice and Spring 2.5). But heck
if you like programming in XML be my
+ guest :)<br /><blockquote>He went on to cast aspersions on
graphical tools also. His clear preference
+ was that integration logic should be written in Java. Given that I have
worked with highly skilled Java developers
+ for many years now I was not too surprised to hear this - many good
developers shy away from tooling, seeing it as
+ compromising their style or the power of the underlying framework -
hence the longevity of vi and emacs I suppose.<br
+ /></blockquote>I didn't mean to cast aspersions on graphical
tools; more that pretty much all developers
+ understand Java these days, its pretty universal - whereas most complex
graphical tools require a fair amount of
+ learning to get used to them.<br /><br />Personally I
totally prefer writing in Java rather than XML
+ or using visual tooling but one of the main requirements of Camel is
that you can configure and specify routes in
+ any way you like - via a graphical IDE (e.g. Cimero) or via XML or Java
or Groovy or Ruby or one day hopefully a
+ real DSL. Using XML is quite useful as you can just drop your routing
rules inside a spring XML file such as
+ inside the <span style="text-decoration:
underline;"></span><span class="nobr"><a
+ href="http://activemq.apache.org/" title="Visit page outside Confluence"
rel="nofollow">Apache ActiveMQ</a></span>.<br
+ /><br />So we're working hard to allow folks to specify routing
rules however they like - despite what I
+ prefer :). Irrespective of how you write your routing rules, we can <a
+ href="http://activemq.apache.org/camel/visualisation.html">visualise
them</a> so anyone can easily
+ understand them.<br /><blockquote>However it is important to
note that all developers are not
+ middleware experts and have no wish to be. Indeed the enterprises they
work for want their developers to spend as
+ little time and effort as possible on middleware plumbing. They need and
demand tools which will enable them to
+ get at least 80% of patterns done without having to understand the
middleware architecture, it's threading model,<br
+ /></blockquote>Thats one of the main things we're trying to
attempt with Camel - letting folks who are
+ not middleware experts easily use the <a
+
href="http://activemq.apache.org/camel/enterprise-integration-patterns.html"
title="Enterprise Integration
+ Patterns">Enterprise Integration Patterns</a> using a single
line of Java code - using <a
+ href="http://activemq.apache.org/camel/components.html">any transport
or component </a>with minimal
+ configuration required.<br /><blockquote>it's support for
configurable expression languages etc.<br
+ /></blockquote>I find it hard to understand how any tool can be
usable by folks without some kind of
+ expression language that they understand - whether its Java or SQL or
XPath/XQuery or whatnot. Even a visual query
+ definer is a language that users need to know.<br
/><blockquote>Most people express their requirements
+ in a declarative way- I have data at A that needs to get to B, on it's
way I need to perform transformation,
+ validation, logging etc. (indeed the EIP book itself does this) .
However Camel has taken a very Java centric
+ approach and I think this increases it's complexity unnecessarily.<br
/></blockquote>We are actually
+ trying to be as declarative as possible - don't let the fact that you
can use Java as the DSL confuse you. e.g.
+ here's what you just described in Camel using a single line of Java
code...<br /><blockquote>from(a).<br
+ />to("xsd:org/cheese/something.xsd").<br
/>to("xslt:com/acme/mytransform.xsl").<br
/>to("log:com.acme.MyLogger").<br
+ />to(b);<br /></blockquote>Its hard to be more concise
than that in Java code. But sure - you could
+ use some other language or XML or UI tool etc<br
/><blockquote>2. Camel presents transports as
+ nice-simple looking endpoint URIs in Java. However configuration of
these transports may not be as simple as it
+ seems. There appears to me to be a potential disconnection between the
Camel processors and the Camel Components
+ in terms of configuration.<br /></blockquote>You can always
configure anything in Camel via Java or
+ Spring; a component, endpoint, processor etc. The URI is just a
shorthand notation for configurating things; which
+ tends to work well with endpoints as usually all the smart configuration
is in the component.<br /><blockquote>In
+ the presentation processors use endpoints which can be configured using
Spring within Camel. However it would
+ appear that many of the component implementations are inherited from
ServiceMix and these properties will need to
+ be set presumably within the ServiceMix container configuration?
</blockquote>Not so - all the components
+ are configured in Spring via Camel. If you want to talk to ServiceMix
components and endpoints you can use the NMR
+ and the <a href="http://activemq.apache.org/camel/jbi.html">JBI
endpoint</a>.<br /><blockquote>When
+ you have multiple XML configurations to use a transport then the pretty
looking URI is hiding a lot of complexity
+ under the hood.<br /></blockquote>I hear you. We've tried
very hard to make things as easy as is
+ possible with minimal configuration; for example most configuration
tends to be on the Component rather than the
+ Endpoint. But you can configure things however you like in Java code or
Guice or Spring.<br /><blockquote>3.
+ Some of the pattern implementations look a little short on credibility -
take the aggregator pattern for example
+ the "aggregator" pattern does not seem to have the concept of a store -
so in essence one must have access to all
+ of the messages which require aggregation or must hold aggregations in
memory for the configurable timeout period.
+ This will clearly not work in a scalable way. Likewise as regards
clustering - if you are looking to aggregate 2
+ messages and they turn up on different servers you gotta
problem.</blockquote>You're right I purposely
+ missed out some of the detail on a few slides (such as specifying some
kind of persistence store or strategy for
+ aggregator or for idempotent consumer) but that is easily done via a
pluggable strategies Spring beans. However
+ just because I missed out some detail on some slides (its kinda hard in
an hour to present all the detail in all
+ the patterns as well as the rest of Camel) please don't think that
somehow Camel isn't short on capabilities.<br
+ /><blockquote>To summarise Camel is clearly a worthy set of
widgets and they will work for very simple
+ applications without Enterprise requirements.<br
/></blockquote>Ouch :). We've actually lots of
+ customers using Camel today in production with very Enterprise
requirements. <span class="nobr"></span><a
+ href="http://activemq.apache.org/" title="Visit page outside Confluence"
rel="nofollow">Apache ActiveMQ</a>
+ 5.0 actually ships <a
href="http://activemq.apache.org/enterprise-integration-patterns.html">fully
+ integrated with Camel</a> so we've tons of users in production
using Camel today.<br /><br />I
+ hope I've managed to straighten out some misunderstandings on Camel; its
definitely a great fit for enterprise
+ requirements. Thanks for your great feedback - I'll definitely take it
on board on future presentations and try
+ and avoid confusing other folks :).
+ </content>
+ <link rel='alternate' type='text/html'
+
href='http://macstrac.blogspot.com/2007/11/feedback-on-my-camel-talk-at-ijtc.html'
+ title='Feedback on my Camel talk at the IJTC conference'/>
+ <link rel='replies' type='text/html'
+
href='http://www.blogger.com/comment.g?blogID=637417304187784899&postID=8132857663967818867'
+ title='2 Comments'/>
+ <link rel='replies' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/8132857663967818867/comments/default'
title='Post Comments'/>
+ <link rel='self' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/posts/default/8132857663967818867'/>
+ <link rel='edit' type='application/atom+xml'
+
href='http://www.blogger.com/feeds/637417304187784899/posts/default/8132857663967818867'/>
+ <author>
+ <name>James Strachan</name>
+ </author>
+ </entry>
+ <entry>
+
<id>tag:blogger.com,1999:blog-637417304187784899.post-2980017428692756666</id>
+ <published>2007-11-13T13:33:00.000Z</published>
+ <updated>2007-11-13T13:35:25.014Z</updated>
+ <title type='text'>webcast today on Apache ActiveMQ</title>
+ <content type='html'>Sorry for the really late notice - bad James! - but
I<a
+ href="http://open.iona.com/resources/news/#webinar">'m doing a
webinar today</a> on <a
+ href="http://activemq.apache.org/">Apache ActiveMQ</a> with my
fellow committer <a
+ href="http://hiramchirino.com/index.html">Hiram Chirino</a>.
Feel free to pop by and join us - or if
+ you're snowed you can catch the recording later on.
+ </content>
+ <link rel='alternate' type='text/html'
+
href='http://macstrac.blogspot.com/2007/11/webcast-today-on-apache-activemq.html'
+ title='webcast today on Apache ActiveMQ'/>
+ <link rel='replies' type='text/html'
+
href='http://www.blogger.com/comment.g?blogID=637417304187784899&postID=2980017428692756666'
+ title='0 Comments'/>
+ <link rel='replies' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/2980017428692756666/comments/default'
title='Post Comments'/>
+ <link rel='self' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/posts/default/2980017428692756666'/>
+ <link rel='edit' type='application/atom+xml'
+
href='http://www.blogger.com/feeds/637417304187784899/posts/default/2980017428692756666'/>
+ <author>
+ <name>James Strachan</name>
+ </author>
+ </entry>
+ <entry>
+
<id>tag:blogger.com,1999:blog-637417304187784899.post-8437027470203977326</id>
+ <published>2007-11-13T13:10:00.000Z</published>
+ <updated>2007-11-13T13:32:23.119Z</updated>
+ <title type='text'>my slides on ActiveMQ and Camel from last weeks Dublin
Conference</title>
+ <content type='html'>They are not that useful if you missed me talk, as
they are low on bullet points and high on
+ pictures :) But if you were there, here are the slides in PDF
format...<br /><ul><li><pre><a
+
href="http://people.apache.org/%7Ejstrachan/talks/ActiveMQ-Dublin07.pdf">ActiveMQ-Dublin07.pdf</a></pre></li><li><pre><a
+
href="http://people.apache.org/%7Ejstrachan/talks/Camel-Dublin07.pdf">Camel-Dublin07.pdf</a>
<br /></pre></li></ul></content>
+ <link rel='alternate' type='text/html'
+
href='http://macstrac.blogspot.com/2007/11/my-slides-on-activemq-and-camel-from.html'
+ title='my slides on ActiveMQ and Camel from last weeks Dublin
Conference'/>
+ <link rel='replies' type='text/html'
+
href='http://www.blogger.com/comment.g?blogID=637417304187784899&postID=8437027470203977326'
+ title='0 Comments'/>
+ <link rel='replies' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/8437027470203977326/comments/default'
title='Post Comments'/>
+ <link rel='self' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/posts/default/8437027470203977326'/>
+ <link rel='edit' type='application/atom+xml'
+
href='http://www.blogger.com/feeds/637417304187784899/posts/default/8437027470203977326'/>
+ <author>
+ <name>James Strachan</name>
+ </author>
+ </entry>
+ <entry>
+
<id>tag:blogger.com,1999:blog-637417304187784899.post-4574479486073739581</id>
+ <published>2007-11-13T13:09:00.000Z</published>
+ <updated>2007-11-13T13:10:23.292Z</updated>
+ <title type='text'>a great presentation on REST, JAX-WS and JSR 311</title>
+ <content type='html'>A great <a
+
href="http://www.innoq.com/blog/st/presentations/2007/2007-11-06-JSR-311-W-JAX.pdf"
class="jive-link-external">presentation</a>
+ from <a href="http://www.innoq.com/blog/st/"
class="jive-link-external">Stefan Tilkov</a> on REST,
+ JAX-WS and JSR 311; highly recommended.
+ </content>
+ <link rel='alternate' type='text/html'
+
href='http://macstrac.blogspot.com/2007/11/great-presentation-on-rest-jax-ws-and.html'
+ title='a great presentation on REST, JAX-WS and JSR 311'/>
+ <link rel='replies' type='text/html'
+
href='http://www.blogger.com/comment.g?blogID=637417304187784899&postID=4574479486073739581'
+ title='0 Comments'/>
+ <link rel='replies' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/4574479486073739581/comments/default'
title='Post Comments'/>
+ <link rel='self' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/posts/default/4574479486073739581'/>
+ <link rel='edit' type='application/atom+xml'
+
href='http://www.blogger.com/feeds/637417304187784899/posts/default/4574479486073739581'/>
+ <author>
+ <name>James Strachan</name>
+ </author>
+ </entry>
+ <entry>
+
<id>tag:blogger.com,1999:blog-637417304187784899.post-459928383168678386</id>
+ <published>2007-11-05T10:34:00.000Z</published>
+ <updated>2007-11-05T10:46:07.867Z</updated>
+ <title type='text'>Speaking at the Irish Java Technology Conference on
Thursday and Friday</title>
+ <content type='html'>I'll be <a
href="http://ijtc.firstport.ie/bio.aspx?sid=33">speaking</a> this week
+ at the <a href="http://ijtc.firstport.ie/"><span
id="cmsContent"></span>Irish Java Technology
+ Conference</a> this week on Thursday and Friday. My talks
are<br /><ul><li><a
+ href="http://ijtc.firstport.ie/lecture.aspx?lid=34">Enterprise
Messaging With Apache ActiveMQ</a></li><li><a
+ href="http://ijtc.firstport.ie/lecture.aspx?lid=14">Easy Enterprise
Integration Patterns with Apache Camel,
+ ActiveMQ and ServiceMix</a></li></ul>Do pop along and
say hi if you're gonna be in the Dublin
+ area this week.
+ </content>
+ <link rel='alternate' type='text/html'
+
href='http://macstrac.blogspot.com/2007/11/speaking-at-irish-java-technology.html'
+ title='Speaking at the Irish Java Technology Conference on Thursday
and Friday'/>
+ <link rel='replies' type='text/html'
+
href='http://www.blogger.com/comment.g?blogID=637417304187784899&postID=459928383168678386'
+ title='3 Comments'/>
+ <link rel='replies' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/459928383168678386/comments/default'
title='Post Comments'/>
+ <link rel='self' type='application/atom+xml'
+
href='http://macstrac.blogspot.com/feeds/posts/default/459928383168678386'/>
+ <link rel='edit' type='application/atom+xml'
+
href='http://www.blogger.com/feeds/637417304187784899/posts/default/459928383168678386'/>
+ <author>
+ <name>James Strachan</name>
+ </author>
+ </entry>
+</feed>
\ No newline at end of file
diff --git a/tests/features/pom.xml b/tests/features/pom.xml
index e3e7f7c8..3f75f60d 100644
--- a/tests/features/pom.xml
+++ b/tests/features/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
@@ -42,6 +42,7 @@
<module>camel-arangodb</module>
<module>camel-as2</module>
<module>camel-asn1</module>
+ <module>camel-atom</module>
<module>camel-aws2-iam</module>
<module>camel-aws2-s3</module>
<module>camel-aws2-ses</module>