You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by fr...@apache.org on 2007/02/13 22:11:21 UTC
svn commit: r507227 -
/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java
Author: frankb
Date: Tue Feb 13 13:11:20 2007
New Revision: 507227
URL: http://svn.apache.org/viewvc?view=rev&rev=507227
Log:
Fix for TUSCANY-1107
Modified:
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java?view=diff&rev=507227&r1=507226&r2=507227
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java Tue Feb 13 13:11:20 2007
@@ -59,44 +59,44 @@
*/
public static class SDOXMLHelperImpl extends XMLHelperImpl {
+ /**
+ * EMF XMLResource (SAX) may be used to load from only a *portion* of a StAX stream
+ * which may reference (global) namespaces bound outside the (local) portion.
+ * This class extends EMF's NamespaceSupport to make {@link #getPrefix} and {@link #getURI}
+ * query these global binding(s) after first checking the local context(s).
+ */
private static class StreamNamespaceSupport extends XMLHelperImpl.NamespaceSupport {
- private XMLStreamReader reader;
+ protected NamespaceContext nameSpaceContext;
public String getPrefix(String uri) {
- if (reader == null)
- return super.getPrefix(uri);
- String prefix = null;
- try {
- prefix = uri != null ? reader.getNamespaceContext().getPrefix(uri) : null;
- } catch (Exception e) {
- // HACK:
- // java.lang.UnsupportedOperationException
- // at org.apache.axiom.om.impl.llom.OMStAXWrapper.getNamespaceContext(OMStAXWrapper.java:984)
-
- prefix = null;
- }
- return prefix != null ? prefix : super.getPrefix(uri);
+ String prefix = super.getPrefix(uri);
+ if (prefix == null)
+ try {
+ prefix = nameSpaceContext.getPrefix(uri);
+ } catch (Exception e) {
+ // HACK:
+ // java.lang.UnsupportedOperationException
+ // at org.apache.axiom.om.impl.llom.OMStAXWrapper.getNamespaceContext(OMStAXWrapper.java:984)
+ }
+ return prefix;
}
public String getURI(String prefix) {
- if (reader == null)
- return super.getURI(prefix);
- String uri;
- try {
- uri = prefix != null ? reader.getNamespaceContext().getNamespaceURI(prefix) : null;
- } catch (Exception e) {
- // HACK:
- // java.lang.UnsupportedOperationException
- // at org.apache.axiom.om.impl.llom.OMStAXWrapper.getNamespaceContext(OMStAXWrapper.java:984)
-
- uri = null;
- }
- return uri != null && uri.length()!=0 ? uri : super.getURI(prefix);
+ String uri = super.getURI(prefix);
+ if (uri == null)
+ try {
+ uri = nameSpaceContext.getNamespaceURI(prefix);
+ } catch (Exception e) {
+ // HACK:
+ // java.lang.UnsupportedOperationException
+ // at org.apache.axiom.om.impl.llom.OMStAXWrapper.getNamespaceContext(OMStAXWrapper.java:984)
+ }
+ return uri;
}
public StreamNamespaceSupport(XMLStreamReader reader) {
super();
- this.reader = reader;
+ nameSpaceContext = reader.getNamespaceContext();
}
}
@@ -108,7 +108,8 @@
public SDOXMLHelperImpl(XMLStreamReader reader) {
super();
- this.namespaceSupport = new StreamNamespaceSupport(reader);
+ if (reader instanceof XMLDocumentStreamReader) // Only use StreamNamespaceSupport when loading from a *portion* of a StAX stream
+ namespaceSupport = new StreamNamespaceSupport(reader);
}
private class NameSpaceContext implements NamespaceContext { // TODO Helper# pushContext() & popContext
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org