You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2008/09/03 05:20:37 UTC
svn commit: r691488 -
/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
Author: dkulp
Date: Tue Sep 2 20:20:37 2008
New Revision: 691488
URL: http://svn.apache.org/viewvc?rev=691488&view=rev
Log:
[CXF-1624] Check the ObjectFactory to see if the defaultNs can be set or not.
Modified:
cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
Modified: cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java?rev=691488&r1=691487&r2=691488&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java (original)
+++ cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java Tue Sep 2 20:20:37 2008
@@ -25,6 +25,7 @@
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.lang.ref.WeakReference;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -44,6 +45,7 @@
import javax.xml.bind.Marshaller;
import javax.xml.bind.SchemaOutputResolver;
import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.annotation.XmlElementDecl;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLStreamReader;
@@ -501,7 +503,8 @@
addWsAddressingTypes(classes);
for (Class<?> clz : classes) {
- if (clz.getName().endsWith("ObjectFactory")) {
+ if (clz.getName().endsWith("ObjectFactory")
+ && checkObjectFactoryNamespaces(clz)) {
// kind of a hack, but ObjectFactories may be created with empty
// namespaces
defaultNs = null;
@@ -533,6 +536,19 @@
return cachedContextAndSchemas;
}
+ private boolean checkObjectFactoryNamespaces(Class<?> clz) {
+ for (Method meth : clz.getMethods()) {
+ XmlElementDecl decl = meth.getAnnotation(XmlElementDecl.class);
+ if (decl != null
+ && XmlElementDecl.GLOBAL.class.equals(decl.scope())
+ && StringUtils.isEmpty(decl.namespace())) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
private void addToObjectFactoryCache(Package objectFactoryPkg, Class<?> ofactory) {
if (objectFactoryPkg == null) {
return;