diff options
Diffstat (limited to 'sca-java-2.x/branches/2.0-Beta1/modules/implementation-jaxrs-runtime/src/test')
4 files changed, 234 insertions, 0 deletions
diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/HelloWorld.java b/sca-java-2.x/branches/2.0-Beta1/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/HelloWorld.java new file mode 100644 index 0000000000..3a493ea10e --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/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! + * <p/> + * The SDK dispatches HTTP requests for URI + * <code>http://[host]:[port]/HelloWorld/rest/world</code>, where + * <code>HelloWorld</code> is the context root, to this class. A simple Atom + * entry is returned in HTTP response. + * <p/> + * The service document is available at URI + * <code>http://[host]:[port]/HelloWorld/rest</code> but it is empty because + * this simple demo doesn't contain any collection of resources. + * <p/> + * 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/sca-java-2.x/branches/2.0-Beta1/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/HelloWorldApp.java b/sca-java-2.x/branches/2.0-Beta1/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/HelloWorldApp.java new file mode 100644 index 0000000000..97ff1cb13e --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/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<Object> instances = new HashSet<Object>(); + + /* + * Per-request service classes are instantiated for each + * request, and disposed of after the request is processed. + */ + private Set<Class<?>> classes = new HashSet<Class<?>>(); + + /** + * 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<Object> getSingletons() { + return instances; + } + + // Set of per-request service classes + @Override + public Set<Class<?>> getClasses() { + return classes; + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/test/HelloWorldTestCase.java b/sca-java-2.x/branches/2.0-Beta1/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/test/HelloWorldTestCase.java new file mode 100644 index 0000000000..34edff56ca --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/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/sca-java-2.x/branches/2.0-Beta1/modules/implementation-jaxrs-runtime/src/test/resources/helloworld/jaxrs/HelloWorld.composite b/sca-java-2.x/branches/2.0-Beta1/modules/implementation-jaxrs-runtime/src/test/resources/helloworld/jaxrs/HelloWorld.composite new file mode 100644 index 0000000000..db7329ca3e --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/modules/implementation-jaxrs-runtime/src/test/resources/helloworld/jaxrs/HelloWorld.composite @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" + xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1" + targetNamespace="http://sample/jaxrs" + name="HelloWorld"> + + <component name="HelloWorldApp"> + <tuscany:implementation.jaxrs application="helloworld.jaxrs.HelloWorldApp"/> + </component> + +</composite> |