http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/UrlEncodedForm.html
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/UrlEncodedForm.html
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/UrlEncodedForm.html
deleted file mode 100755
index 0c2d039..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/UrlEncodedForm.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML>
-<!--
-/***************************************************************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 
or implied.  See the License for the
- * specific language governing permissions and limitations under the License.
- *
- 
***************************************************************************************************************************/
- -->
-<html>
-<head>
-       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-       <style type='text/css'>
-               @import '$R{servletURI}/style.css';
-       </style>
-       <script type="text/javascript">
-               // Load results from IFrame into this document.
-               function loadResults(buff) {
-                       var doc = buff.contentDocument || 
buff.contentWindow.document;
-                       var buffBody = doc.getElementById('data');
-                       document.getElementById('results').innerHTML = 
buffBody.innerHTML;
-               }
-       </script>
-</head>
-<body>
-       <h3 class='title'>$R{servletTitle}</h3>
-       <h5 class="description">$R{servletDescription}</h5>
-       <div class='data'>
-               <form id='form' action='$R{servletURI}' method='POST' 
target='buff'>
-                       <table>
-                               <tr>
-                                       <th>$L{aString}</th>
-                                       <td><input name="aString" 
type="text"></td>
-                               </tr>
-                               <tr>
-                                       <th>$L{aNumber}</th>
-                                       <td><input name="aNumber" 
type="number"></td>
-                               </tr>
-                               <tr>
-                                       <th>$L{aDate}</th>
-                                       <td><input name="aDate" 
type="datetime"> (ISO8601, e.g. "<code>2001-07-04T15:30:45Z</code>")</td>
-                               </tr>
-                               <tr>
-                                       <td colspan='2' align='right'><button 
type="submit">$L{submit}</button></td>
-                               </tr>
-                       </table>
-               </form>
-               <br>
-               <div id='results'>
-               </div>
-       </div>
-       <iframe name='buff' style='display:none' 
onload="parent.loadResults(this)"></iframe>
-</body>
-</html>
-

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/addressbook/nls/AddressBookResource.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/addressbook/nls/AddressBookResource.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/addressbook/nls/AddressBookResource.properties
deleted file mode 100755
index 61aec3e..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/addressbook/nls/AddressBookResource.properties
+++ /dev/null
@@ -1,89 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-title = AddressBook sample resource
-description = Proof-of-concept resource that shows off the capabilities of 
working with POJO resources
-
-getRoot.summary = Get root page
-getRoot.description = Jumping off page for top-level Person and Address beans.
-
-doInit.summary = Reinitialize this resource
-doInit.description = Resets the address book to the original contents.
-doInit.res.200.description = Returns the string "OK"
-
-getAllPeople.summary = Get all people in the address book
-getAllPeople.res.200.description = Returns a serialized List<Person>
-getAllPeople.res.200.examples = 
{'text/json':"[\n\t{\n\t\turi:'http://hostname/addressBook/person/1',\n\t\taddressBookUri:'http://localhost/addressBook',\n\t\tid:1,\n\t\tname:'John
 Smith',\n\t\tbirthDate:'Jan 1, 
2000',\n\t\taddresses:[\n\t\t\t{\n\t\t\t\turi:'http://localhost/addressBook/addresses/1',\n\t\t\t\tpersonUri:'http://localhost/addressBook/people/1',\n\t\t\t\tid:1,\n\t\t\t\tstreet:'101
 Main 
St',\n\t\t\t\tcity:'Anywhere',\n\t\t\t\tstate:'NY',\n\t\t\t\tzip:12345,\n\t\t\t\tisCurrent:true\n\t\t\t}\n\t\t]\n\t}\n]"}
-
-getPerson.summary = Get a single person by ID
-getPerson.req.path.id.description = Person ID
-getPerson.req.path.id.type = integer
-getPerson.res.200.description = Returns a serialized Person bean
-getPerson.res.200.examples = 
{'text/json':"{\n\turi:'http://hostname/addressBook/person/1',\n\taddressBookUri:'http://localhost/addressBook',\n\tid:1,\n\tname:'John
 Smith',\n\tbirthDate:'Jan 1, 
2000',\n\taddresses:[\n\t\t{\n\t\t\turi:'http://localhost/addressBook/addresses/1',\n\t\t\tpersonUri:'http://localhost/addressBook/people/1',\n\t\t\tid:1,\n\t\t\tstreet:'101
 Main 
St',\n\t\t\tcity:'Anywhere',\n\t\t\tstate:'NY',\n\t\t\tzip:12345,\n\t\t\tisCurrent:true\n\t\t}\n\t]\n\}"}
-getPerson.res.404.description = Person ID not found
-
-getAllAddresses.summary = Get all addresses in the address book
-getAllAddresses.res.200.description = Returns a serialized List<Address>
-getAllAddresses.res.200.examples = 
{'text/json':"[\n\t{\n\t\turi:'http://localhost/addressBook/addresses/1',\n\t\tpersonUri:'http://localhost/addressBook/people/1',\n\t\tid:1,\n\t\tstreet:'101
 Main 
St',\n\t\tcity:'Anywhere',\n\t\tstate:'NY',\n\t\tzip:12345,\n\t\tisCurrent:true\n\t}\n]"}
-
-getAddress.summary = Get a single address by ID
-getAddress.req.path.id.description = Address ID
-getAddress.req.path.id.type = integer
-getAddress.res.200.description = Returns a serialized Address bean
-getAddress.res.200.examples = 
{'text/json':"{\n\turi:'http://localhost/addressBook/addresses/1',\n\tpersonUri:'http://localhost/addressBook/people/1',\n\tid:1,\n\tstreet:'101
 Main 
St',\n\tcity:'Anywhere',\n\tstate:'NY',\n\tzip:12345,\n\tisCurrent:true\n}"}
-getAddress.res.404.description = Address ID not found
-
-createPerson.summary = Create a new Person bean 
-createPerson.req.body.description = Serialized CreatePerson bean
-createPerson.req.body.schema = {example:"{\n\tname:'John 
Smith',\n\tbirthDate:'Jan 1, 2000',\n\taddresses:[\n\t\t{\n\t\t\tstreet:'101 
Main 
St',\n\t\t\tcity:'Anywhere',\n\t\t\tstate:'NY',\n\t\t\tzip:12345,\n\t\t\tisCurrent:true\n\t\t}\n\t]\n\}"}
-createPerson.res.307.header.Location.description = URL of new person
-
-createAddress.summary = Create a new Address bean
-createAddress.req.path.id.description = Person ID
-createAddress.req.path.id.type = integer
-createAddress.req.body.schema = {example:"{\n\tstreet:'101 Main 
St',\n\tcity:'Anywhere',\n\tstate:'NY',\n\tzip:12345,\n\tisCurrent:true\n}"}
-createAddress.res.307.header.Location.description = URL of new address
-
-deletePerson.summary = Delete a Person bean
-deletePerson.req.path.id.description = Person ID
-deletePerson.req.path.id.type = integer
-deletePerson.res.200.description = Returns the string "DELETE successful"
-deletePerson.res.404.description = Person ID not found
-
-deleteAddress.summary = Delete an Address bean
-deleteAddress.req.path.id.description = Address ID
-deleteAddress.res.200.description = Returns the string "DELETE successful"
-deleteAddress.res.404.description = Address ID not found
-
-updatePerson.summary = Change property on Person bean
-updatePerson.req.path.id.description = Person ID
-updatePerson.req.path.id.type = integer
-updatePerson.req.body.description = Any object matching the field
-updatePerson.res.200.description = Returns the string "PUT successful"
-updatePerson.res.400.description = Invalid object type used
-updatePerson.res.404.description = Person ID not found
-
-updateAddress.summary = Change property on Address bean
-updateAddress.req.path.id.description = Address ID
-updateAddress.req.path.id.type = integer
-updateAddress.req.body.description = Any object matching the field
-updateAddress.res.200.description = Returns the string "PUT successful"
-updateAddress.res.400.description = Invalid object type used
-updateAddress.res.404.description = Address ID not found
-
-getOptions.summary = View resource options
-
-getCognosData.summary = Get data in Cognos/XML format
-getCognosData.res.200.description = Returns a serialized DataSet
-
-otherNotes = GZip support enabled.  Public methods can be invoked by using the 
&Method URL parameter.  'text/cognos+xml' support available under root resource 
only
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/averycutecat.jpg
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/averycutecat.jpg
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/averycutecat.jpg
deleted file mode 100644
index 9760674..0000000
Binary files 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/averycutecat.jpg
 and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/htdocs/code-highlighting.css
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/htdocs/code-highlighting.css
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/htdocs/code-highlighting.css
deleted file mode 100755
index a016a6c..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/htdocs/code-highlighting.css
+++ /dev/null
@@ -1,136 +0,0 @@
-/***************************************************************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
- * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
- * with the License.  You may obtain a copy of the License at                  
                                            *
- *                                                                             
                                            *
- *  http://www.apache.org/licenses/LICENSE-2.0                                 
                                            *
- *                                                                             
                                            *
- * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 
or implied.  See the License for the        *
- * specific language governing permissions and limitations under the License.  
                                            *
- 
***************************************************************************************************************************/
-code, 
-tt, 
-pre,
-dt code {
-       font-size: 9pt;
-}
-
-/*--- Bordered code ---*/
-p.bcode {
-       font-size: 9pt;
-       white-space: pre;
-       border: 1px solid black;
-       margin: 10px 20px;
-       padding: 10px;
-       border-radius: 10px;
-       overflow: hidden;
-       font-family: monospace;
-       background-color: #f8f8f8;
-       border-color: #cccccc;
-       -moz-tab-size: 3;
-       tab-size: 3;
-       -o-tab-size: 3;
-}
-
-.fixedWidth {
-       max-width: 800px;
-}
-
-/* Override padding bottom in javadoc comments. */
-.blockList p.bcode {
-       padding-bottom: 0px !important;
-}
-
-/*--- Unbordered code ---*/
-p.code {
-       font-size: 9pt;
-       white-space: pre;
-       font-family: monospace;
-       padding-bottom: 15px;
-       margin: -15px;
-}
-
-td.code {
-       font-size: 9pt;
-       white-space: pre;
-       font-family: monospace;
-}
-
-table.code {
-       font-size: 9pt;
-       white-space: pre;
-       font-family: monospace;
-}
-
-/*--- Java code effects ---*/
-jc,jd,jt,jk,js,jf,jsf,jsm,ja {
-       font-size: 9pt;
-       white-space: pre;
-       font-family: monospace;
-}
-/* Comment */
-jc {
-       color: green;
-}
-/* Javadoc comment */
-jd {
-       color: #3f5fbf;
-}
-/* Javadoc tag */
-jt {
-       color: #7f9fbf;
-       font-weight: bold;
-}
-/* Primitive */
-jk {
-       color: #7f0055;
-       font-weight: bold;
-}
-/* String */
-js {
-       color: blue;
-}
-/* Field */
-jf {
-       color: blue;
-}
-/* Static field */
-jsf {
-       color: blue;
-       font-style: italic;
-}
-/* Static method */
-jsm {
-       font-style: italic;
-}
-/* Annotation */
-ja {
-       color: grey;
-}
-
-/*--- XML code effects ---*/
-xt,xa,xc,xs {
-       font-size: 9pt;
-       white-space: pre;
-       font-family: monospace;
-}
-
-xt {
-       color: DarkCyan;
-}
-
-xa {
-       color: purple;
-}
-
-xc {
-       color: mediumblue;
-}
-
-xs {
-       color: blue;
-       font-style: italic;
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/AtomFeedResource.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/AtomFeedResource.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/AtomFeedResource.properties
deleted file mode 100755
index 7ff4a44..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/AtomFeedResource.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# AtomFeedResource labels
-#--------------------------------------------------------------------------------
-title = Sample ATOM feed resource
-description = Sample resource that shows how to render ATOM feeds
-getFeed = Get the sample ATOM feed
-setFeed = Overwrite the sample ATOM feed
-doOptions = Show resource options

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/CodeFormatterResource.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/CodeFormatterResource.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/CodeFormatterResource.properties
deleted file mode 100755
index ac2f236..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/CodeFormatterResource.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# CodeFormatterResource labels
-#--------------------------------------------------------------------------------
-title = Code Formatter
-description = Utility for generating HTML code-formatted source code

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/HelloWorldResource.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/HelloWorldResource.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/HelloWorldResource.properties
deleted file mode 100755
index 7c8f03d..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/HelloWorldResource.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# HelloWorldResource labels
-#--------------------------------------------------------------------------------
-title = Hello World sample resource
-description = Simplest possible resource
-sayHello = Responds with "Hello world!" 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/JsonSchemaResource.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/JsonSchemaResource.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/JsonSchemaResource.properties
deleted file mode 100755
index 1a486a9..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/JsonSchemaResource.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# JsonSchemaResource labels
-#--------------------------------------------------------------------------------
-title = Sample resource that shows how to generate JSON-Schema documents
-getSchema = Get the JSON-Schema document
-setSchema = Overwrite the JSON-Schema document
-doOptions = Show resource options

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/MethodExampleResource.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/MethodExampleResource.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/MethodExampleResource.properties
deleted file mode 100755
index be0bcf1..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/MethodExampleResource.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# MethodExampleResource labels
-#--------------------------------------------------------------------------------
-title = A simple REST method example resource
-doGetExample.summary = Sample GET method
-doGetExample1.summary = Sample GET using annotations
-doGetExample1.req.path.a1.description = Sample variable
-doGetExample1.req.path.a2.description = Sample variable
-doGetExample1.req.path.a3.description = Sample variable
-doGetExample1.req.query.p1.description = Sample parameter
-doGetExample1.req.query.p2.description = Sample parameter
-doGetExample1.req.query.p3.description = Sample parameter
-doGetExample1.req.header.Accept-Language.description = Sample header
-doGetExample1.req.header.DNT.description = Sample header
-doGetExample2.summary = Sample GET using Java APIs
-doGetExample2.req.path.a1.description = Sample variable
-doGetExample2.req.path.a2.description = Sample variable
-doGetExample2.req.path.a3.description = Sample variable
-doGetExample2.req.query.p1.description = Sample parameter
-doGetExample2.req.query.p2.description = Sample parameter
-doGetExample2.req.query.p3.description = Sample parameter
-doGetExample2.req.header.Accept-Language.description = Sample header
-doGetExample2.req.header.DNT.description = Sample header
-getOptions.summary = Get these options

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/PhotosResource.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/PhotosResource.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/PhotosResource.properties
deleted file mode 100755
index 93f7f7d..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/PhotosResource.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# PhotosResource labels
-#--------------------------------------------------------------------------------
-title = Sample resource that allows images to be uploaded and retrieved.
-getAllPhotos = Show the list of all currently loaded photos
-getPhoto = Get a photo by ID
-addPhoto = Add a photo
-setPhoto = Overwrite a photo by ID
-deletePhoto = Delete a photo by ID
-doOptions = Show resource options
-

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/RequestEchoResource.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/RequestEchoResource.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/RequestEchoResource.properties
deleted file mode 100755
index db7641c..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/RequestEchoResource.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# RequestEchoResource labels
-#--------------------------------------------------------------------------------
-title = Echos the current HttpServletRequest object back to the browser.
-doGet = Serializes the incoming HttpServletRequest object.
-

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/RootResources.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/RootResources.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/RootResources.properties
deleted file mode 100755
index 301057d..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/RootResources.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# RootResources labels
-#--------------------------------------------------------------------------------
-title = Root resources
-description = This is an example of a router resource that is used to access 
other resources.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/SampleRemoteableServlet.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/SampleRemoteableServlet.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/SampleRemoteableServlet.properties
deleted file mode 100755
index 48fd5ce..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/SampleRemoteableServlet.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# SampleRemoteableServlet labels
-#--------------------------------------------------------------------------------
-title = Sample resource that demonstrates the remotable API

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/SourceResource.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/SourceResource.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/SourceResource.properties
deleted file mode 100755
index 363f00a..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/SourceResource.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# SourceResource labels
-#--------------------------------------------------------------------------------
-title = Servlet for viewing source code on classes whose Java files are 
present on the classpath.
-getSource = View source on the specified classes.
-

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/SqlQueryResource.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/SqlQueryResource.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/SqlQueryResource.properties
deleted file mode 100755
index 527ca93..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/SqlQueryResource.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# SqlQueryResource labels
-#--------------------------------------------------------------------------------
-title = Sample resource that shows how to serialize SQL ResultSets 
-doGet = Display the query entry page
-doPost = Execute one or more queries

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/TempDirResource.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/TempDirResource.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/TempDirResource.properties
deleted file mode 100755
index 94c009e..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/TempDirResource.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# TempDirResource labels
-#--------------------------------------------------------------------------------
-title = Temp Directory View Service
-description = View and download files in the '$S{java.io.tmpdir}' directory.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/TumblrParserResource.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/TumblrParserResource.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/TumblrParserResource.properties
deleted file mode 100755
index 28a3e72..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/TumblrParserResource.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# SqlQueryResource labels
-#--------------------------------------------------------------------------------
-title = Tumblr blog parser service
-getInstructions = Get the instructions page
-parseBlog = Parse the specified blog

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/UrlEncodedFormResource.properties
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/UrlEncodedFormResource.properties
 
b/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/UrlEncodedFormResource.properties
deleted file mode 100755
index c7015c3..0000000
--- 
a/juneau-samples/src/main/resources/org/apache/juneau/server/samples/nls/UrlEncodedFormResource.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-# 
***************************************************************************************************************************
-# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            * 
-# * with the License.  You may obtain a copy of the License at                 
                                             *
-# *                                                                            
                                             *
-# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
-# *                                                                            
                                             *
-# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-# * specific language governing permissions and limitations under the License. 
                                             *
-# 
***************************************************************************************************************************
-
-#--------------------------------------------------------------------------------
-# UrlEncodedFormResource labels
-#--------------------------------------------------------------------------------
-title = URL-Encoded Form Post Example
-description = Shows how URL-Encoded form input can be loaded into POJOs.  POJO 
is simply echoed back.
-aString = A String:
-aNumber = A Number:
-aDate = A Date:
-submit = submit
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/test/java/org/apache/juneau/rest/samples/AddressBookResourceTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/test/java/org/apache/juneau/rest/samples/AddressBookResourceTest.java
 
b/juneau-samples/src/test/java/org/apache/juneau/rest/samples/AddressBookResourceTest.java
new file mode 100644
index 0000000..8522838
--- /dev/null
+++ 
b/juneau-samples/src/test/java/org/apache/juneau/rest/samples/AddressBookResourceTest.java
@@ -0,0 +1,231 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                
                                              *
+// *                                                                           
                                              *
+// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
+// *                                                                           
                                              *
+// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the 
License.                                              *
+// 
***************************************************************************************************************************
+package org.apache.juneau.rest.samples;
+
+import static org.apache.juneau.rest.samples.TestUtils.*;
+import static org.junit.Assert.*;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.html.*;
+import org.apache.juneau.internal.*;
+import org.apache.juneau.json.*;
+import org.apache.juneau.rest.client.*;
+import org.apache.juneau.samples.addressbook.*;
+import org.apache.juneau.transforms.*;
+import org.apache.juneau.xml.*;
+import org.junit.*;
+
+@SuppressWarnings({"serial"})
+public class AddressBookResourceTest {
+
+       private static boolean debug = false;
+
+       static RestClient[] clients;
+
+       @BeforeClass
+       public static void beforeClass() throws Exception {
+               clients = new RestClient[] {
+                       new SamplesRestClient(JsonSerializer.class, 
JsonParser.class),
+                       new SamplesRestClient(XmlSerializer.class, 
XmlParser.class),
+                       new SamplesRestClient(HtmlSerializer.class, 
HtmlParser.class).setAccept("text/html+stripped"),
+                       new SamplesRestClient(XmlSerializer.class,  
HtmlParser.class).setAccept("text/html+stripped")
+               };
+               for (RestClient c : clients) {
+                       
c.getSerializer().addPojoSwaps(CalendarSwap.DateMedium.class);
+                       
c.getParser().addPojoSwaps(CalendarSwap.DateMedium.class);
+                       
c.getSerializer().setProperty(XmlSerializerContext.XML_autoDetectNamespaces, 
true);
+               }
+       }
+
+       @AfterClass
+       public static void afterClass() {
+               for (RestClient c : clients) {
+                       c.closeQuietly();
+               }
+       }
+
+       
//====================================================================================================
+       // Get AddressBookResource as JSON
+       
//====================================================================================================
+       @Test
+       public void testBasic() throws Exception {
+               String in = 
IOUtils.read(getClass().getResourceAsStream("/org/apache/juneau/server/test/AddressBookResource_test0Test.json"));
+               JsonParser p = new 
JsonParser().addPojoSwaps(CalendarSwap.DateMedium.class);
+               Person person = p.parse(in, Person.class);
+               if (debug) System.err.println(person);
+       }
+
+       // A list of People objects.
+       public static class PersonList extends LinkedList<Person> {}
+
+       
//====================================================================================================
+       // PojoRest tests
+       
//====================================================================================================
+       @Test
+       public void testPojoRest() throws Exception {
+               for (RestClient client : clients) {
+                       int rc;
+                       Person p;
+                       List<Person> people;
+
+                       // Reinitialize the resource
+                       rc = client.doGet("/addressBook?method=init").run();
+                       assertEquals(200, rc);
+
+                       // Simple GETs
+                       people = 
client.doGet("/addressBook/people").getResponse(PersonList.class);
+                       assertEquals("Barack Obama", people.get(0).name);
+                       assertEquals(76638, people.get(1).addresses.get(0).zip);
+
+                       // PUT a simple String field
+                       p = people.get(0);
+                       rc = client.doPut(p.uri+"/name", "foo").run();
+                       assertEquals(200, rc);
+                       String name = 
client.doGet(p.uri+"/name").getResponse(String.class);
+                       assertEquals("foo", name);
+                       p = client.doGet(p.uri).getResponse(Person.class);
+                       assertEquals("foo", p.name);
+
+                       // POST an address as JSON
+                       CreateAddress ca = new 
CreateAddress("a1","b1","c1",1,false);
+                       Address a = client.doPost(p.uri + "/addresses", new 
ObjectMap(BeanContext.DEFAULT.createSession().toBeanMap(ca))).getResponse(Address.class);
+                       assertEquals("a1", a.street);
+                       a = client.doGet(a.uri).getResponse(Address.class);
+                       assertEquals("a1", a.street);
+                       assertEquals(1, a.zip);
+                       assertFalse(a.isCurrent);
+
+                       // POST an address as a bean
+                       ca = new CreateAddress("a2","b2","c2",2,true);
+                       a = client.doPost(p.uri + "/addresses", 
ca).getResponse(Address.class);
+                       assertEquals("a2", a.street);
+                       a = client.doGet(a.uri).getResponse(Address.class);
+                       assertEquals("a2", a.street);
+                       assertEquals(2, a.zip);
+                       assertTrue(a.isCurrent);
+
+                       // POST a person
+                       CreatePerson billClinton = new CreatePerson("Bill 
Clinton", AddressBook.toCalendar("Aug 19, 1946"),
+                               new CreateAddress("a3","b3","c3",3,false)
+                       );
+                       rc = client.doPost("/addressBook/people", 
billClinton).run();
+                       assertEquals(200, rc);
+                       people = 
client.doGet("/addressBook/people").getResponse(PersonList.class);
+                       p = people.get(2);
+                       assertEquals(3, people.size());
+                       assertEquals("Bill Clinton", p.name);
+
+                       // DELETE an address
+                       rc = client.doDelete(p.addresses.get(0).uri).run();
+                       assertEquals(200, rc);
+                       people = 
client.doGet("/addressBook/people").getResponse(PersonList.class);
+                       p = people.get(2);
+                       assertEquals(0, p.addresses.size());
+
+                       // DELETE a person
+                       rc = client.doDelete(p.uri).run();
+                       assertEquals(200, rc);
+                       people = 
client.doGet("/addressBook/people").getResponse(PersonList.class);
+                       assertEquals(2, people.size());
+
+                       // Reinitialize the resource
+                       rc = client.doGet("/addressBook?method=init").run();
+                       assertEquals(200, rc);
+               }
+       }
+
+       
//====================================================================================================
+       // PojoQuery tests
+       
//====================================================================================================
+       @Test
+       public void testPojoQuery() throws Exception {
+
+               for (RestClient client : clients) {
+                       RestCall r;
+                       List<Person> people;
+
+                       // Reinitialize the resource
+                       int rc = client.doGet("/addressBook?method=init").run();
+                       assertEquals(200, rc);
+
+                       r = client.doGet("/addressBook/people?q=(name=B*)");
+                       people = r.getResponse(PersonList.class);
+                       assertEquals(1, people.size());
+                       assertEquals("Barack Obama", people.get(0).name);
+
+                       r = 
client.doGet("/addressBook/people?q=(name='Barack+Obama')");
+                       people = r.getResponse(PersonList.class);
+                       assertEquals(1, people.size());
+                       assertEquals("Barack Obama", people.get(0).name);
+
+                       r = 
client.doGet("/addressBook/people?q=(name='Barack%20Obama')");
+                       people = r.getResponse(PersonList.class);
+                       assertEquals(1, people.size());
+                       assertEquals("Barack Obama", people.get(0).name);
+
+                       r = 
client.doGet("/addressBook/people?v=(name,birthDate)");
+                       people = r.getResponse(PersonList.class);
+                       assertEquals("Barack Obama", people.get(0).name);
+                       assertTrue(people.get(0).getAge() > 10);
+                       assertEquals(0, people.get(0).addresses.size());
+
+                       r = 
client.doGet("/addressBook/people?v=(addresses,birthDate)");
+                       people = r.getResponse(PersonList.class);
+                       assertNull(people.get(0).name);
+                       assertTrue(people.get(0).getAge() > 10);
+                       assertEquals(2, people.get(0).addresses.size());
+
+                       r = client.doGet("/addressBook/people?s=($o(age=d))");
+                       people = r.getResponse(PersonList.class);
+                       assertTrue(people.get(0).getAge() > 10);
+                       r = client.doGet("/addressBook/people?s=(age)");
+                       people = r.getResponse(PersonList.class);
+                       assertTrue(people.get(0).getAge() > 10);
+                       r = client.doGet("/addressBook/people?s=($o(age=a))");
+                       people = r.getResponse(PersonList.class);
+                       assertTrue(people.get(0).getAge() > 10);
+
+                       r = client.doGet("/addressBook/people?p=1&l=1");
+                       people = r.getResponse(PersonList.class);
+                       assertEquals(1, people.size());
+                       assertTrue(people.get(0).getAge() > 10);
+               }
+       }
+
+       
//====================================================================================================
+       // PojoIntrospector tests
+       
//====================================================================================================
+       @Test
+       public void testPojoIntrospector() throws Exception {
+
+               for (RestClient client : clients) {
+
+                       List<Person> people;
+
+                       // Reinitialize the resource
+                       int rc = client.doGet("/addressBook?method=init").run();
+                       assertEquals(200, rc);
+
+                       // Simple GETs
+                       people = 
client.doGet("/addressBook/people").getResponse(PersonList.class);
+                       Person p = people.get(0);
+                       int length = 
client.doGet(p.uri+"/name?invokeMethod=length").getResponse(Integer.class);
+                       assertEquals(12, length);
+
+                       String[] tokens = 
client.doGet(p.uri+"/name?invokeMethod=split(java.lang.String,int)&invokeArgs=['a',3]").getResponse(String[].class);
+                       assertObjectEquals("['B','r','ck Obama']", tokens);
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/test/java/org/apache/juneau/rest/samples/CT_AddressBookResource_test0.json
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/test/java/org/apache/juneau/rest/samples/CT_AddressBookResource_test0.json
 
b/juneau-samples/src/test/java/org/apache/juneau/rest/samples/CT_AddressBookResource_test0.json
new file mode 100644
index 0000000..f8cc23f
--- /dev/null
+++ 
b/juneau-samples/src/test/java/org/apache/juneau/rest/samples/CT_AddressBookResource_test0.json
@@ -0,0 +1,26 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                
                                              * 
+// *                                                                           
                                              *
+// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
+// *                                                                           
                                              *
+// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the 
License.                                              *
+// 
***************************************************************************************************************************
+{
+       name: "Bill Clinton", 
+       age: 66, 
+       birthDate: "Aug 19, 1946", 
+       addresses: [
+               {
+                       street: "a3", 
+                       city: "b3", 
+                       state: "c3", 
+                       zip: 3, 
+                       isCurrent: false
+               }
+       ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/test/java/org/apache/juneau/rest/samples/RootResourcesTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/test/java/org/apache/juneau/rest/samples/RootResourcesTest.java
 
b/juneau-samples/src/test/java/org/apache/juneau/rest/samples/RootResourcesTest.java
new file mode 100644
index 0000000..3a4433c
--- /dev/null
+++ 
b/juneau-samples/src/test/java/org/apache/juneau/rest/samples/RootResourcesTest.java
@@ -0,0 +1,147 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                
                                              *
+// *                                                                           
                                              *
+// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
+// *                                                                           
                                              *
+// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the 
License.                                              *
+// 
***************************************************************************************************************************
+package org.apache.juneau.rest.samples;
+
+import static org.junit.Assert.*;
+
+import java.net.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.dto.swagger.*;
+import org.apache.juneau.html.*;
+import org.apache.juneau.json.*;
+import org.apache.juneau.rest.client.*;
+import org.apache.juneau.rest.labels.*;
+import org.apache.juneau.xml.*;
+import org.junit.*;
+
+public class RootResourcesTest {
+
+       private static String path = 
URI.create(Constants.getSampleUrl()).getPath();              // 
/jazz/juneau/sample
+       private static boolean debug = false;
+
+       private static RestClient jsonClient;
+
+       @BeforeClass
+       public static void beforeClass() {
+               jsonClient = new SamplesRestClient(JsonSerializer.DEFAULT, 
JsonParser.DEFAULT);
+       }
+
+       @AfterClass
+       public static void afterClass() {
+               jsonClient.closeQuietly();
+       }
+
+       
//====================================================================================================
+       // text/json
+       
//====================================================================================================
+       @Test
+       public void testJson() throws Exception {
+               RestClient client = new 
SamplesRestClient(JsonSerializer.DEFAULT, JsonParser.DEFAULT);
+               RestCall r = client.doGet("");
+               ResourceDescription[] x = 
r.getResponse(ResourceDescription[].class);
+               assertEquals("helloWorld", x[0].getName().getName());
+               assertEquals(path + "/helloWorld", x[0].getName().getHref());
+               assertEquals("Hello World sample resource", 
x[0].getDescription());
+
+               r = jsonClient.doOptions("");
+               ObjectMap x2 = r.getResponse(ObjectMap.class);
+               String s = x2.getObjectMap("info").getString("description");
+               if (debug) System.err.println(s);
+               assertTrue(s, s.startsWith("This is an example"));
+
+               client.closeQuietly();
+       }
+
+       
//====================================================================================================
+       // text/xml
+       
//====================================================================================================
+       @Test
+       public void testXml() throws Exception {
+               RestClient client = new 
SamplesRestClient().setParser(XmlParser.DEFAULT);
+               RestCall r = client.doGet("");
+               ResourceDescription[] x = 
r.getResponse(ResourceDescription[].class);
+               assertEquals("helloWorld", x[0].getName().getName());
+               assertEquals(path + "/helloWorld", x[0].getName().getHref());
+               assertEquals("Hello World sample resource", 
x[0].getDescription());
+
+               r = jsonClient.doOptions("");
+               ObjectMap x2 = r.getResponse(ObjectMap.class);
+               String s = x2.getObjectMap("info").getString("description");
+               if (debug) System.err.println(s);
+               assertTrue(s, s.startsWith("This is an example"));
+
+               client.closeQuietly();
+       }
+
+       
//====================================================================================================
+       // text/html+stripped
+       
//====================================================================================================
+       @Test
+       public void testHtmlStripped() throws Exception {
+               RestClient client = new 
SamplesRestClient().setParser(HtmlParser.DEFAULT).setAccept("text/html+stripped");
+               RestCall r = client.doGet("");
+               ResourceDescription[] x = 
r.getResponse(ResourceDescription[].class);
+               assertEquals("helloWorld", x[0].getName().getName());
+               assertTrue(x[0].getName().getHref().endsWith("/helloWorld"));
+               assertEquals("Hello World sample resource", 
x[0].getDescription());
+
+               r = jsonClient.doOptions("").setHeader("Accept", "text/json");
+               ObjectMap x2 = r.getResponse(ObjectMap.class);
+               String s = x2.getObjectMap("info").getString("description");
+               if (debug) System.err.println(s);
+               assertTrue(s, s.startsWith("This is an example"));
+
+               client.closeQuietly();
+       }
+
+       
//====================================================================================================
+       // /htdoces/styles.css
+       
//====================================================================================================
+       @Test
+       public void testStyleSheet() throws Exception {
+               RestClient client = new 
SamplesRestClient().setAccept("text/css");
+               RestCall r = client.doGet("/style.css");
+               String css = r.getResponseAsString();
+               if (debug) System.err.println(css);
+               assertTrue(css, css.indexOf("table {") != -1);
+
+               client.closeQuietly();
+       }
+
+       
//====================================================================================================
+       // application/json+schema
+       
//====================================================================================================
+       @Test
+       public void testJsonSchema() throws Exception {
+               RestClient client = new 
SamplesRestClient().setParser(JsonParser.DEFAULT).setAccept("text/json+schema");
+               RestCall r = client.doGet("");
+               ObjectMap m = r.getResponse(ObjectMap.class);
+               if (debug) System.err.println(m);
+               
assertEquals("org.apache.juneau.rest.labels.ChildResourceDescriptions<org.apache.juneau.rest.labels.ResourceDescription>",
 m.getString("description"));
+               
assertEquals("org.apache.juneau.rest.labels.ResourceDescription", 
m.getObjectMap("items").getString("description"));
+
+               client.closeQuietly();
+       }
+
+       
//====================================================================================================
+       // OPTIONS page
+       
//====================================================================================================
+       @Test
+       public void testOptionsPage() throws Exception {
+               RestCall r = jsonClient.doOptions("");
+               Swagger o = r.getResponse(Swagger.class);
+               if (debug) System.err.println(o);
+               assertEquals("This is an example of a router resource that is 
used to access other resources.", o.getInfo().getDescription());
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/test/java/org/apache/juneau/rest/samples/SampleRemoteableServicesResourceTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/test/java/org/apache/juneau/rest/samples/SampleRemoteableServicesResourceTest.java
 
b/juneau-samples/src/test/java/org/apache/juneau/rest/samples/SampleRemoteableServicesResourceTest.java
new file mode 100644
index 0000000..ec191dd
--- /dev/null
+++ 
b/juneau-samples/src/test/java/org/apache/juneau/rest/samples/SampleRemoteableServicesResourceTest.java
@@ -0,0 +1,69 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                
                                              *
+// *                                                                           
                                              *
+// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
+// *                                                                           
                                              *
+// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the 
License.                                              *
+// 
***************************************************************************************************************************
+package org.apache.juneau.rest.samples;
+
+import static org.junit.Assert.*;
+
+import org.apache.juneau.json.*;
+import org.apache.juneau.rest.client.*;
+import org.apache.juneau.samples.addressbook.*;
+import org.apache.juneau.transforms.*;
+import org.apache.juneau.urlencoding.*;
+import org.apache.juneau.xml.*;
+import org.junit.*;
+
+public class SampleRemoteableServicesResourceTest {
+
+       static RestClient[] clients;
+
+       @BeforeClass
+       public static void beforeClass() throws Exception {
+               clients = new RestClient[] {
+                       new SamplesRestClient(JsonSerializer.class, 
JsonParser.class),
+                       new SamplesRestClient(XmlSerializer.class, 
XmlParser.class),
+//     TODO - broken?          new TestRestClient(HtmlSerializer.class, 
HtmlParser.class).setAccept("text/html+stripped"),
+                       new SamplesRestClient(UonSerializer.class, 
UonParser.class),
+               };
+               for (RestClient c : clients) {
+                       c.addPojoSwaps(CalendarSwap.DateMedium.class);
+                       c.setRemoteableServletUri("/remoteable");
+                       
c.setProperty(XmlSerializerContext.XML_autoDetectNamespaces, true);
+               }
+       }
+
+       @AfterClass
+       public static void afterClass() {
+               for (RestClient c : clients) {
+                       c.closeQuietly();
+               }
+       }
+
+       
//====================================================================================================
+       // Get AddressBookResource as JSON
+       
//====================================================================================================
+       @Test
+       public void testBasic() throws Exception {
+               for (RestClient client : clients) {
+                       IAddressBook ab = 
client.getRemoteableProxy(IAddressBook.class);
+                       Person p = ab.createPerson(
+                               new CreatePerson("Test Person",
+                                       AddressBook.toCalendar("Aug 1, 1999"),
+                                       new CreateAddress("Test street", "Test 
city", "Test state", 12345, true))
+                       );
+                       assertEquals(
+                               "{id:x,name:'Test Person',birthDate:'Aug 1, 
1999',addresses:[{id:x,street:'Test street',city:'Test city',state:'Test 
state',zip:12345,isCurrent:true}],age:x}",
+                               
JsonSerializer.DEFAULT_LAX.toString(p).replaceAll("id:\\d+", 
"id:x").replaceAll("age:\\d+", "age:x"));
+               }
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/test/java/org/apache/juneau/rest/samples/SamplesRestClient.java
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/test/java/org/apache/juneau/rest/samples/SamplesRestClient.java
 
b/juneau-samples/src/test/java/org/apache/juneau/rest/samples/SamplesRestClient.java
new file mode 100644
index 0000000..9b18ad3
--- /dev/null
+++ 
b/juneau-samples/src/test/java/org/apache/juneau/rest/samples/SamplesRestClient.java
@@ -0,0 +1,69 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                
                                              *
+// *                                                                           
                                              *
+// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
+// *                                                                           
                                              *
+// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the 
License.                                              *
+// 
***************************************************************************************************************************
+package org.apache.juneau.rest.samples;
+
+import java.security.*;
+
+import javax.net.ssl.*;
+
+import org.apache.http.conn.ssl.*;
+import org.apache.http.impl.client.*;
+import org.apache.juneau.parser.*;
+import org.apache.juneau.rest.client.*;
+import org.apache.juneau.serializer.*;
+
+/**
+ * REST client with lenient SSL support and lax redirection strategy.
+ */
+public class SamplesRestClient extends RestClient {
+
+       public SamplesRestClient(Class<? extends Serializer> s, Class<? extends 
Parser> p) throws InstantiationException {
+               super(s,p);
+               setRootUrl(Constants.getSampleUrl());
+       }
+
+       public SamplesRestClient(Serializer s, Parser p) {
+               super(s,p);
+               setRootUrl(Constants.getSampleUrl());
+       }
+
+       public SamplesRestClient() {
+               setRootUrl(Constants.getSampleUrl());
+       }
+
+       public SamplesRestClient(CloseableHttpClient c) {
+               super(c);
+               setRootUrl(Constants.getSampleUrl());
+       }
+
+       public static SSLConnectionSocketFactory getSSLSocketFactory() throws 
Exception {
+               SSLContext sslContext = SSLContext.getInstance("SSL");
+               TrustManager tm = new SimpleX509TrustManager(true);
+               sslContext.init(null, new TrustManager[]{tm}, new 
SecureRandom());
+               return new SSLConnectionSocketFactory(sslContext, new 
NoopHostnameVerifier());
+       }
+
+       @Override /* RestClient */
+       protected CloseableHttpClient createHttpClient() throws Exception {
+               try {
+                       return 
HttpClients.custom().setSSLSocketFactory(getSSLSocketFactory()).setRedirectStrategy(new
 LaxRedirectStrategy()).build();
+               } catch (KeyStoreException e) {
+                       throw new RuntimeException(e);
+               } catch (NoSuchAlgorithmException e) {
+                       throw new RuntimeException(e);
+               } catch (Throwable e) {
+                       e.printStackTrace();
+                       return null;
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/91a388d0/juneau-samples/src/test/java/org/apache/juneau/rest/samples/TestMultiPartFormPostsTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-samples/src/test/java/org/apache/juneau/rest/samples/TestMultiPartFormPostsTest.java
 
b/juneau-samples/src/test/java/org/apache/juneau/rest/samples/TestMultiPartFormPostsTest.java
new file mode 100644
index 0000000..4a2bd1b
--- /dev/null
+++ 
b/juneau-samples/src/test/java/org/apache/juneau/rest/samples/TestMultiPartFormPostsTest.java
@@ -0,0 +1,47 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                
                                              *
+// *                                                                           
                                              *
+// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
+// *                                                                           
                                              *
+// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the 
License.                                              *
+// 
***************************************************************************************************************************
+package org.apache.juneau.rest.samples;
+
+import static org.junit.Assert.*;
+
+import java.io.*;
+
+import org.apache.http.*;
+import org.apache.http.entity.mime.*;
+import org.apache.juneau.internal.*;
+import org.apache.juneau.rest.client.*;
+import org.apache.juneau.utils.*;
+import org.junit.*;
+
+public class TestMultiPartFormPostsTest {
+
+       private static String URL = "/tempDir";
+       boolean debug = false;
+
+       
//====================================================================================================
+       // Test that RestClient can handle multi-part form posts.
+       
//====================================================================================================
+       @Test
+       public void testUpload() throws Exception {
+               RestClient client = new SamplesRestClient();
+               File f = FileUtils.createTempFile("testMultiPartFormPosts.txt");
+               IOPipe.create(new StringReader("test!"), new 
FileWriter(f)).closeOut().run();
+               HttpEntity entity = 
MultipartEntityBuilder.create().addBinaryBody(f.getName(), f).build();
+               client.doPost(URL + "/upload", entity);
+
+               String downloaded = client.doGet(URL + '/' + f.getName() + 
"?method=VIEW").getResponseAsString();
+               assertEquals("test!", downloaded);
+
+               client.closeQuietly();
+       }
+}
\ No newline at end of file

Reply via email to