Author: sergeyb
Date: Wed Aug 12 09:11:08 2009
New Revision: 803419
URL: http://svn.apache.org/viewvc?rev=803419&view=rev
Log:
JAX-RS : Adding global marshalAsJaxbElement property, ignorable Aegis
collection tests, RuntimeExceptionMapper test
Added:
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/RuntimeExceptionMapper.java
(with props)
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisJSONProviderTest.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/DataBindingJSONProviderTest.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/CollectionsResource.java
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringProviderTest.java
cxf/trunk/systests/src/test/resources/jaxrs_spring_providers/WEB-INF/beans.xml
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java?rev=803419&r1=803418&r2=803419&view=diff
==============================================================================
---
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
(original)
+++
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
Wed Aug 12 09:11:08 2009
@@ -85,6 +85,7 @@
protected Map<String, String> jaxbElementClassMap;
protected boolean unmarshalAsJaxbElement;
+ protected boolean marshalAsJaxbElement;
private MessageContext mc;
private Schema schema;
@@ -96,6 +97,10 @@
unmarshalAsJaxbElement = value;
}
+ public void setMarshallAsJaxbElement(boolean value) {
+ marshalAsJaxbElement = value;
+ }
+
public void setJaxbElementClassNames(List<String> names) {
jaxbElementClassNames = names;
}
@@ -107,17 +112,21 @@
@SuppressWarnings("unchecked")
protected Object convertToJaxbElementIfNeeded(Object obj, Class<?> cls,
Type genericType)
throws Exception {
+
+ QName name = null;
if (jaxbElementClassNames != null &&
jaxbElementClassNames.contains(cls.getName())
|| jaxbElementClassMap != null &&
jaxbElementClassMap.containsKey(cls.getName())) {
- QName name = null;
if (jaxbElementClassMap != null) {
name =
convertStringToQName(jaxbElementClassMap.get(cls.getName()));
} else {
name = getJaxbQName(cls, genericType, obj, false);
}
- if (name != null) {
- return new JAXBElement(name, cls, null, obj);
- }
+ }
+ if (name == null && marshalAsJaxbElement) {
+ name = convertStringToQName(cls.getName());
+ }
+ if (name != null) {
+ return new JAXBElement(name, cls, null, obj);
}
return obj;
}
@@ -249,7 +258,7 @@
}
public boolean isReadable(Class<?> type, Type genericType, Annotation[]
anns, MediaType mt) {
- return isSupported(type, genericType, anns);
+ return marshalAsJaxbElement || isSupported(type, genericType, anns);
}
public void setSchemaLocations(List<String> locations) {
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java?rev=803419&r1=803418&r2=803419&view=diff
==============================================================================
---
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
(original)
+++
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
Wed Aug 12 09:11:08 2009
@@ -83,7 +83,7 @@
}
}
- return isSupported(type, genericType, anns);
+ return super.isReadable(type, genericType, anns, mt);
}
@Context
Modified:
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisJSONProviderTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisJSONProviderTest.java?rev=803419&r1=803418&r2=803419&view=diff
==============================================================================
---
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisJSONProviderTest.java
(original)
+++
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisJSONProviderTest.java
Wed Aug 12 09:11:08 2009
@@ -21,7 +21,10 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import javax.ws.rs.core.MediaType;
@@ -30,11 +33,13 @@
import org.apache.cxf.jaxrs.fortest.AegisTestBean;
import org.apache.cxf.jaxrs.impl.MetadataMap;
+import org.apache.cxf.jaxrs.resources.CollectionsResource;
import org.apache.cxf.jaxrs.resources.ManyTags;
import org.apache.cxf.jaxrs.resources.TagVO;
import org.apache.cxf.jaxrs.resources.Tags;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Test;
public class AegisJSONProviderTest extends Assert {
@@ -129,6 +134,27 @@
}
@Test
+ @Ignore
+ public void testWriteCollection() throws Exception {
+ AegisJSONProvider p = new AegisJSONProvider();
+ AbstractAegisProvider.clearContexts();
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ AegisTestBean bean = new AegisTestBean();
+ bean.setBoolValue(Boolean.TRUE);
+ bean.setStrValue("hovercraft");
+ List<AegisTestBean> beans = new ArrayList<AegisTestBean>();
+ beans.add(bean);
+ Method m = CollectionsResource.class.getMethod("getAegisBeans", new
Class[]{});
+ p.writeTo(beans, (Class)m.getReturnType(), m.getGenericReturnType(),
+ AegisTestBean.class.getAnnotations(),
+ MediaType.APPLICATION_JSON_TYPE, new MetadataMap<String,
Object>(), os);
+ byte[] bytes = os.toByteArray();
+ String json = new String(bytes, "utf-8");
+ System.out.println(json);
+ //assertEquals(data, json);
+ }
+
+ @Test
public void testManyTags() throws Exception {
AegisJSONProvider p = new AegisJSONProvider();
AbstractAegisProvider.clearContexts();
Modified:
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/DataBindingJSONProviderTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/DataBindingJSONProviderTest.java?rev=803419&r1=803418&r2=803419&view=diff
==============================================================================
---
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/DataBindingJSONProviderTest.java
(original)
+++
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/DataBindingJSONProviderTest.java
Wed Aug 12 09:11:08 2009
@@ -186,6 +186,11 @@
return new Book();
}
+// @Path("/books/{bookId}/{new}")
+// public List<Book> getNewBook3() {
+// return null;
+// }
+
@POST
public void setNewBook(Book b) {
}
Modified:
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java?rev=803419&r1=803418&r2=803419&view=diff
==============================================================================
---
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java
(original)
+++
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java
Wed Aug 12 09:11:08 2009
@@ -176,25 +176,35 @@
@Test
public void testWriteWithoutXmlRootElement() throws Exception {
- doTestWriteWithoutXmlRootElement("SuperBook", false);
+ doTestWriteWithoutXmlRootElement("SuperBook", false, false);
}
@Test
public void testWriteWithoutXmlRootElement2() throws Exception {
- doTestWriteWithoutXmlRootElement("SuperBook", true);
+ doTestWriteWithoutXmlRootElement("SuperBook", true, false);
}
@Test
public void testWriteWithoutXmlRootElement3() throws Exception {
- doTestWriteWithoutXmlRootElement("{http://books}SuperBook", false);
+ doTestWriteWithoutXmlRootElement("{http://books}SuperBook", false,
false);
}
- public void doTestWriteWithoutXmlRootElement(String name, boolean
unmarshalAsJaxbElement)
+ @Test
+ public void testWriteWithoutXmlRootElement4() throws Exception {
+ doTestWriteWithoutXmlRootElement("SuperBook", true, true);
+ }
+
+ public void doTestWriteWithoutXmlRootElement(String name, boolean
unmarshalAsJaxbElement,
+ boolean marshalAsJaxbElement)
throws Exception {
JAXBElementProvider provider = new JAXBElementProvider();
- provider.setJaxbElementClassMap(Collections.singletonMap(
- org.apache.cxf.jaxrs.fortest.jaxb.SuperBook.class.getName(),
- name));
+ if (!marshalAsJaxbElement) {
+ provider.setJaxbElementClassMap(Collections.singletonMap(
+ org.apache.cxf.jaxrs.fortest.jaxb.SuperBook.class.getName(),
+ name));
+ } else {
+ provider.setMarshallAsJaxbElement(marshalAsJaxbElement);
+ }
org.apache.cxf.jaxrs.fortest.jaxb.SuperBook b =
new org.apache.cxf.jaxrs.fortest.jaxb.SuperBook("CXF in Action",
123L, 124L);
Modified:
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/CollectionsResource.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/CollectionsResource.java?rev=803419&r1=803418&r2=803419&view=diff
==============================================================================
---
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/CollectionsResource.java
(original)
+++
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/CollectionsResource.java
Wed Aug 12 09:11:08 2009
@@ -26,7 +26,15 @@
import javax.ws.rs.POST;
import javax.xml.bind.JAXBElement;
+import org.apache.cxf.jaxrs.fortest.AegisTestBean;
+
public class CollectionsResource {
+
+ @GET
+ public List<AegisTestBean> getAegisBeans() {
+ return null;
+ }
+
@GET
public List<Book> getBooks() {
return null;
Modified:
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringProviderTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringProviderTest.java?rev=803419&r1=803418&r2=803419&view=diff
==============================================================================
---
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringProviderTest.java
(original)
+++
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringProviderTest.java
Wed Aug 12 09:11:08 2009
@@ -142,6 +142,23 @@
}
@Test
+ public void testGetBookNotExistent() throws Exception {
+
+ String endpointAddress =
+ "http://localhost:9080/webapp/bookstore/nonexistent";
+ URL url = new URL(endpointAddress);
+ HttpURLConnection connect = (HttpURLConnection)url.openConnection();
+ connect.addRequestProperty("Accept", "application/xml");
+ assertEquals(405, connect.getResponseCode());
+ InputStream in = connect.getErrorStream();
+ assertNotNull(in);
+
+ assertEquals("Exception is not mapped correctly",
+ "Nonexistent method",
+ getStringFromInputStream(in).trim());
+ }
+
+ @Test
public void testPostPetStatus() throws Exception {
String endpointAddress =
Added:
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/RuntimeExceptionMapper.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/RuntimeExceptionMapper.java?rev=803419&view=auto
==============================================================================
---
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/RuntimeExceptionMapper.java
(added)
+++
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/RuntimeExceptionMapper.java
Wed Aug 12 09:11:08 2009
@@ -0,0 +1,39 @@
+/**
+ * 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.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+import javax.ws.rs.ext.ExceptionMapper;
+
+public class RuntimeExceptionMapper implements
ExceptionMapper<RuntimeException> {
+
+ @Context
+ private UriInfo ui;
+
+ public Response toResponse(RuntimeException exception) {
+ String path = ui.getPath();
+ if (path.endsWith("nonexistent")) {
+ return Response.status(405).type("text/plain").entity("Nonexistent
method").build();
+ }
+ return null;
+ }
+
+}
Propchange:
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/RuntimeExceptionMapper.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/RuntimeExceptionMapper.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
cxf/trunk/systests/src/test/resources/jaxrs_spring_providers/WEB-INF/beans.xml
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/resources/jaxrs_spring_providers/WEB-INF/beans.xml?rev=803419&r1=803418&r2=803419&view=diff
==============================================================================
---
cxf/trunk/systests/src/test/resources/jaxrs_spring_providers/WEB-INF/beans.xml
(original)
+++
cxf/trunk/systests/src/test/resources/jaxrs_spring_providers/WEB-INF/beans.xml
Wed Aug 12 09:11:08 2009
@@ -35,6 +35,7 @@
<jaxrs:providers>
<bean class="org.apache.cxf.systest.jaxrs.BadgerFishProvider"/>
<ref bean="exceptionMapper"/>
+ <ref bean="exceptionMapper2"/>
</jaxrs:providers>
</jaxrs:server>
<bean id="bookstore" scope="prototype"
class="org.apache.cxf.systest.jaxrs.BookStore"/>
@@ -42,4 +43,5 @@
<bean id="exceptionMapper"
class="org.apache.cxf.systest.jaxrs.BookExceptionMapper">
<property name="toHandle" value="true"/>
</bean>
+ <bean id="exceptionMapper2"
class="org.apache.cxf.systest.jaxrs.RuntimeExceptionMapper"/>
</beans>