wink-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From b...@apache.org
Subject svn commit: r946218 [4/4] - in /incubator/wink/trunk: wink-assembly/apache-wink/binarydist/ wink-client/src/test/java/org/apache/wink/client/ wink-common/src/main/java/org/apache/wink/common/internal/contexts/ wink-common/src/main/java/org/apache/wink/...
Date Wed, 19 May 2010 15:22:17 GMT
Modified: incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/providers/entity/JAXBCollectionXMLProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/providers/entity/JAXBCollectionXMLProviderTest.java?rev=946218&r1=946217&r2=946218&view=diff
==============================================================================
--- incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/providers/entity/JAXBCollectionXMLProviderTest.java (original)
+++ incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/providers/entity/JAXBCollectionXMLProviderTest.java Wed May 19 15:22:13 2010
@@ -1,731 +1,731 @@
-/*******************************************************************************
- * 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.server.internal.providers.entity;
-
-import java.io.ByteArrayInputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.MatchResult;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-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.internal.providers.entity.xml.JAXBArrayXmlProvider;
-import org.apache.wink.common.internal.providers.entity.xml.JAXBCollectionXmlProvider;
-import org.apache.wink.common.model.atom.AtomFeed;
-import org.apache.wink.common.model.atom.ObjectFactory;
-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></JAXBXmlType><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></JAXBXmlRootElement><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());
-        
-        // nested elements may or may not have a namespace prefix, so...
-        String xml = invoke.getContentAsString();
-        Pattern myPattern = Pattern.compile("feeds><\\w*?:?feed");
-        Matcher matcher = myPattern.matcher(xml);
-        matcher.find();
-        // +6 to skip the "feeds>"
-        String feedString = xml.substring(matcher.start() + 6, matcher.end());
-        
-        String[] elements =
-            getElementsFromList("<feeds>", "</feeds>", feedString, invoke.getContentAsString());
-        assertEquals(4, elements.length);
-
-        AtomFeed feed = null;
-        for (int i = 1; i < elements.length; ++i) {
-            feed =
-                (AtomFeed)((JAXBElement<?>)unmarshallElement(AtomFeed.class, feedString + 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());
-        
-        // nested elements may or may not have a namespace prefix, so...
-        String xml = invoke.getContentAsString();
-        Pattern myPattern = Pattern.compile("feeds><\\w*?:?feed");
-        Matcher matcher = myPattern.matcher(xml);
-        matcher.find();
-        // +6 to skip the "feeds>"
-        String feedString = xml.substring(matcher.start() + 6, matcher.end());
-
-        String[] elements =
-            getElementsFromList("<feeds>", "</feeds>", feedString, invoke.getContentAsString());
-        assertEquals(4, elements.length);
-
-        AtomFeed feed = null;
-        for (int i = 1; i < elements.length; ++i) {
-            feed =
-                (AtomFeed)((JAXBElement<?>)unmarshallElement(AtomFeed.class, feedString + 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());
-
-        // nested elements may or may not have a namespace prefix, so...
-        String xml = invoke.getContentAsString();
-        Pattern myPattern = Pattern.compile("feeds><\\w*?:?feed");
-        Matcher matcher = myPattern.matcher(xml);
-        matcher.find();
-        // +6 to skip the "feeds>"
-        String feedString = xml.substring(matcher.start() + 6, matcher.end());
-        
-        String[] elements =
-            getElementsFromList("<feeds>", "</feeds>", feedString, invoke.getContentAsString());
-        assertEquals(4, elements.length);
-
-        AtomFeed feed = null;
-        for (int i = 1; i < elements.length; ++i) {
-            feed =
-                (AtomFeed)((JAXBElement<?>)unmarshallElement(AtomFeed.class, feedString + 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()));
-    }
-}
+/*******************************************************************************
+ * 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.server.internal.providers.entity;
+
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.MatchResult;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+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.internal.providers.entity.xml.JAXBArrayXmlProvider;
+import org.apache.wink.common.internal.providers.entity.xml.JAXBCollectionXmlProvider;
+import org.apache.wink.common.model.atom.AtomFeed;
+import org.apache.wink.common.model.atom.ObjectFactory;
+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></JAXBXmlType><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></JAXBXmlRootElement><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());
+        
+        // nested elements may or may not have a namespace prefix, so...
+        String xml = invoke.getContentAsString();
+        Pattern myPattern = Pattern.compile("feeds><\\w*?:?feed");
+        Matcher matcher = myPattern.matcher(xml);
+        matcher.find();
+        // +6 to skip the "feeds>"
+        String feedString = xml.substring(matcher.start() + 6, matcher.end());
+        
+        String[] elements =
+            getElementsFromList("<feeds>", "</feeds>", feedString, invoke.getContentAsString());
+        assertEquals(4, elements.length);
+
+        AtomFeed feed = null;
+        for (int i = 1; i < elements.length; ++i) {
+            feed =
+                (AtomFeed)((JAXBElement<?>)unmarshallElement(AtomFeed.class, feedString + 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());
+        
+        // nested elements may or may not have a namespace prefix, so...
+        String xml = invoke.getContentAsString();
+        Pattern myPattern = Pattern.compile("feeds><\\w*?:?feed");
+        Matcher matcher = myPattern.matcher(xml);
+        matcher.find();
+        // +6 to skip the "feeds>"
+        String feedString = xml.substring(matcher.start() + 6, matcher.end());
+
+        String[] elements =
+            getElementsFromList("<feeds>", "</feeds>", feedString, invoke.getContentAsString());
+        assertEquals(4, elements.length);
+
+        AtomFeed feed = null;
+        for (int i = 1; i < elements.length; ++i) {
+            feed =
+                (AtomFeed)((JAXBElement<?>)unmarshallElement(AtomFeed.class, feedString + 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());
+
+        // nested elements may or may not have a namespace prefix, so...
+        String xml = invoke.getContentAsString();
+        Pattern myPattern = Pattern.compile("feeds><\\w*?:?feed");
+        Matcher matcher = myPattern.matcher(xml);
+        matcher.find();
+        // +6 to skip the "feeds>"
+        String feedString = xml.substring(matcher.start() + 6, matcher.end());
+        
+        String[] elements =
+            getElementsFromList("<feeds>", "</feeds>", feedString, invoke.getContentAsString());
+        assertEquals(4, elements.length);
+
+        AtomFeed feed = null;
+        for (int i = 1; i < elements.length; ++i) {
+            feed =
+                (AtomFeed)((JAXBElement<?>)unmarshallElement(AtomFeed.class, feedString + 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()));
+    }
+}

Propchange: incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/providers/entity/JAXBCollectionXMLProviderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/providers/entity/JAXBCustomContextResolverCacheTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/providers/entity/JAXBElementProviderCustomNSTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/providers/entity/JAXBProviderInheritanceTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/servlet/RestServletTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/wink/trunk/wink-server/src/test/resources/org/apache/wink/server/internal/properties/WinkSystemProperties2Test.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/wink/trunk/wink-server/src/test/resources/org/apache/wink/server/internal/properties/WinkSystemProperties3Test.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/wink/trunk/wink-server/src/test/resources/org/apache/wink/server/internal/properties/WinkSystemPropertiesTest.properties
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message