[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