The the rs/providers working with MOXy
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/43480782 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/43480782 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/43480782 Branch: refs/heads/master Commit: 434807822d07b68df50c96f005c1085a12b51e74 Parents: 8749d14 Author: Daniel Kulp <[email protected]> Authored: Wed Mar 26 19:07:01 2014 -0400 Committer: Daniel Kulp <[email protected]> Committed: Thu Mar 27 09:07:49 2014 -0400 ---------------------------------------------------------------------- .../transform/DelegatingNamespaceContext.java | 6 +++-- .../jaxrs/provider/json/utils/JSONUtils.java | 9 ++++++++ .../jaxrs/provider/json/JSONProviderTest.java | 23 ++++++++++++++++++-- 3 files changed, 34 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/43480782/core/src/main/java/org/apache/cxf/staxutils/transform/DelegatingNamespaceContext.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/cxf/staxutils/transform/DelegatingNamespaceContext.java b/core/src/main/java/org/apache/cxf/staxutils/transform/DelegatingNamespaceContext.java index 9d5737f..041b181 100644 --- a/core/src/main/java/org/apache/cxf/staxutils/transform/DelegatingNamespaceContext.java +++ b/core/src/main/java/org/apache/cxf/staxutils/transform/DelegatingNamespaceContext.java @@ -52,8 +52,10 @@ class DelegatingNamespaceContext implements NamespaceContext { } public void addPrefix(String prefix, String ns) { - namespaces.getFirst().put(prefix, ns); - prefixes.getFirst().put(ns, prefix); + if (!namespaces.isEmpty()) { + namespaces.getFirst().put(prefix, ns); + prefixes.getFirst().put(ns, prefix); + } } public String findUniquePrefix(String ns) { http://git-wip-us.apache.org/repos/asf/cxf/blob/43480782/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/utils/JSONUtils.java ---------------------------------------------------------------------- diff --git a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/utils/JSONUtils.java b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/utils/JSONUtils.java index 27642a4..348cd84 100644 --- a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/utils/JSONUtils.java +++ b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/utils/JSONUtils.java @@ -176,6 +176,15 @@ public final class JSONUtils { this.namespaceMap = nsMap; } + + public String getNamespaceURI(String arg0) { + String uri = super.getNamespaceURI(arg0); + if (uri == null) { + uri = getNamespaceContext().getNamespaceURI(arg0); + } + return uri; + } + @Override public String getAttributePrefix(int n) { QName name = getAttributeName(n); http://git-wip-us.apache.org/repos/asf/cxf/blob/43480782/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/json/JSONProviderTest.java ---------------------------------------------------------------------- diff --git a/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/json/JSONProviderTest.java b/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/json/JSONProviderTest.java index 9437bae..adccbb5 100644 --- a/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/json/JSONProviderTest.java +++ b/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/json/JSONProviderTest.java @@ -61,6 +61,7 @@ import javax.xml.stream.XMLStreamWriter; import javax.xml.transform.stream.StreamSource; import org.w3c.dom.Document; + import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.jaxrs.impl.MetadataMap; @@ -76,6 +77,7 @@ import org.apache.cxf.jaxrs.resources.jaxb.Book2; import org.apache.cxf.jaxrs.resources.jaxb.Book2NoRootElement; import org.apache.cxf.staxutils.DelegatingXMLStreamWriter; import org.apache.cxf.staxutils.StaxUtils; + import org.junit.Assert; import org.junit.Test; @@ -635,6 +637,10 @@ public class JSONProviderTest extends Assert { @Test public void testWriteToSingleQualifiedTagBadgerFish() throws Exception { JSONProvider<TagVO2> p = new JSONProvider<TagVO2>(); + Map<String, String> namespaceMap = new HashMap<String, String>(); + namespaceMap.put("http://tags", "ns2"); + p.setNamespaceMap(namespaceMap); + p.setConvention("badgerfish"); TagVO2 tag = createTag2("a", "b"); @@ -895,9 +901,10 @@ public class JSONProviderTest extends Assert { private void doTestMixedContent(String data, boolean ignore, String fileName) throws Exception { InputStream is = getClass().getResourceAsStream(fileName); - JAXBContext context = JAXBContext.newInstance(new Class[]{Books.class, Book.class}); + JAXBContext context = JAXBContext.newInstance(Books.class); Unmarshaller um = context.createUnmarshaller(); JAXBElement<?> jaxbEl = um.unmarshal(new StreamSource(is), Books.class); + JSONProvider<JAXBElement<?>> p = new JSONProvider<JAXBElement<?>>(); p.setIgnoreMixedContent(ignore); ByteArrayOutputStream os = new ByteArrayOutputStream(); @@ -1368,6 +1375,11 @@ public class JSONProviderTest extends Assert { @Test public void testOutAppendElementsSameNs() throws Exception { JSONProvider<TagVO2> provider = new JSONProvider<TagVO2>(); + + Map<String, String> namespaceMap = new HashMap<String, String>(); + namespaceMap.put("http://tags", "ns2"); + provider.setNamespaceMap(namespaceMap); + Map<String, String> map = new HashMap<String, String>(); map.put("{http://tags}thetag", "{http://tags}t"); provider.setOutAppendElements(map); @@ -1382,6 +1394,11 @@ public class JSONProviderTest extends Assert { @Test public void testOutAppendElementsDiffNs() throws Exception { JSONProvider<TagVO2> provider = new JSONProvider<TagVO2>(); + + Map<String, String> namespaceMap = new HashMap<String, String>(); + namespaceMap.put("http://tags", "ns2"); + provider.setNamespaceMap(namespaceMap); + Map<String, String> map = new HashMap<String, String>(); map.put("{http://tags}thetag", "{http://tagsvo2}t"); provider.setOutAppendElements(map); @@ -1396,6 +1413,9 @@ public class JSONProviderTest extends Assert { @Test public void testOutElementsMapLocalNsToLocalNs() throws Exception { JSONProvider<TagVO2> provider = new JSONProvider<TagVO2>(); + Map<String, String> namespaceMap = new HashMap<String, String>(); + namespaceMap.put("http://tags", "ns2"); + provider.setNamespaceMap(namespaceMap); Map<String, String> map = new HashMap<String, String>(); map.put("{http://tags}thetag", "{http://tagsvo2}t"); provider.setOutTransformElements(map); @@ -1475,7 +1495,6 @@ public class JSONProviderTest extends Assert { provider.writeTo(b, Base1.class, Base1.class, new Annotation[0], MediaType.APPLICATION_JSON_TYPE, new MetadataMap<String, Object>(), bos); - readBase(bos.toString()); }
