From c791fd804344b8719fb69be84b8174c84cc4f4dc Mon Sep 17 00:00:00 2001 From: jsdelfino Date: Mon, 10 Jan 2011 19:51:07 +0000 Subject: Sandbox to experiment with Databinding automatic wrapper transformations. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1057335 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/test/java/helloworld/jaxrs/HelloWorld.java | 70 +++++++++++++++++++++ .../test/java/helloworld/jaxrs/HelloWorldApp.java | 64 +++++++++++++++++++ .../helloworld/jaxrs/test/HelloWorldTestCase.java | 71 ++++++++++++++++++++++ .../helloworld/jaxrs/HelloWorld.composite | 29 +++++++++ 4 files changed, 234 insertions(+) create mode 100644 sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/HelloWorld.java create mode 100644 sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/HelloWorldApp.java create mode 100644 sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/test/HelloWorldTestCase.java create mode 100644 sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/resources/helloworld/jaxrs/HelloWorld.composite (limited to 'sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test') diff --git a/sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/HelloWorld.java b/sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/HelloWorld.java new file mode 100644 index 0000000000..3a493ea10e --- /dev/null +++ b/sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/HelloWorld.java @@ -0,0 +1,70 @@ +/******************************************************************************* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *******************************************************************************/ + +package helloworld.jaxrs; + +import java.util.Date; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +import org.apache.wink.common.model.synd.SyndEntry; +import org.apache.wink.common.model.synd.SyndText; + +/** + * Simple example - Hello World! + *

+ * The SDK dispatches HTTP requests for URI + * http://[host]:[port]/HelloWorld/rest/world, where + * HelloWorld is the context root, to this class. A simple Atom + * entry is returned in HTTP response. + *

+ * The service document is available at URI + * http://[host]:[port]/HelloWorld/rest but it is empty because + * this simple demo doesn't contain any collection of resources. + *

+ * This resource must be registered within a JAX-RS application, this example + * uses the default usage of application /WEB-INF/application + */ +@Path("/world") +public class HelloWorld { + public static final String ID = "helloworld:1"; + + /** + * This method is called by the SDK for HTTP GET method requests where the + * Accept header allows the Atom media type application/atom+xml. A + * SyndEntry is created with basic information. Serialization of the + * SyndEntry to Atom entry is performed by the SDK automatically. The + * default status code of 200 (OK) is returned in the response. + * + * @return SyndEntry of the requested resource + */ + @GET + @Produces(MediaType.APPLICATION_ATOM_XML) + public SyndEntry getGreeting() { + // create and return a syndication entry with a "Hello World!" title, + // some ID and the current time. + SyndEntry synd = new SyndEntry(new SyndText("Hello World!"), ID, new Date()); + return synd; + } + +} diff --git a/sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/HelloWorldApp.java b/sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/HelloWorldApp.java new file mode 100644 index 0000000000..97ff1cb13e --- /dev/null +++ b/sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/HelloWorldApp.java @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package helloworld.jaxrs; + +import java.util.HashSet; +import java.util.Set; + +import javax.ws.rs.core.Application; + +public class HelloWorldApp extends Application { + + /* + * A singletons is used to serve multiple requests. + * It keeps domain-model objects in memory between requests. + */ + private Set instances = new HashSet(); + + /* + * Per-request service classes are instantiated for each + * request, and disposed of after the request is processed. + */ + private Set> classes = new HashSet>(); + + /** + * Create the singleton service implementation + */ + public HelloWorldApp() { + instances.add(new HelloWorld()); + // classes.add(HelloWorld.class); + } + + /** + * Methods used to discover the JAX-RS service objects + */ + + // Set of singleton service objects + @Override + public Set getSingletons() { + return instances; + } + + // Set of per-request service classes + @Override + public Set> getClasses() { + return classes; + } + +} diff --git a/sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/test/HelloWorldTestCase.java b/sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/test/HelloWorldTestCase.java new file mode 100644 index 0000000000..34edff56ca --- /dev/null +++ b/sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/test/HelloWorldTestCase.java @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package helloworld.jaxrs.test; + +import java.io.File; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.node.Contribution; +import org.apache.tuscany.sca.node.Node; +import org.apache.tuscany.sca.node.NodeFactory; +import org.apache.wink.client.ClientResponse; +import org.apache.wink.client.RestClient; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * + */ +public class HelloWorldTestCase { + private static Node node; + + /** + * @throws java.lang.Exception + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + node = + NodeFactory.getInstance().createNode("helloworld/jaxrs/HelloWorld.composite", + new Contribution("c1", new File("target/test-classes").toURI() + .toString())).start(); + } + + @Test + public void testDummy() { + RestClient client = new RestClient(); + ClientResponse response = client.resource("http://localhost:8080/world").get(); + String out = response.getEntity(String.class); + System.out.println(out); + Assert.assertEquals(200, response.getStatusCode()); + } + + /** + * @throws java.lang.Exception + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + if (node != null) { + node.stop(); + } + } + +} diff --git a/sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/resources/helloworld/jaxrs/HelloWorld.composite b/sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/resources/helloworld/jaxrs/HelloWorld.composite new file mode 100644 index 0000000000..db7329ca3e --- /dev/null +++ b/sandbox/sebastien/java/wrapped/modules/implementation-jaxrs-runtime/src/test/resources/helloworld/jaxrs/HelloWorld.composite @@ -0,0 +1,29 @@ + + + + + + + + + -- cgit v1.2.3