[hornetq-commits] JBoss hornetq SVN: r10529 - in trunk: docs and 6 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Apr 19 06:32:50 EDT 2011


Author: ataylor
Date: 2011-04-19 06:32:50 -0400 (Tue, 19 Apr 2011)
New Revision: 10529

Added:
   trunk/docs/rest-manual/
   trunk/docs/rest-manual/HornetQ_Rest_Manual-en.iml
   trunk/docs/rest-manual/en/
   trunk/docs/rest-manual/en/Author_Group.xml
   trunk/docs/rest-manual/en/Book_Info.xml
   trunk/docs/rest-manual/en/HornetQ_Rest_Manual.ent
   trunk/docs/rest-manual/en/HornetQ_Rest_Manual.xml
   trunk/docs/rest-manual/en/about.xml
   trunk/docs/rest-manual/en/basics.xml
   trunk/docs/rest-manual/en/consuming-messages.xml
   trunk/docs/rest-manual/en/creating-destinations.xml
   trunk/docs/rest-manual/en/installation.xml
   trunk/docs/rest-manual/en/introduction.xml
   trunk/docs/rest-manual/en/jms-and-rest.xml
   trunk/docs/rest-manual/en/notice.xml
   trunk/docs/rest-manual/en/posting-messages.xml
   trunk/docs/rest-manual/en/pushing-messages.xml
   trunk/docs/rest-manual/en/security.xml
   trunk/docs/rest-manual/pom.xml
   trunk/hornetq-rest/hornetq-rest-all.iml
   trunk/hornetq-rest/hornetq-rest/hornetq-rest.iml
Removed:
   trunk/hornetq-rest/docbook/pom.xml
   trunk/hornetq-rest/docbook/reference/en/
Modified:
   trunk/docs/pom.xml
   trunk/docs/rest-manual/en/master.xml
   trunk/hornetq-rest/hornetq-rest/pom.xml
   trunk/hornetq-rest/pom.xml
   trunk/hornetq.ipr
   trunk/hornetq.iws
   trunk/pom.xml
Log:
added rest jar and integrated docs

Modified: trunk/docs/pom.xml
===================================================================
--- trunk/docs/pom.xml	2011-04-19 03:31:49 UTC (rev 10528)
+++ trunk/docs/pom.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -30,6 +30,7 @@
    <modules>
       <module>user-manual</module>
       <module>quickstart-guide</module>
+      <module>rest-manual</module>
    </modules>
 
 

Added: trunk/docs/rest-manual/HornetQ_Rest_Manual-en.iml
===================================================================
--- trunk/docs/rest-manual/HornetQ_Rest_Manual-en.iml	                        (rev 0)
+++ trunk/docs/rest-manual/HornetQ_Rest_Manual-en.iml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
+

Copied: trunk/docs/rest-manual/en/Author_Group.xml (from rev 10511, trunk/docs/quickstart-guide/en/Author_Group.xml)
===================================================================
--- trunk/docs/rest-manual/en/Author_Group.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/Author_Group.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,28 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+]>
+<authorgroup>
+  <author>
+    <firstname>Bill</firstname>
+    <surname>Burke</surname>
+    <affiliation>
+      <shortaffil>Red Hat, Inc.</shortaffil>
+      <orgdiv>JBoss</orgdiv>
+    </affiliation>
+  </author>
+</authorgroup>

Copied: trunk/docs/rest-manual/en/Book_Info.xml (from rev 10511, trunk/docs/quickstart-guide/en/Book_Info.xml)
===================================================================
--- trunk/docs/rest-manual/en/Book_Info.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/Book_Info.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,45 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!-- This document was created with Syntext Serna Free. -->
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+]>
+<bookinfo id="HornetQ_Rest_Guide">
+  <title>HornetQ Rest Guide</title>
+  <subtitle>Putting the buzz in messaging</subtitle>
+  <productname>HornetQ</productname>
+  <edition>2.1.0</edition>
+  <pubsnumber>1</pubsnumber>
+  <abstract>
+    <para>This HornetQ Rest guide will help you get HornetQ Rest up and running in a few minutes and will explain the basics needed
+    to get started.</para>
+  </abstract>
+  <corpauthor>
+    <inlinemediaobject>
+      <imageobject>
+        <imagedata fileref="images/hornetQ_logo_600px.png" format="PNG"/>
+      </imageobject>
+      <textobject>
+        <phrase>HornetQ Logo</phrase>
+      </textobject>
+    </inlinemediaobject>
+  </corpauthor>
+  <copyright>
+    <year>&YEAR;</year>
+    <holder>&HOLDER;</holder>
+  </copyright>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Author_Group.xml"/>
+</bookinfo>

Copied: trunk/docs/rest-manual/en/HornetQ_Rest_Manual.ent (from rev 10511, trunk/docs/quickstart-guide/en/HornetQ_QuickStart_Guide.ent)
===================================================================
--- trunk/docs/rest-manual/en/HornetQ_Rest_Manual.ent	                        (rev 0)
+++ trunk/docs/rest-manual/en/HornetQ_Rest_Manual.ent	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,18 @@
+<!ENTITY PRODUCT "HornetQ">
+<!ENTITY BOOKID "HornetQ_Rest_Manual">
+<!ENTITY YEAR "2011">
+<!ENTITY HOLDER "Red Hat Inc.">
+<!ENTITY semi ";"><!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+

Copied: trunk/docs/rest-manual/en/HornetQ_Rest_Manual.xml (from rev 10511, trunk/docs/quickstart-guide/en/HornetQ_QuickStart_Guide.xml)
===================================================================
--- trunk/docs/rest-manual/en/HornetQ_Rest_Manual.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/HornetQ_Rest_Manual.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,34 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+
+]>
+<book>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Book_Info.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="notice.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="about.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="installation.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="basics.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="posting-messages.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="consuming-messages.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pushing-messages.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="creating-destinations.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="security.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="jms-and-rest.xml"/>
+</book>

Copied: trunk/docs/rest-manual/en/about.xml (from rev 10511, trunk/docs/quickstart-guide/en/about.xml)
===================================================================
--- trunk/docs/rest-manual/en/about.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/about.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+]>
+
+<chapter id="about">
+   <title>About HornetQ</title>
+    <para>What is HornetQ?</para>
+    <itemizedlist>
+        <listitem>
+            <para>HornetQ is an open source project to build a multi-protocol, embeddable, very high
+                performance, clustered, asynchronous messaging system.</para>
+        </listitem>
+        <listitem>
+            <para>For answers to more questions about what HornetQ is and what it isn't please visit
+                the <ulink url="http://www.jboss.org/community/wiki/HornetQGeneralFAQs">FAQs wiki
+                    page</ulink>.</para>
+        </listitem>
+    </itemizedlist>
+    <para>Why use HornetQ? Here are just a few of the reasons:</para>
+    <itemizedlist>
+        <listitem>
+            <para>100% open source software. HornetQ is licenced using the Apache Software License v2.0
+                to minimise barriers to adoption.</para>
+        </listitem>
+        <listitem>
+            <para>HornetQ is designed with usability in mind.</para>
+        </listitem>
+        <listitem>
+            <para>Written in Java. Runs on any platform with a Java 6+ runtime, that's everything
+                from Windows desktops to IBM mainframes.</para>
+        </listitem>
+        <listitem>
+            <para>Amazing performance. Our class beating high performance journal provides persistent
+                messaging performance at rates normally seen for non persistent messaging, our non
+                persistent messaging performance rocks the boat too.</para>
+        </listitem>
+        <listitem>
+            <para>Full feature set. All the features you'd expect in any serious messaging system,
+                and others you won't find anywhere else.</para>
+        </listitem>
+        <listitem>
+            <para>Elegant, clean-cut design with minimal third party dependencies. Run HornetQ
+                stand-alone, run it in integrated in your favourite JEE application server, or run
+                it embedded inside your own product. It's up to you.</para>
+        </listitem>
+        <listitem>
+            <para>Seamless high availability. We provide a HA solution with automatic client
+                failover so you can guarantee zero message loss or duplication in event of server
+                failure.</para>
+        </listitem>
+        <listitem>
+            <para>Hugely flexible clustering. Create clusters of servers that know how to load
+                balance messages. Link geographically distributed clusters over unreliable
+                connections to form a global network. Configure routing of messages in a highly
+                flexible way.</para>
+        </listitem>
+        <listitem>
+            <para>For a full list of features, please see the <ulink
+                url="http://www.jboss.org/community/wiki/HornetQFeatures">features wiki
+                page</ulink> .</para>
+        </listitem>
+    </itemizedlist>
+</chapter>
\ No newline at end of file

Added: trunk/docs/rest-manual/en/basics.xml
===================================================================
--- trunk/docs/rest-manual/en/basics.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/basics.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+]>
+  <chapter>
+    <title>HornetQ REST Interface Basics</title>
+
+    <para>The HornetQ REST interface publishes a variety of REST resources to
+    perform various tasks on a queue or topic. Only the top-level queue and
+    topic URI schemes are published to the outside world. You must discover
+    all over resources to interact with by looking for and traversing links.
+    You'll find published links within custom response headers and embedded in
+    published XML representations. Let's look at how this works.</para>
+
+    <sect1>
+      <title>Queue and Topic Resources</title>
+
+      <para>To interact with a queue or topic you do a HEAD or GET request on
+      the following relative URI pattern:</para>
+
+      <programlisting>/queues/{name}
+/topics/{name}
+</programlisting>
+
+      <para>The base of the URI is the base URL of the WAR you deployed the
+      HornetQ REST server within as defined in the Installation and
+      Configuration section of this document. Replace the
+      <literal>{name}</literal> string within the above URI pattern with the
+      name of the queue or topic you are interested in interacting with. For
+      example if you have configured a JMS topic named "foo" within your
+      <literal>hornetq-jms.xml</literal> file, the URI name should be
+      "jms.topic.foo". If you have configured a JMS queue name "bar" within
+      your <literal>hornetq-jms.xml</literal> file, the URI name should be
+      "jms.queue.bar". Internally, HornetQ prepends the "jms.topic" or
+      "jms.queue" strings to the name of the deployed destination. Next,
+      perform your HEAD or GET request on this URI. Here's what a
+      request/response would look like.</para>
+
+      <programlisting>HEAD /queues/jms.queue.bar HTTP/1.1
+Host: example.com
+
+--- Response ---
+HTTP/1.1 200 Ok
+msg-create: http://example.com/queues/jms.queue.bar/create
+msg-pull-consumers: http://example.com/queues/jms.queue.bar/pull-consumers
+msg-push-consumers: http://example.com/queues/jms.queue.bar/push-consumers
+</programlisting>
+
+      <para>The HEAD or GET response contains a number of custom response
+      headers that are URLs to additional REST resources that allow you to
+      interact with the queue or topic in different ways. It is important not
+      to rely on the scheme of the URLs returned within these headers as they
+      are an implementation detail. Treat them as opaque and query for them
+      each and every time you initially interact (at boot time) with the
+      server. If you treat all URLs as opaque then you will be isolated from
+      implementation changes as the HornetQ REST interface evolves over
+      time.</para>
+
+      <para></para>
+    </sect1>
+
+    <sect1>
+      <title>Queue Resource Response Headers</title>
+
+      <para>Below is a list of response headers you should expect when
+      interacting with a Queue resource.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>msg-create</term>
+
+          <listitem>
+            <para>This is a URL you POST messages to. The semantics of this
+            link are described in Chapter 4.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>msg-create-with-id</term>
+
+          <listitem>
+            <para>This is a URL template you POST message to. The semantics of
+            this link are described in Chapter 4.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>msg-pull-consumers</term>
+
+          <listitem>
+            <para>This is a URL for creating consumers that will pull from a
+            queue. The semantics of this link are described in Chapter
+            5.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>msg-push-consumers</term>
+
+          <listitem>
+            <para>This is a URL for registering other URLs you want the
+            HornetQ REST server to push messages to. The semantics of this
+            link are described in Chapter 6</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </sect1>
+
+    <sect1>
+      <title>Topic Resource Respones Headers</title>
+
+      <para>Below is a list of response headers you should expect when
+      interacting with a Topic resource.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>msg-create</term>
+
+          <listitem>
+            <para>This is a URL you POST messages to. The semantics of this
+            link are described in Chapter 4.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>msg-create-with-id</term>
+
+          <listitem>
+            <para>This is a URL template you POST messages to. The semantics
+            of this link are described in Chapter 4.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>msg-pull-subscriptions</term>
+
+          <listitem>
+            <para>This is a URL for creating subscribers that will pull from a
+            topic. The semantics of this link are described in Chapter
+            5.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>msg-push-subscriptions</term>
+
+          <listitem>
+            <para>This is a URL for registering other URLs you want the
+            HornetQ REST server to push messages to. The semantics of this
+            link are described in Chapter 6.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+
+      <para></para>
+    </sect1>
+  </chapter>
\ No newline at end of file

Added: trunk/docs/rest-manual/en/consuming-messages.xml
===================================================================
--- trunk/docs/rest-manual/en/consuming-messages.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/consuming-messages.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,696 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+]>
+
+<chapter>
+  <title>Consuming Messages via Pull</title>
+
+  <para>There are two different ways to consume messages from a topic or
+  queue. You can wait and have the messaging server push them to you, or you
+  can continuously poll the server yourself to see if messages are
+  available. This chapter discusses the latter. Consuming messages via a
+  pull works almost identically for queues and topics with some minor, but
+  important caveats. To start consuming you must create a consumer resource
+  on the server that is dedicated to your client. Now, this pretty much
+  breaks the stateless principle of REST, but after much prototyping, this
+  is the best way to work most effectively with HornetQ through a REST
+  interface.</para>
+
+  <para>You create consumer resources by doing a simple POST to the URL
+  published by the <literal>msg-pull-consumers</literal> response header if
+  you're interacting with a queue, the
+  <literal>msg-pull-subscribers</literal> response header if you're
+  interacting with a topic. These headers are provided by the main queue or
+  topic resource discussed in Chapter 3. Doing an empty POST to one of these
+  URLs will create a consumer resource that follows an auto-acknowledge
+  protocol and, if you're interacting with a topic, creates a temporty
+  subscription to the topic. If you want to use the acknowledgement protocol
+  and/or create a durable subscription (topics only), then you must use the
+  form parameters (<literal>application/x-www-form-urlencoded</literal>)
+  described below.</para>
+
+  <variablelist>
+    <varlistentry>
+      <term>autoAck</term>
+
+      <listitem>
+        <para>A value of <literal>true</literal> or <literal>false</literal>
+        can be given. This defaults to <literal>true</literal> if you do not
+        pass this parameter.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>durable</term>
+
+      <listitem>
+        <para>A value of <literal>true</literal> or <literal>false</literal>
+        can be given. This defaults to <literal>false</literal> if you do
+        not pass this parameter. Only available on topics. This specifies
+        whether you want a durable subscription or not. A durable
+        subscription persists through server restart.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>name</term>
+
+      <listitem>
+        <para>This is the name of the durable subscription. If you do not
+        provide this parameter, the name will be automatically generated by
+        the server. Only usable on topics.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>selector</term>
+
+      <listitem>
+        <para>This is an optional JMS selector string. The HornetQ REST
+        interface adds HTTP headers to the JMS message for REST produced
+        messages. HTTP headers are prefixed with "http_" and every '-'
+        charactor is converted to a '$'.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>idle-timeout</term>
+
+      <listitem>
+        <para>For a topic subscription, idle time in milliseconds in which
+        the consumer connections will be closed if idle.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>delete-when-idle</term>
+
+      <listitem>
+        <para>Boolean value, If true, a topic subscription will be deleted
+        (even if it is durable) when an the idle timeout is reached.</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+
+  <sect1>
+    <title>Auto-Acknowledge</title>
+
+    <para>This section focuses on the auto-acknowledge protocol for
+    consuming messages via a pull. Here's a list of the response headers and
+    URLs you'll be interested in.</para>
+
+    <variablelist>
+      <varlistentry>
+        <term>msg-pull-consumers</term>
+
+        <listitem>
+          <para>The URL of a factory resource for creating queue consumer
+          resources. You will pull from these created resources.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>msg-pull-subscriptions</term>
+
+        <listitem>
+          <para>The URL of a factory resource for creating topic
+          subscription resources. You will pull from the created
+          resources.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>msg-consume-next</term>
+
+        <listitem>
+          <para>The URL you will pull the next message from. This is
+          returned with every response.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>msg-consumer</term>
+
+        <listitem>
+          <para>This is a URL pointing back to the consumer or subscription
+          resource created for the client.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+
+    <sect2>
+      <title>Creating an Auto-Ack Consumer or Subscription</title>
+
+      <para>Here is an example of creating an auto-acknowledged queue pull
+      consumer.</para>
+
+      <orderedlist>
+        <listitem>
+          <para>Find the pull-consumers URL by doing a HEAD or GET request
+          to the base queue resource.</para>
+
+          <programlisting>HEAD /queues/jms.queue.bar HTTP/1.1
+ Host: example.com
+
+ --- Response ---
+ HTTP/1.1 200 Ok
+ msg-create: http://example.com/queues/jms.queue.bar/create
+ msg-pull-consumers: http://example.com/queues/jms.queue.bar/pull-consumers
+ msg-push-consumers: http://example.com/queues/jms.queue.bar/push-consumers
+ </programlisting>
+        </listitem>
+
+        <listitem>
+          <para>Next do an empty POST to the URL returned in the
+          <literal>msg-pull-consumers</literal> header.</para>
+
+          <programlisting>POST /queues/jms.queue.bar/pull-consumers HTTP/1.1
+ Host: example.com
+
+ --- response ---
+ HTTP/1.1 201 Created
+ Location: http://example.com/queues/jms.queue.bar/pull-consumers/auto-ack/333
+ msg-consume-next: http://example.com/queues/jms.queue.bar/pull-consumers/auto-ack/333/consume-next-1
+ </programlisting>
+
+          <para>The <literal>Location</literal> header points to the JMS
+          consumer resource that was created on the server. It is good to
+          remember this URL, although, as you'll see later, it is
+          transmitted with each response just to remind you.</para>
+        </listitem>
+      </orderedlist>
+
+      <para>Creating an auto-acknowledged consumer for a topic is pretty
+      much the same. Here's an example of creating a durable
+      auto-acknowledged topic pull subscription.</para>
+
+      <orderedlist>
+        <listitem>
+          <para>Find the <literal>pull-subscriptions</literal> URL by doing
+          a HEAD or GET request to the base topic resource</para>
+
+          <programlisting>HEAD /topics/jms.topic.bar HTTP/1.1
+ Host: example.com
+
+ --- Response ---
+ HTTP/1.1 200 Ok
+ msg-create: http://example.com/topics/jms.topic.foo/create
+ msg-pull-subscriptions: http://example.com/topics/jms.topic.foo/pull-subscriptions
+ msg-push-subscriptions: http://example.com/topics/jms.topic.foo/push-subscriptions
+ </programlisting>
+        </listitem>
+
+        <listitem>
+          <para>Next do a POST to the URL returned in the
+          <literal>msg-pull-subscriptions</literal> header passing in a
+          <literal>true</literal> value for the <literal>durable</literal>
+          form parameter.</para>
+
+          <programlisting>POST /topics/jms.topic.foo/pull-subscriptions HTTP/1.1
+ Host: example.com
+ Content-Type: application/x-www-form-urlencoded
+
+ durable=true
+
+ --- Response ---
+ HTTP/1.1 201 Created
+ Location: http://example.com/topics/jms.topic.foo/pull-subscriptions/auto-ack/222
+ msg-consume-next: http://example.com/topics/jms.topic.foo/pull-subscriptions/auto-ack/222/consume-next-1
+ </programlisting>
+
+          <para>The <literal>Location</literal> header points to the JMS
+          subscription resource that was created on the server. It is good
+          to remember this URL, although, as you'll see later, it is
+          transmitted with each response just to remind you.</para>
+        </listitem>
+      </orderedlist>
+    </sect2>
+
+    <sect2>
+      <title>Consuming Messages</title>
+
+      <para>After you have created a consumer resource, you are ready to
+      start pulling messages from the server. Notice that when you created
+      the consumer for either the queue or topic, the response contained a
+      <literal>msg-consume-next</literal> response header. POST to the URL
+      contained within this header to consume the next message in the queue
+      or topic subscription. A successful POST causes the server to extract
+      a message from the queue or topic subscription, acknowledge it, and
+      return it to the consuming client. If there are no messages in the
+      queue or topic subscription, a 503 (Service Unavailable) HTTP code is
+      returned.</para>
+
+      <warning>
+        <para>For both successful and unsuccessful posts to the
+        msg-consume-next URL, the response will contain a new
+        msg-consume-next header. You must ALWAYS use this new URL returned
+        within the new msg-consume-next header to consume new
+        messages.</para>
+      </warning>
+
+      <para>Here's an example of pulling multiple messages from the consumer
+      resource.</para>
+
+      <orderedlist>
+        <listitem>
+          <para>Do a POST on the msg-consume-next URL that was returned with
+          the consumer or subscription resource discussed earlier.</para>
+
+          <programlisting>POST /queues/jms.queue.bar/pull-consumers/consume-next-1
+ Host: example.com
+
+ --- Response ---
+ HTTP/1.1 200 Ok
+ Content-Type: application/xml
+ msg-consume-next: http://example.com/queues/jms.queue.bar/pull-consumers/333/consume-next-2
+ msg-consumer: http://example.com/queues/jms.queue.bar/pull-consumers/333
+
+ &lt;order&gt;...&lt;/order&gt;
+ </programlisting>
+
+          <para>The POST returns the message consumed from the queue. It
+          also returns a new msg-consume-next link. Use this new link to get
+          the next message. Notice also a msg-consumer response header is
+          returned. This is a URL that points back to the consumer or
+          subscription resource. You will need that to clean up your
+          connection after you are finished using the queue or topic.</para>
+        </listitem>
+
+        <listitem>
+          <para>The POST returns the message consumed from the queue. It
+          also returns a new msg-consume-next link. Use this new link to get
+          the next message.</para>
+
+          <programlisting>POST /queues/jms.queue.bar/pull-consumers/consume-next-2
+ Host: example.com
+
+ --- Response ---
+ Http/1.1 503 Service Unavailable
+ Retry-After: 5
+ msg-consume-next: http://example.com/queues/jms.queue.bar/pull-consumers/333/consume-next-2
+ </programlisting>
+
+          <para>In this case, there are no messages in the queue, so we get
+          a 503 response back. As per the HTTP 1.1 spec, a 503 response may
+          return a Retry-After head specifying the time in seconds that you
+          should retry a post. Also notice, that another new
+          msg-consume-next URL is present. Although it probabley is the same
+          URL you used last post, get in the habit of using URLs returned in
+          response headers as future versions of HornetQ REST might be
+          redirecting you or adding additional data to the URL after
+          timeouts like this.</para>
+        </listitem>
+
+        <listitem>
+          <para>POST to the URL within the last
+          <literal>msg-consume-next</literal> to get the next
+          message.</para>
+
+          <programlisting>POST /queues/jms.queue.bar/pull-consumers/consume-next-2
+ Host: example.com
+
+ --- Response ---
+ HTTP/1.1 200 Ok
+ Content-Type: application/xml
+ msg-consume-next: http://example.com/queues/jms.queue.bar/pull-consumers/333/consume-next-3
+
+ &lt;order&gt;...&lt;/order&gt;</programlisting>
+        </listitem>
+      </orderedlist>
+    </sect2>
+
+    <sect2>
+      <title>Recovering From Network Failures</title>
+
+      <para>If you experience a network failure and do not know if your post
+      to a msg-consume-next URL was successful or not, just re-do your POST.
+      A POST to a msg-consume-next URL is idempotent, meaning that it will
+      return the same result if you execute on any one msg-consume-next URL
+      more than once. Behind the scenes, the consumer resource caches the
+      last consumed message so that if there is a message failure and you do
+      a re-post, the cached last message will be returned (along with a new
+      msg-consume-next URL). This is the reason why the protocol always
+      requires you to use the next new msg-consume-next URL returned with
+      each response. Information about what state the client is in is
+      embedded within the actual URL.</para>
+    </sect2>
+
+    <sect2>
+      <title>Recovering From Client or Server Crashes</title>
+
+      <para>If the server crashes and you do a POST to the msg-consume-next
+      URL, the server will return a 412 (Preconditions Failed) response
+      code. This is telling you that the URL you are using is out of sync
+      with the server. The response will contain a new msg-consume-next
+      header to invoke on.</para>
+
+      <para>If the client crashes there are multiple ways you can recover.
+      If you have remembered the last msg-consume-next link, you can just
+      re-POST to it. If you have remembered the consumer resource URL, you
+      can do a GET or HEAD request to obtain a new msg-consume-next URL. If
+      you have created a topic subscription using the name parameter
+      discussed earlier, you can re-create the consumer. Re-creation will
+      return a msg-consume-next URL you can use. If you cannot do any of
+      these things, you will have to create a new consumer.</para>
+
+      <para>The problem with the auto-acknowledge protocol is that if the
+      client or server crashes, it is possible for you to skip messages. The
+      scenario would happen if the server crashes after auto-acknowledging a
+      message and before the client receives the message. If you want more
+      reliable messaging, then you must use the acknowledgement
+      protocol.</para>
+    </sect2>
+  </sect1>
+
+  <sect1>
+    <title>Manual Acknowledgement</title>
+
+    <para>The manual acknowledgement protocol is similar to the auto-ack
+    protocol except there is an additional round trip to the server to tell
+    it that you have received the message and that the server can internally
+    ack the message. Here is a list of the respone headers you will be
+    interested in.</para>
+
+    <variablelist>
+      <varlistentry>
+        <term>msg-pull-consumers</term>
+
+        <listitem>
+          <para>The URL of a factory resource for creating queue consumer
+          resources. You will pull from these created resources</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>msg-pull-subscriptions</term>
+
+        <listitem>
+          <para>The URL of a factory resource for creating topic
+          subscription resources. You will pull from the created
+          resources.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>msg-acknowledge-next</term>
+
+        <listitem>
+          <para>URL used to obtain the next message in the queue or topic
+          subscription. It does not acknowledge the message though.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>msg-acknowledgement</term>
+
+        <listitem>
+          <para>URL used to acknowledge a message.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>msg-consumer</term>
+
+        <listitem>
+          <para>This is a URL pointing back to the consumer or subscription
+          resource created for the client.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+
+    <sect2>
+      <title>Creating manually-acknowledged consumers or
+      subscriptions</title>
+
+      <para>Here is an example of creating an auto-acknowledged queue pull
+      consumer.</para>
+
+      <orderedlist>
+        <listitem>
+          <para>Find the pull-consumers URL by doing a HEAD or GET request
+          to the base queue resource.</para>
+
+          <programlisting>HEAD /queues/jms.queue.bar HTTP/1.1
+ Host: example.com
+
+ --- Response ---
+ HTTP/1.1 200 Ok
+ msg-create: http://example.com/queues/jms.queue.bar/create
+ msg-pull-consumers: http://example.com/queues/jms.queue.bar/pull-consumers
+ msg-push-consumers: http://example.com/queues/jms.queue.bar/push-consumers
+ </programlisting>
+        </listitem>
+
+        <listitem>
+          <para>Next do a POST to the URL returned in the
+          <literal>msg-pull-consumers</literal> header passing in a
+          <literal>false</literal> value to the <literal>autoAck</literal>
+          form parameter .</para>
+
+          <programlisting>POST /queues/jms.queue.bar/pull-consumers HTTP/1.1
+ Host: example.com
+ Content-Type: application/x-www-form-urlencoded
+
+ autoAck=false
+
+ --- response ---
+ HTTP/1.1 201 Created
+ Location: http://example.com/queues/jms.queue.bar/pull-consumers/acknowledged/333
+ msg-acknowledge-next: http://example.com/queues/jms.queue.bar/pull-consumers/acknowledged/333/acknowledge-next-1
+ </programlisting>
+
+          <para>The <literal>Location</literal> header points to the JMS
+          consumer resource that was created on the server. It is good to
+          remember this URL, although, as you'll see later, it is
+          transmitted with each response just to remind you.</para>
+        </listitem>
+      </orderedlist>
+
+      <para>Creating an manually-acknowledged consumer for a topic is pretty
+      much the same. Here's an example of creating a durable
+      manually-acknowledged topic pull subscription.</para>
+
+      <orderedlist>
+        <listitem>
+          <para>Find the <literal>pull-subscriptions</literal> URL by doing
+          a HEAD or GET request to the base topic resource</para>
+
+          <programlisting>HEAD /topics/jms.topic.bar HTTP/1.1
+ Host: example.com
+
+ --- Response ---
+ HTTP/1.1 200 Ok
+ msg-create: http://example.com/topics/jms.topic.foo/create
+ msg-pull-subscriptions: http://example.com/topics/jms.topic.foo/pull-subscriptions
+ msg-push-subscriptions: http://example.com/topics/jms.topic.foo/push-subscriptions
+ </programlisting>
+        </listitem>
+
+        <listitem>
+          <para>Next do a POST to the URL returned in the
+          <literal>msg-pull-subscriptions</literal> header passing in a
+          <literal>true</literal> value for the <literal>durable</literal>
+          form parameter and a <literal>false</literal> value to the
+          <literal>autoAck</literal> form parameter.</para>
+
+          <programlisting>POST /topics/jms.topic.foo/pull-subscriptions HTTP/1.1
+ Host: example.com
+ Content-Type: application/x-www-form-urlencoded
+
+ durable=true&amp;autoAck=false
+
+ --- Response ---
+ HTTP/1.1 201 Created
+ Location: http://example.com/topics/jms.topic.foo/pull-subscriptions/acknowledged/222
+ msg-acknowledge-next: http://example.com/topics/jms.topic.foo/pull-subscriptions/acknowledged/222/consume-next-1
+ </programlisting>
+
+          <para>The <literal>Location</literal> header points to the JMS
+          subscription resource that was created on the server. It is good
+          to remember this URL, although, as you'll see later, it is
+          transmitted with each response just to remind you.</para>
+        </listitem>
+      </orderedlist>
+    </sect2>
+
+    <sect2>
+      <title>Consuming and Acknowledging a Message</title>
+
+      <para>After you have created a consumer resource, you are ready to
+      start pulling messages from the server. Notice that when you created
+      the consumer for either the queue or topic, the response contained a
+      <literal>msg-acknowledge-next</literal> response header. POST to the
+      URL contained within this header to consume the next message in the
+      queue or topic subscription. If there are no messages in the queue or
+      topic subscription, a 503 (Service Unavailable) HTTP code is returned.
+      A successful POST causes the server to extract a message from the
+      queue or topic subscription and return it to the consuming client. It
+      does not acknowledge the message though. The response will contain the
+      <literal>acknowledgement</literal> header which you will use to
+      acknowledge the message.</para>
+
+      <para>Here's an example of pulling multiple messages from the consumer
+      resource.</para>
+
+      <orderedlist>
+        <listitem>
+          <para>Do a POST on the msg-acknowledge-next URL that was returned
+          with the consumer or subscription resource discussed
+          earlier.</para>
+
+          <programlisting>POST /queues/jms.queue.bar/pull-consumers/consume-next-1
+ Host: example.com
+
+ --- Response ---
+ HTTP/1.1 200 Ok
+ Content-Type: application/xml
+ msg-acknowledgement: http://example.com/queues/jms.queue.bar/pull-consumers/333/acknowledgement/2
+ msg-consumer: http://example.com/queues/jms.queue.bar/pull-consumers/333
+
+ &lt;order&gt;...&lt;/order&gt;
+ </programlisting>
+
+          <para>The POST returns the message consumed from the queue. It
+          also returns a <literal>msg-acknowledgemen</literal>t link. You
+          will use this new link to acknowledge the message. Notice also a
+          <literal>msg-consumer</literal> response header is returned. This
+          is a URL that points back to the consumer or subscription
+          resource. You will need that to clean up your connection after you
+          are finished using the queue or topic.</para>
+        </listitem>
+
+        <listitem>
+          <para>Acknowledge or unacknowledge the message by doing a POST to
+          the URL contained in the <literal>msg-acknowledgement</literal>
+          header. You must pass an <literal>acknowledge</literal> form
+          parameter set to <literal>true</literal> or
+          <literal>false</literal> depending on whether you want to
+          acknowledge or unacknowledge the message on the server.</para>
+
+          <programlisting>POST /queues/jms.queue.bar/pull-consumers/acknowledgement/2
+ Host: example.com
+ Content-Type: application/x-www-form-urlencoded
+
+ acknowledge=true
+
+ --- Response ---
+ Http/1.1 200 Ok
+ msg-acknowledge-next: http://example.com/queues/jms.queue.bar/pull-consumers/333/acknowledge-next-2
+ </programlisting>
+
+          <para>Whether you acknowledge or unacknowledge the message, the
+          response will contain a new msg-acknowledge-next header that you
+          must use to obtain the next message.</para>
+        </listitem>
+      </orderedlist>
+    </sect2>
+
+    <sect2>
+      <title>Recovering From Network Failures</title>
+
+      <para>If you experience a network failure and do not know if your post
+      to a <literal>msg-acknowledge-next</literal> or
+      <literal>msg-acknowledgement</literal> URL was successful or not, just
+      re-do your POST. A POST to one of these URLs is idempotent, meaning
+      that it will return the same result if you re-post. Behind the scenes,
+      the consumer resource keeps track of its current state. If the last
+      action was a call to <literal>msg-acknowledge-next</literal>, it will
+      have the last message cached, so that if a re-post is done, it will
+      return the message again. Same goes with re-posting to
+      <literal>msg-acknowledgement</literal>. The server remembers its last
+      state and will return the same results. If you look at the URLs you'll
+      see that they contain information about the expected current state of
+      the server. This is how the server knows what the client is
+      expecting.</para>
+    </sect2>
+
+    <sect2>
+      <title>Recovering From Client or Server Crashes</title>
+
+      <para>If the server crashes and while you are doing a POST to the
+      <literal>msg-acknowledge-next</literal> URL, just re-post. Everything
+      should reconnect all right. On the other hand, if the server crashes
+      while you are doing a POST to <literal>msg-acknowledgement</literal>,
+      the server will return a 412 (Preconditions Failed) response code.
+      This is telling you that the URL you are using is out of sync with the
+      server and the message you are acknowledging was probably re-enqueued.
+      The response will contain a new
+      <literal>msg-acknowledge-next</literal> header to invoke on.</para>
+
+      <para>As long as you have "bookmarked" the consumer resource URL
+      (returned from <literal>Location</literal> header on a create, or the
+      <literal>msg-consumer</literal> header), you can recover from client
+      crashes by doing a GET or HEAD request on the consumer resource to
+      obtain what state you are in. If the consumer resource is expecting
+      you to acknowledge a message, it will return a
+      <literal>msg-acknowledgement</literal> header in the response. If the
+      consumer resource is expecting you to pull for the next message, the
+      <literal>msg-acknowledge-next</literal> header will be in the
+      response. With manual acknowledgement you are pretty much guaranteed
+      to avoid skipped messages. For topic subscriptions that were created
+      with a name parameter, you do not have to "bookmark" the returned URL.
+      Instead, you can re-create the consumer resource with the same exact
+      name. The response will contain the same information as if you did a
+      GET or HEAD request on the consumer resource.</para>
+    </sect2>
+  </sect1>
+
+  <sect1>
+    <title>Blocking Pulls with Accept-Wait</title>
+
+    <para>Unless your queue or topic has a high rate of message flowing
+    though it, if you use the pull protocol, you're going to be receiving a
+    lot of 503 responses as you continuously pull the server for new
+    messages. To alleviate this problem, the HornetQ REST interface provides
+    the <literal>Accept-Wait</literal> header. This is a generic HTTP
+    request header that is a hint to the server for how long the client is
+    willing to wait for a response from the server. The value of this header
+    is the time in seconds the client is willing to block for. You would
+    send this request header with your pull requests. Here's an
+    example:</para>
+
+    <programlisting>POST /queues/jms.queue.bar/pull-consumers/consume-next-2
+ Host: example.com
+ Accept-Wait: 30
+
+ --- Response ---
+ HTTP/1.1 200 Ok
+ Content-Type: application/xml
+ msg-consume-next: http://example.com/queues/jms.queue.bar/pull-consumers/333/consume-next-3
+
+ &lt;order&gt;...&lt;/order&gt;</programlisting>
+
+    <para>In this example, we're posting to a msg-consume-next URL and
+    telling the server that we would be willing to block for 30
+    seconds.</para>
+  </sect1>
+
+  <sect1>
+    <title>Clean Up Your Consumers!</title>
+
+    <para>When the client is done with its consumer or topic subscription it
+    should do an HTTP DELETE call on the consumer URL passed back from the
+    Location header or the msg-consumer response header. The server will
+    time out a consumer with the value configured from Chapter 2.3, so you
+    don't have to clean up if you dont' want to, but if you are a good kid,
+    you will clean up your messes. A consumer timeout for durable
+    subscriptions will not delete the underlying durable JMS subscription
+    though, only the server-side consumer resource (and underlying JMS
+    session).</para>
+  </sect1>
+</chapter>

Added: trunk/docs/rest-manual/en/creating-destinations.xml
===================================================================
--- trunk/docs/rest-manual/en/creating-destinations.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/creating-destinations.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+]>
+
+<chapter>
+  <title>Creating Destinations</title>
+
+  <para>You can create a durable queue or topic through the REST interface.
+  Currently you cannot create a temporary queue or topic. To create a queue
+  you do a POST to the relative URL /queues with an XML representation of
+  the queue. The XML syntax is the same queue syntax that you would specify
+  in hornetq-jms.xml if you were creating a queue there. For example:</para>
+
+  <programlisting>POST /queues
+ Host: example.com
+ Content-Type: application/hornetq.jms.queue+xml
+
+ &lt;queue name="testQueue"&gt;
+ &lt;durable&gt;true&lt;/durable&gt;
+ &lt;/queue&gt;
+
+ --- Response ---
+ HTTP/1.1 201 Created
+ Location: http://example.com/queues/jms.queue.testQueue
+ </programlisting>
+
+  <para>Notice that the Content-Type is
+  application/hornetq.jms.queue+xml.</para>
+
+  <para>Here's what creating a topic would look like:</para>
+
+  <programlisting>POST /topics
+ Host: example.com
+ Content-Type: application/hornetq.jms.topic+xml
+
+ &lt;topic name="testTopic"&gt;
+ &lt;/topic&gt;
+
+ --- Response ---
+ HTTP/1.1 201 Created
+ Location: http://example.com/topics/jms.topic.testTopic</programlisting>
+</chapter>

Copied: trunk/docs/rest-manual/en/installation.xml (from rev 10511, trunk/docs/quickstart-guide/en/installation.xml)
===================================================================
--- trunk/docs/rest-manual/en/installation.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/installation.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,352 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+]>
+<chapter>
+    <title>Installation and Configuration</title>
+
+    <para>HornetQ's REST interface is installed as a Web archive (WAR). It
+    depends on the <ulink url="http://jboss.org/resteasy">RESTEasy</ulink>
+    project and can currently only run within a servlet container. Installing
+    the HornetQ REST interface is a little bit different depending whether
+    HornetQ is already installed and configured for your environment (i.e.
+    you're deploying within JBoss 6 AppServer) or you want the HornetQ REST
+    WAR to startup and manage the HornetQ server.</para>
+
+    <sect1>
+      <title>Installing Within Pre-configured Environment</title>
+
+      <para>The section should be used when you want to use the HornetQ REST
+      interface in an environment that already has HornetQ installed and
+      running, i.e. JBoss 6 Application Server. You must create a Web archive
+      (.WAR) file with the following web.xml settings:</para>
+
+      <programlisting>&lt;web-app&gt;
+    &lt;listener&gt;
+        &lt;listener-class&gt;org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap&lt;/listener-class&gt;
+    &lt;/listener&gt;
+
+    &lt;listener&gt;
+        &lt;listener-class&gt;org.hornetq.rest.integration.RestMessagingBootstrapListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+
+    &lt;filter&gt;
+        &lt;filter-name&gt;Rest-Messaging&lt;/filter-name&gt;
+        &lt;filter-class&gt;
+            org.jboss.resteasy.plugins.server.servlet.FilterDispatcher
+        &lt;/filter-class&gt;
+    &lt;/filter&gt;
+
+    &lt;filter-mapping&gt;
+        &lt;filter-name&gt;Rest-Messaging&lt;/filter-name&gt;
+        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+    &lt;/filter-mapping&gt;
+
+&lt;/web-app</programlisting>
+
+      <para>Within your WEB-INF/lib directory you must have the
+      hornetq-rest.jar file. If RESTEasy is not installed within your
+      environment, you must add the RESTEasy jar files within the lib
+      directory as well. Here's a sample Maven pom.xml that can build your WAR
+      for this case.</para>
+
+      <programlisting>&lt;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"&gt;
+    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
+    &lt;groupId&gt;org.somebody&lt;/groupId&gt;
+    &lt;artifactId&gt;myapp&lt;/artifactId&gt;
+    &lt;packaging&gt;war&lt;/packaging&gt;
+    &lt;name&gt;My App&lt;/name&gt;
+    &lt;repositories&gt;
+        &lt;repository&gt;
+            &lt;id&gt;jboss&lt;/id&gt;
+            &lt;url&gt;http://repository.jboss.org/nexus/content/groups/public/&lt;/url&gt;
+        &lt;/repository&gt;
+    &lt;/repositories&gt;
+
+
+     &lt;build&gt;
+            &lt;plugin&gt;
+                &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
+                &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
+                &lt;configuration&gt;
+                    &lt;source&gt;1.6&lt;/source&gt;
+                    &lt;target&gt;1.6&lt;/target&gt;
+                &lt;/configuration&gt;
+            &lt;/plugin&gt;
+        &lt;/plugins&gt;
+    &lt;/build&gt;
+    &lt;dependencies&gt;
+        &lt;dependency&gt;
+            &lt;groupId&gt;org.hornetq.rest&lt;/groupId&gt;
+            &lt;artifactId&gt;hornetq-rest&lt;/artifactId&gt;
+            &lt;version&gt;2.2.0&lt;/version&gt;
+        &lt;/dependency&gt;
+    &lt;/dependencies&gt;
+&lt;/project&gt;
+</programlisting>
+
+      <para></para>
+    </sect1>
+
+    <sect1>
+      <title>Bootstrapping HornetQ Along with REST</title>
+
+      <para>You can bootstrap HornetQ within your WAR as well. To do this, you
+      must have the HornetQ core and JMS jars along with Netty, Resteasy, and
+      the HornetQ REST jar within your WEB-INF/lib. You must also have a
+      hornetq-configuration.xml, hornetq-jms.xml, and hornetq-users.xml config
+      files within WEB-INF/classes. The examples that come with the HornetQ
+      REST distribution show how to do this. You must also add an additional
+      listener to your web.xml file. Here's an example:</para>
+
+      <programlisting>&lt;web-app&gt;
+    &lt;listener&gt;
+        &lt;listener-class&gt;org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap&lt;/listener-class&gt;
+    &lt;/listener&gt;
+
+
+    &lt;listener&gt;
+        &lt;listener-class&gt;org.hornetq.rest.integration.HornetqBootstrapListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+
+    &lt;listener&gt;
+        &lt;listener-class&gt;org.hornetq.rest.integration.RestMessagingBootstrapListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+
+    &lt;filter&gt;
+        &lt;filter-name&gt;Rest-Messaging&lt;/filter-name&gt;
+        &lt;filter-class&gt;
+            org.jboss.resteasy.plugins.server.servlet.FilterDispatcher
+        &lt;/filter-class&gt;
+    &lt;/filter&gt;
+
+    &lt;filter-mapping&gt;
+        &lt;filter-name&gt;Rest-Messaging&lt;/filter-name&gt;
+        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+    &lt;/filter-mapping&gt;
+
+&lt;/web-app&gt;</programlisting>
+
+      <para>Here's a Maven pom.xml file for creating a WAR for this
+      environment. Make sure your hornetq configuration files are within the
+      src/main/resources directory so that they are stuffed within the WAR's
+      WEB-INF/classes directory!</para>
+
+      <programlisting>&lt;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"&gt;
+    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
+    &lt;groupId&gt;org.somebody&lt;/groupId&gt;
+    &lt;artifactId&gt;myapp&lt;/artifactId&gt;
+    &lt;packaging&gt;war&lt;/packaging&gt;
+    &lt;name&gt;My App&lt;/name&gt;
+    &lt;repositories&gt;
+        &lt;repository&gt;
+            &lt;id&gt;jboss&lt;/id&gt;
+            &lt;url&gt;http://repository.jboss.org/nexus/content/groups/public/&lt;/url&gt;
+        &lt;/repository&gt;
+    &lt;/repositories&gt;
+    &lt;build&gt;
+            &lt;plugin&gt;
+                &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
+                &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
+                &lt;configuration&gt;
+                    &lt;source&gt;1.6&lt;/source&gt;
+                    &lt;target&gt;1.6&lt;/target&gt;
+                &lt;/configuration&gt;
+            &lt;/plugin&gt;
+        &lt;/plugins&gt;
+    &lt;/build&gt;
+    &lt;dependencies&gt;
+        &lt;dependency&gt;
+            &lt;groupId&gt;org.hornetq&lt;/groupId&gt;
+            &lt;artifactId&gt;hornetq-core&lt;/artifactId&gt;
+            &lt;version&gt;2.1.1.GA&lt;/version&gt;
+        &lt;/dependency&gt;
+        &lt;dependency&gt;
+            &lt;groupId&gt;org.jboss.netty&lt;/groupId&gt;
+            &lt;artifactId&gt;netty&lt;/artifactId&gt;
+        &lt;/dependency&gt;
+        &lt;dependency&gt;
+            &lt;groupId&gt;org.hornetq&lt;/groupId&gt;
+            &lt;artifactId&gt;hornetq-jms&lt;/artifactId&gt;
+            &lt;version&gt;2.1.1.GA&lt;/version&gt;
+        &lt;/dependency&gt;
+        &lt;dependency&gt;
+            &lt;groupId&gt;org.jboss.spec.javax.jms&lt;/groupId&gt;
+            &lt;artifactId&gt;jboss-jms-api_1.1_spec&lt;/artifactId&gt;
+            &lt;version&gt;1.0.0.Beta1&lt;/version&gt;
+        &lt;/dependency&gt;
+        &lt;dependency&gt;
+            &lt;groupId&gt;org.hornetq.rest&lt;/groupId&gt;
+            &lt;artifactId&gt;hornetq-rest&lt;/artifactId&gt;
+            &lt;version&gt;2.2.0&lt;/version&gt;
+        &lt;/dependency&gt;
+        &lt;dependency&gt;
+            &lt;groupId&gt;org.jboss.resteasy&lt;/groupId&gt;
+            &lt;artifactId&gt;resteasy-jaxrs&lt;/artifactId&gt;
+            &lt;version&gt;2.0.1.GA&lt;/version&gt;
+        &lt;/dependency&gt;
+        &lt;dependency&gt;
+            &lt;groupId&gt;org.jboss.resteasy&lt;/groupId&gt;
+            &lt;artifactId&gt;resteasy-jaxb-provider&lt;/artifactId&gt;
+            &lt;version&gt;2.0.1.GA&lt;/version&gt;
+        &lt;/dependency&gt;
+    &lt;/dependencies&gt;
+&lt;/project&gt;</programlisting>
+
+      <para></para>
+    </sect1>
+
+    <sect1>
+      <title>REST Configuration</title>
+
+      <para>The HornetQ REST implementation does have some configuration
+      options. These are configured via XML configuration file that must be in
+      your WEB-INF/classes directory. You must set the web.xml context-param
+      <literal>rest.messaging.config.file</literal> to specify the name of the
+      configuration file. Below is the format of the XML configuration file
+      and the default values for each.</para>
+
+      <programlisting>&lt;rest-messaging&gt;
+   &lt;server-in-vm-id&gt;0&lt;/server-in-vm-id&gt;
+   &lt;use-link-headers&gt;false&lt;/use-link-headers&gt;
+   &lt;default-durable-send&gt;false&lt;/default-durable-send&gt;
+   &lt;dups-ok&gt;true&lt;/dups-ok&gt;
+   &lt;topic-push-store-dir&gt;topic-push-store&lt;/topic-push-store-dir&gt;
+   &lt;queue-push-store-dir&gt;queue-push-store&lt;/queue-push-store-dir&gt;
+   &lt;producer-time-to-live&gt;0&lt;/producer-time-to-live&gt;
+   &lt;producer-session-pool-size&gt;10&lt;/producer-session-pool-size&gt;
+   &lt;session-timeout-task-interval&gt;1&lt;/session-timeout-task-interval&gt;
+   &lt;consumer-session-timeout-seconds&gt;300&lt;/consumer-session-timeout-seconds&gt;
+   &lt;consumer-window-size&gt;-1&lt;/consumer-window-size&gt;
+&lt;/rest-messaging
+</programlisting>
+
+      <para>Let's give an explanation of each config option.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>server-in-vm-id</term>
+
+          <listitem>
+            <para>The HornetQ REST impl uses the IN-VM transport to
+            communicate with HornetQ. It uses the default server id, which is
+            "0".</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>use-link-headers</term>
+
+          <listitem>
+            <para>By default, all links (URLs) are published using custom
+            headers. You can instead have the HornetQ REST implementation
+            publish links using the <ulink
+            url="http://tools.ietf.org/html/draft-nottingham-http-link-header-10">Link
+            Header specification</ulink> instead if you desire.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>default-durable-send</term>
+
+          <listitem>
+            <para>Whether a posted message should be persisted by default if
+            the user does not specify a durable query parameter.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>dups-ok</term>
+
+          <listitem>
+            <para>If this is true, no duplicate detection protocol will be
+            enforced for message posting.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>topic-push-store-dir</term>
+
+          <listitem>
+            <para>This must be a relative or absolute file system path. This
+            is a directory where push registrations for topics are stored. See
+            Chapter 6.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>queue-push-store-dir</term>
+
+          <listitem>
+            <para>This must be a relative or absolute file system path. This
+            is a directory where push registrations for queues are stored. See
+            Chapter 6.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>producer-session-pool-size</term>
+
+          <listitem>
+            <para>The REST implementation pools HornetQ sessions for sending
+            messages. This is the size of the pool. That number of sessions
+            will be created at startup time.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>producer-time-to-live</term>
+
+          <listitem>
+            <para>Default time to live for posted messages. Default is no
+            ttl.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>session-timeout-task-interval</term>
+
+          <listitem>
+            <para>Pull consumers and pull subscriptions can time out. This is
+            the interval the thread that checks for timed-out sessions will
+            run at. A value of 1 means it will run every 1 second.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>consumer-session-timeout-seconds</term>
+
+          <listitem>
+            <para>Timeout in seconds for pull consumers/subscriptions that
+            remain idle for that amount of time.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>consumer-window-size</term>
+
+          <listitem>
+            <para>For consumers, this config option is the same as the HornetQ
+            one of the same name. It will be used by sessions created by the
+            HornetQ REST implementation.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </sect1>
+  </chapter>
\ No newline at end of file

Copied: trunk/docs/rest-manual/en/introduction.xml (from rev 10511, trunk/docs/quickstart-guide/en/introduction.xml)
===================================================================
--- trunk/docs/rest-manual/en/introduction.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/introduction.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+]>
+<chapter>
+    <title>Introduction</title>
+
+    <para>The HornetQ REST interface allows you to leverage the reliability
+    and scalability features of HornetQ over a simple REST/HTTP interface.
+    Messages are produced and consumed by sending and receiving simple HTTP
+    messages that contain the content you want to push around. For instance,
+    here's a simple example of posting an order to an order processing queue
+    express as an HTTP message:</para>
+
+    <para><programlisting>POST /queue/orders/create HTTP/1.1
+Host: example.com
+Content-Type: application/xml
+
+&lt;order&gt;
+   &lt;name&gt;Bill&lt;/name&gt;
+   &lt;item&gt;iPhone 4&lt;/item&gt;
+   &lt;cost&gt;$199.99&lt;/cost&gt;
+&lt;/order&gt;
+</programlisting>As you can see, we're just posting some arbitrary XML
+    document to a URL. When the XML is received on the server is it processed
+    within HornetQ as a JMS message and distributed through core HornetQ.
+    Simple and easy. Consuming messages from a queue or topic looks very
+    similar. We'll discuss the entire interface in detail later in this
+    docbook.</para>
+
+    <para></para>
+
+    <sect1>
+      <title>Goals of REST Interface</title>
+
+      <para>Why would you want to use HornetQ's REST interface? What are the
+      goals of the REST interface?</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>Easily usable by machine-based (code) clients.</para>
+        </listitem>
+
+        <listitem>
+          <para>Zero client footprint. We want HornetQ to be usable by any
+          client/programming language that has an adequate HTTP client
+          library. You shouldn't have to download, install, and configure a
+          special library to interact with HornetQ.</para>
+        </listitem>
+
+        <listitem>
+          <para>Lightweight interoperability. The HTTP protocol is strong
+          enough to be our message exchange protocol. Since interactions are
+          RESTful the HTTP uniform interface provides all the interoperability
+          you need to communicate between different languages, platforms, and
+          even messaging implementations that choose to implement the same
+          RESTful interface as HornetQ (i.e. the <ulink
+          url="http://rest-star.org">REST-*</ulink> effort.)</para>
+        </listitem>
+
+        <listitem>
+          <para>No envelope (i.e. SOAP) or feed (i.e. Atom) format
+          requirements. You shouldn't have to learn, use, or parse a specific
+          XML document format in order to send and receive messages through
+          HornetQ's REST interface.</para>
+        </listitem>
+
+        <listitem>
+          <para>Leverage the reliability, scalability, and clustering features
+          of HornetQ on the back end without sacrificing the simplicity of a
+          REST interface.</para>
+
+          <para></para>
+        </listitem>
+      </itemizedlist>
+    </sect1>
+  </chapter>

Added: trunk/docs/rest-manual/en/jms-and-rest.xml
===================================================================
--- trunk/docs/rest-manual/en/jms-and-rest.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/jms-and-rest.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+]>
+<chapter>
+    <title>Mixing JMS and REST</title>
+
+    <para>The HornetQ REST interface supports mixing JMS and REST producres
+    and consumers. You can send an ObjectMessage through a JMS Producer, and
+    have a REST client consume it. You can have a REST client POST a message
+    to a topic and have a JMS Consumer receive it. Some simple transformations
+    are supported if you have the correct RESTEasy providers installed.</para>
+
+    <sect1>
+      <title>JMS Producers - REST Consumers</title>
+
+      <para>If you have a JMS producer, the HornetQ REST interface only
+      supports ObjectMessage type. If the JMS producer is aware that there may
+      be REST consumers, it should set a JMS property to specify what
+      Content-Type the Java object should be translated into by REST clients.
+      The HornetQ REST server will use RESTEasy content handlers
+      (MessageBodyReader/Writers) to transform the Java object to the type
+      desired. Here's an example of a JMS producer setting the content type of
+      the message.</para>
+
+      <programlisting>ObjectMessage message = session.createObjectMessage();
+message.setStringProperty(org.hornetq.rest.HttpHeaderProperty.CONTENT_TYPE, "application/xml");
+</programlisting>
+
+      <para>If the JMS producer does not set the content-type, then this
+      information must be obtained from the REST consumer. If it is a pull
+      consumer, then the REST client should send an Accept header with the
+      desired media types it wants to convert the Java object into. If the
+      REST client is a push registration, then the type attribute of the link
+      element of the push registration should be set to the desired
+      type.</para>
+    </sect1>
+
+    <sect1>
+      <title>REST Producers - JMS Consumers</title>
+
+      <para>If you have a REST client producing messages and a JMS consumer,
+      HornetQ REST has a simple helper class for you to transform the HTTP
+      body to a Java object. Here's some example code:</para>
+
+      <programlisting>public void onMessage(Message message)
+{
+   MyType obj = org.hornetq.rest.Jms.getEntity(message, MyType.class);
+}
+</programlisting>
+
+      <para>The way the <literal>getEntity()</literal> method works is that if
+      the message is an ObjectMessage, it will try to extract the desired type
+      from it like any other JMS message. If a REST producer sent the message,
+      then the method uses RESTEasy to convert the HTTP body to the Java
+      object you want. See the Javadoc of this class for more helper
+      methods.</para>
+    </sect1>
+  </chapter>
\ No newline at end of file

Modified: trunk/docs/rest-manual/en/master.xml
===================================================================
--- trunk/hornetq-rest/docbook/reference/en/master.xml	2011-04-14 16:17:29 UTC (rev 10511)
+++ trunk/docs/rest-manual/en/master.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -20,1994 +20,14 @@
     <para></para>
   </preface>
 
-  <chapter>
-    <title>Introduction</title>
 
-    <para>The HornetQ REST interface allows you to leverage the reliability
-    and scalability features of HornetQ over a simple REST/HTTP interface.
-    Messages are produced and consumed by sending and receiving simple HTTP
-    messages that contain the content you want to push around. For instance,
-    here's a simple example of posting an order to an order processing queue
-    express as an HTTP message:</para>
 
-    <para><programlisting>POST /queue/orders/create HTTP/1.1
-Host: example.com
-Content-Type: application/xml
 
-&lt;order&gt;
-   &lt;name&gt;Bill&lt;/name&gt;
-   &lt;item&gt;iPhone 4&lt;/item&gt;
-   &lt;cost&gt;$199.99&lt;/cost&gt;
-&lt;/order&gt;
-</programlisting>As you can see, we're just posting some arbitrary XML
-    document to a URL. When the XML is received on the server is it processed
-    within HornetQ as a JMS message and distributed through core HornetQ.
-    Simple and easy. Consuming messages from a queue or topic looks very
-    similar. We'll discuss the entire interface in detail later in this
-    docbook.</para>
 
-    <para></para>
 
-    <sect1>
-      <title>Goals of REST Interface</title>
 
-      <para>Why would you want to use HornetQ's REST interface? What are the
-      goals of the REST interface?</para>
 
-      <itemizedlist>
-        <listitem>
-          <para>Easily usable by machine-based (code) clients.</para>
-        </listitem>
 
-        <listitem>
-          <para>Zero client footprint. We want HornetQ to be usable by any
-          client/programming language that has an adequate HTTP client
-          library. You shouldn't have to download, install, and configure a
-          special library to interact with HornetQ.</para>
-        </listitem>
 
-        <listitem>
-          <para>Lightweight interoperability. The HTTP protocol is strong
-          enough to be our message exchange protocol. Since interactions are
-          RESTful the HTTP uniform interface provides all the interoperability
-          you need to communicate between different languages, platforms, and
-          even messaging implementations that choose to implement the same
-          RESTful interface as HornetQ (i.e. the <ulink
-          url="http://rest-star.org">REST-*</ulink> effort.)</para>
-        </listitem>
 
-        <listitem>
-          <para>No envelope (i.e. SOAP) or feed (i.e. Atom) format
-          requirements. You shouldn't have to learn, use, or parse a specific
-          XML document format in order to send and receive messages through
-          HornetQ's REST interface.</para>
-        </listitem>
-
-        <listitem>
-          <para>Leverage the reliability, scalability, and clustering features
-          of HornetQ on the back end without sacrificing the simplicity of a
-          REST interface.</para>
-
-          <para></para>
-        </listitem>
-      </itemizedlist>
-    </sect1>
-  </chapter>
-
-  <chapter>
-    <title>Installation and Configuration</title>
-
-    <para>HornetQ's REST interface is installed as a Web archive (WAR). It
-    depends on the <ulink url="http://jboss.org/resteasy">RESTEasy</ulink>
-    project and can currently only run within a servlet container. Installing
-    the HornetQ REST interface is a little bit different depending whether
-    HornetQ is already installed and configured for your environment (i.e.
-    you're deploying within JBoss 6 AppServer) or you want the HornetQ REST
-    WAR to startup and manage the HornetQ server.</para>
-
-    <sect1>
-      <title>Installing Within Pre-configured Environment</title>
-
-      <para>The section should be used when you want to use the HornetQ REST
-      interface in an environment that already has HornetQ installed and
-      running, i.e. JBoss 6 Application Server. You must create a Web archive
-      (.WAR) file with the following web.xml settings:</para>
-
-      <programlisting>&lt;web-app&gt;
-    &lt;listener&gt;
-        &lt;listener-class&gt;org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap&lt;/listener-class&gt;
-    &lt;/listener&gt;
-
-    &lt;listener&gt;
-        &lt;listener-class&gt;org.hornetq.rest.integration.RestMessagingBootstrapListener&lt;/listener-class&gt;
-    &lt;/listener&gt;
-
-    &lt;filter&gt;
-        &lt;filter-name&gt;Rest-Messaging&lt;/filter-name&gt;
-        &lt;filter-class&gt;
-            org.jboss.resteasy.plugins.server.servlet.FilterDispatcher
-        &lt;/filter-class&gt;
-    &lt;/filter&gt;
-
-    &lt;filter-mapping&gt;
-        &lt;filter-name&gt;Rest-Messaging&lt;/filter-name&gt;
-        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
-    &lt;/filter-mapping&gt;
-
-&lt;/web-app</programlisting>
-
-      <para>Within your WEB-INF/lib directory you must have the
-      hornetq-rest.jar file. If RESTEasy is not installed within your
-      environment, you must add the RESTEasy jar files within the lib
-      directory as well. Here's a sample Maven pom.xml that can build your WAR
-      for this case.</para>
-
-      <programlisting>&lt;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"&gt;
-    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
-    &lt;groupId&gt;org.somebody&lt;/groupId&gt;
-    &lt;artifactId&gt;myapp&lt;/artifactId&gt;
-    &lt;packaging&gt;war&lt;/packaging&gt;
-    &lt;name&gt;My App&lt;/name&gt;
-    &lt;repositories&gt;
-        &lt;repository&gt;
-            &lt;id&gt;jboss&lt;/id&gt;
-            &lt;url&gt;http://repository.jboss.org/nexus/content/groups/public/&lt;/url&gt;
-        &lt;/repository&gt;
-    &lt;/repositories&gt;
-
-
-     &lt;build&gt;
-            &lt;plugin&gt;
-                &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
-                &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
-                &lt;configuration&gt;
-                    &lt;source&gt;1.6&lt;/source&gt;
-                    &lt;target&gt;1.6&lt;/target&gt;
-                &lt;/configuration&gt;
-            &lt;/plugin&gt;
-        &lt;/plugins&gt;
-    &lt;/build&gt;
-    &lt;dependencies&gt;
-        &lt;dependency&gt;
-            &lt;groupId&gt;org.hornetq.rest&lt;/groupId&gt;
-            &lt;artifactId&gt;hornetq-rest&lt;/artifactId&gt;
-            &lt;version&gt;2.2.0&lt;/version&gt;
-        &lt;/dependency&gt;
-    &lt;/dependencies&gt;
-&lt;/project&gt;
-</programlisting>
-
-      <para></para>
-    </sect1>
-
-    <sect1>
-      <title>Bootstrapping HornetQ Along with REST</title>
-
-      <para>You can bootstrap HornetQ within your WAR as well. To do this, you
-      must have the HornetQ core and JMS jars along with Netty, Resteasy, and
-      the HornetQ REST jar within your WEB-INF/lib. You must also have a
-      hornetq-configuration.xml, hornetq-jms.xml, and hornetq-users.xml config
-      files within WEB-INF/classes. The examples that come with the HornetQ
-      REST distribution show how to do this. You must also add an additional
-      listener to your web.xml file. Here's an example:</para>
-
-      <programlisting>&lt;web-app&gt;
-    &lt;listener&gt;
-        &lt;listener-class&gt;org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap&lt;/listener-class&gt;
-    &lt;/listener&gt;
-
-
-    &lt;listener&gt;
-        &lt;listener-class&gt;org.hornetq.rest.integration.HornetqBootstrapListener&lt;/listener-class&gt;
-    &lt;/listener&gt;
-
-    &lt;listener&gt;
-        &lt;listener-class&gt;org.hornetq.rest.integration.RestMessagingBootstrapListener&lt;/listener-class&gt;
-    &lt;/listener&gt;
-
-    &lt;filter&gt;
-        &lt;filter-name&gt;Rest-Messaging&lt;/filter-name&gt;
-        &lt;filter-class&gt;
-            org.jboss.resteasy.plugins.server.servlet.FilterDispatcher
-        &lt;/filter-class&gt;
-    &lt;/filter&gt;
-
-    &lt;filter-mapping&gt;
-        &lt;filter-name&gt;Rest-Messaging&lt;/filter-name&gt;
-        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
-    &lt;/filter-mapping&gt;
-
-&lt;/web-app&gt;</programlisting>
-
-      <para>Here's a Maven pom.xml file for creating a WAR for this
-      environment. Make sure your hornetq configuration files are within the
-      src/main/resources directory so that they are stuffed within the WAR's
-      WEB-INF/classes directory!</para>
-
-      <programlisting>&lt;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"&gt;
-    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
-    &lt;groupId&gt;org.somebody&lt;/groupId&gt;
-    &lt;artifactId&gt;myapp&lt;/artifactId&gt;
-    &lt;packaging&gt;war&lt;/packaging&gt;
-    &lt;name&gt;My App&lt;/name&gt;
-    &lt;repositories&gt;
-        &lt;repository&gt;
-            &lt;id&gt;jboss&lt;/id&gt;
-            &lt;url&gt;http://repository.jboss.org/nexus/content/groups/public/&lt;/url&gt;
-        &lt;/repository&gt;
-    &lt;/repositories&gt;
-    &lt;build&gt;
-            &lt;plugin&gt;
-                &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
-                &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
-                &lt;configuration&gt;
-                    &lt;source&gt;1.6&lt;/source&gt;
-                    &lt;target&gt;1.6&lt;/target&gt;
-                &lt;/configuration&gt;
-            &lt;/plugin&gt;
-        &lt;/plugins&gt;
-    &lt;/build&gt;
-    &lt;dependencies&gt;
-        &lt;dependency&gt;
-            &lt;groupId&gt;org.hornetq&lt;/groupId&gt;
-            &lt;artifactId&gt;hornetq-core&lt;/artifactId&gt;
-            &lt;version&gt;2.1.1.GA&lt;/version&gt;
-        &lt;/dependency&gt;
-        &lt;dependency&gt;
-            &lt;groupId&gt;org.jboss.netty&lt;/groupId&gt;
-            &lt;artifactId&gt;netty&lt;/artifactId&gt;
-        &lt;/dependency&gt;
-        &lt;dependency&gt;
-            &lt;groupId&gt;org.hornetq&lt;/groupId&gt;
-            &lt;artifactId&gt;hornetq-jms&lt;/artifactId&gt;
-            &lt;version&gt;2.1.1.GA&lt;/version&gt;
-        &lt;/dependency&gt;
-        &lt;dependency&gt;
-            &lt;groupId&gt;org.jboss.spec.javax.jms&lt;/groupId&gt;
-            &lt;artifactId&gt;jboss-jms-api_1.1_spec&lt;/artifactId&gt;
-            &lt;version&gt;1.0.0.Beta1&lt;/version&gt;
-        &lt;/dependency&gt;
-        &lt;dependency&gt;
-            &lt;groupId&gt;org.hornetq.rest&lt;/groupId&gt;
-            &lt;artifactId&gt;hornetq-rest&lt;/artifactId&gt;
-            &lt;version&gt;2.2.0&lt;/version&gt;
-        &lt;/dependency&gt;
-        &lt;dependency&gt;
-            &lt;groupId&gt;org.jboss.resteasy&lt;/groupId&gt;
-            &lt;artifactId&gt;resteasy-jaxrs&lt;/artifactId&gt;
-            &lt;version&gt;2.0.1.GA&lt;/version&gt;
-        &lt;/dependency&gt;
-        &lt;dependency&gt;
-            &lt;groupId&gt;org.jboss.resteasy&lt;/groupId&gt;
-            &lt;artifactId&gt;resteasy-jaxb-provider&lt;/artifactId&gt;
-            &lt;version&gt;2.0.1.GA&lt;/version&gt;
-        &lt;/dependency&gt;
-    &lt;/dependencies&gt;
-&lt;/project&gt;</programlisting>
-
-      <para></para>
-    </sect1>
-
-    <sect1>
-      <title>REST Configuration</title>
-
-      <para>The HornetQ REST implementation does have some configuration
-      options. These are configured via XML configuration file that must be in
-      your WEB-INF/classes directory. You must set the web.xml context-param
-      <literal>rest.messaging.config.file</literal> to specify the name of the
-      configuration file. Below is the format of the XML configuration file
-      and the default values for each.</para>
-
-      <programlisting>&lt;rest-messaging&gt;
-   &lt;server-in-vm-id&gt;0&lt;/server-in-vm-id&gt;
-   &lt;use-link-headers&gt;false&lt;/use-link-headers&gt;
-   &lt;default-durable-send&gt;false&lt;/default-durable-send&gt;
-   &lt;dups-ok&gt;true&lt;/dups-ok&gt;
-   &lt;topic-push-store-dir&gt;topic-push-store&lt;/topic-push-store-dir&gt;
-   &lt;queue-push-store-dir&gt;queue-push-store&lt;/queue-push-store-dir&gt;
-   &lt;producer-time-to-live&gt;0&lt;/producer-time-to-live&gt;
-   &lt;producer-session-pool-size&gt;10&lt;/producer-session-pool-size&gt;
-   &lt;session-timeout-task-interval&gt;1&lt;/session-timeout-task-interval&gt;
-   &lt;consumer-session-timeout-seconds&gt;300&lt;/consumer-session-timeout-seconds&gt;
-   &lt;consumer-window-size&gt;-1&lt;/consumer-window-size&gt;
-&lt;/rest-messaging
-</programlisting>
-
-      <para>Let's give an explanation of each config option.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>server-in-vm-id</term>
-
-          <listitem>
-            <para>The HornetQ REST impl uses the IN-VM transport to
-            communicate with HornetQ. It uses the default server id, which is
-            "0".</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>use-link-headers</term>
-
-          <listitem>
-            <para>By default, all links (URLs) are published using custom
-            headers. You can instead have the HornetQ REST implementation
-            publish links using the <ulink
-            url="http://tools.ietf.org/html/draft-nottingham-http-link-header-10">Link
-            Header specification</ulink> instead if you desire.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>default-durable-send</term>
-
-          <listitem>
-            <para>Whether a posted message should be persisted by default if
-            the user does not specify a durable query parameter.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>dups-ok</term>
-
-          <listitem>
-            <para>If this is true, no duplicate detection protocol will be
-            enforced for message posting.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>topic-push-store-dir</term>
-
-          <listitem>
-            <para>This must be a relative or absolute file system path. This
-            is a directory where push registrations for topics are stored. See
-            Chapter 6.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>queue-push-store-dir</term>
-
-          <listitem>
-            <para>This must be a relative or absolute file system path. This
-            is a directory where push registrations for queues are stored. See
-            Chapter 6.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>producer-session-pool-size</term>
-
-          <listitem>
-            <para>The REST implementation pools HornetQ sessions for sending
-            messages. This is the size of the pool. That number of sessions
-            will be created at startup time.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>producer-time-to-live</term>
-
-          <listitem>
-            <para>Default time to live for posted messages. Default is no
-            ttl.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>session-timeout-task-interval</term>
-
-          <listitem>
-            <para>Pull consumers and pull subscriptions can time out. This is
-            the interval the thread that checks for timed-out sessions will
-            run at. A value of 1 means it will run every 1 second.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>consumer-session-timeout-seconds</term>
-
-          <listitem>
-            <para>Timeout in seconds for pull consumers/subscriptions that
-            remain idle for that amount of time.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>consumer-window-size</term>
-
-          <listitem>
-            <para>For consumers, this config option is the same as the HornetQ
-            one of the same name. It will be used by sessions created by the
-            HornetQ REST implementation.</para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </sect1>
-  </chapter>
-
-  <chapter>
-    <title>HornetQ REST Interface Basics</title>
-
-    <para>The HornetQ REST interface publishes a variety of REST resources to
-    perform various tasks on a queue or topic. Only the top-level queue and
-    topic URI schemes are published to the outside world. You must discover
-    all over resources to interact with by looking for and traversing links.
-    You'll find published links within custom response headers and embedded in
-    published XML representations. Let's look at how this works.</para>
-
-    <sect1>
-      <title>Queue and Topic Resources</title>
-
-      <para>To interact with a queue or topic you do a HEAD or GET request on
-      the following relative URI pattern:</para>
-
-      <programlisting>/queues/{name}
-/topics/{name}
-</programlisting>
-
-      <para>The base of the URI is the base URL of the WAR you deployed the
-      HornetQ REST server within as defined in the Installation and
-      Configuration section of this document. Replace the
-      <literal>{name}</literal> string within the above URI pattern with the
-      name of the queue or topic you are interested in interacting with. For
-      example if you have configured a JMS topic named "foo" within your
-      <literal>hornetq-jms.xml</literal> file, the URI name should be
-      "jms.topic.foo". If you have configured a JMS queue name "bar" within
-      your <literal>hornetq-jms.xml</literal> file, the URI name should be
-      "jms.queue.bar". Internally, HornetQ prepends the "jms.topic" or
-      "jms.queue" strings to the name of the deployed destination. Next,
-      perform your HEAD or GET request on this URI. Here's what a
-      request/response would look like.</para>
-
-      <programlisting>HEAD /queues/jms.queue.bar HTTP/1.1
-Host: example.com
-
---- Response ---
-HTTP/1.1 200 Ok
-msg-create: http://example.com/queues/jms.queue.bar/create
-msg-pull-consumers: http://example.com/queues/jms.queue.bar/pull-consumers
-msg-push-consumers: http://example.com/queues/jms.queue.bar/push-consumers
-</programlisting>
-
-      <para>The HEAD or GET response contains a number of custom response
-      headers that are URLs to additional REST resources that allow you to
-      interact with the queue or topic in different ways. It is important not
-      to rely on the scheme of the URLs returned within these headers as they
-      are an implementation detail. Treat them as opaque and query for them
-      each and every time you initially interact (at boot time) with the
-      server. If you treat all URLs as opaque then you will be isolated from
-      implementation changes as the HornetQ REST interface evolves over
-      time.</para>
-
-      <para></para>
-    </sect1>
-
-    <sect1>
-      <title>Queue Resource Response Headers</title>
-
-      <para>Below is a list of response headers you should expect when
-      interacting with a Queue resource.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>msg-create</term>
-
-          <listitem>
-            <para>This is a URL you POST messages to. The semantics of this
-            link are described in Chapter 4.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>msg-create-with-id</term>
-
-          <listitem>
-            <para>This is a URL template you POST message to. The semantics of
-            this link are described in Chapter 4.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>msg-pull-consumers</term>
-
-          <listitem>
-            <para>This is a URL for creating consumers that will pull from a
-            queue. The semantics of this link are described in Chapter
-            5.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>msg-push-consumers</term>
-
-          <listitem>
-            <para>This is a URL for registering other URLs you want the
-            HornetQ REST server to push messages to. The semantics of this
-            link are described in Chapter 6</para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </sect1>
-
-    <sect1>
-      <title>Topic Resource Respones Headers</title>
-
-      <para>Below is a list of response headers you should expect when
-      interacting with a Topic resource.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>msg-create</term>
-
-          <listitem>
-            <para>This is a URL you POST messages to. The semantics of this
-            link are described in Chapter 4.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>msg-create-with-id</term>
-
-          <listitem>
-            <para>This is a URL template you POST messages to. The semantics
-            of this link are described in Chapter 4.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>msg-pull-subscriptions</term>
-
-          <listitem>
-            <para>This is a URL for creating subscribers that will pull from a
-            topic. The semantics of this link are described in Chapter
-            5.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>msg-push-subscriptions</term>
-
-          <listitem>
-            <para>This is a URL for registering other URLs you want the
-            HornetQ REST server to push messages to. The semantics of this
-            link are described in Chapter 6.</para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-
-      <para></para>
-    </sect1>
-  </chapter>
-
-  <chapter>
-    <title>Posting Messages</title>
-
-    <para>This chapter discusses the protocol for posting messages to a queue
-    or a topic. In Chapter 3, you saw that a queue or topic resource publishes
-    variable custom headers that are links to other RESTful resources. The
-    <literal>msg-create</literal> header is the URL you post messages to.
-    Messages are published to a queue or topic by sending a simple HTTP
-    message to the URL published by the msg-create header. The HTTP message
-    contains whatever content you want to publish to the HornetQ destination.
-    Here's an example scenario:</para>
-
-    <orderedlist>
-      <listitem>
-        <para>Obtain the starting <literal>msg-create</literal> header from
-        the queue or topic resource.</para>
-
-        <para><programlisting>HEAD /queues/jms.queue.bar HTTP/1.1
-Host: example.com
-
---- Response ---
-HTTP/1.1 200 Ok
-msg-create: http://example.com/queues/jms.queue.bar/create
-msg-create-with-id: http://example.com/queues/jms.queue.bar/create/{id}
-</programlisting></para>
-      </listitem>
-
-      <listitem>
-        <para>Do a POST to the URL contained in the
-        <literal>msg-create</literal> header.</para>
-
-        <para><programlisting>POST /queues/jms.queue.bar/create
-Host: example.com
-Content-Type: application/xml
-
-&lt;order&gt;
-   &lt;name&gt;Bill&lt;/name&gt;
-   &lt;item&gt;iPhone4&lt;/name&gt;
-   &lt;cost&gt;$199.99&lt;/cost&gt;
-&lt;/order&gt;
-
---- Response ---
-HTTP/1.1 201 Created
-msg-create-next: http://example.com/queues/jms.queue.bar/create/002
-</programlisting>A successful response will return a 201 response code. Also
-        notice that a <literal>msg-create-next</literal> response header is
-        sent as well. You must use this URL to POST your next message.</para>
-      </listitem>
-
-      <listitem>
-        <para>POST your next message to the queue using the URL returned in
-        the <literal>msg-create-next</literal> header.</para>
-
-        <para><programlisting>POST /queues/jms.queue.bar/create/002
-Host: example.com
-Content-Type: application/xml
-
-&lt;order&gt;
-   &lt;name&gt;Monica&lt;/name&gt;
-   &lt;item&gt;iPad&lt;/item&gt;
-   &lt;cost&gt;$499.99&lt;/cost&gt;
-&lt;/order&gt;
-
---- Response --
-HTTP/1.1 201 Created
-msg-create-next: http://example.com/queues/jms.queue.bar/create/003
-</programlisting>Continue using the new <literal>msg-create-next</literal>
-        header returned with each response.</para>
-      </listitem>
-    </orderedlist>
-
-    <para>It is <emphasis>VERY IMPORTENT</emphasis> that you never re-use
-    returned <literal>msg-create-next</literal> headers to post new messages.
-    This URL may be uniquely generated for each message and used for duplicate
-    detection. If you lose the URL within the
-    <literal>msg-create-next</literal> header, then just go back to the queue
-    or topic resource to get the msg-create URL.</para>
-
-    <sect1>
-      <title>Duplicate Detection</title>
-
-      <para>Sometimes you might have network problems when posting new
-      messages to a queue or topic. You may do a POST and never receive a
-      response. Unfortunately, you don't know whether or not the server
-      received the message and so a re-post of the message might cause
-      duplicates to be posted to the queue or topic. By default, the HornetQ
-      REST interface is configured to accept and post duplicate messages. You
-      can change this by turning on duplicate message detection by setting the
-      <literal>dups-ok</literal> config option to <literal>false</literal> as
-      described in Chapter 3. When you do this, the initial POST to the
-      msg-create URL will redirect you, using the standard HTTP 307
-      redirection mechanism to a unique URL to POST to. All other interactions
-      remain the same as discussed earlier. Here's an example:</para>
-
-      <orderedlist>
-        <listitem>
-          <para>Obtain the starting <literal>msg-create</literal> header from
-          the queue or topic resource.</para>
-
-          <para><programlisting>HEAD /queues/jms.queue.bar HTTP/1.1
-Host: example.com
-
---- Response ---
-HTTP/1.1 200 Ok
-msg-create: http://example.com/queues/jms.queue.bar/create
-msg-create-with-id: http://example.com/queues/jms.queue.bar/create/{id}
-</programlisting></para>
-        </listitem>
-
-        <listitem>
-          <para>Do a POST to the URL contained in the
-          <literal>msg-create</literal> header.</para>
-
-          <para><programlisting>POST /queues/jms.queue.bar/create
-Host: example.com
-Content-Type: application/xml
-
-&lt;order&gt;
-   &lt;name&gt;Bill&lt;/name&gt;
-   &lt;item&gt;iPhone4&lt;/name&gt;
-   &lt;cost&gt;$199.99&lt;/cost&gt;
-&lt;/order&gt;
-
---- Response ---
-HTTP/1.1 307 Redirect
-Location: http://example.com/queues/jms.queue.bar/create/001
-</programlisting>A successful response will return a 307 response code. This
-          is standard HTTP protocol. It is telling you that you must re-POST
-          to the URL contained within the <literal>Location</literal>
-          header.</para>
-        </listitem>
-
-        <listitem>
-          <para>re-POST your message to the URL provided within the
-          <literal>Location</literal> header<literal>.</literal></para>
-
-          <para><programlisting>POST /queues/jms.queue.bar/create/001
-Host: example.com
-Content-Type: application/xml
-
-&lt;order&gt;
-   &lt;name&gt;Bill&lt;/name&gt;
-   &lt;item&gt;iPhone4&lt;/name&gt;
-   &lt;cost&gt;$199.99&lt;/cost&gt;
-&lt;/order&gt;
-
---- Response --
-HTTP/1.1 201 Created
-msg-create-next: http://example.com/queues/jms.queue.bar/create/002
-</programlisting>You should receive a 201 Created response. If there is a
-          network failure, just re-POST to the Location header. For new
-          messages, use the returned <literal>msg-create-next</literal> header
-          returned with each response.</para>
-        </listitem>
-
-        <listitem>
-          <para>POST any new message to the returned
-          <literal>msg-create-next</literal> header.</para>
-
-          <para><programlisting>POST /queues/jms.queue.bar/create/002
-Host: example.com
-Content-Type: application/xml
-
-&lt;order&gt;
-   &lt;name&gt;Monica&lt;/name&gt;
-   &lt;item&gt;iPad&lt;/name&gt;
-   &lt;cost&gt;$499.99&lt;/cost&gt;
-&lt;/order&gt;
-
---- Response --
-HTTP/1.1 201 Created
-msg-create-next: http://example.com/queues/jms.queue.bar/create/003</programlisting>If
-          there ever is a network problem, just repost to the URL provided in
-          the <literal>msg-create-next</literal> header.</para>
-        </listitem>
-      </orderedlist>
-
-      <para>How can this work? As you can see, with each successful response,
-      the HornetQ REST server returns a uniquely generated URL within the
-      msg-create-next header. This URL is dedicated to the next new message
-      you want to post. Behind the scenes, the code extracts an identify from
-      the URL and uses HornetQ's duplicate detection mechanism by setting the
-      <literal>DUPLICATE_DETECTION_ID</literal> property of the JMS message
-      that is actually posted to the system.</para>
-
-      <para>An alternative to this approach is to use the
-      <literal>msg-create-with-id</literal> header. This is not an invokable
-      URL, but a URL template. The idea is that the client provides the
-      <literal>DUPLICATE_DETECTION_ID</literal> and creates it's own
-      <literal>create-next</literal> URL. The
-      <literal>msg-create-with-id</literal> header looks like this (you've see
-      it in previous examples, but we haven't used it):</para>
-
-      <programlisting>msg-create-with-id: http://example.com/queues/jms.queue.bar/create/{id}</programlisting>
-
-      <para>You see that it is a regular URL appended with a
-      <literal>{id}</literal>. This <literal>{id}</literal> is a pattern
-      matching substring. A client would generate its
-      <literal>DUPLICATE_DETECTION_ID</literal> and replace
-      <literal>{id}</literal> with that generated id, then POST to the new
-      URL. The URL the client creates works exactly like a
-      <literal>create-next</literal> URL described earlier. The response of
-      this POST would also return a new <literal>msg-create-next</literal>
-      header. The client can continue to generate its own
-      DUPLICATE_DETECTION_ID, or use the new URL returned via the
-      <literal>msg-create-nex</literal>t header.</para>
-
-      <para>The advantage of this approach is that the client does not have to
-      repost the message. It also only has to come up with a unique
-      <literal>DUPLICATE_DETECTION_ID</literal> once.</para>
-    </sect1>
-
-    <sect1>
-      <title>Persistent Messages</title>
-
-      <para>By default, posted messages are not durable and will not be
-      persisted in HornetQ's journal. You can create durable messages by
-      modifying the default configuration as expressed in Chapter 2 so that
-      all messages are persisted when sent. Alternatively, you can set a URL
-      query parameter called <literal>durable</literal> to true when you post
-      your messages to the URLs returned in the <literal>msg-create</literal>,
-      <literal>msg-create-with-id</literal>, or
-      <literal>msg-create-next</literal> headers. here's an example of
-      that.</para>
-
-      <programlisting>POST /queues/jms.queue.bar/create?durable=true
-Host: example.com
-Content-Type: application/xml
-
-&lt;order&gt;
-   &lt;name&gt;Bill&lt;/name&gt;
-   &lt;item&gt;iPhone4&lt;/item&gt;
-   &lt;cost&gt;$199.99&lt;/cost&gt;
-&lt;/order&gt;
-</programlisting>
-    </sect1>
-
-    <sect1>
-      <title>TTL, Expiration and Priority</title>
-
-      <para>You can set the time to live, expiration, and/or the priority of
-      the message in the queue or topic by setting an additional query
-      parameter. The <literal>expiration</literal> query parameter is an long
-      specify the time in milliseconds since epoch (a long date). The
-      <literal>ttl</literal> query parameter is a time in milliseconds you
-      want the message active. The <literal>priority</literal> is another
-      query parameter with an integer value between 0 and 9 expressing the
-      priority of the message. i.e.:</para>
-
-      <programlisting>POST /queues/jms.queue.bar/create?expiration=30000&amp;priority=3
-Host: example.com
-Content-Type: application/xml
-
-&lt;order&gt;
-   &lt;name&gt;Bill&lt;/name&gt;
-   &lt;item&gt;iPhone4&lt;/item&gt;
-   &lt;cost&gt;$199.99&lt;/cost&gt;
-&lt;/order&gt;
-</programlisting>
-    </sect1>
-  </chapter>
-
-  <chapter>
-    <title>Consuming Messages via Pull</title>
-
-    <para>There are two different ways to consume messages from a topic or
-    queue. You can wait and have the messaging server push them to you, or you
-    can continuously poll the server yourself to see if messages are
-    available. This chapter discusses the latter. Consuming messages via a
-    pull works almost identically for queues and topics with some minor, but
-    important caveats. To start consuming you must create a consumer resource
-    on the server that is dedicated to your client. Now, this pretty much
-    breaks the stateless principle of REST, but after much prototyping, this
-    is the best way to work most effectively with HornetQ through a REST
-    interface.</para>
-
-    <para>You create consumer resources by doing a simple POST to the URL
-    published by the <literal>msg-pull-consumers</literal> response header if
-    you're interacting with a queue, the
-    <literal>msg-pull-subscribers</literal> response header if you're
-    interacting with a topic. These headers are provided by the main queue or
-    topic resource discussed in Chapter 3. Doing an empty POST to one of these
-    URLs will create a consumer resource that follows an auto-acknowledge
-    protocol and, if you're interacting with a topic, creates a temporty
-    subscription to the topic. If you want to use the acknowledgement protocol
-    and/or create a durable subscription (topics only), then you must use the
-    form parameters (<literal>application/x-www-form-urlencoded</literal>)
-    described below.</para>
-
-    <variablelist>
-      <varlistentry>
-        <term>autoAck</term>
-
-        <listitem>
-          <para>A value of <literal>true</literal> or <literal>false</literal>
-          can be given. This defaults to <literal>true</literal> if you do not
-          pass this parameter.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>durable</term>
-
-        <listitem>
-          <para>A value of <literal>true</literal> or <literal>false</literal>
-          can be given. This defaults to <literal>false</literal> if you do
-          not pass this parameter. Only available on topics. This specifies
-          whether you want a durable subscription or not. A durable
-          subscription persists through server restart.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>name</term>
-
-        <listitem>
-          <para>This is the name of the durable subscription. If you do not
-          provide this parameter, the name will be automatically generated by
-          the server. Only usable on topics.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>selector</term>
-
-        <listitem>
-          <para>This is an optional JMS selector string. The HornetQ REST
-          interface adds HTTP headers to the JMS message for REST produced
-          messages. HTTP headers are prefixed with "http_" and every '-'
-          charactor is converted to a '$'.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>idle-timeout</term>
-
-        <listitem>
-          <para>For a topic subscription, idle time in milliseconds in which
-          the consumer connections will be closed if idle.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>delete-when-idle</term>
-
-        <listitem>
-          <para>Boolean value, If true, a topic subscription will be deleted
-          (even if it is durable) when an the idle timeout is reached.</para>
-        </listitem>
-      </varlistentry>
-    </variablelist>
-
-    <sect1>
-      <title>Auto-Acknowledge</title>
-
-      <para>This section focuses on the auto-acknowledge protocol for
-      consuming messages via a pull. Here's a list of the response headers and
-      URLs you'll be interested in.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>msg-pull-consumers</term>
-
-          <listitem>
-            <para>The URL of a factory resource for creating queue consumer
-            resources. You will pull from these created resources.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>msg-pull-subscriptions</term>
-
-          <listitem>
-            <para>The URL of a factory resource for creating topic
-            subscription resources. You will pull from the created
-            resources.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>msg-consume-next</term>
-
-          <listitem>
-            <para>The URL you will pull the next message from. This is
-            returned with every response.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>msg-consumer</term>
-
-          <listitem>
-            <para>This is a URL pointing back to the consumer or subscription
-            resource created for the client.</para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-
-      <sect2>
-        <title>Creating an Auto-Ack Consumer or Subscription</title>
-
-        <para>Here is an example of creating an auto-acknowledged queue pull
-        consumer.</para>
-
-        <orderedlist>
-          <listitem>
-            <para>Find the pull-consumers URL by doing a HEAD or GET request
-            to the base queue resource.</para>
-
-            <programlisting>HEAD /queues/jms.queue.bar HTTP/1.1
-Host: example.com
-
---- Response ---
-HTTP/1.1 200 Ok
-msg-create: http://example.com/queues/jms.queue.bar/create
-msg-pull-consumers: http://example.com/queues/jms.queue.bar/pull-consumers
-msg-push-consumers: http://example.com/queues/jms.queue.bar/push-consumers
-</programlisting>
-          </listitem>
-
-          <listitem>
-            <para>Next do an empty POST to the URL returned in the
-            <literal>msg-pull-consumers</literal> header.</para>
-
-            <programlisting>POST /queues/jms.queue.bar/pull-consumers HTTP/1.1
-Host: example.com
-
---- response ---
-HTTP/1.1 201 Created
-Location: http://example.com/queues/jms.queue.bar/pull-consumers/auto-ack/333
-msg-consume-next: http://example.com/queues/jms.queue.bar/pull-consumers/auto-ack/333/consume-next-1
-</programlisting>
-
-            <para>The <literal>Location</literal> header points to the JMS
-            consumer resource that was created on the server. It is good to
-            remember this URL, although, as you'll see later, it is
-            transmitted with each response just to remind you.</para>
-          </listitem>
-        </orderedlist>
-
-        <para>Creating an auto-acknowledged consumer for a topic is pretty
-        much the same. Here's an example of creating a durable
-        auto-acknowledged topic pull subscription.</para>
-
-        <orderedlist>
-          <listitem>
-            <para>Find the <literal>pull-subscriptions</literal> URL by doing
-            a HEAD or GET request to the base topic resource</para>
-
-            <programlisting>HEAD /topics/jms.topic.bar HTTP/1.1
-Host: example.com
-
---- Response ---
-HTTP/1.1 200 Ok
-msg-create: http://example.com/topics/jms.topic.foo/create
-msg-pull-subscriptions: http://example.com/topics/jms.topic.foo/pull-subscriptions
-msg-push-subscriptions: http://example.com/topics/jms.topic.foo/push-subscriptions
-</programlisting>
-          </listitem>
-
-          <listitem>
-            <para>Next do a POST to the URL returned in the
-            <literal>msg-pull-subscriptions</literal> header passing in a
-            <literal>true</literal> value for the <literal>durable</literal>
-            form parameter.</para>
-
-            <programlisting>POST /topics/jms.topic.foo/pull-subscriptions HTTP/1.1
-Host: example.com
-Content-Type: application/x-www-form-urlencoded
-
-durable=true
-
---- Response ---
-HTTP/1.1 201 Created
-Location: http://example.com/topics/jms.topic.foo/pull-subscriptions/auto-ack/222
-msg-consume-next: http://example.com/topics/jms.topic.foo/pull-subscriptions/auto-ack/222/consume-next-1
-</programlisting>
-
-            <para>The <literal>Location</literal> header points to the JMS
-            subscription resource that was created on the server. It is good
-            to remember this URL, although, as you'll see later, it is
-            transmitted with each response just to remind you.</para>
-          </listitem>
-        </orderedlist>
-      </sect2>
-
-      <sect2>
-        <title>Consuming Messages</title>
-
-        <para>After you have created a consumer resource, you are ready to
-        start pulling messages from the server. Notice that when you created
-        the consumer for either the queue or topic, the response contained a
-        <literal>msg-consume-next</literal> response header. POST to the URL
-        contained within this header to consume the next message in the queue
-        or topic subscription. A successful POST causes the server to extract
-        a message from the queue or topic subscription, acknowledge it, and
-        return it to the consuming client. If there are no messages in the
-        queue or topic subscription, a 503 (Service Unavailable) HTTP code is
-        returned.</para>
-
-        <warning>
-          <para>For both successful and unsuccessful posts to the
-          msg-consume-next URL, the response will contain a new
-          msg-consume-next header. You must ALWAYS use this new URL returned
-          within the new msg-consume-next header to consume new
-          messages.</para>
-        </warning>
-
-        <para>Here's an example of pulling multiple messages from the consumer
-        resource.</para>
-
-        <orderedlist>
-          <listitem>
-            <para>Do a POST on the msg-consume-next URL that was returned with
-            the consumer or subscription resource discussed earlier.</para>
-
-            <programlisting>POST /queues/jms.queue.bar/pull-consumers/consume-next-1
-Host: example.com
-
---- Response ---
-HTTP/1.1 200 Ok
-Content-Type: application/xml
-msg-consume-next: http://example.com/queues/jms.queue.bar/pull-consumers/333/consume-next-2
-msg-consumer: http://example.com/queues/jms.queue.bar/pull-consumers/333
-
-&lt;order&gt;...&lt;/order&gt;
-</programlisting>
-
-            <para>The POST returns the message consumed from the queue. It
-            also returns a new msg-consume-next link. Use this new link to get
-            the next message. Notice also a msg-consumer response header is
-            returned. This is a URL that points back to the consumer or
-            subscription resource. You will need that to clean up your
-            connection after you are finished using the queue or topic.</para>
-          </listitem>
-
-          <listitem>
-            <para>The POST returns the message consumed from the queue. It
-            also returns a new msg-consume-next link. Use this new link to get
-            the next message.</para>
-
-            <programlisting>POST /queues/jms.queue.bar/pull-consumers/consume-next-2
-Host: example.com
-
---- Response ---
-Http/1.1 503 Service Unavailable
-Retry-After: 5
-msg-consume-next: http://example.com/queues/jms.queue.bar/pull-consumers/333/consume-next-2
-</programlisting>
-
-            <para>In this case, there are no messages in the queue, so we get
-            a 503 response back. As per the HTTP 1.1 spec, a 503 response may
-            return a Retry-After head specifying the time in seconds that you
-            should retry a post. Also notice, that another new
-            msg-consume-next URL is present. Although it probabley is the same
-            URL you used last post, get in the habit of using URLs returned in
-            response headers as future versions of HornetQ REST might be
-            redirecting you or adding additional data to the URL after
-            timeouts like this.</para>
-          </listitem>
-
-          <listitem>
-            <para>POST to the URL within the last
-            <literal>msg-consume-next</literal> to get the next
-            message.</para>
-
-            <programlisting>POST /queues/jms.queue.bar/pull-consumers/consume-next-2
-Host: example.com
-
---- Response ---
-HTTP/1.1 200 Ok
-Content-Type: application/xml
-msg-consume-next: http://example.com/queues/jms.queue.bar/pull-consumers/333/consume-next-3
-
-&lt;order&gt;...&lt;/order&gt;</programlisting>
-          </listitem>
-        </orderedlist>
-      </sect2>
-
-      <sect2>
-        <title>Recovering From Network Failures</title>
-
-        <para>If you experience a network failure and do not know if your post
-        to a msg-consume-next URL was successful or not, just re-do your POST.
-        A POST to a msg-consume-next URL is idempotent, meaning that it will
-        return the same result if you execute on any one msg-consume-next URL
-        more than once. Behind the scenes, the consumer resource caches the
-        last consumed message so that if there is a message failure and you do
-        a re-post, the cached last message will be returned (along with a new
-        msg-consume-next URL). This is the reason why the protocol always
-        requires you to use the next new msg-consume-next URL returned with
-        each response. Information about what state the client is in is
-        embedded within the actual URL.</para>
-      </sect2>
-
-      <sect2>
-        <title>Recovering From Client or Server Crashes</title>
-
-        <para>If the server crashes and you do a POST to the msg-consume-next
-        URL, the server will return a 412 (Preconditions Failed) response
-        code. This is telling you that the URL you are using is out of sync
-        with the server. The response will contain a new msg-consume-next
-        header to invoke on.</para>
-
-        <para>If the client crashes there are multiple ways you can recover.
-        If you have remembered the last msg-consume-next link, you can just
-        re-POST to it. If you have remembered the consumer resource URL, you
-        can do a GET or HEAD request to obtain a new msg-consume-next URL. If
-        you have created a topic subscription using the name parameter
-        discussed earlier, you can re-create the consumer. Re-creation will
-        return a msg-consume-next URL you can use. If you cannot do any of
-        these things, you will have to create a new consumer.</para>
-
-        <para>The problem with the auto-acknowledge protocol is that if the
-        client or server crashes, it is possible for you to skip messages. The
-        scenario would happen if the server crashes after auto-acknowledging a
-        message and before the client receives the message. If you want more
-        reliable messaging, then you must use the acknowledgement
-        protocol.</para>
-      </sect2>
-    </sect1>
-
-    <sect1>
-      <title>Manual Acknowledgement</title>
-
-      <para>The manual acknowledgement protocol is similar to the auto-ack
-      protocol except there is an additional round trip to the server to tell
-      it that you have received the message and that the server can internally
-      ack the message. Here is a list of the respone headers you will be
-      interested in.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>msg-pull-consumers</term>
-
-          <listitem>
-            <para>The URL of a factory resource for creating queue consumer
-            resources. You will pull from these created resources</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>msg-pull-subscriptions</term>
-
-          <listitem>
-            <para>The URL of a factory resource for creating topic
-            subscription resources. You will pull from the created
-            resources.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>msg-acknowledge-next</term>
-
-          <listitem>
-            <para>URL used to obtain the next message in the queue or topic
-            subscription. It does not acknowledge the message though.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>msg-acknowledgement</term>
-
-          <listitem>
-            <para>URL used to acknowledge a message.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>msg-consumer</term>
-
-          <listitem>
-            <para>This is a URL pointing back to the consumer or subscription
-            resource created for the client.</para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-
-      <sect2>
-        <title>Creating manually-acknowledged consumers or
-        subscriptions</title>
-
-        <para>Here is an example of creating an auto-acknowledged queue pull
-        consumer.</para>
-
-        <orderedlist>
-          <listitem>
-            <para>Find the pull-consumers URL by doing a HEAD or GET request
-            to the base queue resource.</para>
-
-            <programlisting>HEAD /queues/jms.queue.bar HTTP/1.1
-Host: example.com
-
---- Response ---
-HTTP/1.1 200 Ok
-msg-create: http://example.com/queues/jms.queue.bar/create
-msg-pull-consumers: http://example.com/queues/jms.queue.bar/pull-consumers
-msg-push-consumers: http://example.com/queues/jms.queue.bar/push-consumers
-</programlisting>
-          </listitem>
-
-          <listitem>
-            <para>Next do a POST to the URL returned in the
-            <literal>msg-pull-consumers</literal> header passing in a
-            <literal>false</literal> value to the <literal>autoAck</literal>
-            form parameter .</para>
-
-            <programlisting>POST /queues/jms.queue.bar/pull-consumers HTTP/1.1
-Host: example.com
-Content-Type: application/x-www-form-urlencoded
-
-autoAck=false
-
---- response ---
-HTTP/1.1 201 Created
-Location: http://example.com/queues/jms.queue.bar/pull-consumers/acknowledged/333
-msg-acknowledge-next: http://example.com/queues/jms.queue.bar/pull-consumers/acknowledged/333/acknowledge-next-1
-</programlisting>
-
-            <para>The <literal>Location</literal> header points to the JMS
-            consumer resource that was created on the server. It is good to
-            remember this URL, although, as you'll see later, it is
-            transmitted with each response just to remind you.</para>
-          </listitem>
-        </orderedlist>
-
-        <para>Creating an manually-acknowledged consumer for a topic is pretty
-        much the same. Here's an example of creating a durable
-        manually-acknowledged topic pull subscription.</para>
-
-        <orderedlist>
-          <listitem>
-            <para>Find the <literal>pull-subscriptions</literal> URL by doing
-            a HEAD or GET request to the base topic resource</para>
-
-            <programlisting>HEAD /topics/jms.topic.bar HTTP/1.1
-Host: example.com
-
---- Response ---
-HTTP/1.1 200 Ok
-msg-create: http://example.com/topics/jms.topic.foo/create
-msg-pull-subscriptions: http://example.com/topics/jms.topic.foo/pull-subscriptions
-msg-push-subscriptions: http://example.com/topics/jms.topic.foo/push-subscriptions
-</programlisting>
-          </listitem>
-
-          <listitem>
-            <para>Next do a POST to the URL returned in the
-            <literal>msg-pull-subscriptions</literal> header passing in a
-            <literal>true</literal> value for the <literal>durable</literal>
-            form parameter and a <literal>false</literal> value to the
-            <literal>autoAck</literal> form parameter.</para>
-
-            <programlisting>POST /topics/jms.topic.foo/pull-subscriptions HTTP/1.1
-Host: example.com
-Content-Type: application/x-www-form-urlencoded
-
-durable=true&amp;autoAck=false
-
---- Response ---
-HTTP/1.1 201 Created
-Location: http://example.com/topics/jms.topic.foo/pull-subscriptions/acknowledged/222
-msg-acknowledge-next: http://example.com/topics/jms.topic.foo/pull-subscriptions/acknowledged/222/consume-next-1
-</programlisting>
-
-            <para>The <literal>Location</literal> header points to the JMS
-            subscription resource that was created on the server. It is good
-            to remember this URL, although, as you'll see later, it is
-            transmitted with each response just to remind you.</para>
-          </listitem>
-        </orderedlist>
-      </sect2>
-
-      <sect2>
-        <title>Consuming and Acknowledging a Message</title>
-
-        <para>After you have created a consumer resource, you are ready to
-        start pulling messages from the server. Notice that when you created
-        the consumer for either the queue or topic, the response contained a
-        <literal>msg-acknowledge-next</literal> response header. POST to the
-        URL contained within this header to consume the next message in the
-        queue or topic subscription. If there are no messages in the queue or
-        topic subscription, a 503 (Service Unavailable) HTTP code is returned.
-        A successful POST causes the server to extract a message from the
-        queue or topic subscription and return it to the consuming client. It
-        does not acknowledge the message though. The response will contain the
-        <literal>acknowledgement</literal> header which you will use to
-        acknowledge the message.</para>
-
-        <para>Here's an example of pulling multiple messages from the consumer
-        resource.</para>
-
-        <orderedlist>
-          <listitem>
-            <para>Do a POST on the msg-acknowledge-next URL that was returned
-            with the consumer or subscription resource discussed
-            earlier.</para>
-
-            <programlisting>POST /queues/jms.queue.bar/pull-consumers/consume-next-1
-Host: example.com
-
---- Response ---
-HTTP/1.1 200 Ok
-Content-Type: application/xml
-msg-acknowledgement: http://example.com/queues/jms.queue.bar/pull-consumers/333/acknowledgement/2
-msg-consumer: http://example.com/queues/jms.queue.bar/pull-consumers/333
-
-&lt;order&gt;...&lt;/order&gt;
-</programlisting>
-
-            <para>The POST returns the message consumed from the queue. It
-            also returns a <literal>msg-acknowledgemen</literal>t link. You
-            will use this new link to acknowledge the message. Notice also a
-            <literal>msg-consumer</literal> response header is returned. This
-            is a URL that points back to the consumer or subscription
-            resource. You will need that to clean up your connection after you
-            are finished using the queue or topic.</para>
-          </listitem>
-
-          <listitem>
-            <para>Acknowledge or unacknowledge the message by doing a POST to
-            the URL contained in the <literal>msg-acknowledgement</literal>
-            header. You must pass an <literal>acknowledge</literal> form
-            parameter set to <literal>true</literal> or
-            <literal>false</literal> depending on whether you want to
-            acknowledge or unacknowledge the message on the server.</para>
-
-            <programlisting>POST /queues/jms.queue.bar/pull-consumers/acknowledgement/2
-Host: example.com
-Content-Type: application/x-www-form-urlencoded
-
-acknowledge=true
-
---- Response ---
-Http/1.1 200 Ok
-msg-acknowledge-next: http://example.com/queues/jms.queue.bar/pull-consumers/333/acknowledge-next-2
-</programlisting>
-
-            <para>Whether you acknowledge or unacknowledge the message, the
-            response will contain a new msg-acknowledge-next header that you
-            must use to obtain the next message.</para>
-          </listitem>
-        </orderedlist>
-      </sect2>
-
-      <sect2>
-        <title>Recovering From Network Failures</title>
-
-        <para>If you experience a network failure and do not know if your post
-        to a <literal>msg-acknowledge-next</literal> or
-        <literal>msg-acknowledgement</literal> URL was successful or not, just
-        re-do your POST. A POST to one of these URLs is idempotent, meaning
-        that it will return the same result if you re-post. Behind the scenes,
-        the consumer resource keeps track of its current state. If the last
-        action was a call to <literal>msg-acknowledge-next</literal>, it will
-        have the last message cached, so that if a re-post is done, it will
-        return the message again. Same goes with re-posting to
-        <literal>msg-acknowledgement</literal>. The server remembers its last
-        state and will return the same results. If you look at the URLs you'll
-        see that they contain information about the expected current state of
-        the server. This is how the server knows what the client is
-        expecting.</para>
-      </sect2>
-
-      <sect2>
-        <title>Recovering From Client or Server Crashes</title>
-
-        <para>If the server crashes and while you are doing a POST to the
-        <literal>msg-acknowledge-next</literal> URL, just re-post. Everything
-        should reconnect all right. On the other hand, if the server crashes
-        while you are doing a POST to <literal>msg-acknowledgement</literal>,
-        the server will return a 412 (Preconditions Failed) response code.
-        This is telling you that the URL you are using is out of sync with the
-        server and the message you are acknowledging was probably re-enqueued.
-        The response will contain a new
-        <literal>msg-acknowledge-next</literal> header to invoke on.</para>
-
-        <para>As long as you have "bookmarked" the consumer resource URL
-        (returned from <literal>Location</literal> header on a create, or the
-        <literal>msg-consumer</literal> header), you can recover from client
-        crashes by doing a GET or HEAD request on the consumer resource to
-        obtain what state you are in. If the consumer resource is expecting
-        you to acknowledge a message, it will return a
-        <literal>msg-acknowledgement</literal> header in the response. If the
-        consumer resource is expecting you to pull for the next message, the
-        <literal>msg-acknowledge-next</literal> header will be in the
-        response. With manual acknowledgement you are pretty much guaranteed
-        to avoid skipped messages. For topic subscriptions that were created
-        with a name parameter, you do not have to "bookmark" the returned URL.
-        Instead, you can re-create the consumer resource with the same exact
-        name. The response will contain the same information as if you did a
-        GET or HEAD request on the consumer resource.</para>
-      </sect2>
-    </sect1>
-
-    <sect1>
-      <title>Blocking Pulls with Accept-Wait</title>
-
-      <para>Unless your queue or topic has a high rate of message flowing
-      though it, if you use the pull protocol, you're going to be receiving a
-      lot of 503 responses as you continuously pull the server for new
-      messages. To alleviate this problem, the HornetQ REST interface provides
-      the <literal>Accept-Wait</literal> header. This is a generic HTTP
-      request header that is a hint to the server for how long the client is
-      willing to wait for a response from the server. The value of this header
-      is the time in seconds the client is willing to block for. You would
-      send this request header with your pull requests. Here's an
-      example:</para>
-
-      <programlisting>POST /queues/jms.queue.bar/pull-consumers/consume-next-2
-Host: example.com
-Accept-Wait: 30
-
---- Response ---
-HTTP/1.1 200 Ok
-Content-Type: application/xml
-msg-consume-next: http://example.com/queues/jms.queue.bar/pull-consumers/333/consume-next-3
-
-&lt;order&gt;...&lt;/order&gt;</programlisting>
-
-      <para>In this example, we're posting to a msg-consume-next URL and
-      telling the server that we would be willing to block for 30
-      seconds.</para>
-    </sect1>
-
-    <sect1>
-      <title>Clean Up Your Consumers!</title>
-
-      <para>When the client is done with its consumer or topic subscription it
-      should do an HTTP DELETE call on the consumer URL passed back from the
-      Location header or the msg-consumer response header. The server will
-      time out a consumer with the value configured from Chapter 2.3, so you
-      don't have to clean up if you dont' want to, but if you are a good kid,
-      you will clean up your messes. A consumer timeout for durable
-      subscriptions will not delete the underlying durable JMS subscription
-      though, only the server-side consumer resource (and underlying JMS
-      session).</para>
-    </sect1>
-  </chapter>
-
-  <chapter>
-    <title>Pushing Messages</title>
-
-    <para>You can configure the HornetQ REST server to push messages to a
-    registered URL either remotely through the REST interface, or by creating
-    a pre-configured XML file for the HornetQ REST server to load at boot
-    time.</para>
-
-    <sect1>
-      <title>The Queue Push Subscription XML</title>
-
-      <para>Creating a push consumer for a queue first involves creating a
-      very simple XML document. This document tells the server if the push
-      subscription should survive server reboots (is it durable). It must
-      provide a URL to ship the forwarded message to. Finally, you have to
-      provide authentication information if the final endpoint requires
-      authentication. Here's a simple example:</para>
-
-      <programlisting>&lt;push-registration&gt;
-   &lt;durable&gt;false&lt;/durable&gt;
-   &lt;selector&gt;&lt;![CDATA[ 
-         SomeAttribute &gt; 1 
-       ]]&gt;
-   &lt;/selector&gt;
-   &lt;link rel="push" href="http://somewhere.com" type="application/json" method="PUT"/&gt;
-   &lt;maxRetries&gt;5&lt;/maxRetries&gt;
-   &lt;retryWaitMillis&gt;1000&lt;/retryWaitMillis&gt;
-   &lt;disableOnFailure&gt;true&lt;/disableOnFailure&gt;
-&lt;/push-registration&gt;
-</programlisting>
-
-      <para>The <literal>durable</literal> element specifies whether the
-      registration should be saved to disk so that if there is a server
-      restart, the push subscription will still work. This element is not
-      required. If left out it defaults to <literal>false</literal>. If
-      durable is set to true, an XML file for the push subscription will be
-      created within the directory specified by the
-      <literal>queue-push-store-dir</literal> config variable defined in
-      Chapter 2. (<literal>topic-push-store-dir</literal> for topics).</para>
-
-      <para>The <literal>selector</literal> element is optional and defines a
-      JMS message selector. You should enclose it within CDATA blocks as some
-      of the selector characters are illegal XML.</para>
-
-      <para>The <literal>maxRetries</literal> element specifies how many times
-      a the server will try to push a message to a URL if there is a
-      connection failure.</para>
-
-      <para>The <literal>retryWaitMillis</literal> element specifies how long
-      to wait before performing a retry.</para>
-
-      <para>The <literal>disableOnFailure</literal> element, if set to true,
-      will disable the registration if all retries have failed. It will not
-      disable the connection on non-connection-failure issues (like a bad
-      request for instance). In these cases, the dead letter queue logic of
-      HornetQ will take over.</para>
-
-      <para>The <literal>link</literal> element specifies the basis of the
-      interaction. The <literal>href</literal> attribute contains the URL you
-      want to interact with. It is the only required attribute. The
-      <literal>type</literal> attribute specifies the content-type ofwhat the
-      push URL is expecting. The <literal>method</literal> attribute defines
-      what HTTP method the server will use when it sends the message to the
-      server. If it is not provided it defaults to POST. The
-      <literal>rel</literal> attribute is very important and the value of it
-      triggers different behavior. Here's the values a rel attribute can
-      have:</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>destination</term>
-
-          <listitem>
-            <para>The href URL is assumed to be a queue or topic resource of
-            another HornetQ REST server. The push registration will initially
-            do a HEAD request to this URL to obtain a msg-create-with-id
-            header. It will use this header to push new messages to the
-            HornetQ REST endpoint reliably. Here's an example:</para>
-
-            <programlisting>&lt;push-registration&gt;
-   &lt;link rel="destination" href="http://somewhere.com/queues/jms.queue.foo"/&gt;
-&lt;/push-registration&gt;   </programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>template</term>
-
-          <listitem>
-            <para>In this case, the server is expecting the link element's
-            href attribute to be a URL expression. The URL expression must
-            have one and only one URL parameter within it. The server will use
-            a unique value to create the endpoint URL. Here's an
-            example:</para>
-
-            <programlisting>&lt;push-registration&gt;
-   &lt;link rel="template" href="http://somewhere.com/resources/{id}/messages" method="PUT"/&gt;
-&lt;/push-registration&gt;
-</programlisting>
-
-            <para>In this example, the {id} sub-string is the one and only one
-            URL parameter.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>user defined</term>
-
-          <listitem>
-            <para>If the rel attributes is not destination or template (or is
-            empty or missing), then the server will send an HTTP message to
-            the href URL using the HTTP method defined in the method
-            attribute. Here's an example:</para>
-
-            <programlisting>&lt;push-registration&gt;
-   &lt;link href="http://somewhere.com" type="application/json" method="PUT"/&gt;
-&lt;/push-registration&gt;</programlisting>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </sect1>
-
-    <sect1>
-      <title>The Topic Push Subscription XML</title>
-
-      <para>The push XML for a topic is the same except the root element is
-      push-topic-registration. (Also remember the <literal>selector</literal>
-      element is optional). The rest of the document is the same. Here's an
-      example of a template registration:</para>
-
-      <programlisting>&lt;push-topic-registration&gt;
-   &lt;durable&gt;true&lt;/durable&gt;
-   &lt;selector&gt;&lt;![CDATA[ 
-         SomeAttribute &gt; 1 
-       ]]&gt;
-   &lt;/selector&gt;
-   &lt;link rel="template" href="http://somewhere.com/resources/{id}/messages" method="POST"/&gt;
-&lt;/push-topic registration&gt;</programlisting>
-    </sect1>
-
-    <sect1>
-      <title>Creating a Push Subscription at Runtime</title>
-
-      <para>Creating a push subscription at runtime involves getting the
-      factory resource URL from the msg-push-consumers header, if the
-      destination is a queue, or msg-push-subscriptions header, if the
-      destination is a topic. Here's an example of creating a push
-      registration for a queue:</para>
-
-      <orderedlist>
-        <listitem>
-          <para>First do a HEAD request to the queue resource:</para>
-
-          <programlisting>HEAD /queues/jms.queue.bar HTTP/1.1
-Host: example.com
-
---- Response ---
-HTTP/1.1 200 Ok
-msg-create: http://example.com/queues/jms.queue.bar/create
-msg-pull-consumers: http://example.com/queues/jms.queue.bar/pull-consumers
-msg-push-consumers: http://example.com/queues/jms.queue.bar/push-consumers</programlisting>
-        </listitem>
-
-        <listitem>
-          <para>Next POST your subscription XML to the URL returned from
-          msg-push-consumers header</para>
-
-          <programlisting>POST /queues/jms.queue.bar/push-consumers
-Host: example.com
-Content-Type: application/xml
-
-&lt;push-registration&gt;
-   &lt;link rel="destination" href="http://somewhere.com/queues/jms.queue.foo"/&gt;
-&lt;/push-registration&gt;
-
---- Response ---
-HTTP/1.1 201 Created
-Location: http://example.com/queues/jms.queue.bar/push-consumers/1-333-1212
-</programlisting>
-
-          <para>The Location header contains the URL for the created resource.
-          If you want to unregister this, then do a HTTP DELETE on this
-          URL.</para>
-        </listitem>
-      </orderedlist>
-
-      <para>Here's an example of creating a push registration for a
-      topic:</para>
-
-      <orderedlist>
-        <listitem>
-          <para>First do a HEAD request to the topic resource:</para>
-
-          <programlisting>HEAD /topics/jms.topic.bar HTTP/1.1
-Host: example.com
-
---- Response ---
-HTTP/1.1 200 Ok
-msg-create: http://example.com/topics/jms.topic.bar/create
-msg-pull-subscriptions: http://example.com/topics/jms.topic.bar/pull-subscriptions
-msg-push-subscriptions: http://example.com/topics/jms.topic.bar/push-subscriptions</programlisting>
-        </listitem>
-
-        <listitem>
-          <para>Next POST your subscription XML to the URL returned from
-          msg-push-subscriptions header</para>
-
-          <programlisting>POST /topics/jms.topic.bar/push-subscriptions
-Host: example.com
-Content-Type: application/xml
-
-&lt;push-registration&gt;
-   &lt;link rel="template" href="http://somewhere.com/resources/{id}"/&gt;
-&lt;/push-registration&gt;
-
---- Response ---
-HTTP/1.1 201 Created
-Location: http://example.com/topics/jms.topic.bar/push-subscriptions/1-333-1212
-</programlisting>
-
-          <para>The Location header contains the URL for the created resource.
-          If you want to unregister this, then do a HTTP DELETE on this
-          URL.</para>
-        </listitem>
-      </orderedlist>
-    </sect1>
-
-    <sect1>
-      <title>Creating a Push Subscription by Hand</title>
-
-      <para>You can create a push XML file yourself if you do not want to go
-      through the REST interface to create a push subscription. There is some
-      additional information you need to provide though. First, in the root
-      element, you must define a unique id attribute. You must also define a
-      destination element to specify the queue you should register a consumer
-      with. For a topic, the destination element is the name of the
-      subscription that will be reated. For a topic, you must also specify the
-      topic name within the topic element.</para>
-
-      <para>Here's an example of a hand-created queue registration. This file
-      must go in the directory specified by the queue-push-store-dir config
-      variable defined in Chapter 2:</para>
-
-      <programlisting>&lt;push-registration id="111"&gt;
-   &lt;destination&gt;jms.queue.bar&lt;/destination&gt;
-   &lt;durable&gt;true&gt;
-   &lt;link rel="template" href="http://somewhere.com/resources/{id}/messages" method="PUT"/&gt;
-&lt;/push-registration&gt;</programlisting>
-
-      <para>Here's an example of a hand-created topic registration. This file
-      must go in the directory specified by the topic-push-store-dir config
-      variable defined in Chapter 2:</para>
-
-      <programlisting>&lt;push-topic-registration id="112"&gt;
-   &lt;destination&gt;my-subscription-1&lt;/destination
-   &lt;durable&gt;true&lt;/durable&gt;
-   &lt;link rel="template" href="http://somewhere.com/resources/{id}/messages" method="PUT"/&gt;
-   &lt;topic&gt;jms.topic.foo&lt;/topic&gt;
-&lt;/push-topic-registration&gt;</programlisting>
-    </sect1>
-
-    <sect1>
-      <title>Pushing to Authenticated Servers</title>
-
-      <para>Push subscriptions only support BASIC and DIGEST authentication
-      out of the box. Here is an example of adding BASIC
-      authentication:</para>
-
-      <programlisting>&lt;push-topic-registration&gt;
-   &lt;durable&gt;true&lt;/durable&gt;
-   &lt;link rel="template" href="http://somewhere.com/resources/{id}/messages" method="POST"/&gt;
-   &lt;authentication&gt;
-      &lt;basic-auth&gt;
-         &lt;username&gt;guest&lt;/username&gt;
-         &lt;password&gt;geheim&lt;/password&gt;
-      &lt;/basic-auth&gt;
-   &lt;/authentication&gt;
-&lt;/push-topic registration&gt;</programlisting>
-
-      <para>For DIGEST, just replace basic-auth with digest-auth.</para>
-
-      <para>For other authentication mechanisms, you can register headers you
-      want transmitted with each request. Use the header element with the name
-      attribute representing the name of the header. Here's what custom
-      headers might look like:</para>
-
-      <programlisting>&lt;push-topic-registration&gt;
-   &lt;durable&gt;true&lt;/durable&gt;
-   &lt;link rel="template" href="http://somewhere.com/resources/{id}/messages" method="POST"/&gt;
-   &lt;header name="secret-header"&gt;jfdiwe3321&lt;/header&gt;
-&lt;/push-topic registration&gt;</programlisting>
-    </sect1>
-  </chapter>
-
-  <chapter>
-    <title>Creating Destinations</title>
-
-    <para>You can create a durable queue or topic through the REST interface.
-    Currently you cannot create a temporary queue or topic. To create a queue
-    you do a POST to the relative URL /queues with an XML representation of
-    the queue. The XML syntax is the same queue syntax that you would specify
-    in hornetq-jms.xml if you were creating a queue there. For example:</para>
-
-    <programlisting>POST /queues
-Host: example.com
-Content-Type: application/hornetq.jms.queue+xml
-
-&lt;queue name="testQueue"&gt;
-   &lt;durable&gt;true&lt;/durable&gt;
-&lt;/queue&gt;
-
---- Response ---
-HTTP/1.1 201 Created
-Location: http://example.com/queues/jms.queue.testQueue
-</programlisting>
-
-    <para>Notice that the Content-Type is
-    application/hornetq.jms.queue+xml.</para>
-
-    <para>Here's what creating a topic would look like:</para>
-
-    <programlisting>POST /topics
-Host: example.com
-Content-Type: application/hornetq.jms.topic+xml
-
-&lt;topic name="testTopic"&gt;
-&lt;/topic&gt;
-
---- Response ---
-HTTP/1.1 201 Created
-Location: http://example.com/topics/jms.topic.testTopic</programlisting>
-  </chapter>
-
-  <chapter>
-    <title>Securing the HornetQ REST Interface</title>
-
-    <para></para>
-
-    <sect1>
-      <title>Within JBoss Application server</title>
-
-      <para>Securing the HornetQ REST interface is very simple with the JBoss
-      Application Server. You turn on authentication for all URLs within your
-      WAR's web.xml, and let the user Principal to propagate to HornetQ. This
-      only works if you are using the JBossSecurityManager with HornetQ. See
-      the HornetQ documentation for more details.</para>
-    </sect1>
-
-    <sect1>
-      <title>Security in other environments</title>
-
-      <para>To secure the HornetQ REST interface in other environments you
-      must role your own security by specifying security constraints with your
-      web.xml for every path of every queue and topic you have deployed. Here
-      is a list of URI patterns:</para>
-
-      <table>
-        <title></title>
-
-        <tgroup cols="2">
-          <tbody>
-            <row>
-              <entry>/queues</entry>
-
-              <entry>secure the POST operation to secure queue
-              creation</entry>
-            </row>
-
-            <row>
-              <entry>/queues/{queue-name}</entry>
-
-              <entry>secure the GET HEAD operation to getting information
-              about the queue.</entry>
-            </row>
-
-            <row>
-              <entry>/queues/{queue-name}/create/*</entry>
-
-              <entry>secure this URL pattern for producing messages.</entry>
-            </row>
-
-            <row>
-              <entry>/queues/{queue-name}/pull-consumers/*</entry>
-
-              <entry>secure this URL pattern for pulling messages
-              messages.</entry>
-            </row>
-
-            <row>
-              <entry>/queues/{queue-name}/push-consumers/*</entry>
-
-              <entry>secure this URL pattern for pushing messages.</entry>
-            </row>
-
-            <row>
-              <entry>/topics</entry>
-
-              <entry>secure the POST operation to secure topic
-              creation</entry>
-            </row>
-
-            <row>
-              <entry>/topics/{topic-name}</entry>
-
-              <entry>secure the GET HEAD operation to getting information
-              about the topic.</entry>
-            </row>
-
-            <row>
-              <entry>/topics/{topic-name}/create/*</entry>
-
-              <entry>secure this URL pattern for producing messages.</entry>
-            </row>
-
-            <row>
-              <entry>/topics/{topic-name}/pull-subscriptions/*</entry>
-
-              <entry>secure this URL pattern for pulling messages
-              messages.</entry>
-            </row>
-
-            <row>
-              <entry>/topics/{topic-name}/push-subscriptions/*</entry>
-
-              <entry>secure this URL pattern for pushing messages.</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-    </sect1>
-  </chapter>
-
-  <chapter>
-    <title>Mixing JMS and REST</title>
-
-    <para>The HornetQ REST interface supports mixing JMS and REST producres
-    and consumers. You can send an ObjectMessage through a JMS Producer, and
-    have a REST client consume it. You can have a REST client POST a message
-    to a topic and have a JMS Consumer receive it. Some simple transformations
-    are supported if you have the correct RESTEasy providers installed.</para>
-
-    <sect1>
-      <title>JMS Producers - REST Consumers</title>
-
-      <para>If you have a JMS producer, the HornetQ REST interface only
-      supports ObjectMessage type. If the JMS producer is aware that there may
-      be REST consumers, it should set a JMS property to specify what
-      Content-Type the Java object should be translated into by REST clients.
-      The HornetQ REST server will use RESTEasy content handlers
-      (MessageBodyReader/Writers) to transform the Java object to the type
-      desired. Here's an example of a JMS producer setting the content type of
-      the message.</para>
-
-      <programlisting>ObjectMessage message = session.createObjectMessage();
-message.setStringProperty(org.hornetq.rest.HttpHeaderProperty.CONTENT_TYPE, "application/xml");
-</programlisting>
-
-      <para>If the JMS producer does not set the content-type, then this
-      information must be obtained from the REST consumer. If it is a pull
-      consumer, then the REST client should send an Accept header with the
-      desired media types it wants to convert the Java object into. If the
-      REST client is a push registration, then the type attribute of the link
-      element of the push registration should be set to the desired
-      type.</para>
-    </sect1>
-
-    <sect1>
-      <title>REST Producers - JMS Consumers</title>
-
-      <para>If you have a REST client producing messages and a JMS consumer,
-      HornetQ REST has a simple helper class for you to transform the HTTP
-      body to a Java object. Here's some example code:</para>
-
-      <programlisting>public void onMessage(Message message)
-{
-   MyType obj = org.hornetq.rest.Jms.getEntity(message, MyType.class);
-}
-</programlisting>
-
-      <para>The way the <literal>getEntity()</literal> method works is that if
-      the message is an ObjectMessage, it will try to extract the desired type
-      from it like any other JMS message. If a REST producer sent the message,
-      then the method uses RESTEasy to convert the HTTP body to the Java
-      object you want. See the Javadoc of this class for more helper
-      methods.</para>
-    </sect1>
-  </chapter>
 </book>

Copied: trunk/docs/rest-manual/en/notice.xml (from rev 10511, trunk/docs/quickstart-guide/en/notice.xml)
===================================================================
--- trunk/docs/rest-manual/en/notice.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/notice.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,32 @@
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+]>
+
+<chapter id="notice">
+    <title>Legal Notice</title>
+
+        <para>Copyright © 2010 Red Hat, Inc. and others.</para>
+        <para>The text of and illustrations in this document are licensed by Red Hat under
+            a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA").</para>
+        <para>An explanation of CC-BY-SA is available at 
+            <ulink url="http://creativecommons.org/licenses/by-sa/3.0/">http://creativecommons.org/licenses/by-sa/3.0/</ulink>. 
+            In accordance with CC-BY-SA, if you distribute this document or an adaptation
+            of it, you must provide the URL for the original version.</para>
+        <para>Red Hat, as the licensor of this document, waives the right to enforce, 
+            and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent 
+            permitted by applicable law.</para>
+</chapter>
\ No newline at end of file

Added: trunk/docs/rest-manual/en/posting-messages.xml
===================================================================
--- trunk/docs/rest-manual/en/posting-messages.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/posting-messages.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,280 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+]>
+
+  <chapter>
+    <title>Posting Messages</title>
+
+    <para>This chapter discusses the protocol for posting messages to a queue
+    or a topic. In Chapter 3, you saw that a queue or topic resource publishes
+    variable custom headers that are links to other RESTful resources. The
+    <literal>msg-create</literal> header is the URL you post messages to.
+    Messages are published to a queue or topic by sending a simple HTTP
+    message to the URL published by the msg-create header. The HTTP message
+    contains whatever content you want to publish to the HornetQ destination.
+    Here's an example scenario:</para>
+
+    <orderedlist>
+      <listitem>
+        <para>Obtain the starting <literal>msg-create</literal> header from
+        the queue or topic resource.</para>
+
+        <para><programlisting>HEAD /queues/jms.queue.bar HTTP/1.1
+Host: example.com
+
+--- Response ---
+HTTP/1.1 200 Ok
+msg-create: http://example.com/queues/jms.queue.bar/create
+msg-create-with-id: http://example.com/queues/jms.queue.bar/create/{id}
+</programlisting></para>
+      </listitem>
+
+      <listitem>
+        <para>Do a POST to the URL contained in the
+        <literal>msg-create</literal> header.</para>
+
+        <para><programlisting>POST /queues/jms.queue.bar/create
+Host: example.com
+Content-Type: application/xml
+
+&lt;order&gt;
+   &lt;name&gt;Bill&lt;/name&gt;
+   &lt;item&gt;iPhone4&lt;/name&gt;
+   &lt;cost&gt;$199.99&lt;/cost&gt;
+&lt;/order&gt;
+
+--- Response ---
+HTTP/1.1 201 Created
+msg-create-next: http://example.com/queues/jms.queue.bar/create/002
+</programlisting>A successful response will return a 201 response code. Also
+        notice that a <literal>msg-create-next</literal> response header is
+        sent as well. You must use this URL to POST your next message.</para>
+      </listitem>
+
+      <listitem>
+        <para>POST your next message to the queue using the URL returned in
+        the <literal>msg-create-next</literal> header.</para>
+
+        <para><programlisting>POST /queues/jms.queue.bar/create/002
+Host: example.com
+Content-Type: application/xml
+
+&lt;order&gt;
+   &lt;name&gt;Monica&lt;/name&gt;
+   &lt;item&gt;iPad&lt;/item&gt;
+   &lt;cost&gt;$499.99&lt;/cost&gt;
+&lt;/order&gt;
+
+--- Response --
+HTTP/1.1 201 Created
+msg-create-next: http://example.com/queues/jms.queue.bar/create/003
+</programlisting>Continue using the new <literal>msg-create-next</literal>
+        header returned with each response.</para>
+      </listitem>
+    </orderedlist>
+
+    <para>It is <emphasis>VERY IMPORTENT</emphasis> that you never re-use
+    returned <literal>msg-create-next</literal> headers to post new messages.
+    This URL may be uniquely generated for each message and used for duplicate
+    detection. If you lose the URL within the
+    <literal>msg-create-next</literal> header, then just go back to the queue
+    or topic resource to get the msg-create URL.</para>
+
+    <sect1>
+      <title>Duplicate Detection</title>
+
+      <para>Sometimes you might have network problems when posting new
+      messages to a queue or topic. You may do a POST and never receive a
+      response. Unfortunately, you don't know whether or not the server
+      received the message and so a re-post of the message might cause
+      duplicates to be posted to the queue or topic. By default, the HornetQ
+      REST interface is configured to accept and post duplicate messages. You
+      can change this by turning on duplicate message detection by setting the
+      <literal>dups-ok</literal> config option to <literal>false</literal> as
+      described in Chapter 3. When you do this, the initial POST to the
+      msg-create URL will redirect you, using the standard HTTP 307
+      redirection mechanism to a unique URL to POST to. All other interactions
+      remain the same as discussed earlier. Here's an example:</para>
+
+      <orderedlist>
+        <listitem>
+          <para>Obtain the starting <literal>msg-create</literal> header from
+          the queue or topic resource.</para>
+
+          <para><programlisting>HEAD /queues/jms.queue.bar HTTP/1.1
+Host: example.com
+
+--- Response ---
+HTTP/1.1 200 Ok
+msg-create: http://example.com/queues/jms.queue.bar/create
+msg-create-with-id: http://example.com/queues/jms.queue.bar/create/{id}
+</programlisting></para>
+        </listitem>
+
+        <listitem>
+          <para>Do a POST to the URL contained in the
+          <literal>msg-create</literal> header.</para>
+
+          <para><programlisting>POST /queues/jms.queue.bar/create
+Host: example.com
+Content-Type: application/xml
+
+&lt;order&gt;
+   &lt;name&gt;Bill&lt;/name&gt;
+   &lt;item&gt;iPhone4&lt;/name&gt;
+   &lt;cost&gt;$199.99&lt;/cost&gt;
+&lt;/order&gt;
+
+--- Response ---
+HTTP/1.1 307 Redirect
+Location: http://example.com/queues/jms.queue.bar/create/001
+</programlisting>A successful response will return a 307 response code. This
+          is standard HTTP protocol. It is telling you that you must re-POST
+          to the URL contained within the <literal>Location</literal>
+          header.</para>
+        </listitem>
+
+        <listitem>
+          <para>re-POST your message to the URL provided within the
+          <literal>Location</literal> header<literal>.</literal></para>
+
+          <para><programlisting>POST /queues/jms.queue.bar/create/001
+Host: example.com
+Content-Type: application/xml
+
+&lt;order&gt;
+   &lt;name&gt;Bill&lt;/name&gt;
+   &lt;item&gt;iPhone4&lt;/name&gt;
+   &lt;cost&gt;$199.99&lt;/cost&gt;
+&lt;/order&gt;
+
+--- Response --
+HTTP/1.1 201 Created
+msg-create-next: http://example.com/queues/jms.queue.bar/create/002
+</programlisting>You should receive a 201 Created response. If there is a
+          network failure, just re-POST to the Location header. For new
+          messages, use the returned <literal>msg-create-next</literal> header
+          returned with each response.</para>
+        </listitem>
+
+        <listitem>
+          <para>POST any new message to the returned
+          <literal>msg-create-next</literal> header.</para>
+
+          <para><programlisting>POST /queues/jms.queue.bar/create/002
+Host: example.com
+Content-Type: application/xml
+
+&lt;order&gt;
+   &lt;name&gt;Monica&lt;/name&gt;
+   &lt;item&gt;iPad&lt;/name&gt;
+   &lt;cost&gt;$499.99&lt;/cost&gt;
+&lt;/order&gt;
+
+--- Response --
+HTTP/1.1 201 Created
+msg-create-next: http://example.com/queues/jms.queue.bar/create/003</programlisting>If
+          there ever is a network problem, just repost to the URL provided in
+          the <literal>msg-create-next</literal> header.</para>
+        </listitem>
+      </orderedlist>
+
+      <para>How can this work? As you can see, with each successful response,
+      the HornetQ REST server returns a uniquely generated URL within the
+      msg-create-next header. This URL is dedicated to the next new message
+      you want to post. Behind the scenes, the code extracts an identify from
+      the URL and uses HornetQ's duplicate detection mechanism by setting the
+      <literal>DUPLICATE_DETECTION_ID</literal> property of the JMS message
+      that is actually posted to the system.</para>
+
+      <para>An alternative to this approach is to use the
+      <literal>msg-create-with-id</literal> header. This is not an invokable
+      URL, but a URL template. The idea is that the client provides the
+      <literal>DUPLICATE_DETECTION_ID</literal> and creates it's own
+      <literal>create-next</literal> URL. The
+      <literal>msg-create-with-id</literal> header looks like this (you've see
+      it in previous examples, but we haven't used it):</para>
+
+      <programlisting>msg-create-with-id: http://example.com/queues/jms.queue.bar/create/{id}</programlisting>
+
+      <para>You see that it is a regular URL appended with a
+      <literal>{id}</literal>. This <literal>{id}</literal> is a pattern
+      matching substring. A client would generate its
+      <literal>DUPLICATE_DETECTION_ID</literal> and replace
+      <literal>{id}</literal> with that generated id, then POST to the new
+      URL. The URL the client creates works exactly like a
+      <literal>create-next</literal> URL described earlier. The response of
+      this POST would also return a new <literal>msg-create-next</literal>
+      header. The client can continue to generate its own
+      DUPLICATE_DETECTION_ID, or use the new URL returned via the
+      <literal>msg-create-nex</literal>t header.</para>
+
+      <para>The advantage of this approach is that the client does not have to
+      repost the message. It also only has to come up with a unique
+      <literal>DUPLICATE_DETECTION_ID</literal> once.</para>
+    </sect1>
+
+    <sect1>
+      <title>Persistent Messages</title>
+
+      <para>By default, posted messages are not durable and will not be
+      persisted in HornetQ's journal. You can create durable messages by
+      modifying the default configuration as expressed in Chapter 2 so that
+      all messages are persisted when sent. Alternatively, you can set a URL
+      query parameter called <literal>durable</literal> to true when you post
+      your messages to the URLs returned in the <literal>msg-create</literal>,
+      <literal>msg-create-with-id</literal>, or
+      <literal>msg-create-next</literal> headers. here's an example of
+      that.</para>
+
+      <programlisting>POST /queues/jms.queue.bar/create?durable=true
+Host: example.com
+Content-Type: application/xml
+
+&lt;order&gt;
+   &lt;name&gt;Bill&lt;/name&gt;
+   &lt;item&gt;iPhone4&lt;/item&gt;
+   &lt;cost&gt;$199.99&lt;/cost&gt;
+&lt;/order&gt;
+</programlisting>
+    </sect1>
+
+    <sect1>
+      <title>TTL, Expiration and Priority</title>
+
+      <para>You can set the time to live, expiration, and/or the priority of
+      the message in the queue or topic by setting an additional query
+      parameter. The <literal>expiration</literal> query parameter is an long
+      specify the time in milliseconds since epoch (a long date). The
+      <literal>ttl</literal> query parameter is a time in milliseconds you
+      want the message active. The <literal>priority</literal> is another
+      query parameter with an integer value between 0 and 9 expressing the
+      priority of the message. i.e.:</para>
+
+      <programlisting>POST /queues/jms.queue.bar/create?expiration=30000&amp;priority=3
+Host: example.com
+Content-Type: application/xml
+
+&lt;order&gt;
+   &lt;name&gt;Bill&lt;/name&gt;
+   &lt;item&gt;iPhone4&lt;/item&gt;
+   &lt;cost&gt;$199.99&lt;/cost&gt;
+&lt;/order&gt;
+</programlisting>
+    </sect1>
+  </chapter>
\ No newline at end of file

Added: trunk/docs/rest-manual/en/pushing-messages.xml
===================================================================
--- trunk/docs/rest-manual/en/pushing-messages.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/pushing-messages.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+]>
+
+<chapter>
+ <title>Pushing Messages</title>
+
+ <para>You can configure the HornetQ REST server to push messages to a
+ registered URL either remotely through the REST interface, or by creating
+ a pre-configured XML file for the HornetQ REST server to load at boot
+ time.</para>
+
+ <sect1>
+   <title>The Queue Push Subscription XML</title>
+
+   <para>Creating a push consumer for a queue first involves creating a
+   very simple XML document. This document tells the server if the push
+   subscription should survive server reboots (is it durable). It must
+   provide a URL to ship the forwarded message to. Finally, you have to
+   provide authentication information if the final endpoint requires
+   authentication. Here's a simple example:</para>
+
+   <programlisting>&lt;push-registration&gt;
+&lt;durable&gt;false&lt;/durable&gt;
+&lt;selector&gt;&lt;![CDATA[
+      SomeAttribute &gt; 1
+    ]]&gt;
+&lt;/selector&gt;
+&lt;link rel="push" href="http://somewhere.com" type="application/json" method="PUT"/&gt;
+&lt;maxRetries&gt;5&lt;/maxRetries&gt;
+&lt;retryWaitMillis&gt;1000&lt;/retryWaitMillis&gt;
+&lt;disableOnFailure&gt;true&lt;/disableOnFailure&gt;
+&lt;/push-registration&gt;
+</programlisting>
+
+   <para>The <literal>durable</literal> element specifies whether the
+   registration should be saved to disk so that if there is a server
+   restart, the push subscription will still work. This element is not
+   required. If left out it defaults to <literal>false</literal>. If
+   durable is set to true, an XML file for the push subscription will be
+   created within the directory specified by the
+   <literal>queue-push-store-dir</literal> config variable defined in
+   Chapter 2. (<literal>topic-push-store-dir</literal> for topics).</para>
+
+   <para>The <literal>selector</literal> element is optional and defines a
+   JMS message selector. You should enclose it within CDATA blocks as some
+   of the selector characters are illegal XML.</para>
+
+   <para>The <literal>maxRetries</literal> element specifies how many times
+   a the server will try to push a message to a URL if there is a
+   connection failure.</para>
+
+   <para>The <literal>retryWaitMillis</literal> element specifies how long
+   to wait before performing a retry.</para>
+
+   <para>The <literal>disableOnFailure</literal> element, if set to true,
+   will disable the registration if all retries have failed. It will not
+   disable the connection on non-connection-failure issues (like a bad
+   request for instance). In these cases, the dead letter queue logic of
+   HornetQ will take over.</para>
+
+   <para>The <literal>link</literal> element specifies the basis of the
+   interaction. The <literal>href</literal> attribute contains the URL you
+   want to interact with. It is the only required attribute. The
+   <literal>type</literal> attribute specifies the content-type ofwhat the
+   push URL is expecting. The <literal>method</literal> attribute defines
+   what HTTP method the server will use when it sends the message to the
+   server. If it is not provided it defaults to POST. The
+   <literal>rel</literal> attribute is very important and the value of it
+   triggers different behavior. Here's the values a rel attribute can
+   have:</para>
+
+   <variablelist>
+     <varlistentry>
+       <term>destination</term>
+
+       <listitem>
+         <para>The href URL is assumed to be a queue or topic resource of
+         another HornetQ REST server. The push registration will initially
+         do a HEAD request to this URL to obtain a msg-create-with-id
+         header. It will use this header to push new messages to the
+         HornetQ REST endpoint reliably. Here's an example:</para>
+
+         <programlisting>&lt;push-registration&gt;
+&lt;link rel="destination" href="http://somewhere.com/queues/jms.queue.foo"/&gt;
+&lt;/push-registration&gt;   </programlisting>
+       </listitem>
+     </varlistentry>
+
+     <varlistentry>
+       <term>template</term>
+
+       <listitem>
+         <para>In this case, the server is expecting the link element's
+         href attribute to be a URL expression. The URL expression must
+         have one and only one URL parameter within it. The server will use
+         a unique value to create the endpoint URL. Here's an
+         example:</para>
+
+         <programlisting>&lt;push-registration&gt;
+&lt;link rel="template" href="http://somewhere.com/resources/{id}/messages" method="PUT"/&gt;
+&lt;/push-registration&gt;
+</programlisting>
+
+         <para>In this example, the {id} sub-string is the one and only one
+         URL parameter.</para>
+       </listitem>
+     </varlistentry>
+
+     <varlistentry>
+       <term>user defined</term>
+
+       <listitem>
+         <para>If the rel attributes is not destination or template (or is
+         empty or missing), then the server will send an HTTP message to
+         the href URL using the HTTP method defined in the method
+         attribute. Here's an example:</para>
+
+         <programlisting>&lt;push-registration&gt;
+&lt;link href="http://somewhere.com" type="application/json" method="PUT"/&gt;
+&lt;/push-registration&gt;</programlisting>
+       </listitem>
+     </varlistentry>
+   </variablelist>
+ </sect1>
+
+ <sect1>
+   <title>The Topic Push Subscription XML</title>
+
+   <para>The push XML for a topic is the same except the root element is
+   push-topic-registration. (Also remember the <literal>selector</literal>
+   element is optional). The rest of the document is the same. Here's an
+   example of a template registration:</para>
+
+   <programlisting>&lt;push-topic-registration&gt;
+&lt;durable&gt;true&lt;/durable&gt;
+&lt;selector&gt;&lt;![CDATA[
+      SomeAttribute &gt; 1
+    ]]&gt;
+&lt;/selector&gt;
+&lt;link rel="template" href="http://somewhere.com/resources/{id}/messages" method="POST"/&gt;
+&lt;/push-topic registration&gt;</programlisting>
+ </sect1>
+
+ <sect1>
+   <title>Creating a Push Subscription at Runtime</title>
+
+   <para>Creating a push subscription at runtime involves getting the
+   factory resource URL from the msg-push-consumers header, if the
+   destination is a queue, or msg-push-subscriptions header, if the
+   destination is a topic. Here's an example of creating a push
+   registration for a queue:</para>
+
+   <orderedlist>
+     <listitem>
+       <para>First do a HEAD request to the queue resource:</para>
+
+       <programlisting>HEAD /queues/jms.queue.bar HTTP/1.1
+Host: example.com
+
+--- Response ---
+HTTP/1.1 200 Ok
+msg-create: http://example.com/queues/jms.queue.bar/create
+msg-pull-consumers: http://example.com/queues/jms.queue.bar/pull-consumers
+msg-push-consumers: http://example.com/queues/jms.queue.bar/push-consumers</programlisting>
+     </listitem>
+
+     <listitem>
+       <para>Next POST your subscription XML to the URL returned from
+       msg-push-consumers header</para>
+
+       <programlisting>POST /queues/jms.queue.bar/push-consumers
+Host: example.com
+Content-Type: application/xml
+
+&lt;push-registration&gt;
+&lt;link rel="destination" href="http://somewhere.com/queues/jms.queue.foo"/&gt;
+&lt;/push-registration&gt;
+
+--- Response ---
+HTTP/1.1 201 Created
+Location: http://example.com/queues/jms.queue.bar/push-consumers/1-333-1212
+</programlisting>
+
+       <para>The Location header contains the URL for the created resource.
+       If you want to unregister this, then do a HTTP DELETE on this
+       URL.</para>
+     </listitem>
+   </orderedlist>
+
+   <para>Here's an example of creating a push registration for a
+   topic:</para>
+
+   <orderedlist>
+     <listitem>
+       <para>First do a HEAD request to the topic resource:</para>
+
+       <programlisting>HEAD /topics/jms.topic.bar HTTP/1.1
+Host: example.com
+
+--- Response ---
+HTTP/1.1 200 Ok
+msg-create: http://example.com/topics/jms.topic.bar/create
+msg-pull-subscriptions: http://example.com/topics/jms.topic.bar/pull-subscriptions
+msg-push-subscriptions: http://example.com/topics/jms.topic.bar/push-subscriptions</programlisting>
+     </listitem>
+
+     <listitem>
+       <para>Next POST your subscription XML to the URL returned from
+       msg-push-subscriptions header</para>
+
+       <programlisting>POST /topics/jms.topic.bar/push-subscriptions
+Host: example.com
+Content-Type: application/xml
+
+&lt;push-registration&gt;
+&lt;link rel="template" href="http://somewhere.com/resources/{id}"/&gt;
+&lt;/push-registration&gt;
+
+--- Response ---
+HTTP/1.1 201 Created
+Location: http://example.com/topics/jms.topic.bar/push-subscriptions/1-333-1212
+</programlisting>
+
+       <para>The Location header contains the URL for the created resource.
+       If you want to unregister this, then do a HTTP DELETE on this
+       URL.</para>
+     </listitem>
+   </orderedlist>
+ </sect1>
+
+ <sect1>
+   <title>Creating a Push Subscription by Hand</title>
+
+   <para>You can create a push XML file yourself if you do not want to go
+   through the REST interface to create a push subscription. There is some
+   additional information you need to provide though. First, in the root
+   element, you must define a unique id attribute. You must also define a
+   destination element to specify the queue you should register a consumer
+   with. For a topic, the destination element is the name of the
+   subscription that will be reated. For a topic, you must also specify the
+   topic name within the topic element.</para>
+
+   <para>Here's an example of a hand-created queue registration. This file
+   must go in the directory specified by the queue-push-store-dir config
+   variable defined in Chapter 2:</para>
+
+   <programlisting>&lt;push-registration id="111"&gt;
+&lt;destination&gt;jms.queue.bar&lt;/destination&gt;
+&lt;durable&gt;true&gt;
+&lt;link rel="template" href="http://somewhere.com/resources/{id}/messages" method="PUT"/&gt;
+&lt;/push-registration&gt;</programlisting>
+
+   <para>Here's an example of a hand-created topic registration. This file
+   must go in the directory specified by the topic-push-store-dir config
+   variable defined in Chapter 2:</para>
+
+   <programlisting>&lt;push-topic-registration id="112"&gt;
+&lt;destination&gt;my-subscription-1&lt;/destination
+&lt;durable&gt;true&lt;/durable&gt;
+&lt;link rel="template" href="http://somewhere.com/resources/{id}/messages" method="PUT"/&gt;
+&lt;topic&gt;jms.topic.foo&lt;/topic&gt;
+&lt;/push-topic-registration&gt;</programlisting>
+ </sect1>
+
+ <sect1>
+   <title>Pushing to Authenticated Servers</title>
+
+   <para>Push subscriptions only support BASIC and DIGEST authentication
+   out of the box. Here is an example of adding BASIC
+   authentication:</para>
+
+   <programlisting>&lt;push-topic-registration&gt;
+&lt;durable&gt;true&lt;/durable&gt;
+&lt;link rel="template" href="http://somewhere.com/resources/{id}/messages" method="POST"/&gt;
+&lt;authentication&gt;
+   &lt;basic-auth&gt;
+      &lt;username&gt;guest&lt;/username&gt;
+      &lt;password&gt;geheim&lt;/password&gt;
+   &lt;/basic-auth&gt;
+&lt;/authentication&gt;
+&lt;/push-topic registration&gt;</programlisting>
+
+   <para>For DIGEST, just replace basic-auth with digest-auth.</para>
+
+   <para>For other authentication mechanisms, you can register headers you
+   want transmitted with each request. Use the header element with the name
+   attribute representing the name of the header. Here's what custom
+   headers might look like:</para>
+
+   <programlisting>&lt;push-topic-registration&gt;
+&lt;durable&gt;true&lt;/durable&gt;
+&lt;link rel="template" href="http://somewhere.com/resources/{id}/messages" method="POST"/&gt;
+&lt;header name="secret-header"&gt;jfdiwe3321&lt;/header&gt;
+&lt;/push-topic registration&gt;</programlisting>
+ </sect1>
+</chapter>
\ No newline at end of file

Added: trunk/docs/rest-manual/en/security.xml
===================================================================
--- trunk/docs/rest-manual/en/security.xml	                        (rev 0)
+++ trunk/docs/rest-manual/en/security.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.
+  -->
+
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_Rest_Manual.ent">
+%BOOK_ENTITIES;
+]>
+<chapter>
+ <title>Securing the HornetQ REST Interface</title>
+
+ <para></para>
+
+ <sect1>
+   <title>Within JBoss Application server</title>
+
+   <para>Securing the HornetQ REST interface is very simple with the JBoss
+   Application Server. You turn on authentication for all URLs within your
+   WAR's web.xml, and let the user Principal to propagate to HornetQ. This
+   only works if you are using the JBossSecurityManager with HornetQ. See
+   the HornetQ documentation for more details.</para>
+ </sect1>
+
+ <sect1>
+   <title>Security in other environments</title>
+
+   <para>To secure the HornetQ REST interface in other environments you
+   must role your own security by specifying security constraints with your
+   web.xml for every path of every queue and topic you have deployed. Here
+   is a list of URI patterns:</para>
+
+   <table>
+     <title></title>
+
+     <tgroup cols="2">
+       <tbody>
+         <row>
+           <entry>/queues</entry>
+
+           <entry>secure the POST operation to secure queue
+           creation</entry>
+         </row>
+
+         <row>
+           <entry>/queues/{queue-name}</entry>
+
+           <entry>secure the GET HEAD operation to getting information
+           about the queue.</entry>
+         </row>
+
+         <row>
+           <entry>/queues/{queue-name}/create/*</entry>
+
+           <entry>secure this URL pattern for producing messages.</entry>
+         </row>
+
+         <row>
+           <entry>/queues/{queue-name}/pull-consumers/*</entry>
+
+           <entry>secure this URL pattern for pulling messages
+           messages.</entry>
+         </row>
+
+         <row>
+           <entry>/queues/{queue-name}/push-consumers/*</entry>
+
+           <entry>secure this URL pattern for pushing messages.</entry>
+         </row>
+
+         <row>
+           <entry>/topics</entry>
+
+           <entry>secure the POST operation to secure topic
+           creation</entry>
+         </row>
+
+         <row>
+           <entry>/topics/{topic-name}</entry>
+
+           <entry>secure the GET HEAD operation to getting information
+           about the topic.</entry>
+         </row>
+
+         <row>
+           <entry>/topics/{topic-name}/create/*</entry>
+
+           <entry>secure this URL pattern for producing messages.</entry>
+         </row>
+
+         <row>
+           <entry>/topics/{topic-name}/pull-subscriptions/*</entry>
+
+           <entry>secure this URL pattern for pulling messages
+           messages.</entry>
+         </row>
+
+         <row>
+           <entry>/topics/{topic-name}/push-subscriptions/*</entry>
+
+           <entry>secure this URL pattern for pushing messages.</entry>
+         </row>
+       </tbody>
+     </tgroup>
+   </table>
+ </sect1>
+</chapter>
\ No newline at end of file

Copied: trunk/docs/rest-manual/pom.xml (from rev 10511, trunk/hornetq-rest/docbook/pom.xml)
===================================================================
--- trunk/docs/rest-manual/pom.xml	                        (rev 0)
+++ trunk/docs/rest-manual/pom.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright 2009 Red Hat, Inc.
+  ~  Red Hat 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.hornetq.docs</groupId>
+      <artifactId>hornetq-docs</artifactId>
+      <version>2.2.3-SNAPSHOT</version>
+   </parent>
+
+	<groupId>org.hornetq.docs</groupId>
+	<artifactId>${docname}-${translation}</artifactId>
+	<version>1.0</version>
+	<packaging>jdocbook</packaging>
+	<name>${bookname}-(${translation})</name>
+
+  <properties>
+    <translation>en</translation>
+    <docname>HornetQ_Rest_Manual</docname>
+    <bookname>HornetQ Rest Manual</bookname>
+  </properties> 
+
+  <repositories>
+      <repository>
+          <id>jboss-public-repository-group</id>
+          <name>JBoss Public Maven Repository Group</name>
+          <url>https://repository.jboss.org/nexus/content/groups/public/</url>
+          <layout>default</layout>
+          <releases>
+            <enabled>true</enabled>
+            <updatePolicy>never</updatePolicy>
+          </releases>
+          <snapshots>
+            <enabled>true</enabled>
+            <updatePolicy>never</updatePolicy>
+          </snapshots>
+      </repository>
+  </repositories>
+  <pluginRepositories>
+    <pluginRepository>
+          <id>jboss-public-repository-group</id>
+          <name>JBoss Public Maven Repository Group</name>
+          <url>https://repository.jboss.org/nexus/content/groups/public/</url>
+          <layout>default</layout>
+          <releases>
+            <enabled>true</enabled>
+          </releases>
+          <snapshots>
+            <enabled>true</enabled>
+          </snapshots>
+    </pluginRepository>
+    <!--pluginRepository>
+          <id>jboss-snapshot-repository-group</id>
+          <name>JBoss Snapshot Maven Repository Group</name>
+          <url>https://repository.jboss.org/nexus/content/groups/snapshot/</url>
+          <layout>default</layout>
+          <releases>
+            <enabled>true</enabled>
+          </releases>
+          <snapshots>
+            <enabled>true</enabled>
+          </snapshots>
+    </pluginRepository-->
+ </pluginRepositories>
+  
+  <profiles>
+
+    <!-- mvn compile -->
+    <profile>
+      <id>all</id>
+      <activation>
+        <activeByDefault>true</activeByDefault>
+      </activation>
+      <build>
+    		<plugins>
+    			<plugin>
+    				<groupId>org.jboss.maven.plugins</groupId>
+    				<artifactId>maven-jdocbook-plugin</artifactId>
+    				<version>2.2.1</version>
+    				<extensions>true</extensions>
+    				<configuration>
+    				  <formats>
+        				<format>
+        				  <formatName>pdf</formatName>
+        					<stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource>
+        					<finalName>${docname}.pdf</finalName>
+        				</format>
+    					  <format>
+    					    <formatName>html</formatName>
+    						  <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource>
+    						  <finalName>index.html</finalName>
+    					  </format>
+        				<format>
+        				  <formatName>html_single</formatName>
+        					<stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource>
+        					<finalName>index.html</finalName>
+        				</format>
+    					</formats>
+  					</configuration>
+  				</plugin>
+				</plugins>
+			</build>
+		</profile>
+
+    <!-- mvn compile -Phtml -->
+    <profile>
+      <id>html</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+    		<plugins>
+    			<plugin>
+    				<groupId>org.jboss.maven.plugins</groupId>
+    				<artifactId>maven-jdocbook-plugin</artifactId>
+    				<version>2.2.1</version>
+    				<extensions>true</extensions>
+    				<configuration>
+    				  <formats>
+    					  <format>
+    					    <formatName>html</formatName>
+    						  <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource>
+    						  <finalName>index.html</finalName>
+    					  </format>
+    					</formats>
+  					</configuration>
+  				</plugin>
+				</plugins>
+			</build>
+		</profile>
+
+    <!-- mvn compile -Phtml-single -->
+    <profile>
+      <id>html-single</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+    		<plugins>
+    			<plugin>
+    				<groupId>org.jboss.maven.plugins</groupId>
+    				<artifactId>maven-jdocbook-plugin</artifactId>
+    				<version>2.2.1</version>
+    				<extensions>true</extensions>
+  				</plugin>
+				</plugins>
+			</build>
+		</profile>
+
+    <!-- mvn compile -Ppdf -->
+    <profile>
+      <id>pdf</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+    		<plugins>
+    			<plugin>
+    				<groupId>org.jboss.maven.plugins</groupId>
+    				<artifactId>maven-jdocbook-plugin</artifactId>
+    				<version>2.1.0</version>
+    				<extensions>true</extensions>
+    				<configuration>
+    				  <formats>
+        				<format>
+        				  <formatName>pdf</formatName>
+        					<stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource>
+        					<finalName>${docname}.pdf</finalName>
+        				</format>
+    					</formats>
+  					</configuration>
+  				</plugin>
+				</plugins>
+			</build>
+		</profile>
+
+  </profiles>
+   <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+		           <groupId>org.jboss.maven.plugins</groupId>
+		           <artifactId>maven-jdocbook-plugin</artifactId>
+		           <version>2.2.1</version>
+		           <extensions>true</extensions>
+		           <dependencies>
+		              <dependency>
+		                 <groupId>org.jboss.pressgang</groupId>
+		                 <artifactId>pressgang-xslt</artifactId>
+		                 <version>1.2.0</version>
+		              </dependency>
+		              <dependency>
+		                 <groupId>org.jboss</groupId>
+		                 <artifactId>jbossorg-jdocbook-style</artifactId>
+		                 <version>1.1.1</version>
+		                 <type>jdocbook-style</type>
+		              </dependency>
+		           </dependencies>
+		           <configuration>
+		              <sourceDirectory>${project.basedir}</sourceDirectory>
+		              <sourceDocumentName>${docname}.xml</sourceDocumentName>
+		              <masterTranslation>en</masterTranslation>
+		              <imageResource>
+		                 <directory>${project.basedir}/en</directory>
+		                 <includes>
+		                    <include>images/*.png</include>
+		                 </includes>
+		              </imageResource>
+		              <formats>
+		                 <format>
+		                    <formatName>pdf</formatName>
+		                    <stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource>
+		                    <finalName>${pdf.name}</finalName>
+		                 </format>
+		                 <format>
+		                    <formatName>html</formatName>
+		                    <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource>
+		                    <finalName>index.html</finalName>
+		                 </format>
+		                 <format>
+		                    <formatName>html_single</formatName>
+		                    <stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource>
+		                    <finalName>index.html</finalName>
+		                 </format>
+		              </formats>
+		              <options>
+						<xincludeSupported>true</xincludeSupported>
+						<xmlTransformerType>saxon</xmlTransformerType>
+						<docbookVersion>1.72.0</docbookVersion>
+						<localeSeparator>-</localeSeparator>
+						<transformerParameters>
+							<property>
+								<name>javax.xml.parsers.DocumentBuilderFactory</name>
+								<value>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</value>
+							</property>
+							<property>
+								<name>javax.xml.parsers.SAXParserFactory</name>
+								<value>org.apache.xerces.jaxp.SAXParserFactoryImpl</value>
+							</property>
+						</transformerParameters>
+		              </options>
+		           </configuration>
+		        </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+	<!--<build>
+		<plugins>
+			<plugin>
+				<groupId>org.jboss.maven.plugins</groupId>
+				<artifactId>maven-jdocbook-plugin</artifactId>
+				<version>2.2.1</version>
+				<extensions>true</extensions>
+				<dependencies>
+					<dependency>
+                  <groupId>org.jboss.pressgang</groupId>
+                  <artifactId>pressgang-xslt</artifactId>
+                  <version>1.2.0</version>
+               </dependency>
+					<dependency>
+						<groupId>org.jboss</groupId>
+						<artifactId>jbossorg-jdocbook-style</artifactId>
+						<version>1.1.1</version>
+						<type>jdocbook-style</type>
+					</dependency>
+				</dependencies>
+				<configuration>
+		         <sourceDocumentName>${docname}.xml</sourceDocumentName>
+				  <sourceDirectory>.</sourceDirectory>
+				  <imageResource>
+					  <directory>${translation}</directory>
+					  <includes>
+						  <include>images/*</include>
+					  </includes>
+				  </imageResource>
+				  <options>
+					  <xincludeSupported>true</xincludeSupported>
+					  <xmlTransformerType>saxon</xmlTransformerType>
+    				<transformerParameters>
+    				  <property>
+    					  <name>javax.xml.parsers.DocumentBuilderFactory</name>
+    						<value>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</value>
+    					</property>
+    					<property>
+    						<name>javax.xml.parsers.SAXParserFactory</name>
+    						<value>org.apache.xerces.jaxp.SAXParserFactoryImpl</value>
+    					</property>
+    				</transformerParameters>
+    			</options>
+			  </configuration>
+		  </plugin>
+		  
+	  </plugins>
+  </build>-->
+
+</project>

Deleted: trunk/hornetq-rest/docbook/pom.xml
===================================================================
--- trunk/hornetq-rest/docbook/pom.xml	2011-04-19 03:31:49 UTC (rev 10528)
+++ trunk/hornetq-rest/docbook/pom.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -1,128 +0,0 @@
-<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>
-
-    <groupId>org.hornetq.rest</groupId>
-    <artifactId>hornetq-rest-reference-guide-${translation}</artifactId>
-    <version>2.2.2.Final</version>
-    <packaging>jdocbook</packaging>
-    <name>HornetQ REST Interface Reference Guide (${translation})</name>
-    <repositories>
-        <repository>
-            <id>jboss</id>
-            <url>http://repository.jboss.org/nexus/content/groups/public/</url>
-        </repository>
-    </repositories>
-    <pluginRepositories>
-        <pluginRepository>
-            <id>jboss</id>
-            <url>http://repository.jboss.org/nexus/content/groups/public/</url>
-        </pluginRepository>
-        <!--
-                <pluginRepository>
-                    <id>maven2-repository.dev.java.net</id>
-                    <url>http://download.java.net/maven/2</url>
-                </pluginRepository>
-                <pluginRepository>
-                    <id>maven-repository.dev.java.net</id>
-                    <name>Java.net Maven 1 Repository (legacy)</name>
-                    <url>http://download.java.net/maven/1</url>
-                    <layout>legacy</layout>
-                </pluginRepository>
-        -->
-    </pluginRepositories>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.jboss.maven.plugins</groupId>
-                <artifactId>maven-jdocbook-plugin</artifactId>
-                <version>2.1.2</version>
-                <extensions>true</extensions>
-                <dependencies>
-                    <dependency>
-                        <groupId>org.jboss</groupId>
-                        <artifactId>jbossorg-docbook-xslt</artifactId>
-                        <version>1.1.0</version>
-                    </dependency>
-                    <dependency>
-                        <groupId>org.jboss</groupId>
-                        <artifactId>jbossorg-jdocbook-style</artifactId>
-                        <version>1.0.0</version>
-                        <type>jdocbook-style</type>
-                    </dependency>
-                </dependencies>
-                <configuration>
-                    <!--minmemory>1024m</minmemory>
-                    <maxmemory>1024m</maxmemory -->
-                    <sourceDocumentName>master.xml</sourceDocumentName>
-                    <sourceDirectory>reference/en</sourceDirectory>
-                    <imageResource>
-                        <directory>reference/en</directory>
-                        <includes>
-                            <include>images/*</include>
-                        </includes>
-                    </imageResource>
-                    <!-- <cssResource>
-                       <directory>src/main/css</directory>
-                   </cssResource> -->
-                    <!--put back css -->
-
-                    <formats>
-                        <format>
-                            <formatName>html</formatName>
-                            <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource>
-                            <finalName>index.html</finalName>
-                        </format>
-                        <format>
-                            <formatName>html_single</formatName>
-                            <stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource>
-                            <finalName>index.html</finalName>
-                        </format>
-
-                        <format>
-                            <formatName>pdf</formatName>
-                            <stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource>
-                            <finalName>HornetQ_REST_Interface_Guide.pdf</finalName>
-                            <profilingTypeName>two_pass</profilingTypeName>
-                        </format>
-
-
-                        <!--<format>
-                            <formatName>eclipse</formatName>
-                            <stylesheetResource>classpath:/xslt/main-eclipse.xsl</stylesheetResource>
-                            <finalName>index.html</finalName>
-                        </format>-->
-                    </formats>
-                    <options>
-                        <xincludeSupported>true</xincludeSupported>
-                        <xmlTransformerType>saxon</xmlTransformerType>
-                        <!-- needed for uri-resolvers; can be ommitted if using 'current' uri scheme -->
-                        <!--     could also locate the docbook dependency and inspect its version... -->
-                        <!--docbookVersion>1.72.0</docbookVersion -->
-                        <docbookVersion>1.72.0</docbookVersion>
-                        <transformerParameters>
-                            <property>
-                                <name>javax.xml.parsers.DocumentBuilderFactory</name>
-                                <value>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</value>
-                            </property>
-                            <property>
-                                <name>javax.xml.parsers.SAXParserFactory</name>
-                                <value>org.apache.xerces.jaxp.SAXParserFactoryImpl</value>
-                            </property>
-                            <!--<javax.xml.parsers.DocumentBuilderFactory>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</javax.xml.parsers.DocumentBuilderFactory>
-                            <javax.xml.parsers.SAXParserFactory>org.apache.xerces.jaxp.SAXParserFactoryImpl</javax.xml.parsers.SAXParserFactory>
-                            <javax.xml.validation.SchemaFactory:http\://www.w3.org/2001/XMLSchema>org.apache.xerces.jaxp.validation.XMLSchemaFactory</javax.xml.validation.SchemaFactory:http\://www.w3.org/2001/XMLSchema>-->
-                        </transformerParameters>
-                    </options>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <properties>
-        <translation>en-US</translation>
-    </properties>
-</project>

Added: trunk/hornetq-rest/hornetq-rest/hornetq-rest.iml
===================================================================
--- trunk/hornetq-rest/hornetq-rest/hornetq-rest.iml	                        (rev 0)
+++ trunk/hornetq-rest/hornetq-rest/hornetq-rest.iml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module" module-name="hornetq-core" scope="PROVIDED" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.jboss.netty:netty:3.2.3.Final" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.jboss.resteasy:resteasy-jaxrs:2.1.0.GA" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.jboss.resteasy:jaxrs-api:2.1.0.GA" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.scannotation:scannotation:1.0.2" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: javassist:javassist:3.6.0.GA" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: javax.annotation:jsr250-api:1.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: javax.activation:activation:1.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: commons-logging:commons-logging:1.0.4" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: commons-codec:commons-codec:1.2" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: net.jcip:jcip-annotations:1.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.jboss.resteasy:resteasy-jaxb-provider:2.1.0.GA" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.jboss.resteasy:resteasy-jackson-provider:2.1.0.GA" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.codehaus.jackson:jackson-core-asl:1.6.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.6.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.codehaus.jackson:jackson-jaxrs:1.6.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.codehaus.jackson:jackson-xc:1.6.3" level="project" />
+    <orderEntry type="module" module-name="hornetq-jms" scope="PROVIDED" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.jboss.javaee:jboss-jms-api:1.1.0.GA" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.jboss.javaee:jboss-transaction-api:1.0.1.GA" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: jboss.jbossts:jbossjts:4.6.1.GA" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.jboss.spec.javax.jms:jboss-jms-api_1.1_spec:1.0.0.Beta1" level="project" />
+    <orderEntry type="library" name="Maven: junit:junit:4.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:servlet-api:2.5" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.jboss.resteasy:tjws:2.1.0.GA" level="project" />
+  </component>
+</module>
+

Modified: trunk/hornetq-rest/hornetq-rest/pom.xml
===================================================================
--- trunk/hornetq-rest/hornetq-rest/pom.xml	2011-04-19 03:31:49 UTC (rev 10528)
+++ trunk/hornetq-rest/hornetq-rest/pom.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.hornetq.rest</groupId>
         <artifactId>hornetq-rest-all</artifactId>
-        <version>2.2.2.Final</version>
+        <version>2.2.3-SNAPSHOT</version>
     </parent>
 
     <groupId>org.hornetq.rest</groupId>

Added: trunk/hornetq-rest/hornetq-rest-all.iml
===================================================================
--- trunk/hornetq-rest/hornetq-rest-all.iml	                        (rev 0)
+++ trunk/hornetq-rest/hornetq-rest-all.iml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/${project.build.directory}/classes" />
+      <excludeFolder url="file://$MODULE_DIR$/${project.build.directory}/test-classes" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
+

Modified: trunk/hornetq-rest/pom.xml
===================================================================
--- trunk/hornetq-rest/pom.xml	2011-04-19 03:31:49 UTC (rev 10528)
+++ trunk/hornetq-rest/pom.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -2,16 +2,21 @@
          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.hornetq</groupId>
+      <artifactId>hornetq-pom</artifactId>
+      <version>2.2.3-SNAPSHOT</version>
+   </parent>
+
     <name>HornetQ REST Interface Parent POM</name>
     <groupId>org.hornetq.rest</groupId>
     <artifactId>hornetq-rest-all</artifactId>
-    <version>2.2.3.-SNAPSHOT</version>
     <packaging>pom</packaging>
 
 
     <properties>
         <resteasy.version>2.1.0.GA</resteasy.version>
-        <hornetq.version>2.2.2.Final</hornetq.version>
+        <hornetq.version>${project.version}</hornetq.version>
     </properties>
 
     <licenses>
@@ -31,7 +36,7 @@
     </distributionManagement>
 
     <modules>
-        <module>hornetq-rest</module>
+       <module>hornetq-rest</module>
     </modules>
 
     <dependencyManagement>

Modified: trunk/hornetq.ipr
===================================================================
--- trunk/hornetq.ipr	2011-04-19 03:31:49 UTC (rev 10528)
+++ trunk/hornetq.ipr	2011-04-19 10:32:50 UTC (rev 10529)
@@ -382,6 +382,7 @@
   <component name="ProjectModuleManager">
     <modules>
       <module fileurl="file://$PROJECT_DIR$/docs/quickstart-guide/HornetQ_QuickStart_Guide-en.iml" filepath="$PROJECT_DIR$/docs/quickstart-guide/HornetQ_QuickStart_Guide-en.iml" />
+      <module fileurl="file://$PROJECT_DIR$/docs/rest-manual/HornetQ_Rest_Manual-en.iml" filepath="$PROJECT_DIR$/docs/rest-manual/HornetQ_Rest_Manual-en.iml" />
       <module fileurl="file://$PROJECT_DIR$/docs/user-manual/HornetQ_User_Manual-en.iml" filepath="$PROJECT_DIR$/docs/user-manual/HornetQ_User_Manual-en.iml" />
       <module fileurl="file://$PROJECT_DIR$/tests/concurrent-tests/concurrent-tests.iml" filepath="$PROJECT_DIR$/tests/concurrent-tests/concurrent-tests.iml" />
       <module fileurl="file://$PROJECT_DIR$/hornetq.iml" filepath="$PROJECT_DIR$/hornetq.iml" />
@@ -399,6 +400,8 @@
       <module fileurl="file://$PROJECT_DIR$/hornetq-ra/hornetq-ra-jar/hornetq-ra.iml" filepath="$PROJECT_DIR$/hornetq-ra/hornetq-ra-jar/hornetq-ra.iml" />
       <module fileurl="file://$PROJECT_DIR$/hornetq-ra/hornetq-ra-rar/hornetq-rar.iml" filepath="$PROJECT_DIR$/hornetq-ra/hornetq-ra-rar/hornetq-rar.iml" />
       <module fileurl="file://$PROJECT_DIR$/hornetq-ra/hornetq-rar-pom.iml" filepath="$PROJECT_DIR$/hornetq-ra/hornetq-rar-pom.iml" />
+      <module fileurl="file://$PROJECT_DIR$/hornetq-rest/hornetq-rest/hornetq-rest.iml" filepath="$PROJECT_DIR$/hornetq-rest/hornetq-rest/hornetq-rest.iml" />
+      <module fileurl="file://$PROJECT_DIR$/hornetq-rest/hornetq-rest-all.iml" filepath="$PROJECT_DIR$/hornetq-rest/hornetq-rest-all.iml" />
       <module fileurl="file://$PROJECT_DIR$/hornetq-service-sar/hornetq-service-sar.iml" filepath="$PROJECT_DIR$/hornetq-service-sar/hornetq-service-sar.iml" />
       <module fileurl="file://$PROJECT_DIR$/hornetq-spring-integration/hornetq-spring-integration.iml" filepath="$PROJECT_DIR$/hornetq-spring-integration/hornetq-spring-integration.iml" />
       <module fileurl="file://$PROJECT_DIR$/tests/hornetq-tests-pom.iml" filepath="$PROJECT_DIR$/tests/hornetq-tests-pom.iml" />
@@ -532,6 +535,39 @@
         <root url="jar://$MAVEN_REPOSITORY$/apache-xerces/xml-apis/2.9.1/xml-apis-2.9.1-sources.jar!/" />
       </SOURCES>
     </library>
+    <library name="Maven: commons-codec:commons-codec:1.2">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.2/commons-codec-1.2.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.2/commons-codec-1.2-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.2/commons-codec-1.2-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: commons-httpclient:commons-httpclient:3.1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: commons-logging:commons-logging:1.0.4">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4-sources.jar!/" />
+      </SOURCES>
+    </library>
     <library name="Maven: commons-logging:commons-logging:1.1.1">
       <CLASSES>
         <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar!/" />
@@ -543,6 +579,28 @@
         <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar!/" />
       </SOURCES>
     </library>
+    <library name="Maven: javassist:javassist:3.6.0.GA">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/javassist/javassist/3.6.0.GA/javassist-3.6.0.GA.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/javassist/javassist/3.6.0.GA/javassist-3.6.0.GA-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/javassist/javassist/3.6.0.GA/javassist-3.6.0.GA-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: javax.activation:activation:1.1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/javax/activation/activation/1.1/activation-1.1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/javax/activation/activation/1.1/activation-1.1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/javax/activation/activation/1.1/activation-1.1-sources.jar!/" />
+      </SOURCES>
+    </library>
     <library name="Maven: javax.activation:activation:1.1.1">
       <CLASSES>
         <root url="jar://$MAVEN_REPOSITORY$/javax/activation/activation/1.1.1/activation-1.1.1.jar!/" />
@@ -554,6 +612,28 @@
         <root url="jar://$MAVEN_REPOSITORY$/javax/activation/activation/1.1.1/activation-1.1.1-sources.jar!/" />
       </SOURCES>
     </library>
+    <library name="Maven: javax.annotation:jsr250-api:1.0">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/javax/annotation/jsr250-api/1.0/jsr250-api-1.0-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/javax/annotation/jsr250-api/1.0/jsr250-api-1.0-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: javax.servlet:servlet-api:2.5">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/javax/servlet/servlet-api/2.5/servlet-api-2.5-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/javax/servlet/servlet-api/2.5/servlet-api-2.5-sources.jar!/" />
+      </SOURCES>
+    </library>
     <library name="Maven: jboss.jbossts:jbossjts:4.6.1.GA">
       <CLASSES>
         <root url="jar://$MAVEN_REPOSITORY$/jboss/jbossts/jbossjts/4.6.1.GA/jbossjts-4.6.1.GA.jar!/" />
@@ -587,6 +667,17 @@
         <root url="jar://$MAVEN_REPOSITORY$/junit/junit/3.8.2/junit-3.8.2-sources.jar!/" />
       </SOURCES>
     </library>
+    <library name="Maven: junit:junit:4.1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.1/junit-4.1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.1/junit-4.1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.1/junit-4.1-sources.jar!/" />
+      </SOURCES>
+    </library>
     <library name="Maven: log4j:log4j:1.2.14">
       <CLASSES>
         <root url="jar://$MAVEN_REPOSITORY$/log4j/log4j/1.2.14/log4j-1.2.14.jar!/" />
@@ -598,6 +689,61 @@
         <root url="jar://$MAVEN_REPOSITORY$/log4j/log4j/1.2.14/log4j-1.2.14-sources.jar!/" />
       </SOURCES>
     </library>
+    <library name="Maven: net.jcip:jcip-annotations:1.0">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: org.codehaus.jackson:jackson-core-asl:1.6.3">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jackson/jackson-core-asl/1.6.3/jackson-core-asl-1.6.3.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jackson/jackson-core-asl/1.6.3/jackson-core-asl-1.6.3-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jackson/jackson-core-asl/1.6.3/jackson-core-asl-1.6.3-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: org.codehaus.jackson:jackson-jaxrs:1.6.3">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jackson/jackson-jaxrs/1.6.3/jackson-jaxrs-1.6.3.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jackson/jackson-jaxrs/1.6.3/jackson-jaxrs-1.6.3-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jackson/jackson-jaxrs/1.6.3/jackson-jaxrs-1.6.3-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.6.3">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jackson/jackson-mapper-asl/1.6.3/jackson-mapper-asl-1.6.3.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jackson/jackson-mapper-asl/1.6.3/jackson-mapper-asl-1.6.3-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jackson/jackson-mapper-asl/1.6.3/jackson-mapper-asl-1.6.3-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: org.codehaus.jackson:jackson-xc:1.6.3">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jackson/jackson-xc/1.6.3/jackson-xc-1.6.3.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jackson/jackson-xc/1.6.3/jackson-xc-1.6.3-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jackson/jackson-xc/1.6.3/jackson-xc-1.6.3-sources.jar!/" />
+      </SOURCES>
+    </library>
     <library name="Maven: org.jboss.integration:jboss-transaction-spi:5.1.0.GA">
       <CLASSES>
         <root url="jar://$MAVEN_REPOSITORY$/org/jboss/integration/jboss-transaction-spi/5.1.0.GA/jboss-transaction-spi-5.1.0.GA.jar!/" />
@@ -719,6 +865,61 @@
         <root url="jar://$MAVEN_REPOSITORY$/org/jboss/netty/netty/3.2.3.Final/netty-3.2.3.Final-sources.jar!/" />
       </SOURCES>
     </library>
+    <library name="Maven: org.jboss.resteasy:jaxrs-api:2.1.0.GA">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/jaxrs-api/2.1.0.GA/jaxrs-api-2.1.0.GA.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/jaxrs-api/2.1.0.GA/jaxrs-api-2.1.0.GA-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/jaxrs-api/2.1.0.GA/jaxrs-api-2.1.0.GA-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: org.jboss.resteasy:resteasy-jackson-provider:2.1.0.GA">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/resteasy-jackson-provider/2.1.0.GA/resteasy-jackson-provider-2.1.0.GA.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/resteasy-jackson-provider/2.1.0.GA/resteasy-jackson-provider-2.1.0.GA-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/resteasy-jackson-provider/2.1.0.GA/resteasy-jackson-provider-2.1.0.GA-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: org.jboss.resteasy:resteasy-jaxb-provider:2.1.0.GA">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/resteasy-jaxb-provider/2.1.0.GA/resteasy-jaxb-provider-2.1.0.GA.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/resteasy-jaxb-provider/2.1.0.GA/resteasy-jaxb-provider-2.1.0.GA-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/resteasy-jaxb-provider/2.1.0.GA/resteasy-jaxb-provider-2.1.0.GA-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: org.jboss.resteasy:resteasy-jaxrs:2.1.0.GA">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/resteasy-jaxrs/2.1.0.GA/resteasy-jaxrs-2.1.0.GA.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/resteasy-jaxrs/2.1.0.GA/resteasy-jaxrs-2.1.0.GA-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/resteasy-jaxrs/2.1.0.GA/resteasy-jaxrs-2.1.0.GA-sources.jar!/" />
+      </SOURCES>
+    </library>
+    <library name="Maven: org.jboss.resteasy:tjws:2.1.0.GA">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/tjws/2.1.0.GA/tjws-2.1.0.GA.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/tjws/2.1.0.GA/tjws-2.1.0.GA-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/resteasy/tjws/2.1.0.GA/tjws-2.1.0.GA-sources.jar!/" />
+      </SOURCES>
+    </library>
     <library name="Maven: org.jboss.security:jboss-security-spi:2.0.3.SP1">
       <CLASSES>
         <root url="jar://$MAVEN_REPOSITORY$/org/jboss/security/jboss-security-spi/2.0.3.SP1/jboss-security-spi-2.0.3.SP1.jar!/" />
@@ -741,6 +942,17 @@
         <root url="jar://$MAVEN_REPOSITORY$/org/jboss/security/jbosssx/2.0.3.SP1/jbosssx-2.0.3.SP1-sources.jar!/" />
       </SOURCES>
     </library>
+    <library name="Maven: org.jboss.spec.javax.jms:jboss-jms-api_1.1_spec:1.0.0.Beta1">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/spec/javax/jms/jboss-jms-api_1.1_spec/1.0.0.Beta1/jboss-jms-api_1.1_spec-1.0.0.Beta1.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/spec/javax/jms/jboss-jms-api_1.1_spec/1.0.0.Beta1/jboss-jms-api_1.1_spec-1.0.0.Beta1-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/jboss/spec/javax/jms/jboss-jms-api_1.1_spec/1.0.0.Beta1/jboss-jms-api_1.1_spec-1.0.0.Beta1-sources.jar!/" />
+      </SOURCES>
+    </library>
     <library name="Maven: org.jboss:jboss-common-core:2.2.14.GA">
       <CLASSES>
         <root url="jar://$MAVEN_REPOSITORY$/org/jboss/jboss-common-core/2.2.14.GA/jboss-common-core-2.2.14.GA.jar!/" />
@@ -785,6 +997,17 @@
         <root url="jar://$MAVEN_REPOSITORY$/org/jboss/jbossxb/2.0.1.GA/jbossxb-2.0.1.GA-sources.jar!/" />
       </SOURCES>
     </library>
+    <library name="Maven: org.scannotation:scannotation:1.0.2">
+      <CLASSES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/scannotation/scannotation/1.0.2/scannotation-1.0.2.jar!/" />
+      </CLASSES>
+      <JAVADOC>
+        <root url="jar://$MAVEN_REPOSITORY$/org/scannotation/scannotation/1.0.2/scannotation-1.0.2-javadoc.jar!/" />
+      </JAVADOC>
+      <SOURCES>
+        <root url="jar://$MAVEN_REPOSITORY$/org/scannotation/scannotation/1.0.2/scannotation-1.0.2-sources.jar!/" />
+      </SOURCES>
+    </library>
     <library name="Maven: org.springframework:spring-aop:3.0.3.RELEASE">
       <CLASSES>
         <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/3.0.3.RELEASE/spring-aop-3.0.3.RELEASE.jar!/" />

Modified: trunk/hornetq.iws
===================================================================
--- trunk/hornetq.iws	2011-04-19 03:31:49 UTC (rev 10528)
+++ trunk/hornetq.iws	2011-04-19 10:32:50 UTC (rev 10529)
@@ -2,8 +2,36 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" readonly="true" id="a2aae645-dbcd-4d6e-9c99-efa05d93589a" name="Default" comment="">
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/distribution/hornetq/pom.xml" afterPath="$PROJECT_DIR$/distribution/hornetq/pom.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/HornetQ_Rest_Manual-en.iml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/Author_Group.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/Book_Info.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/HornetQ_Rest_Manual.ent" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/HornetQ_Rest_Manual.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/about.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/basics.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/consuming-messages.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/creating-destinations.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/installation.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/introduction.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/jms-and-rest.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/notice.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/posting-messages.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/pushing-messages.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/docs/rest-manual/en/security.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/hornetq-rest/hornetq-rest-all.iml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/hornetq-rest/hornetq-rest/hornetq-rest.iml" />
+      <change type="MOVED" beforePath="$PROJECT_DIR$/hornetq-rest/docbook/pom.xml" afterPath="$PROJECT_DIR$/docs/rest-manual/pom.xml" />
+      <change type="MOVED" beforePath="$PROJECT_DIR$/hornetq-rest/docbook/reference/en/master.xml" afterPath="$PROJECT_DIR$/docs/rest-manual/en/master.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/pom.xml" afterPath="$PROJECT_DIR$/docs/pom.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/hornetq-rest/hornetq-rest/pom.xml" afterPath="$PROJECT_DIR$/hornetq-rest/hornetq-rest/pom.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/hornetq-rest/pom.xml" afterPath="$PROJECT_DIR$/hornetq-rest/pom.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/hornetq.ipr" afterPath="$PROJECT_DIR$/hornetq.ipr" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/hornetq.iws" afterPath="$PROJECT_DIR$/hornetq.iws" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/pom.xml" afterPath="$PROJECT_DIR$/pom.xml" />
+      <change type="MOVED" beforePath="$PROJECT_DIR$/hornetq-rest/docbook/reference/en/images" afterPath="$PROJECT_DIR$/docs/rest-manual/en/images" />
+      <change type="MOVED" beforePath="$PROJECT_DIR$/hornetq-rest/docbook/reference/en/modules" afterPath="$PROJECT_DIR$/docs/rest-manual/en/modules" />
+      <change type="MOVED" beforePath="$PROJECT_DIR$/hornetq-rest/docbook/reference/en" afterPath="$PROJECT_DIR$/docs/rest-manual/en" />
     </list>
     <ignored path=".idea/workspace.xml" />
     <ignored path="$USER_HOME_GRAILS$/" />
@@ -81,86 +109,95 @@
   <component name="FileEditorManager">
     <leaf>
       <file leaf-file-name="pom.xml" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/tests/timing-tests/pom.xml">
+        <entry file="file://$PROJECT_DIR$/hornetq-rest/pom.xml">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="28" column="27" selection-start="1237" selection-end="1237" vertical-scroll-proportion="0.0">
+            <state line="38" column="36" selection-start="1283" selection-end="1283" vertical-scroll-proportion="0.0">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="pom.xml" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/tests/joram-tests/pom.xml">
+      <file leaf-file-name="master.xml" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/master.xml">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="28" column="26" selection-start="1234" selection-end="1234" vertical-scroll-proportion="0.0">
+            <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="pom.xml" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/tests/jms-tests/pom.xml">
+      <file leaf-file-name="introduction.xml" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/introduction.xml">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="129" column="40" selection-start="4633" selection-end="4633" vertical-scroll-proportion="0.0">
+            <state line="15" column="52" selection-start="850" selection-end="850" vertical-scroll-proportion="0.0">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="pom.xml" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/tests/integration-tests/pom.xml">
+      <file leaf-file-name="about.xml" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/about.xml">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="15" column="32" selection-start="614" selection-end="614" vertical-scroll-proportion="0.0">
+            <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="pom.xml" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/tests/concurrent-tests/pom.xml">
+      <file leaf-file-name="basics.xml" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/basics.xml">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="103" column="74" selection-start="3735" selection-end="3735" vertical-scroll-proportion="0.0">
+            <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="pom.xml" pinned="false" current="true" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/distribution/hornetq/pom.xml">
+      <file leaf-file-name="Book_Info.xml" pinned="false" current="true" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/Book_Info.xml">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="200" column="107" selection-start="9822" selection-end="9822" vertical-scroll-proportion="0.89221555">
+            <state line="37" column="33" selection-start="1595" selection-end="1595" vertical-scroll-proportion="0.7997118">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="dep.xml" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/distribution/hornetq/src/main/assembly/dep.xml">
+      <file leaf-file-name="posting-messages.xml" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/posting-messages.xml">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="103" column="44" selection-start="4228" selection-end="4228" vertical-scroll-proportion="0.0">
+            <state line="15" column="52" selection-start="850" selection-end="850" vertical-scroll-proportion="0.0">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="hornetq-configuration.xml" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/distribution/hornetq/src/main/resources/config/jboss-as-6/non-clustered/hornetq-configuration.xml">
+      <file leaf-file-name="pushing-messages.xml" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/pushing-messages.xml">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="46" column="129" selection-start="2249" selection-end="2249" vertical-scroll-proportion="0.0">
+            <state line="15" column="52" selection-start="850" selection-end="850" vertical-scroll-proportion="0.0">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="hornetq-configuration.xsd" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/hornetq-core/src/main/resources/schema/hornetq-configuration.xsd">
+      <file leaf-file-name="security.xml" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/security.xml">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
+            <state line="21" column="33" selection-start="953" selection-end="953" vertical-scroll-proportion="0.0">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
+      <file leaf-file-name="HornetQ_Rest_Manual.ent" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/HornetQ_Rest_Manual.ent">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="18" column="0" selection-start="778" selection-end="778" vertical-scroll-proportion="0.0">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
     </leaf>
   </component>
   <component name="FindManager">
@@ -174,22 +211,22 @@
   <component name="IdeDocumentHistory">
     <option name="changedFiles">
       <list>
-        <option value="$PROJECT_DIR$/pom.xml" />
-        <option value="$PROJECT_DIR$/tests/pom.xml" />
-        <option value="$PROJECT_DIR$/tests/timing-tests/pom.xml" />
-        <option value="$PROJECT_DIR$/tests/stress-tests/pom.xml" />
-        <option value="$PROJECT_DIR$/tests/soak-tests/pom.xml" />
-        <option value="$PROJECT_DIR$/tests/performance-tests/pom.xml" />
-        <option value="$PROJECT_DIR$/tests/joram-tests/pom.xml" />
-        <option value="$PROJECT_DIR$/tests/jms-tests/pom.xml" />
-        <option value="$PROJECT_DIR$/tests/integration-tests/pom.xml" />
-        <option value="$PROJECT_DIR$/tests/concurrent-tests/pom.xml" />
-        <option value="$PROJECT_DIR$/distribution/hornetq/src/main/resources/config/stand-alone/clustered/hornetq-configuration.xml" />
-        <option value="$PROJECT_DIR$/distribution/hornetq/src/main/resources/catalog.xml" />
-        <option value="$PROJECT_DIR$/distribution/hornetq/src/main/resources/config/stand-alone/clustered/hornetq-jms.xml" />
-        <option value="$PROJECT_DIR$/distribution/hornetq/src/main/resources/config/jboss-as-6/non-clustered/hornetq-configuration.xml" />
-        <option value="$PROJECT_DIR$/distribution/hornetq/src/main/assembly/dep.xml" />
-        <option value="$PROJECT_DIR$/distribution/hornetq/pom.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/Author_Group.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/basics.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/consuming-messages.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/creating-destinations.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/installation.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/introduction.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/jms-and-rest.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/notice.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/posting-messages.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/pushing-messages.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/security.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/HornetQ_Rest_Manual.ent" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/HornetQ_Rest_Manual.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/pom.xml" />
+        <option value="$PROJECT_DIR$/hornetq-rest/pom.xml" />
+        <option value="$PROJECT_DIR$/docs/rest-manual/en/Book_Info.xml" />
       </list>
     </option>
   </component>
@@ -1121,7 +1158,7 @@
     </subPane>
   </component>
   <component name="ProjectReloadState">
-    <option name="STATE" value="2" />
+    <option name="STATE" value="0" />
   </component>
   <component name="ProjectView">
     <navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
@@ -1138,6 +1175,7 @@
     <panes>
       <pane id="Favorites" />
       <pane id="PackagesPane" />
+      <pane id="Scope" />
       <pane id="ProjectPane">
         <subPane>
           <PATH>
@@ -1145,10 +1183,6 @@
               <option name="myItemId" value="hornetq" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
             </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="External Libraries" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ExternalLibrariesNode" />
-            </PATH_ELEMENT>
           </PATH>
           <PATH>
             <PATH_ELEMENT>
@@ -1156,86 +1190,6 @@
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="External Libraries" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ExternalLibrariesNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="&lt; 1.6 &gt;" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="External Libraries" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ExternalLibrariesNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="&lt; 1.6 &gt;" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="rt.jar" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="External Libraries" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ExternalLibrariesNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="&lt; 1.6 &gt;" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="rt.jar" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="javax" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="External Libraries" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ExternalLibrariesNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="&lt; 1.6 &gt;" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="rt.jar" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="javax" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="naming" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
               <option name="myItemId" value="hornetq2" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
@@ -1250,7 +1204,7 @@
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="tests" />
+              <option name="myItemId" value="hornetq-rest" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
           </PATH>
@@ -1264,13 +1218,9 @@
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="tests" />
+              <option name="myItemId" value="docs" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="timing-tests" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
           </PATH>
           <PATH>
             <PATH_ELEMENT>
@@ -1282,11 +1232,11 @@
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="tests" />
+              <option name="myItemId" value="docs" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="concurrent-tests" />
+              <option name="myItemId" value="rest-manual" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
           </PATH>
@@ -1300,179 +1250,20 @@
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq-core" />
+              <option name="myItemId" value="docs" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
-          </PATH>
-          <PATH>
             <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq2" />
+              <option name="myItemId" value="rest-manual" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq-core" />
+              <option name="myItemId" value="en" />
               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
             </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="src" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="main" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="resources" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
           </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq2" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq-core" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="src" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="main" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="resources" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="schema" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq2" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq-core" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="src" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="main" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq2" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="distribution" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq2" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="distribution" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq2" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="distribution" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="src" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="main" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
-          <PATH>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq2" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="distribution" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="hornetq" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="src" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="main" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-            <PATH_ELEMENT>
-              <option name="myItemId" value="assembly" />
-              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-            </PATH_ELEMENT>
-          </PATH>
         </subPane>
       </pane>
-      <pane id="Scope" />
     </panes>
   </component>
   <component name="PropertiesComponent">
@@ -1522,11 +1313,11 @@
       <recent name="org.hornetq.jms.example" />
     </key>
     <key name="CopyFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/docs/rest-manual/en" />
       <recent name="$PROJECT_DIR$/docs" />
       <recent name="$PROJECT_DIR$/distribution/hornetq" />
       <recent name="$PROJECT_DIR$/examples/src/main/assembly" />
       <recent name="$PROJECT_DIR$/tests/performance-tests" />
-      <recent name="$PROJECT_DIR$/tests/concurrent-tests" />
     </key>
     <key name="MoveMembersDialog.RECENTS_KEY">
       <recent name="org.hornetq.api.core.client.HornetQClient" />
@@ -2069,10 +1860,10 @@
     </todo-panel>
   </component>
   <component name="ToolWindowManager">
-    <frame x="0" y="24" width="1920" height="1152" extended-state="1" />
+    <frame x="0" y="24" width="1920" height="1152" extended-state="6" />
     <editor active="false" />
     <layout>
-      <window_info id="Changes" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.11888112" sideWeight="0.0" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Changes" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.2656095" sideWeight="0.0" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
       <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.16749257" sideWeight="0.0" order="3" side_tool="false" content_ui="tabs" />
@@ -2080,19 +1871,19 @@
       <window_info id="IDEtalk" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.12687312" sideWeight="0.0" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="simpleUML" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.22398414" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
       <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24959914" sideWeight="0.7006937" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.0987055" sideWeight="0.8811189" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.09828142" sideWeight="0.7343905" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24325782" sideWeight="0.8811189" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24221267" sideWeight="0.7343905" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.23609756" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
       <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.5174825" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.23984143" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="IntelliHeap" active="false" anchor="bottom" auto_hide="true" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Dataflow to this" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.22398414" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
     </layout>
@@ -2112,7 +1903,7 @@
     <option name="SHOW_ONLY_CHANGED_IN_SELECTION_DIFF" value="true" />
     <option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
     <option name="FORCE_NON_EMPTY_COMMENT" value="false" />
-    <option name="LAST_COMMIT_MESSAGE" value="added validation for jms users config" />
+    <option name="LAST_COMMIT_MESSAGE" value="added rest jar and integrated docs" />
     <option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
     <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
     <option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
@@ -2125,7 +1916,6 @@
     <option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
     <option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
     <option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
-    <MESSAGE value="removed empty dirs" />
     <MESSAGE value="added schemas to distro" />
     <MESSAGE value="removed intellij projects for examples&#10;" />
     <MESSAGE value="removed eap examples&#10;" />
@@ -2150,6 +1940,7 @@
     <MESSAGE value="add validation for core configuration" />
     <MESSAGE value="added validation for jms config" />
     <MESSAGE value="added validation for jms users config" />
+    <MESSAGE value="added rest jar and integrated docs" />
   </component>
   <component name="XDebuggerManager">
     <breakpoint-manager />
@@ -2227,114 +2018,92 @@
     </buildFile>
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/pom.xml">
+    <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/jms-and-rest.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="39" column="53" selection-start="1939" selection-end="1939" vertical-scroll-proportion="-10.0">
-          <folding />
-        </state>
+        <state line="15" column="52" selection-start="850" selection-end="850" vertical-scroll-proportion="0.0" />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tests/stress-tests/pom.xml">
+    <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/notice.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="28" column="39" selection-start="1249" selection-end="1249" vertical-scroll-proportion="0.0">
-          <folding />
-        </state>
+        <state line="14" column="52" selection-start="811" selection-end="811" vertical-scroll-proportion="0.0" />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tests/soak-tests/pom.xml">
+    <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/HornetQ_Rest_Manual.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="28" column="25" selection-start="1231" selection-end="1231" vertical-scroll-proportion="0.0">
-          <folding />
-        </state>
+        <state line="7" column="71" selection-start="338" selection-end="338" vertical-scroll-proportion="0.0" />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tests/performance-tests/pom.xml">
+    <entry file="file://$PROJECT_DIR$/docs/pom.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="28" column="32" selection-start="1252" selection-end="1252" vertical-scroll-proportion="0.0">
-          <folding />
-        </state>
+        <state line="32" column="23" selection-start="1295" selection-end="1295" vertical-scroll-proportion="0.0" />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tests/pom.xml">
+    <entry file="file://$PROJECT_DIR$/docs/user-manual/pom.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="25" column="28" selection-start="447" selection-end="687" vertical-scroll-proportion="0.47953963">
-          <folding />
-        </state>
+        <state line="30" column="43" selection-start="1264" selection-end="1264" vertical-scroll-proportion="0.0" />
       </provider>
     </entry>
-    <entry file="jar://$USER_HOME$/devtools/apache-maven-2.2.1/lib/maven-2.2.1-uber.jar!/org/apache/maven/project/pom-4.0.0.xml">
+    <entry file="file://$PROJECT_DIR$/docs/rest-manual/pom.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="52" column="15" selection-start="1587" selection-end="1587" vertical-scroll-proportion="0.33248082">
-          <folding />
-        </state>
+        <state line="22" column="49" selection-start="1022" selection-end="1022" vertical-scroll-proportion="0.0" />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tests/timing-tests/pom.xml">
+    <entry file="file://$PROJECT_DIR$/hornetq-rest/pom.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="28" column="27" selection-start="1237" selection-end="1237" vertical-scroll-proportion="0.0">
+        <state line="38" column="36" selection-start="1283" selection-end="1283" vertical-scroll-proportion="0.0">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tests/joram-tests/pom.xml">
+    <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/posting-messages.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="28" column="26" selection-start="1234" selection-end="1234" vertical-scroll-proportion="0.0">
-          <folding />
-        </state>
+        <state line="15" column="52" selection-start="850" selection-end="850" vertical-scroll-proportion="0.0" />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tests/jms-tests/pom.xml">
+    <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/pushing-messages.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="129" column="40" selection-start="4633" selection-end="4633" vertical-scroll-proportion="0.0">
-          <folding />
-        </state>
+        <state line="15" column="52" selection-start="850" selection-end="850" vertical-scroll-proportion="0.0" />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tests/integration-tests/pom.xml">
+    <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/security.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="15" column="32" selection-start="614" selection-end="614" vertical-scroll-proportion="0.0">
-          <folding />
-        </state>
+        <state line="21" column="33" selection-start="953" selection-end="953" vertical-scroll-proportion="0.0" />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tests/concurrent-tests/pom.xml">
+    <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/HornetQ_Rest_Manual.ent">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="103" column="74" selection-start="3735" selection-end="3735" vertical-scroll-proportion="0.0">
-          <folding />
-        </state>
+        <state line="18" column="0" selection-start="778" selection-end="778" vertical-scroll-proportion="0.0" />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/distribution/hornetq/src/main/resources/config/jboss-as-6/non-clustered/hornetq-configuration.xml">
+    <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/master.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="46" column="129" selection-start="2249" selection-end="2249" vertical-scroll-proportion="0.0">
+        <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/hornetq-core/src/main/resources/schema/hornetq-configuration.xsd">
+    <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/introduction.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
-          <folding />
-        </state>
+        <state line="15" column="52" selection-start="850" selection-end="850" vertical-scroll-proportion="0.0" />
       </provider>
     </entry>
-    <entry file="jar://$USER_HOME$/devtools/jdk1.6.0_21/src.zip!/javax/naming/InitialContext.java">
+    <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/about.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="94" column="85" selection-start="4440" selection-end="4440" vertical-scroll-proportion="0.14371258">
+        <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/distribution/hornetq/src/main/assembly/dep.xml">
+    <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/basics.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="103" column="44" selection-start="4228" selection-end="4228" vertical-scroll-proportion="0.0">
+        <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/distribution/hornetq/pom.xml">
+    <entry file="file://$PROJECT_DIR$/docs/rest-manual/en/Book_Info.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="200" column="107" selection-start="9822" selection-end="9822" vertical-scroll-proportion="0.89221555">
+        <state line="37" column="33" selection-start="1595" selection-end="1595" vertical-scroll-proportion="0.7997118">
           <folding />
         </state>
       </provider>

Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml	2011-04-19 03:31:49 UTC (rev 10528)
+++ trunk/pom.xml	2011-04-19 10:32:50 UTC (rev 10529)
@@ -106,6 +106,7 @@
         <module>hornetq-twitter-integration</module>
         <module>hornetq-spring-integration</module>
         <module>hornetq-service-sar</module>
+        <module>hornetq-rest</module>
         <module>tests</module>
         <module>examples</module>
         <module>docs</module>



More information about the hornetq-commits mailing list