[prev in list] [next in list] [prev in thread] [next in thread]
List: wink-commits
Subject: svn commit: r891814 [2/2] - in
From: jramos () apache ! org
Date: 2009-12-17 18:14:58
Message-ID: 20091217181458.E726C2388ABB () eris ! apache ! org
[Download RAW message or body]
Added: incubator/wink/trunk/wink-providers/wink-jaxbcollection-provider/src/test/java/org/apache/wink/providers/internal/JAXBCollectionXMLProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-providers/wink-jaxbcollect \
ion-provider/src/test/java/org/apache/wink/providers/internal/JAXBCollectionXMLProviderTest.java?rev=891814&view=auto
==============================================================================
--- incubator/wink/trunk/wink-providers/wink-jaxbcollection-provider/src/test/java/org/apache/wink/providers/internal/JAXBCollectionXMLProviderTest.java \
(added)
+++ incubator/wink/trunk/wink-providers/wink-jaxbcollection-provider/src/test/java/org/apache/wink/providers/internal/JAXBCollectionXMLProviderTest.java \
Thu Dec 17 18:14:57 2009 @@ -0,0 +1,704 @@
+/*******************************************************************************
+ * 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.wink.providers.internal;
+
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+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.GenericEntity;
+import javax.ws.rs.core.MediaType;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.namespace.QName;
+
+import org.apache.wink.common.annotations.Asset;
+import org.apache.wink.common.model.atom.AtomFeed;
+import org.apache.wink.common.model.atom.ObjectFactory;
+import org.apache.wink.providers.xml.JAXBArrayXmlProvider;
+import org.apache.wink.providers.xml.JAXBCollectionXmlProvider;
+import org.apache.wink.server.internal.servlet.MockServletInvocationTest;
+import org.apache.wink.test.mock.MockRequestConstructor;
+import org.apache.wink.test.mock.TestUtils;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+
+public class JAXBCollectionXMLProviderTest extends MockServletInvocationTest {
+
+ public static final String SOURCE_REQUEST =
+ "<?xml \
version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><feeds><feed \
xmlns=\"http://www.w3.org/2005/Atom\" \
xmlns:ns2=\"http://a9.com/-/spec/opensearch/1.1/\" \
xmlns:ns3=\"http://www.w3.org/1999/xhtml\"><id>0</id></feed><feed \
xmlns=\"http://www.w3.org/2005/Atom\" \
xmlns:ns2=\"http://a9.com/-/spec/opensearch/1.1/\" \
xmlns:ns3=\"http://www.w3.org/1999/xhtml\"><id>1</id></feed><feed \
xmlns=\"http://www.w3.org/2005/Atom\" \
xmlns:ns2=\"http://a9.com/-/spec/opensearch/1.1/\" \
xmlns:ns3=\"http://www.w3.org/1999/xhtml\"><id>2</id></feed></feeds>"; + public \
static final byte[] SOURCE_REQUEST_BYTES = SOURCE_REQUEST.getBytes(); + \
public static final String SOURCE_RESPONSE = + \
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><feeds><feed \
xmlns=\"http://www.w3.org/2005/Atom\" \
xmlns:ns2=\"http://a9.com/-/spec/opensearch/1.1/\" \
xmlns:ns3=\"http://www.w3.org/1999/xhtml\"><id>010</id></feed><feed \
xmlns=\"http://www.w3.org/2005/Atom\" \
xmlns:ns2=\"http://a9.com/-/spec/opensearch/1.1/\" \
xmlns:ns3=\"http://www.w3.org/1999/xhtml\"><id>110</id></feed><feed \
xmlns=\"http://www.w3.org/2005/Atom\" \
xmlns:ns2=\"http://a9.com/-/spec/opensearch/1.1/\" \
xmlns:ns3=\"http://www.w3.org/1999/xhtml\"><id>210</id></feed></feeds>"; + public \
static final String JAXBXmlType_REQUEST = + \
"<?xml version=\"1.0\" encoding=\"UTF-8\" \
standalone=\"yes\"?><JAXBXmlTypes><JAXBXmlType><id>0</id><name>0</name></JAXBXmlType>< \
JAXBXmlType><id>1</id><name>1</name></JAXBXmlType><JAXBXmlType><id>2</id><name>2</name></JAXBXmlType></JAXBXmlTypes>";
+ public static final byte[] JAXBXmlType_REQUEST_BYTES = \
JAXBXmlType_REQUEST.getBytes(); + public static final String JAXBXmlType_RESPONSE \
= + "<?xml \
version=\"1.0\" encoding=\"UTF-8\" \
standalone=\"yes\"?><JAXBXmlTypes><JAXBXmlType><id>ID0</id><name>NAME0</name></JAXBXml \
Type><JAXBXmlType><id>ID1</id><name>NAME1</name></JAXBXmlType><JAXBXmlType><id>ID2</id><name>NAME2</name></JAXBXmlType></JAXBXmlTypes>";
+ public static final String JAXBXmlRootElement_REQUEST =
+ "<?xml \
version=\"1.0\" encoding=\"UTF-8\" \
standalone=\"yes\"?><JAXBXmlRootElements><JAXBXmlRootElement><id>0</id><name>0</name>< \
/JAXBXmlRootElement><JAXBXmlRootElement><id>1</id><name>1</name></JAXBXmlRootElement>< \
JAXBXmlRootElement><id>2</id><name>2</name></JAXBXmlRootElement></JAXBXmlRootElements>";
+ public static final byte[] JAXBXmlRootElement_BYTES = \
JAXBXmlRootElement_REQUEST.getBytes(); + public static final String \
JAXBXmlRootElement_RESPONSE = + \
"<?xml version=\"1.0\" encoding=\"UTF-8\" \
standalone=\"yes\"?><JAXBXmlRootElements><JAXBXmlRootElement><id>ID0</id><name>NAME0</ \
name></JAXBXmlRootElement><JAXBXmlRootElement><id>ID1</id><name>NAME1</name></JAXBXmlR \
ootElement><JAXBXmlRootElement><id>ID2</id><name>NAME2</name></JAXBXmlRootElement></JAXBXmlRootElements>";
+
+ @Override
+ protected Class<?>[] getClasses() {
+ return new Class<?>[] {Resource.class};
+ }
+
+ @Path("jaxbresource")
+ public static class Resource {
+
+ @POST
+ @Path("jaxbelement")
+ public List<JAXBElement<AtomFeed>> createWrapped(List<JAXBElement<AtomFeed>> \
feedList) { + List<JAXBElement<AtomFeed>> wrappedFeeds = new \
ArrayList<JAXBElement<AtomFeed>>(); + for (JAXBElement<AtomFeed> feed : \
feedList) { + AtomFeed atomFeed = new AtomFeed();
+ atomFeed.setId(feed.getValue().getId() + 10);
+ JAXBElement<AtomFeed> wrappedFeed = new \
ObjectFactory().createFeed(atomFeed); + wrappedFeeds.add(wrappedFeed);
+ }
+ return wrappedFeeds;
+ }
+
+ @POST
+ @Path("xmlrootwithfactorycollection")
+ public List<AtomFeed> createBareCollection(List<AtomFeed> feedList) {
+ List<AtomFeed> feeds = new ArrayList<AtomFeed>();
+ for (AtomFeed feed : feedList) {
+ AtomFeed atomFeed = new AtomFeed();
+ atomFeed.setId(feed.getId() + 10);
+ feeds.add(atomFeed);
+ }
+ return feeds;
+ }
+
+ @POST
+ @Path("xmlrootwithfactoryarray")
+ public AtomFeed[] createBareArray(AtomFeed[] feedList) {
+ List<AtomFeed> feeds = new ArrayList<AtomFeed>();
+ for (AtomFeed feed : feedList) {
+ AtomFeed atomFeed = new AtomFeed();
+ atomFeed.setId(feed.getId() + 10);
+ feeds.add(atomFeed);
+ }
+ return feeds.toArray(new AtomFeed[] {});
+ }
+
+ @POST
+ @Path("xmltypecollection")
+ public List<JAXBElement<JAXBXmlType>> \
createxmltypeCollection(List<JAXBXmlType> resource) { + \
List<JAXBElement<JAXBXmlType>> ret = new ArrayList<JAXBElement<JAXBXmlType>>(); + \
JAXBXmlType s = null; + for (JAXBXmlType type : resource) {
+ s = new JAXBXmlType();
+ s.setId("ID" + type.getId());
+ s.setName("NAME" + type.getName());
+ JAXBElement<JAXBXmlType> element =
+ new JAXBElement<JAXBXmlType>(new QName("JAXBXmlType"), \
JAXBXmlType.class, s); + ret.add(element);
+ }
+ return ret;
+ }
+
+ @POST
+ @Path("xmltypearray")
+ public JAXBXmlType[] createxmltypeArray(JAXBXmlType[] resource) {
+ JAXBXmlType[] ret = new JAXBXmlType[resource.length];
+ JAXBXmlType s = null;
+ int i = 0;
+ for (JAXBXmlType type : resource) {
+ s = new JAXBXmlType();
+ s.setId("ID" + type.getId());
+ s.setName("NAME" + type.getId());
+ ret[i++] = s;
+ }
+ return ret;
+ }
+
+ @POST
+ @Path("xmlrootnofactorycollection")
+ public List<JAXBXmlRootElement> createXmlRoot(List<JAXBXmlRootElement> \
resource) { + List<JAXBXmlRootElement> ret = new \
ArrayList<JAXBXmlRootElement>(); + JAXBXmlRootElement s = null;
+ for (int i = 0; i < resource.size(); ++i) {
+ s = new JAXBXmlRootElement();
+ s.setId("ID" + resource.get(i).getId());
+ s.setName("NAME" + resource.get(i).getName());
+ ret.add(s);
+ }
+ return ret;
+ }
+
+ @POST
+ @Path("xmlrootnofactoryarray")
+ public JAXBXmlRootElement[] createXmlRoot(JAXBXmlRootElement[] resource) {
+ JAXBXmlRootElement[] ret = new JAXBXmlRootElement[resource.length];
+ JAXBXmlRootElement s = null;
+ for (int i = 0; i < resource.length; ++i) {
+ s = new JAXBXmlRootElement();
+ s.setId("ID" + resource[i].getId());
+ s.setName("NAME" + resource[i].getName());
+ ret[i] = s;
+ }
+ return ret;
+ }
+
+ @GET
+ @Path("xmltypenofactorycollection")
+ public List<JAXBXmlType> getXmltypeNoFactoryCollection() {
+ List<JAXBXmlType> ret = new ArrayList<JAXBXmlType>();
+ JAXBXmlType s = null;
+ for (int i = 0; i < 3; ++i) {
+ s = new JAXBXmlType();
+ s.setId("ID" + i);
+ s.setName("NAME" + i);
+ ret.add(s);
+ }
+ return ret;
+ }
+
+ @GET
+ @Path("xmltypenofactoryarray")
+ public JAXBXmlType[] getXmltypeNoFactoryArray() {
+ List<JAXBXmlType> ret = new ArrayList<JAXBXmlType>();
+ JAXBXmlType s = null;
+ for (int i = 0; i < 3; ++i) {
+ s = new JAXBXmlType();
+ s.setId("ID" + i);
+ s.setName("NAME" + i);
+ ret.add(s);
+ }
+ return ret.toArray(new JAXBXmlType[] {});
+ }
+
+ @POST
+ @Path("xmlassetcollection")
+ public List<TestAsset> getAsset(List<TestAsset> asset) {
+ return asset;
+ }
+ }
+
+ @Asset
+ public static class TestAsset {
+
+ JAXBXmlType xml;
+
+ @Produces(MediaType.TEXT_XML)
+ public JAXBXmlType getJAXB() {
+ return xml;
+ }
+
+ @Consumes(MediaType.TEXT_XML)
+ public void setJAXB(JAXBXmlType jaxbObject) {
+ xml = jaxbObject;
+ }
+ }
+
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "JAXBXmlType", propOrder = {"id", "name"})
+ public static class JAXBXmlType {
+
+ @XmlElement(required = true)
+ private String id;
+ @XmlElement(required = true)
+ private String name;
+
+ public JAXBXmlType() {
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ }
+
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "JAXBXmlRootElement", propOrder = {"id", "name"})
+ @XmlRootElement(name = "JAXBXmlRootElement")
+ public static class JAXBXmlRootElement {
+
+ @XmlElement(required = true)
+ private String id;
+ @XmlElement(required = true)
+ private String name;
+
+ public JAXBXmlRootElement() {
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ }
+
+ public void testJAXBCollectionXMLProviderIsReadableCollection() throws Exception \
{ + JAXBCollectionXmlProvider provider = new JAXBCollectionXmlProvider();
+
+ GenericEntity<List<AtomFeed>> type1 =
+ new GenericEntity<List<AtomFeed>>(new ArrayList<AtomFeed>()) {
+ };
+ assertTrue(provider.isReadable(type1.getRawType(),
+ type1.getType(),
+ null,
+ new MediaType("text", "xml")));
+ assertTrue(provider.isReadable(type1.getRawType(),
+ type1.getType(),
+ null,
+ new MediaType("application", "xml")));
+ assertTrue(provider.isReadable(type1.getRawType(),
+ type1.getType(),
+ null,
+ new MediaType("application", "atom+xml")));
+ assertTrue(provider.isReadable(type1.getRawType(),
+ type1.getType(),
+ null,
+ new MediaType("application", \
"atomsvc+xml"))); +
+ GenericEntity<List<JAXBElement<AtomFeed>>> type2 =
+ new GenericEntity<List<JAXBElement<AtomFeed>>>(new \
ArrayList<JAXBElement<AtomFeed>>()) { + };
+ assertTrue(provider.isReadable(type2.getRawType(),
+ type2.getType(),
+ null,
+ new MediaType("text", "xml")));
+ assertTrue(provider.isReadable(type2.getRawType(),
+ type2.getType(),
+ null,
+ new MediaType("application", "xml")));
+ assertTrue(provider.isReadable(type2.getRawType(),
+ type2.getType(),
+ null,
+ new MediaType("application", "atom+xml")));
+ assertTrue(provider.isReadable(type2.getRawType(),
+ type2.getType(),
+ null,
+ new MediaType("application", \
"atomsvc+xml"))); +
+ GenericEntity<List<String>> type3 =
+ new GenericEntity<List<String>>(new ArrayList<String>()) {
+ };
+ assertFalse(provider.isReadable(type3.getRawType(),
+ type3.getType(),
+ null,
+ new MediaType("text", "xml")));
+ assertFalse(provider.isReadable(type3.getRawType(),
+ type3.getType(),
+ null,
+ new MediaType("application", "xml")));
+ assertFalse(provider.isReadable(type3.getRawType(),
+ type3.getType(),
+ null,
+ new MediaType("application", "atom+xml")));
+ assertFalse(provider.isReadable(type3.getRawType(),
+ type3.getType(),
+ null,
+ new MediaType("application", \
"atomsvc+xml"))); + }
+
+ public void testJAXBCollectionXMLProviderIsReadableArray() throws Exception {
+ JAXBArrayXmlProvider provider = new JAXBArrayXmlProvider();
+
+ assertTrue(provider.isReadable(AtomFeed[].class,
+ AtomFeed[].class,
+ null,
+ new MediaType("text", "xml")));
+ assertTrue(provider.isReadable(AtomFeed[].class,
+ AtomFeed[].class,
+ null,
+ new MediaType("application", "xml")));
+ assertTrue(provider.isReadable(AtomFeed[].class,
+ AtomFeed[].class,
+ null,
+ new MediaType("application", "atom+xml")));
+ assertTrue(provider.isReadable(AtomFeed[].class,
+ AtomFeed[].class,
+ null,
+ new MediaType("application", \
"atomsvc+xml"))); +
+ assertFalse(provider.isReadable(JAXBElement[].class,
+ JAXBElement[].class,
+ null,
+ new MediaType("text", "xml")));
+ assertFalse(provider.isReadable(JAXBElement[].class,
+ JAXBElement[].class,
+ null,
+ new MediaType("application", "xml")));
+ assertFalse(provider.isReadable(JAXBElement[].class,
+ JAXBElement[].class,
+ null,
+ new MediaType("application", "atom+xml")));
+ assertFalse(provider.isReadable(JAXBElement[].class,
+ JAXBElement[].class,
+ null,
+ new MediaType("application", \
"atomsvc+xml"))); +
+ assertFalse(provider.isReadable(String[].class, String[].class, null, new \
MediaType("text", + \
"xml"))); + assertFalse(provider.isReadable(String[].class,
+ String[].class,
+ null,
+ new MediaType("application", "xml")));
+ assertFalse(provider.isReadable(String[].class,
+ String[].class,
+ null,
+ new MediaType("application", "atom+xml")));
+ assertFalse(provider.isReadable(String[].class,
+ String[].class,
+ null,
+ new MediaType("application", \
"atomsvc+xml"))); + }
+
+ public void testJAXBCollectionXMLProviderIsWritableCollection() throws Exception \
{ + JAXBCollectionXmlProvider provider = new JAXBCollectionXmlProvider();
+
+ GenericEntity<List<AtomFeed>> type1 =
+ new GenericEntity<List<AtomFeed>>(new ArrayList<AtomFeed>()) {
+ };
+ assertTrue(provider.isWriteable(type1.getRawType(),
+ type1.getType(),
+ null,
+ new MediaType("text", "xml")));
+ assertTrue(provider.isWriteable(type1.getRawType(),
+ type1.getType(),
+ null,
+ new MediaType("application", "xml")));
+ assertTrue(provider.isWriteable(type1.getRawType(),
+ type1.getType(),
+ null,
+ new MediaType("application", "atom+xml")));
+ assertTrue(provider.isWriteable(type1.getRawType(),
+ type1.getType(),
+ null,
+ new MediaType("application", \
"atomsvc+xml"))); +
+ GenericEntity<List<JAXBElement<AtomFeed>>> type2 =
+ new GenericEntity<List<JAXBElement<AtomFeed>>>(new \
ArrayList<JAXBElement<AtomFeed>>()) { + };
+ assertTrue(provider.isWriteable(type2.getRawType(),
+ type2.getType(),
+ null,
+ new MediaType("text", "xml")));
+ assertTrue(provider.isWriteable(type2.getRawType(),
+ type2.getType(),
+ null,
+ new MediaType("application", "xml")));
+ assertTrue(provider.isWriteable(type2.getRawType(),
+ type2.getType(),
+ null,
+ new MediaType("application", "atom+xml")));
+ assertTrue(provider.isWriteable(type2.getRawType(),
+ type2.getType(),
+ null,
+ new MediaType("application", \
"atomsvc+xml"))); +
+ GenericEntity<List<String>> type3 =
+ new GenericEntity<List<String>>(new ArrayList<String>()) {
+ };
+ assertFalse(provider.isWriteable(type3.getRawType(),
+ type3.getType(),
+ null,
+ new MediaType("text", "xml")));
+ assertFalse(provider.isWriteable(type3.getRawType(),
+ type3.getType(),
+ null,
+ new MediaType("application", "xml")));
+ assertFalse(provider.isWriteable(type3.getRawType(),
+ type3.getType(),
+ null,
+ new MediaType("application", "atom+xml")));
+ assertFalse(provider.isWriteable(type3.getRawType(),
+ type3.getType(),
+ null,
+ new MediaType("application", \
"atomsvc+xml"))); + }
+
+ public void testJAXBCollectionXMLProviderIsWritableArray() throws Exception {
+ JAXBArrayXmlProvider provider = new JAXBArrayXmlProvider();
+
+ assertTrue(provider.isWriteable(AtomFeed[].class,
+ AtomFeed[].class,
+ null,
+ new MediaType("text", "xml")));
+ assertTrue(provider.isWriteable(AtomFeed[].class,
+ AtomFeed[].class,
+ null,
+ new MediaType("application", "xml")));
+ assertTrue(provider.isWriteable(AtomFeed[].class,
+ AtomFeed[].class,
+ null,
+ new MediaType("application", "atom+xml")));
+ assertTrue(provider.isWriteable(AtomFeed[].class,
+ AtomFeed[].class,
+ null,
+ new MediaType("application", \
"atomsvc+xml"))); +
+ assertFalse(provider.isWriteable(JAXBElement[].class,
+ JAXBElement[].class,
+ null,
+ new MediaType("text", "xml")));
+ assertFalse(provider.isWriteable(JAXBElement[].class,
+ JAXBElement[].class,
+ null,
+ new MediaType("application", "xml")));
+ assertFalse(provider.isWriteable(JAXBElement[].class,
+ JAXBElement[].class,
+ null,
+ new MediaType("application", "atom+xml")));
+ assertFalse(provider.isWriteable(JAXBElement[].class,
+ JAXBElement[].class,
+ null,
+ new MediaType("application", \
"atomsvc+xml"))); +
+ assertFalse(provider.isWriteable(String[].class,
+ String[].class,
+ null,
+ new MediaType("text", "xml")));
+ assertFalse(provider.isWriteable(String[].class,
+ String[].class,
+ null,
+ new MediaType("application", "xml")));
+ assertFalse(provider.isWriteable(String[].class,
+ String[].class,
+ null,
+ new MediaType("application", "atom+xml")));
+ assertFalse(provider.isWriteable(String[].class,
+ String[].class,
+ null,
+ new MediaType("application", \
"atomsvc+xml"))); + }
+
+ public void testJAXBElementCollection() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("POST",
+ "/jaxbresource/jaxbelement",
+ "text/xml",
+ "text/xml",
+ SOURCE_REQUEST_BYTES);
+ MockHttpServletResponse invoke = invoke(request);
+ assertEquals(200, invoke.getStatus());
+
+ String[] elements =
+ getElementsFromList("<feeds>", "</feeds>", "<feed", \
invoke.getContentAsString()); + assertEquals(4, elements.length);
+
+ AtomFeed feed = null;
+ for (int i = 1; i < elements.length; ++i) {
+ feed =
+ (AtomFeed)((JAXBElement<?>)unmarshallElement(AtomFeed.class, "<feed" \
+ elements[i])) + .getValue();
+ assertEquals("" + (i - 1) + "10", feed.getId());
+ }
+ }
+
+ public void testJAXBObjectCollection() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor
+ .constructMockRequest("POST",
+ "/jaxbresource/xmlrootwithfactorycollection",
+ "text/xml",
+ "text/xml",
+ SOURCE_REQUEST_BYTES);
+ MockHttpServletResponse invoke = invoke(request);
+ assertEquals(200, invoke.getStatus());
+
+ String[] elements =
+ getElementsFromList("<feeds>", "</feeds>", "<feed", \
invoke.getContentAsString()); + assertEquals(4, elements.length);
+
+ AtomFeed feed = null;
+ for (int i = 1; i < elements.length; ++i) {
+ feed =
+ (AtomFeed)((JAXBElement<?>)unmarshallElement(AtomFeed.class, "<feed" \
+ elements[i])) + .getValue();
+ assertEquals("" + (i - 1) + "10", feed.getId());
+ }
+ }
+
+ public void testJAXBObjectArray() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("POST",
+ \
"/jaxbresource/xmlrootwithfactoryarray", + \
"text/xml", + "text/xml",
+ SOURCE_REQUEST_BYTES);
+ MockHttpServletResponse invoke = invoke(request);
+ assertEquals(200, invoke.getStatus());
+
+ String[] elements =
+ getElementsFromList("<feeds>", "</feeds>", "<feed", \
invoke.getContentAsString()); + assertEquals(4, elements.length);
+
+ AtomFeed feed = null;
+ for (int i = 1; i < elements.length; ++i) {
+ feed =
+ (AtomFeed)((JAXBElement<?>)unmarshallElement(AtomFeed.class, "<feed" \
+ elements[i])) + .getValue();
+ assertEquals("" + (i - 1) + "10", feed.getId());
+ }
+ }
+
+ public void testXMLTypeNoFactoryCollection() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("GET",
+ \
"/jaxbresource/xmltypenofactorycollection", + \
"text/xml", + "text/xml",
+ null);
+ MockHttpServletResponse invoke = invoke(request);
+ assertEquals(200, invoke.getStatus());
+ String msg =
+ TestUtils.diffIgnoreUpdateWithAttributeQualifier(JAXBXmlType_RESPONSE, \
invoke + .getContentAsString());
+ assertNull(msg, msg);
+ }
+
+ public void testXMLTypeNoFactoryArray() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("GET",
+ \
"/jaxbresource/xmltypenofactoryarray", + \
"text/xml", + "text/xml",
+ null);
+ MockHttpServletResponse invoke = invoke(request);
+ assertEquals(200, invoke.getStatus());
+ String msg =
+ TestUtils.diffIgnoreUpdateWithAttributeQualifier(JAXBXmlType_RESPONSE, \
invoke + .getContentAsString());
+ assertNull(msg, msg);
+ }
+
+ public void testXMLTypeCollection() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("POST",
+ \
"/jaxbresource/xmltypecollection", + \
"text/xml", + "text/xml",
+ JAXBXmlType_REQUEST_BYTES);
+ MockHttpServletResponse invoke = invoke(request);
+ assertEquals(200, invoke.getStatus());
+ System.out.println(invoke.getContentAsString());
+ String msg =
+ TestUtils.diffIgnoreUpdateWithAttributeQualifier(JAXBXmlType_RESPONSE, \
invoke + .getContentAsString());
+ assertNull(msg, msg);
+ }
+
+ public void testXMLTypeArray() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("POST",
+ \
"/jaxbresource/xmltypearray", + \
"text/xml", + "text/xml",
+ JAXBXmlType_REQUEST_BYTES);
+ MockHttpServletResponse invoke = invoke(request);
+ assertEquals(200, invoke.getStatus());
+ String msg =
+ TestUtils.diffIgnoreUpdateWithAttributeQualifier(JAXBXmlType_RESPONSE, \
invoke + .getContentAsString());
+ assertNull(msg, msg);
+ }
+
+ public void testXmlRootCollection() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("POST",
+ \
"/jaxbresource/xmlrootnofactorycollection", + \
"text/xml", + "text/xml",
+ JAXBXmlRootElement_BYTES);
+ MockHttpServletResponse invoke = invoke(request);
+ assertEquals(200, invoke.getStatus());
+ String msg =
+ TestUtils.diffIgnoreUpdateWithAttributeQualifier(JAXBXmlRootElement_RESPONSE, \
invoke + .getContentAsString());
+ assertNull(msg, msg);
+ }
+
+ public void testXmlRootArray() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("POST",
+ \
"/jaxbresource/xmlrootnofactoryarray", + \
"text/xml", + "text/xml",
+ JAXBXmlRootElement_BYTES);
+ MockHttpServletResponse invoke = invoke(request);
+ assertEquals(200, invoke.getStatus());
+ String msg =
+ TestUtils.diffIgnoreUpdateWithAttributeQualifier(JAXBXmlRootElement_RESPONSE, \
invoke + .getContentAsString());
+ assertNull(msg, msg);
+ }
+
+ private static String[] getElementsFromList(String rootStartTag,
+ String rootEndTag,
+ String elementStart,
+ String content) {
+ assertTrue(content.indexOf(rootStartTag) != -1);
+ assertTrue(content.indexOf(rootEndTag) != -1);
+ content =
+ content.substring(content.indexOf(rootStartTag) + rootStartTag.length(), \
content + .indexOf(rootEndTag));
+ return content.split(elementStart);
+ }
+
+ private static Object unmarshallElement(Class<?> type, String response) throws \
JAXBException { + JAXBContext context = JAXBContext.newInstance(type);
+ Unmarshaller unmarshaller = context.createUnmarshaller();
+ return unmarshaller.unmarshal(new \
ByteArrayInputStream(response.getBytes())); + }
+}
Added: incubator/wink/trunk/wink-providers/wink-jaxbcollection-provider/src/test/java/org/apache/wink/providers/internal/jaxb/ObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-providers/wink-jaxbcollect \
ion-provider/src/test/java/org/apache/wink/providers/internal/jaxb/ObjectFactory.java?rev=891814&view=auto
==============================================================================
--- incubator/wink/trunk/wink-providers/wink-jaxbcollection-provider/src/test/java/org/apache/wink/providers/internal/jaxb/ObjectFactory.java \
(added)
+++ incubator/wink/trunk/wink-providers/wink-jaxbcollection-provider/src/test/java/org/apache/wink/providers/internal/jaxb/ObjectFactory.java \
Thu Dec 17 18:14:57 2009 @@ -0,0 +1,30 @@
+/*******************************************************************************
+ * 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.wink.providers.internal.jaxb;
+
+import javax.xml.bind.annotation.XmlRegistry;
+
+@XmlRegistry
+public class ObjectFactory {
+
+ public Person createPerson() {
+ return new Person();
+ }
+}
Added: incubator/wink/trunk/wink-providers/wink-jaxbcollection-provider/src/test/java/org/apache/wink/providers/internal/jaxb/Person.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-providers/wink-jaxbcollect \
ion-provider/src/test/java/org/apache/wink/providers/internal/jaxb/Person.java?rev=891814&view=auto
==============================================================================
--- incubator/wink/trunk/wink-providers/wink-jaxbcollection-provider/src/test/java/org/apache/wink/providers/internal/jaxb/Person.java \
(added)
+++ incubator/wink/trunk/wink-providers/wink-jaxbcollection-provider/src/test/java/org/apache/wink/providers/internal/jaxb/Person.java \
Thu Dec 17 18:14:57 2009 @@ -0,0 +1,47 @@
+/*******************************************************************************
+ * 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.wink.providers.internal.jaxb;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class Person {
+
+ private String name;
+
+ private String desc;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDesc() {
+ return desc;
+ }
+
+ public void setDesc(String desc) {
+ this.desc = desc;
+ }
+
+}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic