Return-Path: Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: (qmail 2259 invoked from network); 5 Oct 2010 00:58:10 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 5 Oct 2010 00:58:10 -0000 Received: (qmail 83209 invoked by uid 500); 5 Oct 2010 00:58:10 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 83153 invoked by uid 500); 5 Oct 2010 00:58:10 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 83146 invoked by uid 99); 5 Oct 2010 00:58:09 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 05 Oct 2010 00:58:09 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 05 Oct 2010 00:58:08 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 8772A2388A02; Tue, 5 Oct 2010 00:57:48 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1004494 - in /cxf/trunk/rt/frontend/jaxrs/src/test: java/org/apache/cxf/jaxrs/provider/AegisElementProviderTest.java java/org/apache/cxf/jaxrs/provider/NoNamespaceAegisElementProvider.java resources/org/apache/cxf/jaxrs/provider/jsonCases.xml Date: Tue, 05 Oct 2010 00:57:48 -0000 To: commits@cxf.apache.org From: bimargulies@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20101005005748.8772A2388A02@eris.apache.org> Author: bimargulies Date: Tue Oct 5 00:57:48 2010 New Revision: 1004494 URL: http://svn.apache.org/viewvc?rev=1004494&view=rev Log: Add a test case for Aegis JAX-RS with unqualified elements Added: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/NoNamespaceAegisElementProvider.java (with props) Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisElementProviderTest.java cxf/trunk/rt/frontend/jaxrs/src/test/resources/org/apache/cxf/jaxrs/provider/jsonCases.xml Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisElementProviderTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisElementProviderTest.java?rev=1004494&r1=1004493&r2=1004494&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisElementProviderTest.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisElementProviderTest.java Tue Oct 5 00:57:48 2010 @@ -40,45 +40,47 @@ import org.junit.Before; import org.junit.Test; public class AegisElementProviderTest extends Assert { - + private Properties properties; private String simpleBeanXml; - + private String noNamespaceXml; + @Before public void before() throws InvalidPropertiesFormatException, IOException { properties = new Properties(); properties.loadFromXML(getClass().getResourceAsStream("jsonCases.xml")); simpleBeanXml = properties.getProperty("simpleBeanXml"); + noNamespaceXml = properties.getProperty("noNamespaceBeanXml"); } - + @After public void clearCache() { AbstractAegisProvider.clearContexts(); } - + @Test public void testIsWriteable() { MessageBodyWriter p = new AegisElementProvider(); assertTrue(p.isWriteable(AegisTestBean.class, null, null, null)); } - + @Test public void testIsReadable() { MessageBodyReader p = new AegisElementProvider(); assertTrue(p.isReadable(AegisTestBean.class, null, null, null)); } - - + + @Test public void testReadFrom() throws Exception { MessageBodyReader p = new AegisElementProvider(); byte[] simpleBytes = simpleBeanXml.getBytes("utf-8"); - AegisTestBean bean = p.readFrom(AegisTestBean.class, null, null, + AegisTestBean bean = p.readFrom(AegisTestBean.class, null, null, null, null, new ByteArrayInputStream(simpleBytes)); assertEquals("hovercraft", bean.getStrValue()); assertEquals(Boolean.TRUE, bean.getBoolValue()); } - + @Test public void testWriteTo() throws Exception { MessageBodyWriter p = new AegisElementProvider(); @@ -91,13 +93,25 @@ public class AegisElementProviderTest ex String xml = new String(bytes, "utf-8"); assertEquals(simpleBeanXml, xml); } - - + + @Test + public void testNoNamespaceWriteTo() throws Exception { + MessageBodyWriter p = new NoNamespaceAegisElementProvider(); + ByteArrayOutputStream os = new ByteArrayOutputStream(); + AegisTestBean bean = new AegisTestBean(); + bean.setBoolValue(Boolean.TRUE); + bean.setStrValue("hovercraft"); + p.writeTo(bean, null, null, null, null, null, os); + byte[] bytes = os.toByteArray(); + String xml = new String(bytes, "utf-8"); + assertEquals(noNamespaceXml, xml); + } + @Test public void testReadWriteComplexMap() throws Exception { - Map testMap = + Map testMap = new HashMap(); - + Class iwithMapClass = InterfaceWithMap.class; Method method = iwithMapClass.getMethod("mapFunction"); Type mapType = method.getGenericReturnType(); @@ -105,24 +119,24 @@ public class AegisElementProviderTest ex AegisTestBean bean = new AegisTestBean(); bean.setBoolValue(Boolean.TRUE); bean.setStrValue("hovercraft"); - + AegisSuperBean bean2 = new AegisSuperBean(); bean2.setBoolValue(Boolean.TRUE); bean2.setStrValue("hovercraft2"); testMap.put(bean, bean2); - - MessageBodyWriter> writer + + MessageBodyWriter> writer = new AegisElementProvider>(); ByteArrayOutputStream os = new ByteArrayOutputStream(); - + writer.writeTo(testMap, testMap.getClass(), mapType, null, null, null, os); byte[] bytes = os.toByteArray(); String xml = new String(bytes, "utf-8"); - MessageBodyReader> reader - = new AegisElementProvider>(); + MessageBodyReader> reader + = new AegisElementProvider>(); byte[] simpleBytes = xml.getBytes("utf-8"); - - Map map2 = reader.readFrom(null, mapType, null, + + Map map2 = reader.readFrom(null, mapType, null, null, null, new ByteArrayInputStream(simpleBytes)); assertEquals(1, map2.size()); Map.Entry entry = map2.entrySet().iterator().next(); @@ -132,14 +146,14 @@ public class AegisElementProviderTest ex AegisTestBean bean22 = entry.getValue(); assertEquals("hovercraft2", bean22.getStrValue()); assertEquals(Boolean.TRUE, bean22.getBoolValue()); - + } - + public static class AegisSuperBean extends AegisTestBean { } - + private static interface InterfaceWithMap { Map mapFunction(); } - + } Added: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/NoNamespaceAegisElementProvider.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/NoNamespaceAegisElementProvider.java?rev=1004494&view=auto ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/NoNamespaceAegisElementProvider.java (added) +++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/NoNamespaceAegisElementProvider.java Tue Oct 5 00:57:48 2010 @@ -0,0 +1,51 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.cxf.jaxrs.provider; + +import java.lang.reflect.Type; +import java.util.HashSet; +import java.util.Set; + +import org.apache.cxf.aegis.AegisContext; +import org.apache.cxf.aegis.type.TypeCreationOptions; + +/** + * Class that sets options to disable xml namespaces. + */ +class NoNamespaceAegisElementProvider extends AegisElementProvider { + /* + * This can't use the cache in AbstractAegisProvider. It could have its own cache. + */ + + @Override + protected AegisContext getAegisContext(Class plainClass, Type genericType) { + AegisContext context = new AegisContext(); + context.setWriteXsiTypes(writeXsiType); + context.setReadXsiTypes(readXsiType); + TypeCreationOptions tco = new TypeCreationOptions(); + tco.setQualifyElements(false); + Set rootClasses = new HashSet(); + rootClasses.add(genericType); + context.setTypeCreationOptions(tco); + context.setRootClasses(rootClasses); + context.initialize(); + return context; + } +} Propchange: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/NoNamespaceAegisElementProvider.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/NoNamespaceAegisElementProvider.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: cxf/trunk/rt/frontend/jaxrs/src/test/resources/org/apache/cxf/jaxrs/provider/jsonCases.xml URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/resources/org/apache/cxf/jaxrs/provider/jsonCases.xml?rev=1004494&r1=1004493&r2=1004494&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/test/resources/org/apache/cxf/jaxrs/provider/jsonCases.xml (original) +++ cxf/trunk/rt/frontend/jaxrs/src/test/resources/org/apache/cxf/jaxrs/provider/jsonCases.xml Tue Oct 5 00:57:48 2010 @@ -2,5 +2,6 @@ {"ns1.AegisTestBean2AegisSuperBeanMap":{"@xsi.type":"ns1:AegisTestBean2AegisSuperBeanMap","ns1.entry":{"ns1.key":{"@xsi.type":"ns2:AegisTestBean","ns2.boolValue":true,"ns2.strValue":"hovercraft"},"ns1.value":{"@xsi.type":"ns2:AegisSuperBean","ns2.boolValue":true,"ns2.strValue":"hovercraft2"}}}} <?xml version='1.0' encoding='UTF-8'?>truehovercraft]]> +<?xml version='1.0' encoding='UTF-8'?>truehovercraft]]> 127CXF]]> \ No newline at end of file