Modified: cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd?rev=777126&r1=777125&r2=777126&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd Thu May 21 14:17:30 2009 @@ -44,6 +44,8 @@ <xsd:element name="outFaultInterceptors" type="xsd:anyType" minOccurs="0"/> <xsd:element name="properties" type="beans:mapType" minOccurs="0"/> <xsd:element name="serviceBeans" type="xsd:anyType" minOccurs="0"/> + <xsd:element name="modelBeans" type="xsd:anyType" minOccurs="0"/> + <xsd:element name="model" type="model" minOccurs="0"/> <xsd:element name="serviceFactory" type="xsd:anyType" minOccurs="0"/> <xsd:element name="providers" type="xsd:anyType" minOccurs="0"/> <xsd:element name="extensionMappings" type="xsd:anyType" minOccurs="0"/> @@ -59,6 +61,7 @@ <xsd:attribute name="transportId" type="xsd:string"/> <xsd:attribute name="endpointName" type="xsd:QName" /> <xsd:attribute name="serviceName" type="xsd:QName" /> + <xsd:attribute name="modelRef" type="xsd:string" /> <xsd:attribute name="staticSubresourceResolution" type="xsd:boolean" /> </xsd:extension> </xsd:complexContent> @@ -79,6 +82,8 @@ <xsd:element name="outFaultInterceptors" type="xsd:anyType" minOccurs="0"/> <xsd:element name="properties" type="beans:mapType" minOccurs="0"/> <xsd:element name="providers" type="xsd:anyType" minOccurs="0"/> + <xsd:element name="modelBeans" type="xsd:anyType" minOccurs="0"/> + <xsd:element name="model" type="model" minOccurs="0"/> <xsd:element name="headers" type="xsd:anyType" minOccurs="0"/> <xsd:element name="schemaLocations" type="schemasType" minOccurs="0"/> </xsd:all> @@ -87,6 +92,7 @@ <xsd:attribute name="serviceClass" type="xsd:string"/> <xsd:attribute name="inheritHeaders" type="xsd:boolean"/> <xsd:attribute name="bus" type="xsd:string" /> + <xsd:attribute name="modelRef" type="xsd:string" /> <xsd:attribute name="username" type="xsd:string"/> <xsd:attribute name="password" type="xsd:string"/> </xsd:extension> @@ -100,4 +106,35 @@ </xsd:sequence> </xsd:complexType> + <xsd:complexType name="model"> + <xsd:sequence> + <xsd:element name="resource" minOccurs="0" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="operation" minOccurs="0" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="param" minOccurs="0" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="type" type="xsd:string"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="path" type="xsd:string"/> + <xsd:attribute name="verb" type="xsd:string"/> + <xsd:attribute name="consumes" type="xsd:string"/> + <xsd:attribute name="produces" type="xsd:string"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="path" type="xsd:string"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:string"/> + </xsd:complexType> + </xsd:schema>
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java?rev=777126&r1=777125&r2=777126&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java Thu May 21 14:17:30 2009 @@ -22,6 +22,7 @@ import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.Response; +import org.apache.cxf.jaxrs.model.ParameterType; import org.apache.cxf.message.ExchangeImpl; import org.apache.cxf.message.Message; import org.apache.cxf.message.MessageImpl; Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java?rev=777126&r1=777125&r2=777126&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java Thu May 21 14:17:30 2009 @@ -1025,10 +1025,9 @@ Customer.class.getMethod("setUriInfoContext", new Class[]{UriInfo.class}); OperationResourceInfo ori = - new OperationResourceInfo(methodToInvoke, cri); + new OperationResourceInfo(methodToInvoke, + AnnotationUtils.getAnnotatedMethod(methodToInvoke), cri); ori.setHttpMethod("GET"); - ori.setAnnotatedMethod(AnnotationUtils.getAnnotatedMethod(methodToInvoke)); - Message m = new MessageImpl(); Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/ResourceUtilsTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/ResourceUtilsTest.java?rev=777126&r1=777125&r2=777126&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/ResourceUtilsTest.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/ResourceUtilsTest.java Thu May 21 14:17:30 2009 @@ -19,10 +19,21 @@ package org.apache.cxf.jaxrs.utils; import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import javax.ws.rs.core.UriInfo; import org.apache.cxf.jaxrs.Customer; +import org.apache.cxf.jaxrs.model.ClassResourceInfo; +import org.apache.cxf.jaxrs.model.OperationResourceInfo; +import org.apache.cxf.jaxrs.model.Parameter; +import org.apache.cxf.jaxrs.model.ParameterType; +import org.apache.cxf.jaxrs.model.UserOperation; +import org.apache.cxf.jaxrs.model.UserResource; import org.junit.Assert; import org.junit.Test; @@ -38,5 +49,32 @@ assertEquals(String.class, c.getParameterTypes()[1]); } + @Test + public void testClassResourceInfoUserResource() throws Exception { + UserResource ur = new UserResource(); + ur.setName(HashMap.class.getName()); + ur.setPath("/hashmap"); + UserOperation op = new UserOperation(); + op.setPath("/key/{id}"); + op.setName("get"); + op.setVerb("POST"); + op.setParameters(Collections.singletonList(new Parameter(ParameterType.PATH, "id"))); + ur.setOperations(Collections.singletonList(op)); + + Map<String, UserResource> resources = new HashMap<String, UserResource>(); + resources.put(ur.getName(), ur); + ClassResourceInfo cri = ResourceUtils.createClassResourceInfo(resources, ur, true); + assertNotNull(cri); + assertEquals("/hashmap", cri.getURITemplate().getValue()); + Method method = + HashMap.class.getMethod("get", new Class[]{Object.class}); + OperationResourceInfo ori = cri.getMethodDispatcher().getOperationResourceInfo(method); + assertNotNull(ori); + assertEquals("/key/{id}", ori.getURITemplate().getValue()); + List<Parameter> params = ori.getParameters(); + assertNotNull(params); + Parameter p = params.get(0); + assertEquals("id", p.getName()); + } } Added: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreNoAnnotations.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreNoAnnotations.java?rev=777126&view=auto ============================================================================== --- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreNoAnnotations.java (added) +++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreNoAnnotations.java Thu May 21 14:17:30 2009 @@ -0,0 +1,50 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.cxf.systest.jaxrs; + +import java.util.HashMap; +import java.util.Map; + +public class BookStoreNoAnnotations { + + private Map<Long, Book> books = new HashMap<Long, Book>(); + + public BookStoreNoAnnotations() { + Book b = new Book(); + b.setId(123L); + b.setName("CXF in Action"); + books.put(b.getId(), b); + } + + public Book getBook(Long id) throws BookNotFoundFault { + return books.get(id); + } + + public ChapterNoAnnotations getBookChapter(Long id) throws BookNotFoundFault { + Book b = books.get(id); + Chapter ch = b.getChapter(1); + + ChapterNoAnnotations ch2 = new ChapterNoAnnotations(); + ch2.setId(ch.getId()); + ch2.setTitle(ch.getTitle()); + return ch2; + } + +} Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreNoAnnotations.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreNoAnnotations.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/ChapterNoAnnotations.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/ChapterNoAnnotations.java?rev=777126&view=auto ============================================================================== --- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/ChapterNoAnnotations.java (added) +++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/ChapterNoAnnotations.java Thu May 21 14:17:30 2009 @@ -0,0 +1,51 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.cxf.systest.jaxrs; + +import javax.xml.bind.annotation.XmlRootElement; + + +...@xmlrootelement(name = "Chapter") +public class ChapterNoAnnotations { + private String title; + private long id; + + public ChapterNoAnnotations() { + } + + public void setTitle(String n) { + title = n; + } + + public String getTitle() { + return title; + } + + public void setId(long i) { + id = i; + } + public long getId() { + return id; + } + + public ChapterNoAnnotations getItself() { + return this; + } +} Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/ChapterNoAnnotations.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/ChapterNoAnnotations.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerProxySpringBookTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerProxySpringBookTest.java?rev=777126&r1=777125&r2=777126&view=diff ============================================================================== --- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerProxySpringBookTest.java (original) +++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerProxySpringBookTest.java Thu May 21 14:17:30 2009 @@ -39,8 +39,15 @@ @Test public void testGetThatBook123() throws Exception { - String endpointAddress = - "http://localhost:9080/test/bookstorestorage/thosebooks/123"; + getBook("http://localhost:9080/test/bookstorestorage/thosebooks/123"); + } + + @Test + public void testGetThatBook123UserResource() throws Exception { + getBook("http://localhost:9080/test/bookstore/books/123"); + } + + private void getBook(String endpointAddress) throws Exception { URL url = new URL(endpointAddress); URLConnection connect = url.openConnection(); connect.addRequestProperty("Accept", "application/xml"); @@ -48,41 +55,17 @@ InputStream expected = getClass() .getResourceAsStream("resources/expected_get_book123.txt"); - - //System.out.println("---" + getStringFromInputStream(in)); - assertEquals(getStringFromInputStream(expected), getStringFromInputStream(in)); + assertEquals(getStringFromInputStream(expected), getStringFromInputStream(in)); } @Test public void testGetThatBookOverloaded() throws Exception { - String endpointAddress = - "http://localhost:9080/test/bookstorestorage/thosebooks/123/123"; - URL url = new URL(endpointAddress); - URLConnection connect = url.openConnection(); - connect.addRequestProperty("Accept", "application/xml"); - InputStream in = connect.getInputStream(); - - InputStream expected = getClass() - .getResourceAsStream("resources/expected_get_book123.txt"); - - //System.out.println("---" + getStringFromInputStream(in)); - assertEquals(getStringFromInputStream(expected), getStringFromInputStream(in)); + getBook("http://localhost:9080/test/bookstorestorage/thosebooks/123/123"); } @Test public void testGetThatBookOverloaded2() throws Exception { - String endpointAddress = - "http://localhost:9080/test/bookstorestorage/thosebooks"; - URL url = new URL(endpointAddress); - URLConnection connect = url.openConnection(); - connect.addRequestProperty("Accept", "application/xml"); - InputStream in = connect.getInputStream(); - - InputStream expected = getClass() - .getResourceAsStream("resources/expected_get_book123.txt"); - - //System.out.println("---" + getStringFromInputStream(in)); - assertEquals(getStringFromInputStream(expected), getStringFromInputStream(in)); + getBook("http://localhost:9080/test/bookstorestorage/thosebooks"); } @Test Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java?rev=777126&r1=777125&r2=777126&view=diff ============================================================================== --- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java (original) +++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java Thu May 21 14:17:30 2009 @@ -35,6 +35,7 @@ import org.apache.commons.httpclient.methods.RequestEntity; import org.apache.cxf.helpers.IOUtils; import org.apache.cxf.io.CachedOutputStream; +import org.apache.cxf.jaxrs.client.JAXRSClientFactory; import org.apache.cxf.jaxrs.client.WebClient; import org.apache.cxf.jaxrs.ext.xml.XMLSource; import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase; @@ -48,7 +49,7 @@ @BeforeClass public static void startServers() throws Exception { assertTrue("server did not launch correctly", - launchServer(BookServerSpring.class)); + launchServer(BookServerSpring.class, true)); } @Test @@ -189,6 +190,42 @@ getBook(endpointAddress, "resources/expected_add_book_aegis.txt", "application/xml"); } + @Test + public void testGetBookUserResource() throws Exception { + + String endpointAddress = + "http://localhost:9080/the/thebooks6/bookstore/books/123"; + getBook(endpointAddress, "resources/expected_get_book123.txt", "application/xml"); + } + + @Test + public void testGetBookUserResource2() throws Exception { + + String endpointAddress = + "http://localhost:9080/the/thebooks7/bookstore/books/123"; + getBook(endpointAddress, "resources/expected_get_book123.txt", "application/xml"); + } + + @Test + public void testGetBookUserResourceFromProxy() throws Exception { + + String endpointAddress = + "http://localhost:9080/the/thebooks6"; + BookStoreNoAnnotations bStore = JAXRSClientFactory.createFromModel( + endpointAddress, + BookStoreNoAnnotations.class, + "classpath:/org/apache/cxf/systest/jaxrs/resources/resources.xml", + null); + Book b = bStore.getBook(123L); + assertNotNull(b); + assertEquals(123L, b.getId()); + assertEquals("CXF in Action", b.getName()); + ChapterNoAnnotations proxy = bStore.getBookChapter(123L); + ChapterNoAnnotations c = proxy.getItself(); + assertNotNull(c); + assertEquals(1, c.getId()); + assertEquals("chapter 1", c.getTitle()); + } @Test public void testGetBookXSLTXml() throws Exception { Added: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerUserResourceTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerUserResourceTest.java?rev=777126&view=auto ============================================================================== --- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerUserResourceTest.java (added) +++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerUserResourceTest.java Thu May 21 14:17:30 2009 @@ -0,0 +1,166 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.cxf.systest.jaxrs; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.Unmarshaller; + +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.cxf.jaxrs.JAXRSServerFactoryBean; +import org.apache.cxf.jaxrs.model.Parameter; +import org.apache.cxf.jaxrs.model.ParameterType; +import org.apache.cxf.jaxrs.model.UserOperation; +import org.apache.cxf.jaxrs.model.UserResource; +import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase; +import org.apache.cxf.testutil.common.AbstractBusTestServerBase; + +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +public class JAXRSClientServerUserResourceTest extends AbstractBusClientServerTestBase { + + @Ignore + public static class Server extends AbstractBusTestServerBase { + + protected void run() { + JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean(); + sf.setAddress("http://localhost:9080/"); + + UserResource ur = new UserResource(); + ur.setName(BookStoreNoAnnotations.class.getName()); + ur.setPath("/bookstoreNoAnnotations"); + UserOperation op = new UserOperation(); + op.setPath("/books/{id}"); + op.setName("getBook"); + op.setVerb("GET"); + op.setParameters(Collections.singletonList(new Parameter(ParameterType.PATH, "id"))); + + UserOperation op2 = new UserOperation(); + op2.setPath("/books/{id}/chapter"); + op2.setName("getBookChapter"); + op2.setParameters(Collections.singletonList(new Parameter(ParameterType.PATH, "id"))); + + List<UserOperation> ops = new ArrayList<UserOperation>(); + ops.add(op); + ops.add(op2); + + ur.setOperations(ops); + + UserResource ur2 = new UserResource(); + ur2.setName(ChapterNoAnnotations.class.getName()); + UserOperation op3 = new UserOperation(); + op3.setPath("/"); + op3.setName("getItself"); + op3.setVerb("GET"); + ur2.setOperations(Collections.singletonList(op3)); + + sf.setModelBeans(ur, ur2); + + sf.create(); + + } + + public static void main(String[] args) { + try { + Server s = new Server(); + s.start(); + } catch (Exception ex) { + ex.printStackTrace(); + System.exit(-1); + } finally { + System.out.println("done!"); + } + } + } + + @BeforeClass + public static void startServers() throws Exception { + assertTrue("server did not launch correctly", + launchServer(Server.class)); + } + + @Test + public void testGetBook123() throws Exception { + getAndCompare("http://localhost:9080/bookstoreNoAnnotations/books/123", + "application/xml", 200); + } + + @Test + public void testGetChapter() throws Exception { + + getAndCompareChapter("http://localhost:9080/bookstoreNoAnnotations/books/123/chapter", + "application/xml", 200); + } + + private void getAndCompare(String address, + String acceptType, + int expectedStatus) throws Exception { + GetMethod get = new GetMethod(address); + get.setRequestHeader("Accept", acceptType); + HttpClient httpClient = new HttpClient(); + try { + int result = httpClient.executeMethod(get); + assertEquals(expectedStatus, result); + Book book = readBook(get.getResponseBodyAsStream()); + assertEquals(123, book.getId()); + assertEquals("CXF in Action", book.getName()); + } finally { + get.releaseConnection(); + } + } + + private void getAndCompareChapter(String address, + String acceptType, + int expectedStatus) throws Exception { + GetMethod get = new GetMethod(address); + get.setRequestHeader("Accept", acceptType); + HttpClient httpClient = new HttpClient(); + try { + int result = httpClient.executeMethod(get); + assertEquals(expectedStatus, result); + Chapter c = readChapter(get.getResponseBodyAsStream()); + assertEquals(1, c.getId()); + assertEquals("chapter 1", c.getTitle()); + } finally { + get.releaseConnection(); + } + } + + + + private Book readBook(InputStream is) throws Exception { + JAXBContext c = JAXBContext.newInstance(new Class[]{Book.class}); + Unmarshaller u = c.createUnmarshaller(); + return (Book)u.unmarshal(is); + } + + private Chapter readChapter(InputStream is) throws Exception { + JAXBContext c = JAXBContext.newInstance(new Class[]{Chapter.class}); + Unmarshaller u = c.createUnmarshaller(); + return (Chapter)u.unmarshal(is); + } +} Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerUserResourceTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerUserResourceTest.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/resources.xml URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/resources.xml?rev=777126&view=auto ============================================================================== --- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/resources.xml (added) +++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/resources.xml Thu May 21 14:17:30 2009 @@ -0,0 +1,13 @@ +<model xmlns="http://cxf.apache.org/jaxrs"> + <resource name="org.apache.cxf.systest.jaxrs.BookStoreNoAnnotations" path="bookstore"> + <operation name="getBook" verb="GET" path="/books/{id}"> + <param name="id" type="PATH"/> + </operation> + <operation name="getBookChapter" path="/books/{id}/chapter"> + <param name="id" type="PATH"/> + </operation> + </resource> + <resource name="org.apache.cxf.systest.jaxrs.ChapterNoAnnotations"> + <operation name="getItself" verb="GET"/> + </resource> +</model> \ No newline at end of file Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/resources.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/resources.xml ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/resources/resources.xml ------------------------------------------------------------------------------ svn:mime-type = text/xml Modified: cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml?rev=777126&r1=777125&r2=777126&view=diff ============================================================================== --- cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml (original) +++ cxf/trunk/systests/src/test/resources/jaxrs/WEB-INF/beans.xml Thu May 21 14:17:30 2009 @@ -39,7 +39,7 @@ <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> - + <bean class="org.apache.cxf.systest.jaxrs.BookStoreSpring" id="serviceBean"/> <jaxrs:server id="bookservice" @@ -123,14 +123,30 @@ <bean id="xsltProvider" class="org.apache.cxf.jaxrs.provider.XSLTJaxbProvider"> <property name="resolver" ref="uriResolver"/> - <!-- - <property name="outTemplate" value="classpath:/org/apache/cxf/systest/jaxrs/resources/template.xsl"/> - --> <property name="outMediaTemplates" ref="outTemplates"/> <property name="outClassNames" ref="outClassNames"/> </bean> <bean id="uriResolver" class="org.apache.cxf.systest.jaxrs.URIResolverImpl"/> + + <jaxrs:server id="bookservice6" address="/thebooks6" + modelRef="classpath:/org/apache/cxf/systest/jaxrs/resources/resources.xml"/> + + <jaxrs:server id="bookservice7" address="/thebooks7"> + <jaxrs:model> + <jaxrs:resource name="org.apache.cxf.systest.jaxrs.BookStoreNoAnnotations" path="bookstore"> + <jaxrs:operation name="getBook" verb="GET" path="/books/{id}"> + <jaxrs:param name="id" type="PATH"/> + </jaxrs:operation> + <jaxrs:operation name="getBookChapter" path="/books/{id}/chapter"> + <jaxrs:param name="id" type="PATH"/> + </jaxrs:operation> + </jaxrs:resource> + <jaxrs:resource name="org.apache.cxf.systest.jaxrs.ChapterNoAnnotations"> + <jaxrs:operation name="getItself" verb="GET"/> + </jaxrs:resource> + </jaxrs:model> + </jaxrs:server> <bean id="jaxbProvider" class="org.apache.cxf.jaxrs.provider.JAXBElementProvider"> <property name="schemaHandler" ref="schemaHolder"/> Modified: cxf/trunk/systests/src/test/resources/jaxrs_proxy/WEB-INF/beans.xml URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/resources/jaxrs_proxy/WEB-INF/beans.xml?rev=777126&r1=777125&r2=777126&view=diff ============================================================================== --- cxf/trunk/systests/src/test/resources/jaxrs_proxy/WEB-INF/beans.xml (original) +++ cxf/trunk/systests/src/test/resources/jaxrs_proxy/WEB-INF/beans.xml Thu May 21 14:17:30 2009 @@ -47,8 +47,16 @@ <ref bean="bookstoreInterface"/> </jaxrs:serviceBeans> </jaxrs:server> - <bean id="bookstore" scope="prototype" class="org.apache.cxf.systest.jaxrs.BookStore"/> - <bean id="bookstoreInterface" scope="prototype" class="org.apache.cxf.systest.jaxrs.BookStoreWithInterface"/> + <bean id="bookstore" class="org.apache.cxf.systest.jaxrs.BookStore"/> + <bean id="bookstoreInterface" class="org.apache.cxf.systest.jaxrs.BookStoreWithInterface"/> + + <jaxrs:server id="bookservice2" address="/2" + modelRef="classpath:/org/apache/cxf/systest/jaxrs/resources/resources.xml"> + <jaxrs:serviceBeans> + <ref bean="bookstore2"/> + </jaxrs:serviceBeans> + </jaxrs:server> + <bean id="bookstore2" class="org.apache.cxf.systest.jaxrs.BookStoreNoAnnotations"/> <aop:config> <aop:aspect id="loggingAspect" ref="simpleLogger">