[jboss-cvs] JBossAS SVN: r93104 - in projects/docs/enterprise/5.0/Examples: RESTEasy and 194 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Sep 1 19:22:57 EDT 2009


Author: irooskov at redhat.com
Date: 2009-09-01 19:22:55 -0400 (Tue, 01 Sep 2009)
New Revision: 93104

Added:
   projects/docs/enterprise/5.0/Examples/RESTEasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/.classpath
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/.project
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/README.txt
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/BareBonesBrowserLaunch.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrClient.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrConstants.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrResponse.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrSearchService.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/SimpleFlickrClient.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/resteasy/ForceCachingExecutionInterceptor.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/resteasy/ImageIconMessageBodyReader.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/resteasy/LoggingExecutionInterceptor.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/twitter/
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/twitter/DateAdapter.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/twitter/TwitterClient.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/README.txt
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/java/org/jboss/resteasy/examples/asyncjob/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/java/org/jboss/resteasy/examples/asyncjob/MyResource.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/webapp/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/webapp/WEB-INF/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/webapp/WEB-INF/web.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/test/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/test/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/test/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/test/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/test/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/test/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/test/java/org/jboss/resteasy/examples/asyncjob/
   projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/test/java/org/jboss/resteasy/examples/asyncjob/AsyncJobTest.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/README.txt
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/java/org/jboss/resteasy/test/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/java/org/jboss/resteasy/test/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/java/org/jboss/resteasy/test/jboss/SmokeTest.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/resources/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/resources/jndi.properties
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/resources/log4j.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/LocatingResource.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/LocatingResourceBean.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/SimpleResource.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/SimpleResourceBean.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/war/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/war/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/war/src/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/war/src/main/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/war/src/main/webapp/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/war/src/main/webapp/WEB-INF/
   projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/war/src/main/webapp/WEB-INF/web.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/README.txt
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/DefaultGreeter.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/Greeter.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/HelloModule.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/HelloResource.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/webapp/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/webapp/WEB-INF/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/webapp/WEB-INF/web.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/hello/
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/hello/DefaultGreeterTest.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/hello/HelloResourceIntegrationTest.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/hello/HelloResourceTest.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/README.txt
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/data/
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/data/Book.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/data/BookListing.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/service/
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/service/Library.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/service/LibraryApplication.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/WEB-INF/
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/WEB-INF/web.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/badger.html
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/mapped.html
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/test/
   projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/test/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/README.txt
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/Contact.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/ContactService.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/Contacts.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/ContactsResource.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/resources/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/resources/springmvc-servlet.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/webapp/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/webapp/WEB-INF/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/webapp/WEB-INF/contacts.jsp
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/webapp/WEB-INF/web.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/test/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/test/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/test/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/test/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/test/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/test/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/test/java/org/jboss/resteasy/examples/springmvc/
   projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/test/java/org/jboss/resteasy/examples/springmvc/ContactsTest.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/README.txt
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/domain/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/domain/Customer.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/services/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/services/CustomerResource.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/services/ShoppingApplication.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/webapp/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/webapp/WEB-INF/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/webapp/WEB-INF/web.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/test/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/test/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/test/java/com/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/test/java/com/restfully/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/test/java/com/restfully/shop/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/test/java/com/restfully/shop/test/
   projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/test/java/com/restfully/shop/test/CustomerResourceTest.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/README.txt
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/java/org/jboss/resteasy/examples/contacts/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/java/org/jboss/resteasy/examples/contacts/client/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/java/org/jboss/resteasy/examples/contacts/client/ContactClient.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/contact.lck
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/contact.log
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/contact.properties
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/contact.script
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/java/org/jboss/resteasy/examples/contacts/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/java/org/jboss/resteasy/examples/contacts/client/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/java/org/jboss/resteasy/examples/contacts/client/TestClient.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/resources/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/resources/test-config.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/core/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/core/Contact.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/core/ContactAttrs.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/core/Contacts.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/test/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/test/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/resteasy/examples/contacts/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/resteasy/examples/contacts/persistence/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/resteasy/examples/contacts/persistence/ContactDao.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/resteasy/examples/contacts/persistence/hibernate/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/resteasy/examples/contacts/persistence/hibernate/ContactDaoImpl.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/resources/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/resources/dao-config.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/resources/db.properties
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/resources/persistence-config.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.lck
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.log
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.properties
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.script
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.script.original
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/mysql/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/mysql/data.sql
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/mysql/dbschema.sql
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/mysql/initialize.bat
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/java/com/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/java/org/jboss/resteasy/examples/contacts/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/java/org/jboss/resteasy/examples/contacts/persistence/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/java/org/jboss/resteasy/examples/contacts/persistence/TestContact.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/resources/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/resources/test-config.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/pom.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/jboss/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/jboss/resteasy/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/jboss/resteasy/examples/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/jboss/resteasy/examples/contacts/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/jboss/resteasy/examples/contacts/services/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/jboss/resteasy/examples/contacts/services/ContactService.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/jboss/resteasy/examples/contacts/services/ContactServiceImpl.java
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.lck
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.log
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.properties
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.script
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/webapp/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/webapp/WEB-INF/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/webapp/WEB-INF/applicationContext.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/webapp/WEB-INF/web.xml
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/test/
   projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/test/java/
Log:
adding in new RESTEasy Examples


Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/.classpath
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/.classpath	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/.classpath	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry including="**/*.java" kind="src" path="src/main/java"/>
+	<classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/xml/stream/stax-api/1.0/stax-api-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.2/commons-codec-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.3/commons-lang-2.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar"/>
+	<classpathentry kind="var" path="M2_REPO/com/sun/xml/fastinfoset/FastInfoset/1.2.2/FastInfoset-1.2.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javassist/javassist/3.6.0.GA/javassist-3.6.0.GA.jar"/>
+	<classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.8/jaxb-impl-2.1.8.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/resteasy/jaxrs-api/1.1.GA/jaxrs-api-1.1.GA.jar" sourcepath="M2_REPO/org/jboss/resteasy/jaxrs-api/1.1.GA/jaxrs-api-1.1.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/codehaus/jettison/jettison/1.0.1/jettison-1.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/resteasy/resteasy-jaxb-provider/1.1.GA/resteasy-jaxb-provider-1.1.GA.jar" sourcepath="M2_REPO/org/jboss/resteasy/resteasy-jaxb-provider/1.1.GA/resteasy-jaxb-provider-1.1.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/resteasy/resteasy-jaxrs/1.1.GA/resteasy-jaxrs-1.1.GA.jar" sourcepath="M2_REPO/org/jboss/resteasy/resteasy-jaxrs/1.1.GA/resteasy-jaxrs-1.1.GA-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/scannotation/scannotation/1.0.2/scannotation-1.0.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/com/sun/xml/stream/sjsxp/1.0.1/sjsxp-1.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.5.2/slf4j-api-1.5.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-simple/1.5.2/slf4j-simple-1.5.2.jar"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="lib" path="C:/dev/coherence/lib/coherence.jar"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/.project
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/.project	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/.project	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,13 @@
+<projectDescription>
+  <name>api-clients</name>
+  <comment/>
+  <projects/>
+  <buildSpec>
+    <buildCommand>
+      <name>org.eclipse.jdt.core.javabuilder</name>
+    </buildCommand>
+  </buildSpec>
+  <natures>
+    <nature>org.eclipse.jdt.core.javanature</nature>
+  </natures>
+</projectDescription>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/README.txt
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/README.txt	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/README.txt	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,31 @@
+README for the RESTEasy spring-hibernate example project:
+=========================================================
+
+This project is a simple example showing the use of:
+- @Path annotation
+- @GET annotation
+- PUT
+- POST
+- @PathParam annotation
+It also uses pure streaming output.
+
+
+System Requirements:
+====================
+- Maven 2.0.9 or higher
+
+
+Building the Project:
+=====================
+
+In the project's root directory, run:
+  mvn clean compile
+
+Flickr Client:
+1. Apply for an API key from Flickr: http://www.flickr.com/services/api/keys/apply 
+2. Run:
+     mvn exec:java -Dexec.mainClass="org.jboss.resteasy.examples.flickr.FlickrClient" -Dexec.args="<apiKey>"
+
+Twitter Client:
+- Run:
+    mvn exec:java -Dexec.mainClass="org.jboss.resteasy.examples.twitter.Twitter" -Dexec.args="<userId> <password>"

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.jboss.resteasy.examples</groupId>
+	<artifactId>api-clients</artifactId>
+	<version>1.1.GA_CP01</version>
+
+	<repositories>
+		<repository>
+			<id>java.net</id>
+			<url>http://download.java.net/maven/1</url>
+			<layout>legacy</layout>
+		</repository>
+		<repository>
+			<id>maven repo</id>
+			<name>maven repo</name>
+			<url>http://repo1.maven.org/maven2/</url>
+		</repository>
+		<!-- For resteasy -->
+		<repository>
+			<id>jboss</id>
+			<name>jboss repo</name>
+			<url>http://repository.jboss.org/maven2</url>
+		</repository>
+	</repositories>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.jboss.resteasy</groupId>
+			<artifactId>resteasy-jaxrs</artifactId>
+			<version>${project.version}</version>
+			<!-- filter out unwanted jars -->
+			<exclusions>
+				<exclusion>
+					<groupId>commons-httpclient</groupId>
+					<artifactId>commons-httpclient</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>tjws</groupId>
+					<artifactId>webserver</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>javax.servlet</groupId>
+					<artifactId>servlet-api</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.jboss.resteasy</groupId>
+			<artifactId>resteasy-jaxb-provider</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-httpclient</groupId>
+			<artifactId>commons-httpclient</artifactId>
+			<version>3.1</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-lang</groupId>
+			<artifactId>commons-lang</artifactId>
+			<version>2.3</version>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/BareBonesBrowserLaunch.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/BareBonesBrowserLaunch.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/BareBonesBrowserLaunch.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,41 @@
+package org.jboss.resteasy.examples.flickr;
+
+import java.lang.reflect.Method;
+
+import javax.swing.JOptionPane;
+
+public class BareBonesBrowserLaunch {
+
+	private static final String errMsg = "Error attempting to launch web browser";
+
+	public static void openURL(String url) {
+		String osName = System.getProperty("os.name");
+		try {
+			if (osName.startsWith("Mac OS")) {
+				Class fileMgr = Class.forName("com.apple.eio.FileManager");
+				Method openURL = fileMgr.getDeclaredMethod("openURL",
+						new Class[] { String.class });
+				openURL.invoke(null, new Object[] { url });
+			} else if (osName.startsWith("Windows"))
+				Runtime.getRuntime().exec(
+						"rundll32 url.dll,FileProtocolHandler " + url);
+			else { // assume Unix or Linux
+				String[] browsers = { "firefox", "opera", "konqueror",
+						"epiphany", "mozilla", "netscape" };
+				String browser = null;
+				for (int count = 0; count < browsers.length && browser == null; count++)
+					if (Runtime.getRuntime().exec(
+							new String[] { "which", browsers[count] })
+							.waitFor() == 0)
+						browser = browsers[count];
+				if (browser == null)
+					throw new Exception("Could not find web browser");
+				else
+					Runtime.getRuntime().exec(new String[] { browser, url });
+			}
+		} catch (Exception e) {
+			JOptionPane.showMessageDialog(null, errMsg + ":\n"
+					+ e.getLocalizedMessage());
+		}
+	}
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrClient.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrClient.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrClient.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,228 @@
+package org.jboss.resteasy.examples.flickr;
+
+import static java.lang.String.format;
+
+import java.awt.BorderLayout;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.Toolkit;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.net.MalformedURLException;
+import java.util.Collections;
+import java.util.Enumeration;
+
+import javax.swing.AbstractButton;
+import javax.swing.BorderFactory;
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+
+import org.apache.commons.lang.time.StopWatch;
+import org.jboss.resteasy.examples.resteasy.ImageIconMessageBodyReader;
+import org.jboss.resteasy.plugins.providers.RegisterBuiltin;
+import org.jboss.resteasy.spi.ResteasyProviderFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class FlickrClient
+{
+
+    private final static Logger logger = LoggerFactory
+            .getLogger(FlickrClient.class);
+
+    public static void main(String args[]) throws Exception
+    {
+        ResteasyProviderFactory instance = ResteasyProviderFactory
+                .getInstance();
+        RegisterBuiltin.register(instance);
+        instance.registerProvider(ImageIconMessageBodyReader.class);
+        FlickrSearchService flickrSearchService = new FlickrSearchService(
+                args[0]);
+
+        try
+        {
+            UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
+        } catch (Exception e)
+        {
+
+        }
+        new FlickrClient(flickrSearchService);
+    }
+
+    private FlickrSearchService flickrSearchService;
+
+    private JFrame frame = null;
+    private JPanel dataPanel = null;
+    private JTextField textField = null;
+    private JPanel glassPane = null;
+    private ButtonGroup type = null;
+
+    public FlickrClient(FlickrSearchService flickrSearchService)
+    {
+        this.flickrSearchService = flickrSearchService;
+        frame = new JFrame("Flickr Search");
+        frame.setLayout(new BorderLayout());
+        frame.add(createQueryPanel(), BorderLayout.NORTH);
+        frame.add(dataPanel = new JPanel(), BorderLayout.CENTER);
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        frame.setGlassPane(glassPane = new JPanel());
+        glassPane.setOpaque(true);
+        glassPane.setVisible(false);
+
+        frame.pack();
+        Dimension preferredSize = frame.getPreferredSize();
+        frame.setSize(new Dimension(preferredSize.width + 500,
+                preferredSize.height));
+        center();
+        frame.setVisible(true);
+    }
+
+    public void center()
+    {
+        Toolkit toolkit = Toolkit.getDefaultToolkit();
+        Dimension screenSize = toolkit.getScreenSize();
+
+        // Calculate the frame location
+        int x = (screenSize.width - frame.getWidth()) / 2;
+        int y = (screenSize.height - frame.getHeight()) / 2;
+
+        // Set the new frame location
+        frame.setLocation(x, y);
+    }
+
+    private JPanel createQueryPanel()
+    {
+        JPanel queryPanel = new JPanel(new BorderLayout());
+        queryPanel.add(new JLabel("Query:"), BorderLayout.WEST);
+
+        textField = new JTextField();
+        queryPanel.add(textField, BorderLayout.CENTER);
+
+        JPanel eastPanel = new JPanel(new FlowLayout());
+        JButton searchButton = new JButton("Search");
+        this.type = new ButtonGroup();
+        addJCheckbox("tags", eastPanel, true);
+        addJCheckbox("text", eastPanel, false);
+        eastPanel.add(searchButton, BorderLayout.EAST);
+
+        queryPanel.add(eastPanel, BorderLayout.EAST);
+
+        textField.addKeyListener(new KeyAdapter()
+        {
+            @Override
+            public void keyReleased(KeyEvent e)
+            {
+                if (e.getKeyCode() == KeyEvent.VK_ENTER)
+                {
+                    updatePhotos();
+                }
+            }
+        });
+        searchButton.addMouseListener(new MouseAdapter()
+        {
+            @Override
+            public void mouseClicked(MouseEvent e)
+            {
+                updatePhotos();
+            }
+        });
+
+        queryPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory
+                .createEtchedBorder(), BorderFactory.createEmptyBorder(5, 5, 5,
+                5)));
+
+        return queryPanel;
+    }
+
+    private void addJCheckbox(String string, JPanel panel, boolean selected)
+    {
+        JRadioButton radioButton = new JRadioButton(string);
+        radioButton.setSelected(selected);
+        type.add(radioButton);
+        panel.add(radioButton);
+    }
+
+    private void updatePhotos()
+    {
+        SwingUtilities.invokeLater(new Runnable()
+        {
+            public void run()
+            {
+                StopWatch sw = new StopWatch();
+                sw.start();
+                glassPane.setVisible(true);
+                String searchTerm = textField.getText();
+                try
+                {
+                    frame.setCursor(new Cursor(Cursor.WAIT_CURSOR));
+                    String searchType = null;
+                    for (Enumeration<AbstractButton> elements = type
+                            .getElements(); elements.hasMoreElements();)
+                    {
+                        AbstractButton button = elements.nextElement();
+                        if (button.isSelected())
+                        {
+                            searchType = button.getText();
+                            break;
+                        }
+                    }
+                    displayPhotos(flickrSearchService.searchPhotos(searchType,
+                            searchTerm));
+                } catch (Exception e1)
+                {
+                    e1.printStackTrace();
+                } finally
+                {
+                    frame.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
+                    frame.pack();
+                    center();
+                    glassPane.setVisible(false);
+                    logger.info(format("finished searching for %s in %d ms",
+                            searchTerm, sw.getTime()));
+                }
+            }
+        });
+    }
+
+    private void displayPhotos(FlickrResponse photos)
+            throws MalformedURLException, Exception
+    {
+        frame.setTitle("Flickr Search for " + textField.getText());
+        if (dataPanel != null)
+            frame.remove(dataPanel);
+        dataPanel = new JPanel();
+        dataPanel.setLayout(new GridLayout(2, photos.photos.size() / 2));
+
+        Collections.shuffle(photos.photos);
+
+        for (final Photo photo : photos.photos)
+        {
+            JPanel photopanel = new JPanel(new BorderLayout());
+            JButton button = new JButton(flickrSearchService
+                    .getImageIcon(photo));
+            button.addMouseListener(new MouseAdapter()
+            {
+                @Override
+                public void mouseClicked(MouseEvent e)
+                {
+                    BareBonesBrowserLaunch.openURL(photo.getPublicURL());
+                }
+            });
+            photopanel.setBorder(BorderFactory.createTitledBorder(photo.title));
+            photopanel.add(button, BorderLayout.CENTER);
+            dataPanel.add(photopanel);
+        }
+        frame.add(dataPanel, BorderLayout.CENTER);
+    }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrConstants.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrConstants.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrConstants.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,9 @@
+package org.jboss.resteasy.examples.flickr;
+
+public class FlickrConstants
+{
+    public static final String photoSearchUrl = "http://www.flickr.com/services/rest?method=flickr.photos.search&per_page=8&sort=interestingness-desc&api+key={api-key}&{type}={searchTerm}";
+    public static final String photoServer = "http://static.flickr.com";
+    public static final String photoPath = "/{server}/{id}_{secret}_m.jpg";
+    public static final String photoUrlTemplate = photoServer + photoPath;
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrResponse.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrResponse.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrResponse.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,31 @@
+package org.jboss.resteasy.examples.flickr;
+
+import java.util.List;
+import java.util.concurrent.Future;
+
+import javax.swing.ImageIcon;
+import javax.ws.rs.core.UriBuilder;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+ at XmlRootElement(name = "rsp")
+public class FlickrResponse {
+	@XmlElementWrapper(name = "photos")
+	@XmlElement(name="photo")
+	public List<Photo> photos;
+}
+
+class Photo {
+	@XmlAttribute
+	public String server, id, secret, title, owner;
+	@XmlTransient
+	public Future<ImageIcon> image;
+
+	public String getPublicURL() {
+		return UriBuilder.fromUri("http://www.flickr.com/photos/").path(
+				"/{owner}/{id}").build(owner, id).toString();
+	}
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrSearchService.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrSearchService.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/FlickrSearchService.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,94 @@
+package org.jboss.resteasy.examples.flickr;
+
+import static org.jboss.resteasy.examples.flickr.FlickrConstants.photoPath;
+import static org.jboss.resteasy.examples.flickr.FlickrConstants.photoSearchUrl;
+import static org.jboss.resteasy.examples.flickr.FlickrConstants.photoServer;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import javax.swing.ImageIcon;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+import org.jboss.resteasy.client.ClientRequestFactory;
+import org.jboss.resteasy.client.cache.CacheInterceptor;
+import org.jboss.resteasy.client.cache.LightweightBrowserCache;
+import org.jboss.resteasy.client.core.ClientInterceptorRepositoryImpl;
+import org.jboss.resteasy.client.core.executors.ApacheHttpClientExecutor;
+import org.jboss.resteasy.examples.resteasy.ForceCachingExecutionInterceptor;
+import org.jboss.resteasy.examples.resteasy.LoggingExecutionInterceptor;
+
+public class FlickrSearchService
+{
+
+    private String apiKey;
+    private PhotoResource photoResource;
+    private ExecutorService executor = Executors.newFixedThreadPool(8);
+    private ClientRequestFactory clientRequestFactory;
+
+    @Path("")
+    static interface PhotoResource
+    {
+        @GET
+        @Path(photoPath)
+        ImageIcon read(@PathParam("server") String server,
+                @PathParam("id") String id, @PathParam("secret") String secret);
+    }
+
+    public FlickrSearchService(String apiKey) throws URISyntaxException
+    {
+        this.apiKey = apiKey;
+        clientRequestFactory = new ClientRequestFactory(
+                new ApacheHttpClientExecutor(new HttpClient(
+                        new MultiThreadedHttpConnectionManager())), new URI(
+                        photoServer));
+
+        ClientInterceptorRepositoryImpl interceptors = clientRequestFactory
+                .getPrefixInterceptors();
+        interceptors.registerInterceptor(new LoggingExecutionInterceptor());
+        interceptors.registerInterceptor(new CacheInterceptor(
+                new LightweightBrowserCache()));
+        interceptors.registerInterceptor(new ForceCachingExecutionInterceptor(
+                10));
+
+        // create a proxy using the JAX-RS annotation
+        photoResource = clientRequestFactory.createProxy(PhotoResource.class);
+    }
+
+    public FlickrResponse searchPhotos(String type, String searchTerm)
+            throws Exception
+    {
+        // second, convert the XML to a JAXB object
+        FlickrResponse photos = clientRequestFactory.get(photoSearchUrl,
+                FlickrResponse.class, apiKey, type, searchTerm);
+        prefetchImages(photos);
+        return photos;
+    }
+
+    private void prefetchImages(FlickrResponse photos)
+    {
+        for (final Photo photo : photos.photos)
+        {
+            photo.image = executor.submit(new Callable<ImageIcon>()
+            {
+                public ImageIcon call() throws Exception
+                {
+                    return photoResource.read(photo.server, photo.id,
+                            photo.secret);
+                }
+            });
+        }
+    }
+
+    public ImageIcon getImageIcon(Photo photo) throws Exception
+    {
+        return photo.image.get();
+    }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/SimpleFlickrClient.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/SimpleFlickrClient.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/flickr/SimpleFlickrClient.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,57 @@
+package org.jboss.resteasy.examples.flickr;
+
+import static org.jboss.resteasy.examples.flickr.FlickrConstants.photoSearchUrl;
+import static org.jboss.resteasy.examples.flickr.FlickrConstants.photoUrlTemplate;
+
+import java.awt.GridLayout;
+
+import javax.swing.BorderFactory;
+import javax.swing.ImageIcon;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+
+import org.jboss.resteasy.client.ClientRequestFactory;
+import org.jboss.resteasy.examples.resteasy.ImageIconMessageBodyReader;
+import org.jboss.resteasy.examples.resteasy.LoggingExecutionInterceptor;
+import org.jboss.resteasy.plugins.providers.RegisterBuiltin;
+import org.jboss.resteasy.spi.ResteasyProviderFactory;
+
+public class SimpleFlickrClient
+{
+    public static void main(String args[]) throws Exception
+    {
+        final String searchTerm = "dolphin";
+
+        ClientRequestFactory client = initializeRequests();
+
+        // apply for api key at - http://www.flickr.com/services/api/keys/apply
+        FlickrResponse photos = client.get(photoSearchUrl,
+                FlickrResponse.class, args[0], "text", searchTerm);
+
+        JFrame frame = new JFrame(searchTerm + " photos");
+        frame.setLayout(new GridLayout(2, photos.photos.size() / 2));
+
+        for (Photo photo : photos.photos)
+        { 
+            JLabel image = new JLabel(client.get(photoUrlTemplate,
+                    ImageIcon.class, photo.server, photo.id, photo.secret));
+            image.setBorder(BorderFactory.createTitledBorder(photo.title));
+            frame.add(image);
+        }
+
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        frame.pack();
+        frame.setVisible(true);
+    }
+
+    private static ClientRequestFactory initializeRequests()
+    {
+        ResteasyProviderFactory instance = ResteasyProviderFactory.getInstance();
+        RegisterBuiltin.register(instance);
+        instance.registerProvider(ImageIconMessageBodyReader.class);
+
+        ClientRequestFactory client = new ClientRequestFactory();
+        client.getPrefixInterceptors().registerInterceptor(new LoggingExecutionInterceptor());
+        return client;
+    }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/resteasy/ForceCachingExecutionInterceptor.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/resteasy/ForceCachingExecutionInterceptor.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/resteasy/ForceCachingExecutionInterceptor.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,39 @@
+package org.jboss.resteasy.examples.resteasy;
+
+import org.jboss.resteasy.client.ClientResponse;
+import org.jboss.resteasy.spi.interception.ClientExecutionContext;
+import org.jboss.resteasy.spi.interception.ClientExecutionInterceptor;
+import org.jboss.resteasy.util.DateUtil;
+import org.jboss.resteasy.util.HttpHeaderNames;
+
+import javax.ws.rs.core.MultivaluedMap;
+import java.util.Calendar;
+import java.util.Date;
+
+public class ForceCachingExecutionInterceptor implements
+        ClientExecutionInterceptor
+{
+   private int minutes;
+
+   public ForceCachingExecutionInterceptor(int minutes)
+   {
+      this.minutes = minutes;
+   }
+
+   @SuppressWarnings("unchecked")
+   public ClientResponse execute(ClientExecutionContext ctx) throws Exception
+   {
+      ClientResponse resp = ctx.proceed();
+      MultivaluedMap<String, String> headers = resp.getHeaders();
+      String date = headers.getFirst(HttpHeaderNames.DATE);
+      if (date != null && headers.getFirst(HttpHeaderNames.EXPIRES) == null)
+      {
+         Calendar cal = Calendar.getInstance();
+         cal.setTime(DateUtil.parseDate(date));
+         cal.add(Calendar.MINUTE, minutes);
+         Date future = cal.getTime();
+         headers.add(HttpHeaderNames.EXPIRES, DateUtil.formatDate(future));
+      }
+      return resp;
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/resteasy/ImageIconMessageBodyReader.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/resteasy/ImageIconMessageBodyReader.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/resteasy/ImageIconMessageBodyReader.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,38 @@
+package org.jboss.resteasy.examples.resteasy;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+
+import javax.swing.ImageIcon;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.ext.MessageBodyReader;
+import javax.ws.rs.ext.Provider;
+
+import org.jboss.resteasy.util.ReadFromStream;
+
+ at Provider
+ at Produces("*/*")
+public class ImageIconMessageBodyReader implements MessageBodyReader<ImageIcon>
+{
+
+	public boolean isReadable(Class<?> type, Type genericType,
+			Annotation[] annotations, MediaType mediaType)
+	{
+		return type.isAssignableFrom(ImageIcon.class);
+	}
+
+	public ImageIcon readFrom(Class<ImageIcon> type, Type genericType,
+			Annotation[] annotations, MediaType mediaType,
+			MultivaluedMap<String, String> httpHeaders, InputStream entityStream)
+			throws IOException, WebApplicationException
+	{
+		return new ImageIcon(ReadFromStream.readFromStream(1024 * 4,
+				entityStream));
+	}
+
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/resteasy/LoggingExecutionInterceptor.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/resteasy/LoggingExecutionInterceptor.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/resteasy/LoggingExecutionInterceptor.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,55 @@
+package org.jboss.resteasy.examples.resteasy;
+
+import org.apache.commons.lang.time.StopWatch;
+import org.jboss.resteasy.client.ClientResponse;
+import org.jboss.resteasy.spi.interception.ClientExecutionContext;
+import org.jboss.resteasy.spi.interception.ClientExecutionInterceptor;
+import org.jboss.resteasy.spi.interception.MessageBodyReaderContext;
+import org.jboss.resteasy.spi.interception.MessageBodyReaderInterceptor;
+import org.jboss.resteasy.util.HttpHeaderNames;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.ws.rs.WebApplicationException;
+import java.io.IOException;
+
+public class LoggingExecutionInterceptor implements ClientExecutionInterceptor,
+        MessageBodyReaderInterceptor
+{
+   private final static Logger logger = LoggerFactory
+           .getLogger(LoggingExecutionInterceptor.class);
+
+   @SuppressWarnings("unchecked")
+   public ClientResponse execute(ClientExecutionContext ctx) throws Exception
+   {
+      String uri = ctx.getRequest().getUri();
+      logger.info(String.format("Reading url %s", uri));
+      StopWatch stopWatch = new StopWatch();
+      stopWatch.start();
+      ClientResponse response = ctx.proceed();
+      stopWatch.stop();
+      String contentLength = (String) response.getMetadata().getFirst(
+              HttpHeaderNames.CONTENT_LENGTH);
+      logger.info(String.format("Read url %s in %d ms size %s.", uri,
+              stopWatch.getTime(), contentLength));
+      return response;
+   }
+
+   public Object read(MessageBodyReaderContext ctx) throws IOException,
+           WebApplicationException
+   {
+      StopWatch stopWatch = new StopWatch();
+      stopWatch.start();
+      try
+      {
+         return ctx.proceed();
+      }
+      finally
+      {
+         stopWatch.stop();
+         logger.info(String.format("Read mediaType %s as %s in %d ms.", ctx
+                 .getMediaType().toString(), ctx.getType().getName(),
+                 stopWatch.getTime()));
+      }
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/twitter/DateAdapter.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/twitter/DateAdapter.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/twitter/DateAdapter.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,26 @@
+package org.jboss.resteasy.examples.twitter;
+
+import java.util.Date;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+import org.jboss.resteasy.util.DateUtil;
+
+public class DateAdapter extends XmlAdapter<String, Date> {
+
+   @Override
+   public String marshal(Date date) throws Exception {
+       return DateUtil.formatDate(date, "EEE MMM dd HH:mm:ss Z yyyy");
+   }
+
+   @Override
+   public Date unmarshal(String string) throws Exception {
+       try {
+           return DateUtil.parseDate(string);
+       } catch (IllegalArgumentException e) {
+           System.err.println(String.format(
+                   "Could not parse date string '%s'", string));
+           return null;
+       }
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/twitter/TwitterClient.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/twitter/TwitterClient.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/api-clients/src/main/java/org/jboss/resteasy/examples/twitter/TwitterClient.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,96 @@
+package org.jboss.resteasy.examples.twitter;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.apache.commons.httpclient.Credentials;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.auth.AuthScope;
+import org.jboss.resteasy.client.ProxyFactory;
+import org.jboss.resteasy.plugins.providers.RegisterBuiltin;
+import org.jboss.resteasy.spi.ResteasyProviderFactory;
+
+public class TwitterClient
+{
+   static final String friendTimeline = "http://twitter.com/statuses/friends_timeline.xml";
+
+   public static void main(String[] args) throws Exception
+   {
+      RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
+      TwitterResource twitter = ProxyFactory.create(TwitterResource.class,
+            "http://twitter.com", createClient(args[0], args[1]));
+      System.out.println("===> first run");
+      printStatuses(twitter.getFriendsTimelines());
+      
+      twitter
+            .updateStatus("I programmatically tweeted with the RESTEasy Client at "
+                  + new Date());
+      
+      System.out.println("===> second run");
+      printStatuses(twitter.getFriendsTimelines());
+   }
+
+   public static interface TwitterResource
+   {
+      @Path("/statuses/friends_timeline.xml")
+      @GET
+      Statuses getFriendsTimelines();
+
+      @Path("/statuses/update.xml")
+      @POST
+      Status updateStatus(@FormParam("status") String status);
+   }
+
+   private static void printStatuses(Statuses statuses)
+   {
+      for (Status status : statuses.status)
+         System.out.println(status);
+   }
+
+   private static HttpClient createClient(String userId, String password)
+   {
+      Credentials credentials = new UsernamePasswordCredentials(userId,
+            password);
+      HttpClient httpClient = new HttpClient();
+      httpClient.getState().setCredentials(AuthScope.ANY, credentials);
+      httpClient.getParams().setAuthenticationPreemptive(true);
+      return httpClient;
+   }
+
+   @XmlRootElement
+   public static class Statuses
+   {
+      public List<Status> status;
+   }
+
+   @XmlRootElement
+   public static class Status
+   {
+      public String text;
+      public User user;
+
+      @XmlElement(name = "created_at")
+      @XmlJavaTypeAdapter(value = DateAdapter.class)
+      public Date created;
+
+      public String toString()
+      {
+         return String.format("== %s: %s (%s)", user.name, text, created);
+      }
+   }
+
+   public static class User
+   {
+      public String name;
+   }
+
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/README.txt
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/README.txt	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/README.txt	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,17 @@
+README for the RESTEasy async-job-service example project:
+=========================================================
+
+This project is a simple example demostrating the use of the Asynchronous Job Service.
+
+
+System Requirements:
+====================
+- Maven 2.0.9 or higher
+
+
+Building the Project:
+=====================
+
+In the project's root directory, run:
+  mvn clean install
+This builds a WAR and runs it with embedded Jetty.

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.jboss.resteasy.examples</groupId>
+    <artifactId>async-job-service</artifactId>
+    <version>1.1.GA_CP01</version>
+    <packaging>war</packaging>
+    <name/>
+    <description/>
+
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <url>http://download.java.net/maven/1</url>
+            <layout>legacy</layout>
+        </repository>
+        <repository>
+            <id>maven repo</id>
+            <name>maven repo</name>
+            <url>http://repo1.maven.org/maven2/</url>
+        </repository>
+        <!-- For resteasy -->
+        <repository>
+            <id>jboss</id>
+            <name>jboss repo</name>
+            <url>http://repository.jboss.org/maven2</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.resteasy</groupId>
+            <artifactId>resteasy-jaxrs</artifactId>
+            <version>${project.version}</version>
+            <!-- filter out unwanted jars -->
+            <exclusions>
+                <exclusion>
+                    <groupId>tjws</groupId>
+                    <artifactId>webserver</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>async-job</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.mortbay.jetty</groupId>
+                <artifactId>maven-jetty-plugin</artifactId>
+                <version>6.1.15</version>
+                <configuration>
+                    <!-- By default the artifactId is taken, override it with something simple -->
+                    <contextPath>/</contextPath>
+                    <scanIntervalSeconds>2</scanIntervalSeconds>
+                    <stopKey>foo</stopKey>
+                    <stopPort>9999</stopPort>
+                    <connectors>
+                        <connector
+                                implementation="org.mortbay.jetty.nio.SelectChannelConnector">
+                            <port>9095</port>
+                            <maxIdleTime>60000</maxIdleTime>
+                        </connector>
+                    </connectors>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>start-jetty</id>
+                        <phase>pre-integration-test</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <scanIntervalSeconds>0</scanIntervalSeconds>
+                            <daemon>true</daemon>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>stop-jetty</id>
+                        <phase>post-integration-test</phase>
+                        <goals>
+                            <goal>stop</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>surefire-it</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                        <configuration>
+                            <skip>false</skip>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/java/org/jboss/resteasy/examples/asyncjob/MyResource.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/java/org/jboss/resteasy/examples/asyncjob/MyResource.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/java/org/jboss/resteasy/examples/asyncjob/MyResource.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,45 @@
+package org.jboss.resteasy.examples.asyncjob;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at Path("/resource")
+public class MyResource
+{
+   private static int count = 0;
+
+
+   @POST
+   @Produces("text/plain")
+   @Consumes("text/plain")
+   public String post(String content) throws Exception
+   {
+      Thread.sleep(1000);
+      return content;
+   }
+
+   @GET
+   @Produces("text/plain")
+   public String get()
+   {
+      return Integer.toString(count);
+   }
+
+   @PUT
+   @Consumes("text/plain")
+   public void put(String content) throws Exception
+   {
+      System.out.println("IN PUT!!!!");
+      Thread.sleep(1000);
+      System.out.println("******* countdown complete ****");
+      count++;
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/webapp/WEB-INF/web.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/webapp/WEB-INF/web.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/main/webapp/WEB-INF/web.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+        "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+    <context-param>
+        <param-name>resteasy.resources</param-name>
+        <param-value>org.jboss.resteasy.examples.asyncjob.MyResource</param-value>
+    </context-param>
+
+
+    <context-param>
+        <param-name>resteasy.async.job.service.enabled</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>resteasy.async.job.service.max.job.results</param-name>
+        <param-value>100</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>resteasy.async.job.service.max.wait</param-name>
+        <param-value>300000</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>resteasy.async.job.service.thread.pool.size</param-name>
+        <param-value>100</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>resteasy.async.job.service.base.path</param-name>
+        <param-value>/asyncjobs</param-value>
+    </context-param>
+
+    <listener>
+        <listener-class>
+            org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
+        </listener-class>
+    </listener>
+
+    <servlet>
+        <servlet-name>Resteasy</servlet-name>
+        <servlet-class>
+            org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
+        </servlet-class>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Resteasy</servlet-name>
+        <url-pattern>/*</url-pattern>
+    </servlet-mapping>
+
+</web-app>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/test/java/org/jboss/resteasy/examples/asyncjob/AsyncJobTest.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/test/java/org/jboss/resteasy/examples/asyncjob/AsyncJobTest.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/async-job-service/src/test/java/org/jboss/resteasy/examples/asyncjob/AsyncJobTest.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,61 @@
+package org.jboss.resteasy.examples.asyncjob;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.PutMethod;
+import org.apache.commons.httpclient.methods.StringRequestEntity;
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+public class AsyncJobTest
+{
+   @Test
+   public void testOneway() throws Exception
+   {
+      HttpClient client = new HttpClient();
+      {
+         PutMethod method = new PutMethod("http://localhost:9095/resource?oneway=true");
+         method.setRequestEntity(new StringRequestEntity("content", "text/plain", null));
+         int status = client.executeMethod(method);
+         Assert.assertEquals(202, status);
+         Thread.sleep(1500);
+         GetMethod get = new GetMethod("http://localhost:9095/resource");
+         status = client.executeMethod(get);
+         Assert.assertEquals(Integer.toString(1), get.getResponseBodyAsString());
+
+         method.releaseConnection();
+      }
+   }
+
+   @Test
+   public void testAsynch() throws Exception
+   {
+      HttpClient client = new HttpClient();
+      {
+         PostMethod method = new PostMethod("http://localhost:9095/resource?asynch=true");
+         method.setRequestEntity(new StringRequestEntity("content", "text/plain", null));
+         int status = client.executeMethod(method);
+         Assert.assertEquals(Response.Status.ACCEPTED.getStatusCode(), status);
+         String jobUrl1 = method.getResponseHeader(HttpHeaders.LOCATION).getValue();
+
+         GetMethod get = new GetMethod(jobUrl1);
+         status = client.executeMethod(get);
+         Assert.assertEquals(Response.Status.ACCEPTED.getStatusCode(), status);
+
+         Thread.sleep(1500);
+         status = client.executeMethod(get);
+         Assert.assertEquals(Response.Status.OK.getStatusCode(), status);
+         Assert.assertEquals(get.getResponseBodyAsString(), "content");
+
+         method.releaseConnection();
+      }
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/README.txt
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/README.txt	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/README.txt	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,26 @@
+README for the RESTEasy ejb-integration example project:
+=========================================================
+
+This project is an example of using RESTEasy with:
+- Enterprise JavaBeans (EJBs)
+- Enterprise Archives (EARs)
+
+
+System Requirements:
+====================
+- Maven 2.0.9 or higher
+- JBoss 4.2.x or higher
+  You will need to modify the POM files to work with another
+  Java EE 5-compatible application server.
+
+
+Building the Project:
+=====================
+
+- Edit pom.xml (in the root directory).
+  Change the <jbossHome> property to match the location of your JBoss installation.
+
+- In the project's root directory, run:
+    mvn clean install
+  This builds an EJB, a WAR (for RESTEasy), and an EAR. The EAR module will deploy
+  the EAR file into JBoss and run the test suite provided in the EAR module.

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,129 @@
+<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">
+   <parent>
+      <groupId>org.jboss.resteasy</groupId>
+      <artifactId>ejb-integration-example</artifactId>
+      <version>1.1.GA_CP01</version>
+   </parent>
+   <modelVersion>4.0.0</modelVersion>
+   <artifactId>ejb-integration-ear</artifactId>
+   <packaging>jar</packaging>
+   <name>Basic Integration Test</name>
+   <url>http://maven.apache.org</url>
+   <dependencies>
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <version>4.1</version>
+         <scope>test</scope>
+      </dependency>
+      <dependency>
+         <groupId>commons-httpclient</groupId>
+         <artifactId>commons-httpclient</artifactId>
+         <version>3.1</version>
+         <scope>test</scope>
+      </dependency>
+      <dependency>
+         <groupId>javax.ejb</groupId>
+         <artifactId>ejb-api</artifactId>
+         <version>3.0</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.resteasy</groupId>
+         <artifactId>ejb-integration</artifactId>
+         <version>${project.version}</version>
+         <type>ejb</type>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.resteasy</groupId>
+         <artifactId>ejb-integration-war</artifactId>
+         <version>${project.version}</version>
+         <type>war</type>
+      </dependency>
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <version>4.1</version>
+         <scope>test</scope>
+      </dependency>
+   </dependencies>
+   <build>
+      <plugins>
+         <plugin>
+            <artifactId>maven-ear-plugin</artifactId>
+            <configuration>
+               <defaultJavaBundleDir>lib/</defaultJavaBundleDir>
+               <finalName>ejb-integration</finalName>
+            </configuration>
+            <executions>
+               <execution>
+                  <id>yomama</id>
+                  <phase>package</phase>
+                  <goals>
+                     <goal>generate-application-xml</goal>
+                     <goal>ear</goal>
+                  </goals>
+               </execution>
+            </executions>
+         </plugin>
+         <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>jboss-maven-plugin</artifactId>
+            <version>1.3.1</version>    
+            <configuration>
+               <jbossHome>${jbossHome}</jbossHome>
+            </configuration>
+            <executions>
+               <execution>
+                  <id>jboss-deploy</id>
+                  <phase>pre-integration-test</phase>
+                  <goals>
+                     <goal>deploy</goal>
+                  </goals>
+                  <configuration>
+                     <fileName>${basedir}/target/ejb-integration.ear</fileName>
+                  </configuration>
+               </execution>
+               <execution>
+                  <id>jboss-undeploy</id>
+                  <phase>post-integration-test</phase>
+                  <goals>
+                     <goal>undeploy</goal>
+                  </goals>
+                  <configuration>
+                     <fileName>${basedir}/target/ejb-integration.ear</fileName>
+                  </configuration>
+               </execution>
+            </executions>
+         </plugin>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+               <skip>true</skip>
+            </configuration>
+            <executions>
+               <execution>
+                  <id>surefire-it</id>
+                  <phase>integration-test</phase>
+                  <goals>
+                     <goal>test</goal>
+                  </goals>
+                  <configuration>
+                     <skip>false</skip>
+                  </configuration>
+               </execution>
+            </executions>
+         </plugin>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <configuration>
+               <source>1.5</source>
+               <target>1.5</target>
+            </configuration>
+         </plugin>
+      </plugins>
+   </build>
+</project>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/java/org/jboss/resteasy/test/jboss/SmokeTest.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/java/org/jboss/resteasy/test/jboss/SmokeTest.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/java/org/jboss/resteasy/test/jboss/SmokeTest.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,101 @@
+package org.jboss.resteasy.test.jboss;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.NameValuePair;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.PutMethod;
+import org.apache.commons.httpclient.methods.StringRequestEntity;
+import org.junit.Assert;
+import org.junit.Test;
+import org.jboss.resteasy.util.HttpResponseCodes;
+
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+public class SmokeTest
+{
+   @Test
+   public void testNoDefaultsResource() throws Exception
+   {
+      HttpClient client = new HttpClient();
+
+      {
+         GetMethod method = new GetMethod("http://localhost:8080/ejb-integration-war/basic");
+         int status = client.executeMethod(method);
+         Assert.assertEquals(HttpResponseCodes.SC_OK, status);
+         Assert.assertEquals("basic", method.getResponseBodyAsString());
+         method.releaseConnection();
+      }
+      {
+         PutMethod method = new PutMethod("http://localhost:8080/ejb-integration-war/basic");
+         method.setRequestEntity(new StringRequestEntity("basic", "text/plain", null));
+         int status = client.executeMethod(method);
+         Assert.assertEquals(204, status);
+         method.releaseConnection();
+      }
+      {
+         GetMethod method = new GetMethod("http://localhost:8080/ejb-integration-war/queryParam");
+         NameValuePair[] params = {new NameValuePair("param", "hello world")};
+         method.setQueryString(params);
+         int status = client.executeMethod(method);
+         Assert.assertEquals(HttpResponseCodes.SC_OK, status);
+         Assert.assertEquals("hello world", method.getResponseBodyAsString());
+         method.releaseConnection();
+      }
+      {
+         GetMethod method = new GetMethod("http://localhost:8080/ejb-integration-war/uriParam/1234");
+         int status = client.executeMethod(method);
+         Assert.assertEquals(HttpResponseCodes.SC_OK, status);
+         Assert.assertEquals("1234", method.getResponseBodyAsString());
+         method.releaseConnection();
+      }
+   }
+
+   @Test
+   public void testLocatingResource() throws Exception
+   {
+      HttpClient client = new HttpClient();
+
+      {
+         GetMethod method = new GetMethod("http://localhost:8080/ejb-integration-war/locating/basic");
+         int status = client.executeMethod(method);
+         Assert.assertEquals(HttpResponseCodes.SC_OK, status);
+         Assert.assertEquals("basic", method.getResponseBodyAsString());
+         method.releaseConnection();
+      }
+      {
+         PutMethod method = new PutMethod("http://localhost:8080/ejb-integration-war/locating/basic");
+         method.setRequestEntity(new StringRequestEntity("basic", "text/plain", null));
+         int status = client.executeMethod(method);
+         Assert.assertEquals(204, status);
+         method.releaseConnection();
+      }
+      {
+         GetMethod method = new GetMethod("http://localhost:8080/ejb-integration-war/locating/queryParam");
+         NameValuePair[] params = {new NameValuePair("param", "hello world")};
+         method.setQueryString(params);
+         int status = client.executeMethod(method);
+         Assert.assertEquals(HttpResponseCodes.SC_OK, status);
+         Assert.assertEquals("hello world", method.getResponseBodyAsString());
+         method.releaseConnection();
+      }
+      {
+         GetMethod method = new GetMethod("http://localhost:8080/ejb-integration-war/locating/uriParam/1234");
+         int status = client.executeMethod(method);
+         Assert.assertEquals(HttpResponseCodes.SC_OK, status);
+         Assert.assertEquals("1234", method.getResponseBodyAsString());
+         method.releaseConnection();
+      }
+   }
+
+   /*
+   public static Test suite() throws Exception
+   {
+      System.out.println("***********");
+      System.out.println(System.getProperty("jbosstest.deploy.dir"));
+      return getDeploySetup(SmokeTest.class, "ejb-integration-war.war");
+   }
+   */
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/resources/jndi.properties
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/resources/jndi.properties	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/resources/jndi.properties	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,3 @@
+java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
+java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
+java.naming.provider.url=jnp://localhost:1099
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/resources/log4j.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/resources/log4j.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ear/src/test/resources/log4j.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- ===================================================================== -->
+<!--                                                                       -->
+<!--  Log4j Configuration                                                  -->
+<!--                                                                       -->
+<!-- ===================================================================== -->
+
+<!-- $Id: log4j.xml 64736 2007-08-21 15:49:48Z anil.saldhana at jboss.com $ -->
+
+<!--
+   | For more configuration infromation and examples see the Jakarta Log4j
+   | owebsite: http://jakarta.apache.org/log4j
+ -->
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
+
+   <!-- ================================= -->
+   <!-- Preserve messages in a local file -->
+   <!-- ================================= -->
+
+   <!-- A time/date based rolling appender -->
+   <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
+      <param name="File" value="${build.testlog}/test.log"/>
+      <param name="Append" value="true"/>
+
+      <!-- Rollover at midnight each day -->
+      <param name="DatePattern" value="'.'yyyy-MM-dd"/>
+
+      <!-- Rollover at the top of each hour
+      <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
+      -->
+
+      <layout class="org.apache.log4j.PatternLayout">
+         <!-- The default pattern: Date Priority [Category] Message\n -->
+         <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
+
+         <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
+        <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
+         -->
+      </layout>
+   </appender>
+
+   <!-- ============================== -->
+   <!-- Append messages to the console -->
+   <!-- ============================== -->
+
+   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+      <param name="Threshold" value="DEBUG"/>
+      <param name="Target" value="System.out"/>
+
+      <layout class="org.apache.log4j.PatternLayout">
+         <!-- The default pattern: Date Priority [Category] Message\n -->
+         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
+      </layout>
+   </appender>
+
+
+   <!-- ======================= -->
+   <!-- Setup the Root category -->
+   <!-- ======================= -->
+
+   <root>
+      <appender-ref ref="CONSOLE"/>
+   </root>
+
+</log4j:configuration>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,38 @@
+<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">
+   <parent>
+      <groupId>org.jboss.resteasy</groupId>
+      <artifactId>ejb-integration-example</artifactId>
+      <version>1.1.GA_CP01</version>
+   </parent>
+   <modelVersion>4.0.0</modelVersion>
+   <artifactId>ejb-integration</artifactId>
+   <packaging>jar</packaging>
+   <name>EJB test - EJB</name>
+   <url>http://maven.apache.org</url>
+   <dependencies>
+      <dependency>
+         <groupId>org.jboss.resteasy</groupId>
+         <artifactId>resteasy-jaxrs</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>javax.ejb</groupId>
+         <artifactId>ejb-api</artifactId>
+         <version>3.0</version>
+         <scope>provided</scope>
+      </dependency>
+   </dependencies>
+   <build>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <configuration>
+               <source>1.5</source>
+               <target>1.5</target>
+            </configuration>
+         </plugin>
+      </plugins>
+   </build>
+</project>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/LocatingResource.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/LocatingResource.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/LocatingResource.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,14 @@
+package org.resteasy.test.ejb;
+
+import javax.ws.rs.Path;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at Path("/")
+public interface LocatingResource
+{
+   @Path("locating")
+   SimpleResource getLocating();
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/LocatingResourceBean.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/LocatingResourceBean.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/LocatingResourceBean.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,21 @@
+package org.resteasy.test.ejb;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.ws.rs.Path;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at Stateless
+public class LocatingResourceBean implements LocatingResource
+{
+   @EJB
+   SimpleResource simple;
+
+   public SimpleResource getLocating()
+   {
+      return simple;
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/SimpleResource.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/SimpleResource.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/SimpleResource.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,43 @@
+package org.resteasy.test.ejb;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.MatrixParam;
+import javax.ws.rs.PathParam;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at Path("/")
+public interface SimpleResource
+{
+   @GET
+   @Path("basic")
+   @Produces("text/plain")
+   String getBasic();
+
+   @PUT
+   @Path("basic")
+   @Consumes("text/plain")
+   void putBasic(String body);
+
+   @GET
+   @Path("queryParam")
+   @Produces("text/plain")
+   String getQueryParam(@QueryParam("param")String param);
+
+   @GET
+   @Path("matrixParam")
+   @Produces("text/plain")
+   String getMatrixParam(@MatrixParam("param")String param);
+
+   @GET
+   @Path("uriParam/{param}")
+   @Produces("text/plain")
+   int getUriParam(@PathParam("param")int param);
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/SimpleResourceBean.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/SimpleResourceBean.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/ejb/src/main/java/org/resteasy/test/ejb/SimpleResourceBean.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,38 @@
+package org.resteasy.test.ejb;
+
+import javax.ejb.Stateless;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at Stateless
+public class SimpleResourceBean implements SimpleResource
+{
+   public String getBasic()
+   {
+      System.out.println("getBasic()");
+      return "basic";
+   }
+
+   public void putBasic(String body)
+   {
+      System.out.println(body);
+   }
+
+   public String getQueryParam(String param)
+   {
+      return param;
+   }
+
+   public String getMatrixParam(String param)
+   {
+      return param;
+   }
+
+   public int getUriParam(int param)
+   {
+      return param;
+   }
+
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,41 @@
+<project>
+    <name>Resteasy JAX-RS EJB Test</name>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.jboss.resteasy</groupId>
+    <version>1.1.GA_CP01</version>
+    <artifactId>ejb-integration-example</artifactId>
+    <packaging>pom</packaging>
+    <properties>
+        <jbossHome>/Users/billburke/jboss/jboss-4.2.2.GA</jbossHome>
+    </properties>
+
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <url>http://download.java.net/maven/1</url>
+            <layout>legacy</layout>
+        </repository>
+        <repository>
+            <id>maven repo</id>
+            <name>maven repo</name>
+            <url>http://repo1.maven.org/maven2/</url>
+        </repository>
+        <!-- For resteasy -->
+        <repository>
+            <id>jboss</id>
+            <name>jboss repo</name>
+            <url>http://repository.jboss.org/maven2</url>
+        </repository>
+        <repository>
+            <id>scannotation</id>
+            <url>http://scannotation.sf.net/maven2</url>
+        </repository>
+    </repositories>
+
+    <modules>
+        <module>ejb</module>
+        <module>war</module>
+        <module>ear</module>
+    </modules>
+</project>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/war/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/war/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/war/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,25 @@
+<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">
+    <parent>
+        <groupId>org.jboss.resteasy</groupId>
+        <artifactId>ejb-integration-example</artifactId>
+        <version>1.1.GA_CP01</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>ejb-integration-war</artifactId>
+    <packaging>war</packaging>
+    <name>Basic Integration Test</name>
+    <url>http://maven.apache.org</url>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/war/src/main/webapp/WEB-INF/web.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/war/src/main/webapp/WEB-INF/web.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/ejb-integration/war/src/main/webapp/WEB-INF/web.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,35 @@
+<!DOCTYPE web-app PUBLIC
+        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+        "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+   <display-name>Archetype Created Web Application</display-name>
+   <context-param>
+      <param-name>resteasy.jndi.resources</param-name>
+      <param-value>ejb-integration/SimpleResourceBean/local,ejb-integration/LocatingResourceBean/local
+      </param-value>
+   </context-param>
+
+   <!-- set this if you map the Resteasy servlet to something other than /*
+   <context-param>
+      <param-name>resteasy.servlet.mapping.prefix</param-name>
+      <param-value>/resteasy</param-value>
+   </context-param>
+   -->
+
+   <listener>
+      <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
+   </listener>
+
+   <servlet>
+      <servlet-name>Resteasy</servlet-name>
+      <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
+   </servlet>
+
+   <servlet-mapping>
+      <servlet-name>Resteasy</servlet-name>
+      <url-pattern>/*</url-pattern>
+   </servlet-mapping>
+
+
+</web-app>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/README.txt
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/README.txt	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/README.txt	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,14 @@
+
+This project is a simple example showing the guice integration. 
+
+System Requirements:
+====================
+- Maven 2.0.9 or higher
+
+Building the project:
+====================
+1. In root directoy
+
+mvn clean install
+
+This will build a WAR and run it with embedded Jetty
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.jboss.resteasy.examples</groupId>
+    <artifactId>guice-hello</artifactId>
+    <version>1.1.GA_CP01</version>
+    <packaging>war</packaging>
+    <name>guice hello example</name>
+    <description>guice hello world example</description>
+
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <url>http://download.java.net/maven/1</url>
+            <layout>legacy</layout>
+        </repository>
+        <repository>
+            <id>maven repo</id>
+            <name>maven repo</name>
+            <url>http://repo1.maven.org/maven2/</url>
+        </repository>
+        <!-- For resteasy -->
+        <repository>
+            <id>jboss</id>
+            <name>jboss repo</name>
+            <url>http://repository.jboss.org/maven2</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.resteasy</groupId>
+            <artifactId>resteasy-guice</artifactId>
+            <version>${project.version}</version>
+            <!-- filter out unwanted jars -->
+            <exclusions>
+                <exclusion>
+                    <groupId>tjws</groupId>
+                    <artifactId>webserver</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.mortbay.jetty</groupId>
+                <artifactId>maven-jetty-plugin</artifactId>
+                <version>6.1.15</version>
+                <configuration>
+                    <!-- By default the artifactId is taken, override it with something simple -->
+                    <contextPath>/</contextPath>
+                    <scanIntervalSeconds>2</scanIntervalSeconds>
+                    <stopKey>foo</stopKey>
+                    <stopPort>9999</stopPort>
+                    <connectors>
+                        <connector
+                                implementation="org.mortbay.jetty.nio.SelectChannelConnector">
+                            <port>9095</port>
+                            <maxIdleTime>60000</maxIdleTime>
+                        </connector>
+                    </connectors>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>start-jetty</id>
+                        <phase>pre-integration-test</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <scanIntervalSeconds>0</scanIntervalSeconds>
+                            <daemon>true</daemon>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>stop-jetty</id>
+                        <phase>post-integration-test</phase>
+                        <goals>
+                            <goal>stop</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>surefire-it</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                        <configuration>
+                            <skip>false</skip>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/DefaultGreeter.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/DefaultGreeter.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/DefaultGreeter.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,9 @@
+package org.jboss.resteasy.examples.guice.hello;
+
+public class DefaultGreeter implements Greeter
+{
+   public String greet(final String name)
+   {
+      return "Hello " + name;
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/Greeter.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/Greeter.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/Greeter.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,6 @@
+package org.jboss.resteasy.examples.guice.hello;
+
+public interface Greeter
+{
+   public String greet(final String name);
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/HelloModule.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/HelloModule.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/HelloModule.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,13 @@
+package org.jboss.resteasy.examples.guice.hello;
+
+import com.google.inject.Module;
+import com.google.inject.Binder;
+
+public class HelloModule implements Module
+{
+   public void configure(final Binder binder)
+   {
+      binder.bind(HelloResource.class);
+      binder.bind(Greeter.class).to(DefaultGreeter.class);
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/HelloResource.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/HelloResource.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/java/org/jboss/resteasy/examples/guice/hello/HelloResource.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,25 @@
+package org.jboss.resteasy.examples.guice.hello;
+
+import com.google.inject.Inject;
+
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.GET;
+
+ at Path("hello")
+public class HelloResource
+{
+   private final Greeter greeter;
+
+   @Inject
+   public HelloResource(final Greeter greeter)
+   {
+      this.greeter = greeter;
+   }
+
+   @GET
+   @Path("{name}")
+   public String hello(@PathParam("name") final String name) {
+      return greeter.greet(name);
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/webapp/WEB-INF/web.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/webapp/WEB-INF/web.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/main/webapp/WEB-INF/web.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+        "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+    <display-name>Guice Hello</display-name>
+
+    <context-param>
+        <param-name>resteasy.guice.modules</param-name>
+        <param-value>org.jboss.resteasy.examples.guice.hello.HelloModule</param-value>
+    </context-param>
+
+    <listener>
+        <listener-class>
+            org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener
+        </listener-class>
+    </listener>
+
+    <servlet>
+        <servlet-name>Resteasy</servlet-name>
+        <servlet-class>
+            org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
+        </servlet-class>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Resteasy</servlet-name>
+        <url-pattern>/*</url-pattern>
+    </servlet-mapping>
+
+</web-app>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/hello/DefaultGreeterTest.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/hello/DefaultGreeterTest.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/hello/DefaultGreeterTest.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,15 @@
+package org.jboss.resteasy.examples.guice.hello;
+
+import org.junit.Test;
+import org.junit.Assert;
+
+public class DefaultGreeterTest
+{
+   @Test
+   public void testGreet()
+   {
+      final Greeter greeter = new DefaultGreeter();
+      Assert.assertEquals("Hello foo", greeter.greet("foo"));
+      Assert.assertEquals("Hello bar", greeter.greet("bar"));
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/hello/HelloResourceIntegrationTest.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/hello/HelloResourceIntegrationTest.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/hello/HelloResourceIntegrationTest.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,24 @@
+package org.jboss.resteasy.examples.guice.hello;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.URL;
+
+public class HelloResourceIntegrationTest
+{
+   @Test
+   public void test() throws Exception
+   {
+      final URL url = new URL("http://localhost:9095/hello/world");
+      final BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
+      try {
+         Assert.assertEquals("Hello world", reader.readLine());
+         Assert.assertNull(reader.readLine());
+      } finally {
+         reader.close();
+      }
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/hello/HelloResourceTest.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/hello/HelloResourceTest.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/guice-hello/src/test/java/org/jboss/resteasy/examples/guice/hello/HelloResourceTest.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,19 @@
+package org.jboss.resteasy.examples.guice.hello;
+
+import org.junit.Test;
+import org.junit.Assert;
+
+public class HelloResourceTest
+{
+   @Test
+   public void testHello() {
+      final HelloResource helloResource = new HelloResource(new Greeter()
+      {
+         public String greet(final String name)
+         {
+            return "greeting";
+         }
+      });
+      Assert.assertEquals("greeting", helloResource.hello("foo"));
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/README.txt
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/README.txt	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/README.txt	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,46 @@
+README for the RESTEasy jaxb-json example project:
+=========================================================
+
+This project is an example of:
+- using JSON with RESTEasy
+- the JAXB/JSON Provider
+- using javax.ws.rs.core.Application
+- using the <context-param> resteasy.servlet.mapping.prefix
+- Jetty (embedded)
+
+
+System Requirements:
+====================
+- Maven 2.0.9 or higher
+
+
+Building the Project:
+=====================
+
+In the root directory, run:
+  mvn clean install
+
+
+Running the Project and Testing it Manually:
+============================================
+
+- mvn jetty6:run-exploded
+
+- Open a browser at the following URLs to test each listed object/function:
+
+  The HTML form that pulls JSON from a JAX-RS service.
+  The data includes JAXB-annotated classes marshalled to JSON using the
+  Jettison mapped format:
+    http://localhost:9095/mapped.html
+
+  The HTML form that pulls JSON from a JAX-RS service.
+  The data is JAXB annotated classes marshalled to JSON
+  using the Jettison Badger format:
+    http://localhost:9095/badger.html
+
+  To view the Mapped JSON format:
+    http://localhost:9095/resteasy/library/books/mapped.html
+
+  To view the Badger JSON format:
+    http://localhost:9095/resteasy/library/books/badger.html
+

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.jboss.resteasy.examples</groupId>
+    <artifactId>jaxb-json</artifactId>
+    <version>1.1.GA_CP01</version>
+    <packaging>war</packaging>
+    <name/>
+    <description/>
+
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <url>http://download.java.net/maven/1</url>
+            <layout>legacy</layout>
+        </repository>
+        <repository>
+            <id>maven repo</id>
+            <name>maven repo</name>
+            <url>http://repo1.maven.org/maven2/</url>
+        </repository>
+        <!-- For resteasy -->
+        <repository>
+            <id>jboss</id>
+            <name>jboss repo</name>
+            <url>http://repository.jboss.org/maven2</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.resteasy</groupId>
+            <artifactId>resteasy-jaxrs</artifactId>
+            <version>${project.version}</version>
+            <!-- filter out unwanted jars -->
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-httpclient</groupId>
+                    <artifactId>commons-httpclient</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>tjws</groupId>
+                    <artifactId>webserver</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>servlet-api</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.resteasy</groupId>
+            <artifactId>resteasy-jaxb-provider</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>jaxb-json</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.mortbay.jetty</groupId>
+                <artifactId>maven-jetty-plugin</artifactId>
+                <version>6.1.15</version>
+                <configuration>
+                    <!-- By default the artifactId is taken, override it with something simple -->
+                    <contextPath>/</contextPath>
+                    <scanIntervalSeconds>2</scanIntervalSeconds>
+                    <connectors>
+                        <connector
+                                implementation="org.mortbay.jetty.nio.SelectChannelConnector">
+                            <port>9095</port>
+                            <maxIdleTime>60000</maxIdleTime>
+                        </connector>
+                    </connectors>
+                    <systemProperties>
+                        <systemProperty>
+                            <name>log4j.configuration</name>
+                            <value>
+                                file:./src/test/resources/log4j.properties
+                            </value>
+                        </systemProperty>
+                    </systemProperties>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/data/Book.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/data/Book.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/data/Book.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,61 @@
+package org.jboss.resteasy.examples.data;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlAttribute;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at XmlRootElement(name = "book")
+public class Book
+{
+   private String author;
+   private String ISBN;
+   private String title;
+
+   public Book()
+   {
+   }
+
+   public Book(String author, String ISBN, String title)
+   {
+      this.author = author;
+      this.ISBN = ISBN;
+      this.title = title;
+   }
+
+   @XmlElement
+   public String getAuthor()
+   {
+      return author;
+   }
+
+   public void setAuthor(String author)
+   {
+      this.author = author;
+   }
+
+   @XmlElement
+   public String getISBN()
+   {
+      return ISBN;
+   }
+
+   public void setISBN(String ISBN)
+   {
+      this.ISBN = ISBN;
+   }
+
+   @XmlAttribute
+   public String getTitle()
+   {
+      return title;
+   }
+
+   public void setTitle(String title)
+   {
+      this.title = title;
+   }
+}
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/data/BookListing.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/data/BookListing.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/data/BookListing.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,30 @@
+package org.jboss.resteasy.examples.data;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlElement;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at XmlRootElement(name="listing")
+public class BookListing
+{
+   private List<Book> books;
+
+   public BookListing()
+   {
+   }
+
+   public BookListing(List<Book> books)
+   {
+      this.books = books;
+   }
+
+   @XmlElement(name="books")
+   public List<Book> getBooks()
+   {
+      return books;
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/service/Library.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/service/Library.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/service/Library.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,88 @@
+package org.jboss.resteasy.examples.service;
+
+import org.jboss.resteasy.examples.data.Book;
+import org.jboss.resteasy.examples.data.BookListing;
+import org.jboss.resteasy.annotations.providers.jaxb.json.BadgerFish;
+import org.jboss.resteasy.plugins.providers.jaxb.json.BadgerContext;
+import org.jboss.resteasy.plugins.providers.jaxb.json.JettisonMappedContext;
+
+import javax.ws.rs.Path;
+import javax.ws.rs.GET;
+import javax.ws.rs.Produces;
+import javax.ws.rs.PathParam;
+import javax.xml.bind.Marshaller;
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.io.StringWriter;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+ at Path("library")
+public class Library
+{
+   private HashMap<String, Book> books = new HashMap<String, Book>();
+
+   public Library()
+   {
+      books.put("596529260", new Book("Leonard Richardson", "596529260", "RESTful Web Services"));
+      books.put("333333333", new Book("Bill Burke", "596529260", "EJB 3.0"));
+   }
+
+   @GET
+   @Path("books/badger")
+   @Produces("application/json")
+   @BadgerFish
+   public BookListing getBooksBadger()
+   {
+      return getListing();
+   }
+
+   @GET
+   @Path("books/mapped")
+   @Produces("application/json")
+   //@Mapped // mapped is the default format
+   public BookListing getBooksMapped()
+   {
+      return getListing();
+   }
+
+   @GET
+   @Path("books/badger.html")
+   @Produces("text/html")
+   public String getBooksBadgerText() throws Exception
+   {
+      BookListing listing = getListing();
+      BadgerContext context = new BadgerContext(BookListing.class);
+      StringWriter writer = new StringWriter();
+      Marshaller marshaller = context.createMarshaller();
+      marshaller.marshal(listing, writer);
+      return writer.toString();
+   }
+
+   @GET
+   @Path("books/mapped.html")
+   @Produces("text/html")
+   public String getBooksMappedText() throws Exception
+   {
+      BookListing listing = getListing();
+      JettisonMappedContext context = new JettisonMappedContext(BookListing.class);
+      StringWriter writer = new StringWriter();
+      Marshaller marshaller = context.createMarshaller();
+      marshaller.marshal(listing, writer);
+      return writer.toString();
+   }
+
+
+
+
+   private BookListing getListing()
+   {
+      ArrayList<Book> list = new ArrayList<Book>();
+      list.addAll(books.values());
+      return new BookListing(list);
+   }
+
+
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/service/LibraryApplication.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/service/LibraryApplication.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/java/org/jboss/resteasy/examples/service/LibraryApplication.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,32 @@
+package org.jboss.resteasy.examples.service;
+
+import javax.ws.rs.core.Application;
+import java.util.Set;
+import java.util.HashSet;
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+public class LibraryApplication extends Application
+{
+   HashSet<Object> singletons = new HashSet<Object>();
+
+   public LibraryApplication()
+   {
+      singletons.add(new Library());
+   }
+
+   @Override
+   public Set<Class<?>> getClasses()
+   {
+      HashSet<Class<?>> set = new HashSet<Class<?>>();
+      return set;
+   }
+
+   @Override
+   public Set<Object> getSingletons()
+   {
+      return singletons;  
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/WEB-INF/web.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/WEB-INF/web.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/WEB-INF/web.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+        "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+   <display-name>Archetype Created Web Application</display-name>
+
+   <context-param>
+      <param-name>javax.ws.rs.core.Application</param-name>
+      <param-value>org.jboss.resteasy.examples.service.LibraryApplication</param-value>
+   </context-param>
+
+   <context-param>
+      <param-name>resteasy.servlet.mapping.prefix</param-name>
+      <param-value>/resteasy</param-value>
+   </context-param>
+
+   <listener>
+      <listener-class>
+         org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
+      </listener-class>
+   </listener>
+
+   <servlet>
+      <servlet-name>Resteasy</servlet-name>
+      <servlet-class>
+         org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
+      </servlet-class>
+   </servlet>
+
+   <servlet-mapping>
+      <servlet-name>Resteasy</servlet-name>
+      <url-pattern>/resteasy/*</url-pattern>
+   </servlet-mapping>
+
+</web-app>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/badger.html
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/badger.html	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/badger.html	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+        "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <script type="text/javascript">
+
+      function createXHR()
+      {
+         var request = false;
+         try
+         {
+            request = new ActiveXObject('Msxml2.XMLHTTP');
+         }
+         catch (err2)
+         {
+            try
+            {
+               request = new ActiveXObject('Microsoft.XMLHTTP');
+            }
+            catch (err3)
+            {
+               try
+               {
+                  request = new XMLHttpRequest();
+               }
+               catch (err1)
+               {
+                  request = false;
+               }
+            }
+         }
+         return request;
+      }
+
+      function loadJSON(fname)
+      {
+         var xhr = createXHR();
+         xhr.open("GET", fname, true);
+         xhr.onreadystatechange = function()
+         {
+            if (xhr.readyState == 4)
+            {
+               if (xhr.status != 404)
+               {
+                  var data = eval("(" + xhr.responseText + ")");
+                  document.getElementById("zone").innerHTML = "<h2>Books:</h2>";
+                  for (i = 0; i < 3; i++)
+                  {
+                     document.getElementById("zone").innerHTML += data.listing.books[i]. at title + ', by <i>' + data.listing.books[i].author.$ + "</i><br/>";
+                  }
+               }
+               else
+               {
+                  document.getElementById("zone").innerHTML = fname + " not found";
+               }
+            }
+         }
+         xhr.send(null);
+      }
+
+
+   </script>
+   <title>Ajax Get JSON Demo</title></head>
+
+
+<body bgcolor="#FFFFFF">
+
+<p><font size="+3">Ajax JSON/JAXB Demo: Badger format</font></p>
+<hr>
+<FORM name="ajax" method="POST" action="">
+
+   <p>
+      <INPUT type="BUTTON" value=" Click to load the JSON file " ONCLICK="loadJSON('resteasy/library/books/badger')">
+   </p>
+
+</FORM>
+
+
+<div id="zone"></div>
+
+</body>
+</html>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/mapped.html
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/mapped.html	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/jaxb-json/src/main/webapp/mapped.html	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+        "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <script type="text/javascript">
+
+        function createXHR()
+        {
+            var request = false;
+            try
+            {
+                request = new ActiveXObject('Msxml2.XMLHTTP');
+            }
+            catch (err2)
+            {
+                try
+                {
+                    request = new ActiveXObject('Microsoft.XMLHTTP');
+                }
+                catch (err3)
+                {
+                    try
+                    {
+                        request = new XMLHttpRequest();
+                    }
+                    catch (err1)
+                    {
+                        request = false;
+                    }
+                }
+            }
+            return request;
+        }
+
+        function loadJSON(fname)
+        {
+            var xhr = createXHR();
+            xhr.open("GET", fname, true);
+            xhr.onreadystatechange = function()
+            {
+                if (xhr.readyState == 4)
+                {
+                    if (xhr.status != 404)
+                    {
+                        var data = eval("(" + xhr.responseText + ")");
+                        document.getElementById("zone").innerHTML = "<h2>Books:</h2>";
+                        for (i = 0; i < 3; i++)
+                        {
+                            document.getElementById("zone").innerHTML += data.listing.books[i]. at title + ', by <i>' + data.listing.books[i].author + "</i><br/>";
+                        }
+                    }
+                    else
+                    {
+                        document.getElementById("zone").innerHTML = fname + " not found";
+                    }
+                }
+            }
+            xhr.send(null);
+        }
+
+
+    </script>
+    <title>Ajax Get JSON Demo</title></head>
+
+
+<body bgcolor="#FFFFFF">
+
+<p><font size="+3">Ajax JSON/JAXB Demo: Mapped format</font></p>
+<hr>
+<FORM name="ajax" method="POST" action="">
+
+    <p>
+        <INPUT type="BUTTON" value=" Click to load the JSON file " ONCLICK="loadJSON('resteasy/library/books/mapped')">
+    </p>
+
+</FORM>
+
+
+<div id="zone"></div>
+
+</body>
+</html>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,24 @@
+<project>
+    <parent>
+        <groupId>org.jboss.resteasy</groupId>
+        <artifactId>resteasy-jaxrs-all</artifactId>
+        <version>1.1.GA_CP01</version>
+    </parent>
+    <name>Resteasy Examples</name>
+    <url>http://wiki.jboss.org/wiki/Wiki.jsp?page=RESTeasyJAXRS</url>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.jboss.resteasy</groupId>
+    <artifactId>testable-examples-pom</artifactId>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>jaxb-json</module>
+        <module>guice-hello</module>
+        <module>spring-hibernate-contacts</module>
+        <module>simple</module>
+        <module>async-job-service</module>
+        <module>api-clients</module>
+        <module>resteasy-springMVC</module>
+    </modules>
+</project>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/README.txt
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/README.txt	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/README.txt	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,38 @@
+README for the RESTEasy resteasy-springMVC example project:
+=========================================================
+
+This project is an example of using RESTEasy with:
+- Spring
+- Jetty (embedded)
+
+
+System Requirements:
+====================
+- Maven 2.0.9 or higher
+
+
+07/07/08 Updated:
+=================
+
+- Added client module.
+  The client module shows an example that tests the service module-generated 
+  WAR with the same web container (Jetty6 in an embedded mode). The container is
+  injected in the junit 4 test. The client uses the RESTEasy Client Framework.
+
+
+Building the Project:
+=====================
+
+In the project's root directory, run:
+  mvn clean install
+
+
+Running the Project and Testing it Manually:
+============================================
+
+- mvn jetty:run
+
+- Open a browser at the following URL to test the function:
+
+  List all available contacts:
+  http://localhost:9095/contacts

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.jboss.resteasy.examples</groupId>
+    <artifactId>resteasy-springMVC</artifactId>
+    <packaging>war</packaging>
+    <version>1.1.GA_CP01</version>
+    <name>Spring MVC RestContact Maven Webapp</name>
+    <url>http://maven.apache.org</url>
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.resteasy</groupId>
+            <artifactId>resteasy-spring</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.resteasy</groupId>
+            <artifactId>resteasy-jaxb-provider</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-webmvc</artifactId>
+            <version>2.5.6</version>
+        </dependency>
+        <dependency>
+            <groupId>org.mortbay.jetty</groupId>
+            <artifactId>maven-jetty-plugin</artifactId>
+            <version>6.1.15</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.4</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>tjws</groupId>
+            <artifactId>webserver</artifactId>
+            <version>1.3.3</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <finalName>resteasy-springMVC</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.mortbay.jetty</groupId>
+                <artifactId>maven-jetty-plugin</artifactId>
+                <version>6.1.15</version>
+                <configuration>
+                    <contextPath>/</contextPath>
+                    <scanIntervalSeconds>2</scanIntervalSeconds>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <url>http://download.java.net/maven/1</url>
+            <layout>legacy</layout>
+        </repository>
+        <repository>
+            <id>maven repo</id>
+            <name>maven repo</name>
+            <url>http://repo1.maven.org/maven2/</url>
+        </repository>
+        <!-- For resteasy -->
+        <repository>
+            <id>jboss</id>
+            <name>jboss repo</name>
+            <url>http://repository.jboss.org/maven2</url>
+        </repository>
+        <repository>
+            <id>scannotation</id>
+            <url>http://scannotation.sf.net/maven2</url>
+        </repository>
+    </repositories>
+</project>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/Contact.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/Contact.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/Contact.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,55 @@
+package org.jboss.resteasy.examples.springmvc;
+
+import javax.ws.rs.FormParam;
+import javax.xml.bind.annotation.XmlRootElement;
+
+ at XmlRootElement
+public class Contact
+{
+   private String firstName, lastName;
+
+   public Contact()
+   {
+   }
+
+   public Contact(String firstName, String lastName)
+   {
+      this.firstName = firstName;
+      this.lastName = lastName;
+   }
+
+   public String getFirstName()
+   {
+      return firstName;
+   }
+
+   @FormParam("firstName")
+   public void setFirstName(String firstName)
+   {
+      this.firstName = firstName;
+   }
+
+   public String getLastName()
+   {
+      return lastName;
+   }
+
+   @FormParam("lastName")
+   public void setLastName(String lastName)
+   {
+      this.lastName = lastName;
+   }
+
+   public boolean equals(Object other)
+   {
+      // normal checks apply here...
+      Contact otherContact = (Contact) other;
+      return otherContact.firstName.equals(this.firstName)
+            && otherContact.lastName.equals(this.lastName);
+   }
+
+   public int hashCode()
+   {
+      return firstName.hashCode() ^ lastName.hashCode();
+   }
+}
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/ContactService.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/ContactService.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/ContactService.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,38 @@
+package org.jboss.resteasy.examples.springmvc;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * Simple Service object. Really, this class isn't needed in this case. However
+ * Controller/Service/Repository layering is a pretty common design pattern in
+ * Spring projects. While this example doesn't have a Repository/DAO, the
+ * ContactService class will show how to integrate Controllers with the layers
+ * below in a Spring/RESTEasy application. 
+ * 
+ * @author <a href="mailto:sduskis at gmail.com">Solomon Duskis</a>
+ * @version $Revision: 1 $
+ */
+
+ at Service
+public class ContactService
+{
+   private Map<String, Contact> contactMap = new ConcurrentHashMap<String, Contact>();
+
+   public void save(Contact contact)
+   {
+      contactMap.put(contact.getLastName(), contact);
+   }
+
+   public Contact getContact(String lastName)
+   {
+      return contactMap.get(lastName);
+   }
+
+   public Contacts getAll()
+   {
+      return new Contacts(contactMap.values());
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/Contacts.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/Contacts.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/Contacts.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,40 @@
+package org.jboss.resteasy.examples.springmvc;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+
+
+ at XmlRootElement
+public class Contacts 
+{
+   
+   private Collection<Contact> contacts;
+
+   public Contacts()
+   {
+      this.contacts = new ArrayList<Contact>();
+   }
+
+   public Contacts(Collection<Contact> contacts)
+   {
+      this.contacts = contacts;
+   }
+
+   @XmlElement(name="contact")
+   public Collection<Contact> getContacts()
+   {
+      return contacts;
+   }
+
+   public void setContacts(Collection<Contact> contact)
+   {
+      this.contacts = contact;
+   }
+
+   
+   
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/ContactsResource.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/ContactsResource.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/java/org/jboss/resteasy/examples/springmvc/ContactsResource.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,79 @@
+package org.jboss.resteasy.examples.springmvc;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriBuilder;
+import javax.ws.rs.core.UriInfo;
+
+import org.jboss.resteasy.annotations.Form;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.servlet.ModelAndView;
+
+ at Controller
+ at Path(ContactsResource.CONTACTS_URL)
+public class ContactsResource
+{
+   public static final String CONTACTS_URL = "/contacts";
+   @Autowired
+   ContactService service;
+
+   @GET
+   @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+   @Path("data")
+   public Contacts getAll()
+   {
+      return service.getAll();
+   }
+
+   @PUT
+   @POST
+   @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+   @Path("data")
+   public Response saveContact(@Context UriInfo uri, Contact contact)
+         throws URISyntaxException
+   {
+      service.save(contact);
+      URI newURI = UriBuilder.fromUri(uri.getPath()).path(contact.getLastName()).build();
+      return Response.created(newURI).build();
+   }
+
+   @GET
+   @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+   @Path("data/{lastName}")
+   public Contact get(@PathParam("lastName") String lastName)
+   {
+      return service.getContact(lastName);
+   }
+
+   @POST
+   @PUT
+   @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+   @Produces(MediaType.TEXT_HTML)
+   public ModelAndView saveContactForm(@Form Contact contact)
+         throws URISyntaxException
+   {
+      service.save(contact);
+      return viewAll();
+   }
+   
+   @GET
+   @Produces(MediaType.TEXT_HTML)
+   public ModelAndView viewAll()
+   {
+      // forward to the "contacts" view, with a request attribute named
+      // "contacts" that has all of the existing contacts
+      return new ModelAndView("contacts", "contacts", service.getAll());
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/resources/springmvc-servlet.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/resources/springmvc-servlet.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/resources/springmvc-servlet.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,18 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
+	xsi:schemaLocation="
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
+        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+    ">
+	<context:component-scan base-package="org.jboss.resteasy.examples.springmvc" />
+	<context:annotation-config />
+	<import resource="classpath:springmvc-resteasy.xml" />
+
+	<bean id="viewResolver"
+		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
+		<property name="prefix" value="/WEB-INF/" />
+		<property name="suffix" value=".jsp" />
+	</bean>
+
+</beans>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/webapp/WEB-INF/contacts.jsp
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/webapp/WEB-INF/contacts.jsp	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/webapp/WEB-INF/contacts.jsp	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,21 @@
+<%@ page isELIgnored="false" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<html>
+<head>
+</head>
+<body>
+<h2>Hello Contacts!</h2>
+<div id="contact-data" class="contacts">
+ <c:forEach var="contact" items="${contacts.contacts}">
+  <span class="contact">Hello <a href="/contacts/data/${contact.lastName}">${contact.firstName} ${contact.lastName}</a></span>
+ </c:forEach>
+</div>
+
+<p>Save a contact, save the world:</p> 
+<form action="/contacts" method="post">
+ First Name: <input type="text" name="firstName" /><br>
+ Last Name: <input type="text" name="lastName" /><br>
+ <input type="submit" value="submit"/>
+</form>
+</body>
+</html>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/webapp/WEB-INF/web.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/webapp/WEB-INF/web.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/main/webapp/WEB-INF/web.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+        "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+
+	<servlet>
+		<servlet-name>springmvc</servlet-name>
+		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+		<init-param>
+			<param-name>contextConfigLocation</param-name>
+			<param-value>classpath:springmvc-servlet.xml</param-value>
+		</init-param>
+	</servlet>
+
+	<servlet-mapping>
+		<servlet-name>springmvc</servlet-name>
+		<url-pattern>/contacts/*</url-pattern>
+	</servlet-mapping>
+
+</web-app>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/test/java/org/jboss/resteasy/examples/springmvc/ContactsTest.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/test/java/org/jboss/resteasy/examples/springmvc/ContactsTest.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/resteasy-springMVC/src/test/java/org/jboss/resteasy/examples/springmvc/ContactsTest.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,85 @@
+package org.jboss.resteasy.examples.springmvc;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.jboss.resteasy.client.ClientURI;
+import org.jboss.resteasy.client.ProxyFactory;
+import org.jboss.resteasy.plugins.providers.RegisterBuiltin;
+import org.jboss.resteasy.spi.ResteasyProviderFactory;
+import org.jboss.resteasy.springmvc.tjws.TJWSEmbeddedSpringMVCServer;
+import org.jboss.resteasy.util.HttpHeaderNames;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class ContactsTest
+{
+
+   @Path(ContactsResource.CONTACTS_URL)
+   public interface ContactProxy
+   {
+      @Path("data")
+      @POST
+      @Consumes(MediaType.APPLICATION_XML)
+      Response createContact(Contact contact);
+
+      @GET
+      @Produces(MediaType.APPLICATION_XML)
+      Contact getContact(@ClientURI String uri);
+
+      @GET
+      String getString(@ClientURI String uri);
+   }
+
+   private static TJWSEmbeddedSpringMVCServer server;
+   private static ContactProxy proxy;
+   public static final String host = "http://localhost:8080/";
+
+   @BeforeClass
+   public static void setup()
+   {
+      server = new TJWSEmbeddedSpringMVCServer(
+            "classpath:springmvc-servlet.xml", 8080);
+      server.start();
+
+      RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
+      proxy = ProxyFactory.create(ContactProxy.class, host);
+   }
+
+   @AfterClass
+   public static void end()
+   {
+      server.stop();
+   }
+
+   @Test
+   public void testData()
+   {
+      Response response = proxy.createContact(new Contact("Solomon", "Duskis"));
+      String duskisUri = (String) response.getMetadata().getFirst(
+            HttpHeaderNames.LOCATION);
+      System.out.println(duskisUri);
+      Assert.assertTrue(duskisUri.endsWith(ContactsResource.CONTACTS_URL
+            + "/data/Duskis"));
+      Assert
+            .assertEquals("Solomon", proxy.getContact(duskisUri).getFirstName());
+      proxy.createContact(new Contact("Bill", "Burkie"));
+      System.out.println(proxy.getString(ContactsResource.CONTACTS_URL
+            + "/data"));
+   }
+
+   @Ignore
+   @Test
+   public void readHTML()
+   {
+      System.out.println(proxy.getString(ContactsResource.CONTACTS_URL));
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/simple/README.txt
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/simple/README.txt	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/simple/README.txt	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,24 @@
+README for the RESTEasy simple example project:
+=========================================================
+
+This project is a simple example showing the use of:
+- @Path
+- @GET
+- PUT
+- POST
+- @PathParam
+
+It also uses pure streaming output.
+
+
+System Requirements:
+====================
+- Maven 2.0.9 or higher
+
+
+Building the Project:
+=====================
+
+In the root directory, run:
+  mvn clean install
+This builds a WAR and runs it with embedded Jetty.

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/simple/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/simple/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/simple/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.jboss.resteasy.examples</groupId>
+    <artifactId>simple</artifactId>
+    <version>1.1.GA_CP01</version>
+    <packaging>war</packaging>
+    <name/>
+    <description/>
+
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <url>http://download.java.net/maven/1</url>
+            <layout>legacy</layout>
+        </repository>
+        <repository>
+            <id>maven repo</id>
+            <name>maven repo</name>
+            <url>http://repo1.maven.org/maven2/</url>
+        </repository>
+        <!-- For resteasy -->
+        <repository>
+            <id>jboss</id>
+            <name>jboss repo</name>
+            <url>http://repository.jboss.org/maven2</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.resteasy</groupId>
+            <artifactId>resteasy-jaxrs</artifactId>
+            <version>${project.version}</version>
+            <!-- filter out unwanted jars -->
+            <exclusions>
+                <exclusion>
+                    <groupId>tjws</groupId>
+                    <artifactId>webserver</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>simple</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.mortbay.jetty</groupId>
+                <artifactId>maven-jetty-plugin</artifactId>
+                <version>6.1.15</version>
+                <configuration>
+                    <!-- By default the artifactId is taken, override it with something simple -->
+                    <contextPath>/</contextPath>
+                    <scanIntervalSeconds>2</scanIntervalSeconds>
+                    <stopKey>foo</stopKey>
+                    <stopPort>9999</stopPort>
+                    <connectors>
+                        <connector
+                                implementation="org.mortbay.jetty.nio.SelectChannelConnector">
+                            <port>9095</port>
+                            <maxIdleTime>60000</maxIdleTime>
+                        </connector>
+                    </connectors>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>start-jetty</id>
+                        <phase>pre-integration-test</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <scanIntervalSeconds>0</scanIntervalSeconds>
+                            <daemon>true</daemon>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>stop-jetty</id>
+                        <phase>post-integration-test</phase>
+                        <goals>
+                            <goal>stop</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>surefire-it</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                        <configuration>
+                            <skip>false</skip>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/domain/Customer.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/domain/Customer.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/domain/Customer.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,76 @@
+package com.restfully.shop.domain;
+
+public class Customer {
+   private int id;
+   private String firstName;
+   private String lastName;
+   private String street;
+   private String city;
+   private String state;
+   private String zip;
+   private String country;
+
+   public int getId() {
+      return id;
+   }
+
+   public void setId(int id) {
+      this.id = id;
+   }
+
+   public String getFirstName() {
+      return firstName;
+   }
+
+   public void setFirstName(String firstName) {
+      this.firstName = firstName;
+   }
+
+   public String getLastName() {
+      return lastName;
+   }
+
+   public void setLastName(String lastName) {
+      this.lastName = lastName;
+   }
+
+   public String getStreet() {
+      return street;
+   }
+
+   public void setStreet(String street) {
+      this.street = street;
+   }
+
+   public String getCity() {
+      return city;
+   }
+
+   public void setCity(String city) {
+      this.city = city;
+   }
+
+   public String getState() {
+      return state;
+   }
+
+   public void setState(String state) {
+      this.state = state;
+   }
+
+   public String getZip() {
+      return zip;
+   }
+
+   public void setZip(String zip) {
+      this.zip = zip;
+   }
+
+   public String getCountry() {
+      return country;
+   }
+
+   public void setCountry(String country) {
+      this.country = country;
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/services/CustomerResource.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/services/CustomerResource.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/services/CustomerResource.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,133 @@
+package com.restfully.shop.services;
+
+import com.restfully.shop.domain.Customer;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.StreamingOutput;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.net.URI;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicInteger;
+
+ at Path("/customers")
+public class CustomerResource {
+   private Map<Integer, Customer> customerDB = new ConcurrentHashMap<Integer, Customer>();
+   private AtomicInteger idCounter = new AtomicInteger();
+
+   public CustomerResource() {
+   }
+
+   @POST
+   @Consumes("application/xml")
+   public Response createCustomer(InputStream is) {
+      Customer customer = readCustomer(is);
+      customer.setId(idCounter.incrementAndGet());
+      customerDB.put(customer.getId(), customer);
+      System.out.println("Created customer " + customer.getId());
+      return Response.created(URI.create("/customers/" + customer.getId())).build();
+
+   }
+
+   @GET
+   @Path("{id}")
+   @Produces("application/xml")
+   public StreamingOutput getCustomer(@PathParam("id") int id) {
+      final Customer customer = customerDB.get(id);
+      if (customer == null) {
+         throw new WebApplicationException(Response.Status.NOT_FOUND);
+      }
+      return new StreamingOutput() {
+         public void write(OutputStream outputStream) throws IOException, WebApplicationException {
+            outputCustomer(outputStream, customer);
+         }
+      };
+   }
+
+   @PUT
+   @Path("{id}")
+   @Consumes("application/xml")
+   public void updateCustomer(@PathParam("id") int id, InputStream is) {
+      Customer update = readCustomer(is);
+      Customer current = customerDB.get(id);
+      if (current == null) throw new WebApplicationException(Response.Status.NOT_FOUND);
+
+      current.setFirstName(update.getFirstName());
+      current.setLastName(update.getLastName());
+      current.setStreet(update.getStreet());
+      current.setState(update.getState());
+      current.setZip(update.getZip());
+      current.setCountry(update.getCountry());
+   }
+
+
+   protected void outputCustomer(OutputStream os, Customer cust) throws IOException {
+      PrintStream writer = new PrintStream(os);
+      writer.println("<customer id=\"" + cust.getId() + "\">");
+      writer.println("   <first-name>" + cust.getFirstName() + "</first-name>");
+      writer.println("   <last-name>" + cust.getLastName() + "</last-name>");
+      writer.println("   <street>" + cust.getStreet() + "</street>");
+      writer.println("   <city>" + cust.getCity() + "</city>");
+      writer.println("   <state>" + cust.getState() + "</state>");
+      writer.println("   <zip>" + cust.getZip() + "</zip>");
+      writer.println("   <country>" + cust.getCountry() + "</country>");
+      writer.println("</customer>");
+   }
+
+   protected Customer readCustomer(InputStream is) {
+      try {
+         DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+         Document doc = builder.parse(is);
+         Element root = doc.getDocumentElement();
+         Customer cust = new Customer();
+         if (root.getAttribute("id") != null && !root.getAttribute("id").trim().equals(""))
+            cust.setId(Integer.valueOf(root.getAttribute("id")));
+         NodeList nodes = root.getChildNodes();
+         for (int i = 0; i < nodes.getLength(); i++) {
+            Element element = (Element) nodes.item(i);
+            if (element.getTagName().equals("first-name")) {
+               cust.setFirstName(element.getTextContent());
+            }
+            else if (element.getTagName().equals("last-name")) {
+               cust.setLastName(element.getTextContent());
+            }
+            else if (element.getTagName().equals("street")) {
+               cust.setStreet(element.getTextContent());
+            }
+            else if (element.getTagName().equals("city")) {
+               cust.setCity(element.getTextContent());
+            }
+            else if (element.getTagName().equals("state")) {
+               cust.setState(element.getTextContent());
+            }
+            else if (element.getTagName().equals("zip")) {
+               cust.setZip(element.getTextContent());
+            }
+            else if (element.getTagName().equals("country")) {
+               cust.setCountry(element.getTextContent());
+            }
+         }
+         return cust;
+      }
+      catch (Exception e) {
+         throw new WebApplicationException(e, Response.Status.BAD_REQUEST);
+      }
+   }
+
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/services/ShoppingApplication.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/services/ShoppingApplication.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/java/com/restfully/shop/services/ShoppingApplication.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,24 @@
+package com.restfully.shop.services;
+
+import javax.ws.rs.core.Application;
+import java.util.HashSet;
+import java.util.Set;
+
+public class ShoppingApplication extends Application {
+   private Set<Object> singletons = new HashSet<Object>();
+   private Set<Class<?>> empty = new HashSet<Class<?>>();
+
+   public ShoppingApplication() {
+      singletons.add(new CustomerResource());
+   }
+
+   @Override
+   public Set<Class<?>> getClasses() {
+      return empty;
+   }
+
+   @Override
+   public Set<Object> getSingletons() {
+      return singletons;
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/webapp/WEB-INF/web.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/webapp/WEB-INF/web.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/main/webapp/WEB-INF/web.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+        "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+    <display-name>Archetype Created Web Application</display-name>
+
+    <context-param>
+        <param-name>javax.ws.rs.Application</param-name>
+        <param-value>com.restfully.shop.services.ShoppingApplication</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>resteasy.servlet.mapping.prefix</param-name>
+        <param-value>/rest-services</param-value>
+    </context-param>
+
+    <listener>
+        <listener-class>
+            org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
+        </listener-class>
+    </listener>
+
+    <servlet>
+        <servlet-name>Resteasy</servlet-name>
+        <servlet-class>
+            org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
+        </servlet-class>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Resteasy</servlet-name>
+        <url-pattern>/rest-services/*</url-pattern>
+    </servlet-mapping>
+
+</web-app>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/test/java/com/restfully/shop/test/CustomerResourceTest.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/test/java/com/restfully/shop/test/CustomerResourceTest.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/simple/src/test/java/com/restfully/shop/test/CustomerResourceTest.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,108 @@
+package com.restfully.shop.test;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.apache.commons.httpclient.HttpMethodBase;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+
+/**
+ * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+public class CustomerResourceTest
+{
+   @Test
+   public void testCustomerResource() throws Exception
+   {
+      System.out.println("*** Create a new Customer ***");
+      // Create a new customer
+      String newCustomer = "<customer>"
+              + "<first-name>Bill</first-name>"
+              + "<last-name>Burke</last-name>"
+              + "<street>256 Clarendon Street</street>"
+              + "<city>Boston</city>"
+              + "<state>MA</state>"
+              + "<zip>02115</zip>"
+              + "<country>USA</country>"
+              + "</customer>";
+
+      URL postUrl = new URL("http://localhost:9095/rest-services/customers");
+      HttpURLConnection connection = (HttpURLConnection) postUrl.openConnection();
+      connection.setDoOutput(true);
+      connection.setInstanceFollowRedirects(false);
+      connection.setRequestMethod("POST");
+      connection.setRequestProperty("Content-Type", "application/xml");
+      OutputStream os = connection.getOutputStream();
+      os.write(newCustomer.getBytes());
+      os.flush();
+      Assert.assertEquals(HttpURLConnection.HTTP_CREATED, connection.getResponseCode());
+      System.out.println("Location: " + connection.getHeaderField("Location"));
+      connection.disconnect();
+
+
+      // Get the new customer
+      System.out.println("*** GET Created Customer **");
+      URL getUrl = new URL("http://localhost:9095/rest-services/customers/1");
+      connection = (HttpURLConnection) getUrl.openConnection();
+      connection.setRequestMethod("GET");
+      System.out.println("Content-Type: " + connection.getContentType());
+
+      BufferedReader reader = new BufferedReader(new
+              InputStreamReader(connection.getInputStream()));
+
+      String line = reader.readLine();
+      while (line != null)
+      {
+         System.out.println(line);
+         line = reader.readLine();
+      }
+      Assert.assertEquals(HttpURLConnection.HTTP_OK, connection.getResponseCode());
+      connection.disconnect();
+
+      // Update the new customer.  Change Bill's name to William
+      String updateCustomer = "<customer>"
+              + "<first-name>William</first-name>"
+              + "<last-name>Burke</last-name>"
+              + "<street>256 Clarendon Street</street>"
+              + "<city>Boston</city>"
+              + "<state>MA</state>"
+              + "<zip>02115</zip>"
+              + "<country>USA</country>"
+              + "</customer>";
+      connection = (HttpURLConnection) getUrl.openConnection();
+      connection.setDoOutput(true);
+      connection.setRequestMethod("PUT");
+      connection.setRequestProperty("Content-Type", "application/xml");
+      os = connection.getOutputStream();
+      os.write(updateCustomer.getBytes());
+      os.flush();
+      Assert.assertEquals(HttpURLConnection.HTTP_NO_CONTENT, connection.getResponseCode());
+      connection.disconnect();
+
+      // Show the update
+      System.out.println("**** After Update ***");
+      connection = (HttpURLConnection) getUrl.openConnection();
+      connection.setRequestMethod("GET");
+
+      System.out.println("Content-Type: " + connection.getContentType());
+      reader = new BufferedReader(new
+              InputStreamReader(connection.getInputStream()));
+
+      line = reader.readLine();
+      while (line != null)
+      {
+         System.out.println(line);
+         line = reader.readLine();
+      }
+      Assert.assertEquals(HttpURLConnection.HTTP_OK, connection.getResponseCode());
+      connection.disconnect();
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/README.txt
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/README.txt	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/README.txt	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,90 @@
+README for the RESTEasy spring-hibernate-contacts example project:
+=========================================================
+
+This project is an example of using RESTEasy with:
+- Hibernate
+- Hibernate Annotations
+- Spring
+- Jetty (embedded)
+- In-memory HSQLDB 
+- MySQL as a possible replacement to HSQLDB
+
+
+System Requirements:
+====================
+- Maven 2.0.9 or higher
+
+
+07/07/08 Updated:
+=================
+
+- Added client module.
+  The client module shows an example that tests the service module-generated 
+  WAR with the same web container (Jetty6 in an embedded mode). The container is
+  injected in the junit 4 test. The client uses the RESTEasy Client Framework.
+
+
+Building the Project:
+=====================
+
+In the project's root directory, run:
+  mvn clean install
+
+
+Running the Project and Testing it Manually:
+============================================
+
+- cd services
+
+- mvn jetty6:run-exploded
+
+- Open a browser at the following URLs to test each function:
+
+  List all available contacts in database:
+  http://localhost:9095/services/contactservice/contacts
+
+  List a contact by Id (among the list of the previously returned list):
+  http://localhost:9095/services/contactservice/contacts/1
+    OR
+  http://localhost:9095/services/contactservice/contacts/2
+    OR
+  http://localhost:9095/services/contactservice/contacts/3
+
+  List the contacts of contacts:
+  http://localhost:9095/services/contactservice/contacts/1/contacts
+    OR
+  http://localhost:9095/services/contactservice/contacts/2/contacts
+    OR
+  http://localhost:9095/services/contactservice/contacts/3/contacts
+
+
+(Optional) Switch HSQLDB to MySQL:
+==================================
+
+MySQL must be installed and accessible.
+
+The Maven 2.x build process creates and initializes a new database instance.
+The following files MUST be changed prior to building the project, because
+permissions must be given for the database instance to work correctly.
+
+- persistence/src/main/sql/mysql/initialize.bat: 
+  Replace:  <MYSQL_USER>      with the MySQL user that has privileges to
+                              create a database
+            <MYSQL_PASSWORD>  with the user's associated password
+  The file contains the following lines:
+            mysql -u<MYSQL_USER> -p<MYSQL_PASSWORD> < dbschema.sql
+            mysql -u<MYSQL_USER> -p<MYSQL_PASSWORD> < data.sql
+
+- persistence/src/main/resources/db.properties
+  Replace:  <MYSQL_USER>      with the MySQL user that has privileges to
+                              create a database
+            <MYSQL_PASSWORD>  with the user's associated password
+            The database URL, if the MySQL instance has been configured on a
+            different machine.
+  The file contains the following lines:
+            mzt.db.username=<MYSQL_USER>
+            mzt.db.password=<MYSQL_PASSWORD>
+            mzt.db.driver=com.mysql.jdbc.Driver
+            mzt.db.url=jdbc:mysql://localhost/contact?useUnicode=true&characterEncoding=UTF-8
+
+

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <parent>
+        <artifactId>spring-hibernate-contacts</artifactId>
+        <groupId>org.jboss.resteasy.examples</groupId>
+        <version>1.1.GA_CP01</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.jboss.resteasy.examples</groupId>
+    <artifactId>spring-hibernate-contacts-client</artifactId>
+    <name/>
+    <description/>
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.resteasy.examples</groupId>
+            <artifactId>spring-hibernate-contacts-core</artifactId>
+            <version>${project.version}</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mortbay.jetty</groupId>
+            <artifactId>jetty</artifactId>
+            <version>6.1.11</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>3.1</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/java/org/jboss/resteasy/examples/contacts/client/ContactClient.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/java/org/jboss/resteasy/examples/contacts/client/ContactClient.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/java/org/jboss/resteasy/examples/contacts/client/ContactClient.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,38 @@
+package org.jboss.resteasy.examples.contacts.client;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+
+import org.jboss.resteasy.client.ClientResponse;
+
+import org.jboss.resteasy.examples.contacts.core.Contact;
+import org.jboss.resteasy.examples.contacts.core.Contacts;
+
+
+/**
+ * @author <a href="mailto:obrand at yahoo.com">Olivier Brand</a>
+ * Jun 28, 2008
+ * 
+ */
+ at Path("/contactservice")
+public interface ContactClient
+{
+    @GET
+    @Path("contacts")
+    @Produces("application/xml")
+    ClientResponse<Contacts> getContacts();
+
+    @GET
+    @Path("contacts/{id}")
+    @Produces("text/plain")
+    @Consumes("text/plain")
+    ClientResponse<Contact> getContact(@PathParam("id")Long id);
+
+    @GET
+    @Path("contacts/{id}/contacts")
+    @Produces("text/plain")
+    ClientResponse<Contacts> getContactsOfContact();
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/contact.lck
===================================================================
(Binary files differ)


Property changes on: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/contact.lck
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/contact.log
===================================================================

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/contact.properties
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/contact.properties	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/contact.properties	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,17 @@
+#HSQL Database Engine 1.8.0.5
+#Wed Jun 17 19:15:19 EDT 2009
+hsqldb.script_format=0
+runtime.gc_interval=0
+sql.enforce_strict_size=false
+hsqldb.cache_size_scale=8
+readonly=false
+hsqldb.nio_data_file=true
+hsqldb.cache_scale=14
+version=1.8.0
+hsqldb.default_table_type=memory
+hsqldb.cache_file_scale=1
+hsqldb.log_size=200
+modified=yes
+hsqldb.cache_version=1.7.0
+hsqldb.original_version=1.8.0
+hsqldb.compatible_version=1.8.0

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/contact.script
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/contact.script	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/main/sql/hsqldb/contact.script	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,15 @@
+CREATE SCHEMA PUBLIC AUTHORIZATION DBA
+CREATE MEMORY TABLE CONTACT(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR(75),EMAIL VARCHAR(75),PHONE VARCHAR(75))
+CREATE MEMORY TABLE CONTACTTOCONTACTJOINTABLE(PARENTCONTACTID INTEGER NOT NULL,CHILDCONTACTID INTEGER NOT NULL,PRIMARY KEY(PARENTCONTACTID,CHILDCONTACTID),CONSTRAINT SYS_FK_48 FOREIGN KEY(PARENTCONTACTID) REFERENCES CONTACT(ID),CONSTRAINT SYS_FK_49 FOREIGN KEY(CHILDCONTACTID) REFERENCES CONTACT(ID))
+ALTER TABLE CONTACT ALTER COLUMN ID RESTART WITH 4
+CREATE USER SA PASSWORD ""
+GRANT DBA TO SA
+SET WRITE_DELAY 10
+SET SCHEMA PUBLIC
+INSERT INTO CONTACT VALUES(1,'olivier','olivier at yahoo.com','16506193726')
+INSERT INTO CONTACT VALUES(2,'angela','angela at yahoo.com','4312432432432')
+INSERT INTO CONTACT VALUES(3,'john','john at yahoo.com','432432432432')
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(1,2)
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(2,1)
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(2,3)
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(3,2)

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/java/org/jboss/resteasy/examples/contacts/client/TestClient.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/java/org/jboss/resteasy/examples/contacts/client/TestClient.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/java/org/jboss/resteasy/examples/contacts/client/TestClient.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,39 @@
+package org.jboss.resteasy.examples.contacts.client;
+
+import javax.annotation.Resource;
+
+import org.jboss.resteasy.client.ClientResponse;
+import org.jboss.resteasy.examples.contacts.core.Contacts;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mortbay.jetty.Server;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+ at RunWith(SpringJUnit4ClassRunner.class)
+// Load the beans to configure, here the embedded jetty
+ at ContextConfiguration(locations = { "/test-config.xml" })
+public class TestClient
+{
+   private static final String USER_EMAIL = "olivier at yahoo.com";
+   
+   // JSR 250 annotation injecting the servletContainer bean. Similar to the
+   // Spring @Autowired annotation
+   @Resource
+   private Server servletContainer;
+
+   @Resource
+   private ContactClient client;
+
+   @Test
+   public void testGetContacts()
+   {
+      Assert.assertTrue(servletContainer.isStarted());
+      ClientResponse<Contacts> contacts = client.getContacts();
+      Assert.assertNotNull(contacts);
+      Assert.assertEquals(3, contacts.getEntity().getContacts().size());
+      Assert.assertEquals(USER_EMAIL, contacts.getEntity().getContacts()
+            .iterator().next().getEmail());
+   }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/resources/test-config.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/resources/test-config.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/client/src/test/resources/test-config.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,51 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
+
+    <!-- This class initializes Built In Providers -->
+    <bean id="resteasyClientInitializer"
+          class="org.jboss.resteasy.plugins.spring.ResteasyClientInitializer"/>
+
+    <bean id="client" class="org.jboss.resteasy.client.ProxyFactory" factory-method="create">
+        <constructor-arg value="org.jboss.resteasy.examples.contacts.client.ContactClient"/>
+        <constructor-arg value="http://localhost:9095/services"/>
+    </bean>
+
+    <bean name="webAppContext"
+          class="org.mortbay.jetty.webapp.WebAppContext"
+          p:contextPath="/services"
+          p:war="../services/target/resteasy-service.war"/>
+
+    <bean name="defaultHandler"
+          class="org.mortbay.jetty.handler.DefaultHandler"/>
+
+    <bean name="handlerCollection"
+          class="org.mortbay.jetty.handler.HandlerCollection">
+        <property name="handlers">
+            <list>
+                <ref bean="webAppContext"/>
+                <ref bean="defaultHandler"/>
+            </list>
+        </property>
+    </bean>
+
+    <bean name="connector" class="org.mortbay.jetty.nio.SelectChannelConnector"
+          p:host="localhost" p:port="9095" p:maxIdleTime="60000"/>
+
+    <bean name="servletContainer" class="org.mortbay.jetty.Server"
+          p:handler-ref="handlerCollection">
+        <property name="connectors">
+            <list>
+                <ref bean="connector"/>
+            </list>
+        </property>
+    </bean>
+
+    <bean name="jettyLifecycleManager" class="org.jboss.resteasy.springmvc.JettyLifecycleManager">
+        <property name="servletContainer" ref="servletContainer"/>
+    </bean>
+</beans>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <parent>
+        <groupId>org.jboss.resteasy.examples</groupId>
+        <artifactId>spring-hibernate-contacts</artifactId>
+        <version>1.1.GA_CP01</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.jboss.resteasy.examples</groupId>
+    <artifactId>spring-hibernate-contacts-core</artifactId>
+    <name/>
+    <description/>
+</project>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/core/Contact.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/core/Contact.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/core/Contact.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,129 @@
+package org.jboss.resteasy.examples.contacts.core;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+
+/**
+ * @author <a href="mailto:obrand at yahoo.com">Olivier Brand</a>
+ * Jun 28, 2008
+ * 
+ */
+ at XmlRootElement(name = "contact")
+ at Entity
+ at Table(name = "Contact")
+ at Path("/")
+public class Contact
+{
+    private Long id;
+    private String name;
+    private String email;
+    private String telephone;
+    @XmlTransient
+    private Set<Contact> contactChildren;
+
+    public Contact() {
+
+	this.contactChildren = new LinkedHashSet<Contact>();
+    }
+
+    @GET
+    @Produces("application/xml")
+    @Transient
+    public Contact get()
+    {
+	return this;
+    }
+    
+    @Id
+    @Column(name = "id")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @XmlAttribute(name = "contactId")
+    public Long getId()
+    {
+	return id;
+    }
+
+    public void setId(Long id)
+    {
+	this.id = id;
+    }
+
+    @Column(name = "name")
+    public String getName()
+    {
+	return name;
+    }
+
+    public void setName(String name)
+    {
+	this.name = name;
+    }
+
+    @Column(name = "phone")
+    public String getTelephone()
+    {
+	return telephone;
+    }
+
+    public void setTelephone(String telephone)
+    {
+	this.telephone = telephone;
+    }
+
+    @Column(name = "email")
+    public String getEmail()
+    {
+	return email;
+    }
+
+    public void setEmail(String email)
+    {
+	this.email = email;
+    }
+
+    @ManyToMany(cascade = { CascadeType.ALL },fetch=FetchType.EAGER)
+    @JoinTable(name = "ContactToContactJoinTable", joinColumns = @JoinColumn(name = "parentContactId"), inverseJoinColumns = @JoinColumn(name = "childContactId"))
+    @XmlTransient
+    public Set<Contact> getContactChildren()
+    {
+	return contactChildren;
+    }
+    
+    public void setContactChildren(Set<Contact> contactChildren)
+    {
+	this.contactChildren = contactChildren;
+    }
+    
+    @GET
+    @Path("/contacts")
+    @Produces("application/xml")
+    @XmlTransient
+    @Transient
+    public Contacts getContacts()
+    {
+	Contacts contacts = new Contacts();
+	contacts.setContacts(getContactChildren());
+	return contacts;
+    }
+
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/core/ContactAttrs.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/core/ContactAttrs.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/core/ContactAttrs.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,12 @@
+package org.jboss.resteasy.examples.contacts.core;
+
+
+/**
+ * @author <a href="mailto:obrand at yahoo.com">Olivier Brand</a>
+ * Jun 28, 2008
+ * 
+ */
+public enum ContactAttrs
+{
+    name, telephone, email, id;
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/core/Contacts.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/core/Contacts.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/core/src/main/java/org/jboss/resteasy/examples/contacts/core/Contacts.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,31 @@
+package org.jboss.resteasy.examples.contacts.core;
+
+import java.util.Collection;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+
+/**
+ * @author <a href="mailto:obrand at yahoo.com">Olivier Brand</a>
+ * Jun 28, 2008
+ * 
+ */
+ at XmlRootElement(name = "contacts")
+public class Contacts
+{
+    private Collection<Contact> contacts;
+
+    @XmlElement(name = "contact")
+    public Collection<Contact> getContacts()
+    {
+        return contacts;
+    }
+
+    public void setContacts(Collection<Contact> contacts)
+    {
+        this.contacts = contacts;
+    }
+    
+    
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <parent>
+        <groupId>org.jboss.resteasy.examples</groupId>
+        <artifactId>spring-hibernate-contacts</artifactId>
+        <version>1.1.GA_CP01</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.jboss.resteasy.examples</groupId>
+    <artifactId>spring-hibernate-contacts-persistence</artifactId>
+    <name/>
+    <description/>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.resteasy.examples</groupId>
+            <artifactId>spring-hibernate-contacts-core</artifactId>
+            <version>${project.version}</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.transaction</groupId>
+            <artifactId>jta</artifactId>
+            <version>1.0.1B</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-dbcp</groupId>
+            <artifactId>commons-dbcp</artifactId>
+            <version>1.2.1</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.6</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate</artifactId>
+            <version>3.2.6.ga</version>
+        </dependency>
+        <!-- In memory database. To replace MySQL for test -->
+        <dependency>
+            <groupId>hsqldb</groupId>
+            <artifactId>hsqldb</artifactId>
+            <version>1.8.0.7</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-annotations</artifactId>
+            <version>3.3.1.GA</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>ejb3-persistence</artifactId>
+            <version>3.3.2.Beta1</version>
+        </dependency>
+    </dependencies>
+
+    <!-- If MySQL is used, execute this script -->
+    <!--
+       <properties>
+       <db.script>initialize.bat</db.script>
+       </properties>
+
+       <build>
+       <plugins>
+       <plugin>
+       <artifactId>maven-antrun-plugin</artifactId>
+       <version>1.1</version>
+       <executions>
+       <execution>
+       <phase>generate-sources</phase>
+       <configuration>
+       <tasks>
+       <exec dir="${basedir}/src/main/sql/mysql"
+       executable="${basedir}/src/main/sql/mysql/${db.script}"
+       failonerror="true">
+       </exec>
+       </tasks>
+       </configuration>
+       <goals>
+       <goal>run</goal>
+       </goals>
+       </execution>
+       </executions>
+       </plugin>
+       </plugins>
+       </build>
+    -->
+</project>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/resteasy/examples/contacts/persistence/ContactDao.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/resteasy/examples/contacts/persistence/ContactDao.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/resteasy/examples/contacts/persistence/ContactDao.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,24 @@
+package org.jboss.resteasy.examples.contacts.persistence;
+
+import java.util.Collection;
+
+import org.jboss.resteasy.examples.contacts.core.Contact;
+import org.jboss.resteasy.examples.contacts.core.ContactAttrs;
+
+
+/**
+ * @author <a href="mailto:obrand at yahoo.com">Olivier Brand</a>
+ * Jun 28, 2008
+ * 
+ */
+public interface ContactDao
+{
+    public Contact findContactByName(String contactName);
+    public Contact findContactById(long id);
+    public Contact findContactByEmail(String email);
+    public Contact findContactByPhone(String phone);
+    public Contact findContactByAttribute(ContactAttrs attribute, Object value);
+    public Collection<Contact> findAllContacts();
+    public void addUpdateContact(Contact contact);
+    public void deleteContact(Contact contact);
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/resteasy/examples/contacts/persistence/hibernate/ContactDaoImpl.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/resteasy/examples/contacts/persistence/hibernate/ContactDaoImpl.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/java/org/jboss/resteasy/examples/contacts/persistence/hibernate/ContactDaoImpl.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,75 @@
+package org.jboss.resteasy.examples.contacts.persistence.hibernate;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.jboss.resteasy.examples.contacts.core.Contact;
+import org.jboss.resteasy.examples.contacts.core.ContactAttrs;
+import org.jboss.resteasy.examples.contacts.persistence.ContactDao;
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
+import org.springframework.util.CollectionUtils;
+
+
+/**
+ * @author <a href="mailto:obrand at yahoo.com">Olivier Brand</a>
+ * Jun 28, 2008
+ * 
+ */
+ at SuppressWarnings("unchecked")
+public class ContactDaoImpl extends HibernateDaoSupport implements ContactDao
+{
+
+    public ContactDaoImpl()
+    {
+	// TODO Auto-generated constructor stub
+    }
+
+    public void addUpdateContact(Contact contact)
+    {
+	getHibernateTemplate().merge(contact);
+    }
+
+    public void deleteContact(Contact contact)
+    {
+	getHibernateTemplate().delete(contact);
+    }
+
+    public Collection<Contact> findAllContacts()
+    {
+       return getHibernateTemplate().find("from Contact c");
+//     return getHibernateTemplate().loadAll(Contact.class);
+    }
+
+    public Contact findContactByName(final String contactName)
+    {
+       return findSingle("FROM Contact c WHERE c.name =:name", "name", contactName);
+    }
+
+   public Contact findContactById(final long id)
+   {
+      return (Contact) getHibernateTemplate().get(Contact.class, id);
+   }
+
+     public Contact findContactByAttribute(final ContactAttrs attribute, final Object value)
+    {
+        return findSingle("FROM Contact c WHERE c." + attribute + " =:"
+            + attribute, attribute.toString(), value);
+    }
+
+    public Contact findContactByEmail(final String email)
+    {
+       return findSingle("FROM Contact c WHERE c.email =:email", "email", email);
+    }
+
+    public Contact findContactByPhone(final String phone)
+    {
+       return findSingle("FROM Contact c WHERE c.telephone=:phone", "phone", phone);	
+    }
+
+    private Contact findSingle(String hql, String paramName, Object value)
+    {
+       List<Contact> results = getHibernateTemplate().findByNamedParam(
+              hql, paramName, value);
+       return CollectionUtils.hasUniqueObject(results) ? results.get(0) : null;
+    }
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/resources/dao-config.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/resources/dao-config.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/resources/dao-config.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,16 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
+
+    <import resource="classpath:persistence-config.xml"/>
+
+    <bean id="contactDao"
+          class="org.jboss.resteasy.examples.contacts.persistence.hibernate.ContactDaoImpl"
+          p:sessionFactory-ref="sessionFactory"/>
+
+
+</beans>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/resources/db.properties
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/resources/db.properties	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/resources/db.properties	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,20 @@
+#########################
+# General Configuration #
+#########################
+
+#################################
+# DB Connection properties  #
+#################################
+
+# MySQL Config
+#contacts.db.username=<MYSQL_USER>
+#contacts.db.password=<MYSQL_PASSWORD>
+#contacts.db.driver=com.mysql.jdbc.Driver
+#contacts.db.url=jdbc:mysql://localhost/contact?useUnicode=true&characterEncoding=UTF-8
+
+# HSQLDB In memory database. Practical for tests and packaging
+contacts.db.username=sa
+contacts.db.password=
+contacts.db.driver=org.hsqldb.jdbcDriver
+contacts.db.url=jdbc:hsqldb:file:src/main/sql/hsqldb/contact
+

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/resources/persistence-config.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/resources/persistence-config.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/resources/persistence-config.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,60 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xmlns:tx="http://www.springframework.org/schema/tx"
+       xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
+
+    <bean name="propertyConfigurer"
+          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
+          p:ignoreUnresolvablePlaceholders="true"
+          p:ignoreResourceNotFound="true">
+        <property name="locations">
+            <list>
+                <value>classpath:db.properties</value>
+            </list>
+        </property>
+    </bean>
+
+    <bean id="dataSource"
+          class="org.apache.commons.dbcp.BasicDataSource"
+          p:driverClassName="${contacts.db.driver}" p:url="${contacts.db.url}"
+          p:username="${contacts.db.username}"
+          p:password="${contacts.db.password}"/>
+
+    <bean id="sessionFactory"
+          class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
+          p:dataSource-ref="dataSource">
+        <property name="hibernateProperties">
+            <props>
+                <!-- MySQL DIALECT -->
+                <!-- prop key="hibernate.dialect">
+                  org.hibernate.dialect.MySQLDialect
+               </prop -->
+                <!-- HSQLDB DIALECT -->
+                <prop key="hibernate.dialect">
+                    org.hibernate.dialect.HSQLDialect
+                </prop>
+                <prop key="hibernate.show_sql">false</prop>
+            </props>
+        </property>
+        <property name="annotatedClasses">
+            <list>
+                <value>
+                    org.jboss.resteasy.examples.contacts.core.Contact
+                </value>
+            </list>
+        </property>
+    </bean>
+
+    <!-- Spring transaction management -->
+    <bean id="transactionManager"
+          class="org.springframework.orm.hibernate3.HibernateTransactionManager"
+          p:sessionFactory-ref="sessionFactory"/>
+
+    <tx:annotation-driven transaction-manager="transactionManager"/>
+
+</beans>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.lck
===================================================================
(Binary files differ)


Property changes on: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.lck
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.log
===================================================================

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.properties
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.properties	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.properties	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,17 @@
+#HSQL Database Engine 1.8.0.5
+#Wed Jun 17 19:15:11 EDT 2009
+hsqldb.script_format=0
+runtime.gc_interval=0
+sql.enforce_strict_size=false
+hsqldb.cache_size_scale=8
+readonly=false
+hsqldb.nio_data_file=true
+hsqldb.cache_scale=14
+version=1.8.0
+hsqldb.default_table_type=memory
+hsqldb.cache_file_scale=1
+hsqldb.log_size=200
+modified=yes
+hsqldb.cache_version=1.7.0
+hsqldb.original_version=1.8.0
+hsqldb.compatible_version=1.8.0

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.script
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.script	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.script	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,15 @@
+CREATE SCHEMA PUBLIC AUTHORIZATION DBA
+CREATE MEMORY TABLE CONTACT(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR(75),EMAIL VARCHAR(75),PHONE VARCHAR(75))
+CREATE MEMORY TABLE CONTACTTOCONTACTJOINTABLE(PARENTCONTACTID INTEGER NOT NULL,CHILDCONTACTID INTEGER NOT NULL,PRIMARY KEY(PARENTCONTACTID,CHILDCONTACTID),CONSTRAINT SYS_FK_48 FOREIGN KEY(PARENTCONTACTID) REFERENCES CONTACT(ID),CONSTRAINT SYS_FK_49 FOREIGN KEY(CHILDCONTACTID) REFERENCES CONTACT(ID))
+ALTER TABLE CONTACT ALTER COLUMN ID RESTART WITH 4
+CREATE USER SA PASSWORD ""
+GRANT DBA TO SA
+SET WRITE_DELAY 10
+SET SCHEMA PUBLIC
+INSERT INTO CONTACT VALUES(1,'olivier','olivier at yahoo.com','16506193726')
+INSERT INTO CONTACT VALUES(2,'angela','angela at yahoo.com','4312432432432')
+INSERT INTO CONTACT VALUES(3,'john','john at yahoo.com','432432432432')
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(1,2)
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(2,1)
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(2,3)
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(3,2)

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.script.original
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.script.original	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/hsqldb/contact.script.original	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,15 @@
+CREATE SCHEMA PUBLIC AUTHORIZATION DBA
+CREATE MEMORY TABLE CONTACT(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR(75),EMAIL VARCHAR(75),PHONE VARCHAR(75))
+CREATE MEMORY TABLE CONTACTTOCONTACTJOINTABLE(PARENTCONTACTID INTEGER NOT NULL,CHILDCONTACTID INTEGER NOT NULL,PRIMARY KEY(PARENTCONTACTID,CHILDCONTACTID),CONSTRAINT SYS_FK_48 FOREIGN KEY(PARENTCONTACTID) REFERENCES CONTACT(ID),CONSTRAINT SYS_FK_49 FOREIGN KEY(CHILDCONTACTID) REFERENCES CONTACT(ID))
+ALTER TABLE CONTACT ALTER COLUMN ID RESTART WITH 4
+CREATE USER SA PASSWORD ""
+GRANT DBA TO SA
+SET WRITE_DELAY 10
+SET SCHEMA PUBLIC
+INSERT INTO CONTACT VALUES(1,'olivier','olivier at yahoo.com','16506193726')
+INSERT INTO CONTACT VALUES(2,'angela','angela at yahoo.com','4312432432432')
+INSERT INTO CONTACT VALUES(3,'john','john at yahoo.com','432432432432')
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(1,2)
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(2,1)
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(2,3)
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(3,2)

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/mysql/data.sql
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/mysql/data.sql	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/mysql/data.sql	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,14 @@
+use contact;
+
+LOCK TABLES Contact WRITE, ContactToContactJoinTable WRITE;
+
+insert into contact (id, name, email, phone) values (1, 'olivier','olivier at yahoo.com', '16506193726');
+insert into contact (id, name, email, phone) values (2, 'angela','angela at yahoo.com', '4312432432432');
+insert into contact (id, name, email, phone) values (3, 'john','john at yahoo.com', '432432432432');
+
+insert into ContactToContactJoinTable (parentContactId, childContactId) values (1, 2);
+insert into ContactToContactJoinTable (parentContactId, childContactId) values (2, 3);
+insert into ContactToContactJoinTable (parentContactId, childContactId) values (2, 1);
+insert into ContactToContactJoinTable (parentContactId, childContactId) values (3, 2);
+
+UNLOCK TABLES;

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/mysql/dbschema.sql
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/mysql/dbschema.sql	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/mysql/dbschema.sql	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,20 @@
+drop database if exists contact;
+create database contact character set utf8;
+use contact;
+
+/* Table used for MZT release purposes */ 
+CREATE TABLE Contact (
+    id integer not null primary key AUTO_INCREMENT,
+    name varchar(75),
+	email varchar(75),
+    phone varchar(75)
+);
+
+/* N to N recursive relationship */
+CREATE TABLE ContactToContactJoinTable (
+	parentContactId integer,
+	childContactId  integer,
+	PRIMARY KEY(parentContactId,childContactId),
+	FOREIGN KEY (parentContactId) REFERENCES Contact (id),
+	FOREIGN KEY (childContactId) REFERENCES Contact (id)
+);
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/mysql/initialize.bat
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/mysql/initialize.bat	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/main/sql/mysql/initialize.bat	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,2 @@
+mysql -u<MYSQL_USER> -p<MYSQL_PASSWORD> < dbschema.sql
+mysql -u<MYSQL_USER> -p<MYSQL_PASSWORD> < data.sql

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/java/org/jboss/resteasy/examples/contacts/persistence/TestContact.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/java/org/jboss/resteasy/examples/contacts/persistence/TestContact.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/java/org/jboss/resteasy/examples/contacts/persistence/TestContact.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,155 @@
+package org.jboss.resteasy.examples.contacts.persistence;
+
+
+import java.util.ArrayList;
+
+import javax.annotation.Resource;
+
+import junit.framework.Assert;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.transaction.TransactionConfiguration;
+import org.springframework.transaction.annotation.Transactional;
+
+import org.jboss.resteasy.examples.contacts.core.Contact;
+import org.jboss.resteasy.examples.contacts.core.ContactAttrs;
+
+
+/**
+ * @author <a href="mailto:obrand at yahoo.com">Olivier Brand</a>
+ * Jun 28, 2008
+ * 
+ */
+ at RunWith(SpringJUnit4ClassRunner.class)
+// Load the beans to configure, here the DAOs
+ at ContextConfiguration(locations={"/test-config.xml"})
+// apply the transaction manager to the test class so every DAO methods are executed
+// within a transaction
+ at TransactionConfiguration(transactionManager="transactionManager", defaultRollback=false)
+ at Transactional
+public class TestContact
+{
+    private static final String CONTACT_PHONE = "16506193726";
+    private static final String CONTACT_EMAIL = "olivier at yahoo.com";
+    private static final String CONTACT_NAME_3 = "newcontact";
+    private static final String CONTACT_NAME_4 = "newcontact2";
+    private static final int CONTACT_ID = 1;
+    private static final String CONTACT_NAME = "olivier";
+    private static final String CONTACT_NAME_2 = "angela";
+    
+    // JSR 250 annotation injecting the contactDao bean. Similar to the Spring @Autowired annotation
+    @Resource
+    private ContactDao contactDao;
+    
+    @Before
+    public void setup()
+    {
+	
+    }
+
+    @After
+    public void cleanup()
+    {
+	Contact contact = contactDao.findContactByName(CONTACT_NAME_3);
+	if(contact != null)
+	{
+	    contactDao.deleteContact(contact);
+	}
+    }
+    
+    @Test
+    public void simpleTest()
+    {
+        Assert.assertNotNull(contactDao);
+    }
+
+    @Test
+    public void testFindByName()
+    {
+	Assert.assertNotNull(contactDao.findContactByName(CONTACT_NAME));
+    }
+    
+    @Test
+    public void testFindById()
+    {
+	Assert.assertNotNull(contactDao.findContactById(CONTACT_ID));
+    }
+    
+    @Test
+    public void testFindAllContacts()
+    {
+	Assert.assertTrue(!contactDao.findAllContacts().isEmpty());
+	Assert.assertEquals(3, contactDao.findAllContacts().size());
+    }
+    
+    @Test
+    public void testFindByNameContacts()
+    {
+	Contact contact = contactDao.findContactByName(CONTACT_NAME_2);
+	Assert.assertNotNull(contact);
+	Assert.assertEquals(2,contact.getContactChildren().size());
+    }
+    
+    @Test
+    public void testFindByEmail()
+    {
+	Assert.assertNotNull(contactDao.findContactByEmail(CONTACT_EMAIL));
+    }
+    
+    @Test
+    public void testFindByPhone()
+    {
+	Assert.assertNotNull(contactDao.findContactByPhone(CONTACT_PHONE));
+    }
+    
+    @Test
+    public void testFindByAttribute()
+    {
+	Assert.assertNotNull(contactDao.findContactByAttribute(ContactAttrs.telephone,CONTACT_PHONE));
+	Assert.assertNotNull(contactDao.findContactByAttribute(ContactAttrs.email,CONTACT_EMAIL));
+	Assert.assertNotNull(contactDao.findContactByAttribute(ContactAttrs.name,CONTACT_NAME));
+	Assert.assertNotNull(contactDao.findContactByAttribute(ContactAttrs.id, 1L));
+    }
+    
+   @Test
+    public void testInsertContact()
+    {
+	Contact newContact = new Contact();
+	newContact.setEmail("newcontact at yahoo.com");
+	newContact.setName(CONTACT_NAME_3);
+	newContact.setTelephone("3213123123");
+	Contact contact = contactDao.findContactByName(CONTACT_NAME_3);
+	Assert.assertNull(contact);
+	contactDao.addUpdateContact(newContact);
+	contact = contactDao.findContactByName(CONTACT_NAME_3);
+	Assert.assertNotNull(contact);
+    }
+    
+    @Test
+    public void testDeleteContact()
+    {
+	Contact newContact = new Contact();
+	newContact.setEmail("newcontact2 at yahoo.com");
+	newContact.setName(CONTACT_NAME_4);
+	newContact.setTelephone("3213123134");
+	Contact contact = contactDao.findContactByName(CONTACT_NAME_4);
+	Assert.assertNull(contact);
+	contactDao.addUpdateContact(newContact);
+	contact = contactDao.findContactByName(CONTACT_NAME_4);
+	Assert.assertNotNull(contact);
+	contactDao.deleteContact(contact);
+	contact = contactDao.findContactByName(CONTACT_NAME_4);
+	Assert.assertNull(contact);
+    }
+    
+    @Test(expected = IndexOutOfBoundsException.class)
+    public void empty()
+    {
+        new ArrayList<Object>().get(0);
+    }
+} 
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/resources/test-config.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/resources/test-config.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/persistence/src/test/resources/test-config.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,11 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
+
+    <import resource="classpath:dao-config.xml"/>
+
+</beans>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.jboss.resteasy.examples</groupId>
+    <artifactId>spring-hibernate-contacts</artifactId>
+    <packaging>pom</packaging>
+    <version>1.1.GA_CP01</version>
+    <name>RestContact Maven Webapp</name>
+    <url>http://maven.apache.org</url>
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <url>http://download.java.net/maven/1</url>
+            <layout>legacy</layout>
+        </repository>
+        <repository>
+            <id>maven repo</id>
+            <name>maven repo</name>
+            <url>http://repo1.maven.org/maven2/</url>
+        </repository>
+        <!-- For resteasy -->
+        <repository>
+            <id>jboss</id>
+            <name>jboss repo</name>
+            <url>http://repository.jboss.org/maven2</url>
+        </repository>
+        <repository>
+            <id>scannotation</id>
+            <url>http://scannotation.sf.net/maven2</url>
+        </repository>
+    </repositories>
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-maven-import</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+    <dependencies>
+        <dependency>
+            <groupId>org.mortbay.jetty</groupId>
+            <artifactId>maven-jetty-plugin</artifactId>
+            <version>6.1.15</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.4</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.resteasy</groupId>
+            <artifactId>resteasy-jaxrs</artifactId>
+            <version>${project.version}</version>
+            <!-- filter out unwanted jars -->
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-httpclient</groupId>
+                    <artifactId>commons-httpclient</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>tjws</groupId>
+                    <artifactId>webserver</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>servlet-api</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.resteasy</groupId>
+            <artifactId>resteasy-spring</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring</artifactId>
+            <version>2.5.5</version>
+        </dependency>
+        <!-- Test classes that integrates Junit 3.8 and 4 to Spring based applications -->
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <version>2.5.5</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.persistence</groupId>
+            <artifactId>persistence-api</artifactId>
+            <version>1.0.2</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <finalName>RestContact</finalName>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <modules>
+        <module>core</module>
+        <module>services</module>
+        <module>persistence</module>
+        <module>client</module>
+    </modules>
+</project>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/pom.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/pom.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/pom.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+    <parent>
+        <groupId>org.jboss.resteasy.examples</groupId>
+        <artifactId>spring-hibernate-contacts</artifactId>
+        <version>1.1.GA_CP01</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.jboss.resteasy.examples</groupId>
+    <artifactId>spring-hibernate-contacts-services</artifactId>
+    <packaging>war</packaging>
+    <name/>
+    <description/>
+
+    <build>
+        <finalName>resteasy-service</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.mortbay.jetty</groupId>
+                <artifactId>maven-jetty-plugin</artifactId>
+                <version>6.1.15</version>
+                <configuration>
+                    <!-- By default the artifactId is taken, override it with something simple -->
+                    <contextPath>/services</contextPath>
+                    <scanIntervalSeconds>2</scanIntervalSeconds>
+                    <connectors>
+                        <connector
+                                implementation="org.mortbay.jetty.nio.SelectChannelConnector">
+                            <port>9095</port>
+                            <maxIdleTime>60000</maxIdleTime>
+                        </connector>
+                    </connectors>
+                    <systemProperties>
+                        <systemProperty>
+                            <name>log4j.configuration</name>
+                            <value>
+                                file:./src/test/resources/log4j.properties
+                            </value>
+                        </systemProperty>
+                    </systemProperties>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.resteasy.examples</groupId>
+            <artifactId>spring-hibernate-contacts-core</artifactId>
+            <version>${project.version}</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.resteasy.examples</groupId>
+            <artifactId>
+                spring-hibernate-contacts-persistence
+            </artifactId>
+            <version>${project.version}</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/jboss/resteasy/examples/contacts/services/ContactService.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/jboss/resteasy/examples/contacts/services/ContactService.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/jboss/resteasy/examples/contacts/services/ContactService.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,16 @@
+package org.jboss.resteasy.examples.contacts.services;
+
+import org.jboss.resteasy.examples.contacts.core.Contact;
+import org.jboss.resteasy.examples.contacts.core.Contacts;
+
+
+/**
+ * @author <a href="mailto:obrand at yahoo.com">Olivier Brand</a>
+ *         Jun 28, 2008
+ */
+public interface ContactService
+{
+   public Contact getContactById(Long id);
+
+   public Contacts getAllContacts();
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/jboss/resteasy/examples/contacts/services/ContactServiceImpl.java
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/jboss/resteasy/examples/contacts/services/ContactServiceImpl.java	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/java/org/jboss/resteasy/examples/contacts/services/ContactServiceImpl.java	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,60 @@
+package org.jboss.resteasy.examples.contacts.services;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+
+import org.springframework.transaction.annotation.Transactional;
+
+import org.jboss.resteasy.examples.contacts.core.Contact;
+import org.jboss.resteasy.examples.contacts.core.Contacts;
+import org.jboss.resteasy.examples.contacts.persistence.ContactDao;
+
+
+/**
+ * @author <a href="mailto:obrand at yahoo.com">Olivier Brand</a>
+ *         Jun 28, 2008
+ */
+ at Path("contactservice")
+ at Transactional
+public class ContactServiceImpl implements ContactService
+{
+   // DAO class used for interacting with the database
+   private ContactDao contactDao;
+
+   public ContactServiceImpl()
+   {
+      System.out.println("In Constructor ContactServiceImpl");
+   }
+
+   @GET
+   @Path("/contacts")
+   @Produces("application/xml")
+   public Contacts getAllContacts()
+   {
+      Contacts contacts = new Contacts();
+      contacts.setContacts(contactDao.findAllContacts());
+      return contacts;
+   }
+
+   @Path("/contacts/{id}")
+   @Produces("application/xml")
+   public Contact getContactById(@PathParam("id") Long id)
+   {
+      Contact contact = contactDao.findContactById(id);
+
+      return contact;
+   }
+
+   public ContactDao getContactDao()
+   {
+      return contactDao;
+   }
+
+   public void setContactDao(ContactDao contactDao)
+   {
+      this.contactDao = contactDao;
+   }
+
+}

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.lck
===================================================================
(Binary files differ)


Property changes on: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.lck
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.log
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.log	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.log	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,5 @@
+/*C1*/SET SCHEMA PUBLIC
+CONNECT USER SA
+DISCONNECT
+/*C2*/SET SCHEMA PUBLIC
+CONNECT USER SA

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.properties
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.properties	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.properties	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,17 @@
+#HSQL Database Engine 1.8.0.5
+#Fri Jun 27 23:38:32 PDT 2008
+hsqldb.script_format=0
+runtime.gc_interval=0
+sql.enforce_strict_size=false
+hsqldb.cache_size_scale=8
+readonly=false
+hsqldb.nio_data_file=true
+hsqldb.cache_scale=14
+version=1.8.0
+hsqldb.default_table_type=memory
+hsqldb.cache_file_scale=1
+hsqldb.log_size=200
+modified=yes
+hsqldb.cache_version=1.7.0
+hsqldb.original_version=1.8.0
+hsqldb.compatible_version=1.8.0

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.script
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.script	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/sql/hsqldb/contact.script	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,15 @@
+CREATE SCHEMA PUBLIC AUTHORIZATION DBA
+CREATE MEMORY TABLE CONTACT(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR(75),EMAIL VARCHAR(75),PHONE VARCHAR(75))
+CREATE MEMORY TABLE CONTACTTOCONTACTJOINTABLE(PARENTCONTACTID INTEGER NOT NULL,CHILDCONTACTID INTEGER NOT NULL,PRIMARY KEY(PARENTCONTACTID,CHILDCONTACTID),CONSTRAINT SYS_FK_48 FOREIGN KEY(PARENTCONTACTID) REFERENCES CONTACT(ID),CONSTRAINT SYS_FK_49 FOREIGN KEY(CHILDCONTACTID) REFERENCES CONTACT(ID))
+ALTER TABLE CONTACT ALTER COLUMN ID RESTART WITH 4
+CREATE USER SA PASSWORD ""
+GRANT DBA TO SA
+SET WRITE_DELAY 10
+SET SCHEMA PUBLIC
+INSERT INTO CONTACT VALUES(1,'olivier','olivier at yahoo.com','16506193726')
+INSERT INTO CONTACT VALUES(2,'angela','angela at yahoo.com','4312432432432')
+INSERT INTO CONTACT VALUES(3,'john','john at yahoo.com','432432432432')
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(1,2)
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(2,1)
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(2,3)
+INSERT INTO CONTACTTOCONTACTJOINTABLE VALUES(3,2)

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/webapp/WEB-INF/applicationContext.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/webapp/WEB-INF/applicationContext.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/webapp/WEB-INF/applicationContext.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,18 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
+
+    <!-- Import necessary DAO and DB transaction management classes -->
+    <import resource="classpath:dao-config.xml"/>
+
+    <!-- Inject DAO classes in service -->
+    <bean id="contactService"
+          class="org.jboss.resteasy.examples.contacts.services.ContactServiceImpl"
+          p:contactDao-ref="contactDao"/>
+
+
+</beans>

Added: projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/webapp/WEB-INF/web.xml
===================================================================
--- projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/webapp/WEB-INF/web.xml	                        (rev 0)
+++ projects/docs/enterprise/5.0/Examples/RESTEasy/spring-hibernate-contacts/services/src/main/webapp/WEB-INF/web.xml	2009-09-01 23:22:55 UTC (rev 93104)
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+        "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+    <display-name>Archetype Created Web Application</display-name>
+    <!-- Scan for both @Provider and JAX-RS resource classes (@Path, @GET, @POST etc..) and register them -->
+    <!-- context-param>
+       <param-name>resteasy.scan</param-name>
+       <param-value>true</param-value>
+    </context-param-->
+
+    <!-- set this if you map the Resteasy servlet to something other than /*
+    <context-param>
+       <param-name>resteasy.servlet.mapping.prefix</param-name>
+       <param-value>/resteasy</param-value>
+    </context-param>
+    -->
+    <listener>
+        <listener-class>
+            org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
+        </listener-class>
+    </listener>
+
+    <!-- Any beans annotated with JAX-RS are automatically loaded (@Path...) -->
+    <listener>
+        <listener-class>
+            org.jboss.resteasy.plugins.spring.SpringContextLoaderListener
+        </listener-class>
+    </listener>
+
+    <servlet>
+        <servlet-name>Resteasy</servlet-name>
+        <servlet-class>
+            org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
+        </servlet-class>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Resteasy</servlet-name>
+        <!-- URL would be http://localhost:9095/services/helloservice/hello/toto -->
+        <url-pattern>/*</url-pattern>
+    </servlet-mapping>
+
+</web-app>
\ No newline at end of file




More information about the jboss-cvs-commits mailing list