From 8dc176fa2b55008d81257a0e2cf196722876b10a Mon Sep 17 00:00:00 2001 From: xiaoeason Date: Fri, 14 Jul 2017 09:58:29 -0400 Subject: [PATCH] Fixed namespace issue if element is defined in based schema --- .../java/org/exolab/castor/xml/UnmarshalHandler.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/xml/src/main/java/org/exolab/castor/xml/UnmarshalHandler.java b/xml/src/main/java/org/exolab/castor/xml/UnmarshalHandler.java index 31c3e1672..d312cf769 100644 --- a/xml/src/main/java/org/exolab/castor/xml/UnmarshalHandler.java +++ b/xml/src/main/java/org/exolab/castor/xml/UnmarshalHandler.java @@ -711,9 +711,16 @@ public void startElement(String namespaceURI, String localName, String qName, At // check for default namespace declaration String defaultNamespace = _namespaceHandling.getDefaultNamespaceURI(); // TODO[WG]: remove unnecessary check as it simply is wrong + /* Eason Xiao - This logic is wrong. The namespaceURI might be different to defaultNamespace, for example : + An element is defined in base schema, this element has a different namespace. if (defaultNamespace != null && !defaultNamespace.equals("http://castor.exolab.org")) { - namespaceURI = defaultNamespace; + namespaceURI = defaultNamespace; + }*/ + // Eason Xiao - change commented code above to below : + if (namespaceURI == null && defaultNamespace != null && !defaultNamespace.equals("http://castor.exolab.org")) { + namespaceURI = defaultNamespace; } + // -- adjust empty namespace if (StringUtils.isEmpty(namespaceURI)) namespaceURI = null;