ability to use namespacecontext in HandlerChainsStringQNameAdapter
git-svn-id: https://svn.apache.org/repos/asf/openejb/trunk@1432661 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/openejb/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/HandlerChain$JAXB.java b/openejb/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/HandlerChain$JAXB.java
index a49b952..34fe7fa 100644
--- a/openejb/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/HandlerChain$JAXB.java
+++ b/openejb/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/HandlerChain$JAXB.java
@@ -70,6 +70,9 @@
context = new RuntimeContext();
}
+ final HandlerChainsStringQNameAdapter handlerChainsStringQNameAdapterAdapter = new HandlerChainsStringQNameAdapter();
+ handlerChainsStringQNameAdapterAdapter.setNamespaceContext(reader.getNamespaceContext());
+
HandlerChain handlerChain = new HandlerChain();
context.beforeUnmarshal(handlerChain, LifecycleCallback.NONE);
@@ -104,7 +107,7 @@
QName serviceNamePattern;
try {
- serviceNamePattern = Adapters.handlerChainsStringQNameAdapterAdapter.unmarshal(serviceNamePatternRaw);
+ serviceNamePattern = handlerChainsStringQNameAdapterAdapter.unmarshal(serviceNamePatternRaw);
} catch (Exception e) {
context.xmlAdapterError(elementReader, HandlerChainsStringQNameAdapter.class, QName.class, QName.class, e);
continue;
@@ -117,7 +120,7 @@
QName portNamePattern;
try {
- portNamePattern = Adapters.handlerChainsStringQNameAdapterAdapter.unmarshal(portNamePatternRaw);
+ portNamePattern = handlerChainsStringQNameAdapterAdapter.unmarshal(portNamePatternRaw);
} catch (Exception e) {
context.xmlAdapterError(elementReader, HandlerChainsStringQNameAdapter.class, QName.class, QName.class, e);
continue;
@@ -190,6 +193,9 @@
context = new RuntimeContext();
}
+ final HandlerChainsStringQNameAdapter handlerChainsStringQNameAdapterAdapter = new HandlerChainsStringQNameAdapter();
+ handlerChainsStringQNameAdapterAdapter.setNamespaceContext(writer.getNamespaceContext());
+
String prefix = writer.getUniquePrefix("http://java.sun.com/xml/ns/javaee");
if (HandlerChain.class != handlerChain.getClass()) {
context.unexpectedSubclass(writer, handlerChain, HandlerChain.class);
@@ -215,7 +221,7 @@
QName serviceNamePatternRaw = handlerChain.serviceNamePattern;
String serviceNamePattern = null;
try {
- serviceNamePattern = Adapters.handlerChainsStringQNameAdapterAdapter.marshal(serviceNamePatternRaw);
+ serviceNamePattern = handlerChainsStringQNameAdapterAdapter.marshal(serviceNamePatternRaw);
} catch (Exception e) {
context.xmlAdapterError(handlerChain, "serviceNamePattern", HandlerChainsStringQNameAdapter.class, QName.class, QName.class, e);
}
@@ -229,7 +235,7 @@
QName portNamePatternRaw = handlerChain.portNamePattern;
String portNamePattern = null;
try {
- portNamePattern = Adapters.handlerChainsStringQNameAdapterAdapter.marshal(portNamePatternRaw);
+ portNamePattern = handlerChainsStringQNameAdapterAdapter.marshal(portNamePatternRaw);
} catch (Exception e) {
context.xmlAdapterError(handlerChain, "portNamePattern", HandlerChainsStringQNameAdapter.class, QName.class, QName.class, e);
}
diff --git a/openejb/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/HandlerChains$JAXB.java b/openejb/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/HandlerChains$JAXB.java
index 2d33bc7..667e6c2 100644
--- a/openejb/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/HandlerChains$JAXB.java
+++ b/openejb/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/HandlerChains$JAXB.java
@@ -38,7 +38,6 @@
public class HandlerChains$JAXB
extends JAXBObject<HandlerChains> {
-
public HandlerChains$JAXB() {
super(HandlerChains.class, new QName("http://java.sun.com/xml/ns/javaee".intern(), "handler-chains".intern()), new QName("http://java.sun.com/xml/ns/javaee".intern(), "handler-chainsType".intern()), HandlerChain$JAXB.class);
}
@@ -172,5 +171,4 @@
context.afterMarshal(handlerChains, LifecycleCallback.NONE);
}
-
}
diff --git a/openejb/container/openejb-jee/src/main/java/org/apache/openejb/jee/HandlerChainsStringQNameAdapter.java b/openejb/container/openejb-jee/src/main/java/org/apache/openejb/jee/HandlerChainsStringQNameAdapter.java
index 41e9ff4..30cdf81 100644
--- a/openejb/container/openejb-jee/src/main/java/org/apache/openejb/jee/HandlerChainsStringQNameAdapter.java
+++ b/openejb/container/openejb-jee/src/main/java/org/apache/openejb/jee/HandlerChainsStringQNameAdapter.java
@@ -17,18 +17,20 @@
package org.apache.openejb.jee;
+import org.apache.openejb.jee.JaxbJavaee.HandlerChainsNamespaceFilter;
+
import javax.xml.XMLConstants;
import javax.xml.bind.annotation.adapters.XmlAdapter;
+import javax.xml.namespace.NamespaceContext;
import javax.xml.namespace.QName;
-import org.apache.openejb.jee.JaxbJavaee.HandlerChainsNamespaceFilter;
-
/**
* @version $Rev$ $Date$
*/
public class HandlerChainsStringQNameAdapter extends XmlAdapter<String, QName> {
private HandlerChainsNamespaceFilter xmlFilter;
+ private NamespaceContext namespaceContext;
@Override
public QName unmarshal(String value) throws Exception {
@@ -41,7 +43,14 @@
}
String prefix = value.substring(0, colonIndex);
String localPart = (colonIndex == (value.length() - 1)) ? "" : value.substring(colonIndex + 1);
- String nameSpaceURI = xmlFilter.lookupNamespaceURI(prefix);
+
+ String nameSpaceURI = "";
+ if (xmlFilter != null) {
+ nameSpaceURI = xmlFilter.lookupNamespaceURI(prefix);
+ } else if (namespaceContext != null) {
+ nameSpaceURI = namespaceContext.getNamespaceURI(prefix);
+ }
+
if (nameSpaceURI == null) {
nameSpaceURI = XMLConstants.NULL_NS_URI;
}
@@ -64,7 +73,11 @@
return prefix + ":" + localPart;
}
- public void setHandlerChainsNamespaceFilter(HandlerChainsNamespaceFilter xmlFilter) {
+ public void setHandlerChainsNamespaceFilter(final HandlerChainsNamespaceFilter xmlFilter) {
this.xmlFilter = xmlFilter;
}
+
+ public void setNamespaceContext(NamespaceContext namespaceContext) {
+ this.namespaceContext = namespaceContext;
+ }
}