You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by gi...@apache.org on 2012/10/16 17:22:54 UTC
svn commit: r1398845 - in /santuario/xml-security-java/trunk/src:
main/java/org/apache/xml/security/stax/ext/
main/java/org/apache/xml/security/stax/ext/stax/
main/java/org/apache/xml/security/stax/impl/
main/java/org/apache/xml/security/stax/impl/stax...
Author: giger
Date: Tue Oct 16 15:22:53 2012
New Revision: 1398845
URL: http://svn.apache.org/viewvc?rev=1398845&view=rev
Log:
stax-parser compatibility fixes
Modified:
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/InboundXMLSec.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/stax/XMLSecEventFactory.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/XMLSecurityStreamWriter.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/stax/XMLSecNamespaceImpl.java
santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/transformer/TransformIdentityTest.java
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/InboundXMLSec.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/InboundXMLSec.java?rev=1398845&r1=1398844&r2=1398845&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/InboundXMLSec.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/InboundXMLSec.java Tue Oct 16 15:22:53 2012
@@ -30,6 +30,7 @@ import org.apache.xml.security.stax.impl
import org.apache.xml.security.stax.securityEvent.SecurityEvent;
import org.apache.xml.security.stax.securityEvent.SecurityEventListener;
+import javax.xml.stream.Location;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
@@ -126,7 +127,11 @@ public class InboundXMLSec {
DocumentContextImpl documentContext = new DocumentContextImpl();
documentContext.setEncoding(xmlStreamReader.getEncoding() != null ? xmlStreamReader.getEncoding() : "UTF-8");
- documentContext.setBaseURI(xmlStreamReader.getLocation().getSystemId());
+ //woodstox 3.2.9 returns null when used with a DOMSource
+ Location location = xmlStreamReader.getLocation();
+ if (location != null) {
+ documentContext.setBaseURI(location.getSystemId());
+ }
InputProcessorChainImpl inputProcessorChain = new InputProcessorChainImpl(securityContextImpl, documentContext);
inputProcessorChain.addProcessor(new XMLEventReaderInputProcessor(securityProperties, xmlStreamReader));
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/stax/XMLSecEventFactory.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/stax/XMLSecEventFactory.java?rev=1398845&r1=1398844&r2=1398845&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/stax/XMLSecEventFactory.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/ext/stax/XMLSecEventFactory.java Tue Oct 16 15:22:53 2012
@@ -74,7 +74,8 @@ public class XMLSecEventFactory {
case XMLStreamConstants.SPACE:
return new XMLSecCharactersImpl(xmlStreamReader.getText(), false, true, xmlStreamReader.isWhiteSpace(), parentXMLSecStartElement);
case XMLStreamConstants.START_DOCUMENT:
- return new XMLSecStartDocumentImpl(xmlStreamReader.getLocation().getSystemId(), xmlStreamReader.getEncoding(),
+ String systemId = xmlStreamReader.getLocation() != null ? xmlStreamReader.getLocation().getSystemId() : null;
+ return new XMLSecStartDocumentImpl(systemId, xmlStreamReader.getEncoding(),
xmlStreamReader.standaloneSet() ? xmlStreamReader.isStandalone() : null, xmlStreamReader.getVersion());
case XMLStreamConstants.END_DOCUMENT:
return new XMLSecEndDocumentImpl();
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/XMLSecurityStreamWriter.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/XMLSecurityStreamWriter.java?rev=1398845&r1=1398844&r2=1398845&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/XMLSecurityStreamWriter.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/XMLSecurityStreamWriter.java Tue Oct 16 15:22:53 2012
@@ -51,6 +51,7 @@ public class XMLSecurityStreamWriter imp
private NamespaceContext namespaceContext;
private final NamespaceContext defaultNamespaceContext;
private boolean haveToWriteEndElement = false;
+ private boolean endDocumentWritten = false;
public XMLSecurityStreamWriter(OutputProcessorChain outputProcessorChain) {
this.outputProcessorChain = outputProcessorChain;
@@ -176,10 +177,12 @@ public class XMLSecurityStreamWriter imp
public void writeStartElement(String namespaceURI, String localName) throws XMLStreamException {
outputOpenStartElement();
String prefix = getNamespaceContext().getPrefix(namespaceURI);
+ QName qName;
if (prefix == null) {
- throw new XMLStreamException("Unbound namespace URI '" + namespaceURI + "'");
+ qName = new QName(namespaceURI, localName);
+ } else {
+ qName = new QName(namespaceURI, localName, prefix);
}
- QName qName = new QName(namespaceURI, localName, prefix);
startElementStack.push(qName);
openStartElement = qName;
}
@@ -217,15 +220,18 @@ public class XMLSecurityStreamWriter imp
}
public void writeEndDocument() throws XMLStreamException {
- outputOpenStartElement();
- Iterator<QName> startElements = startElementStack.iterator();
- while (startElements.hasNext()) {
- // Map<String, XMLSecNamespace> namespaceMap = nsStack.pop();
- nsStack.pop();
- //todo namespaces which are going out of scope for endElement?
- chainProcessEvent(XMLSecEventFactory.createXmlSecEndElement(startElements.next()));
+ if (!endDocumentWritten) {
+ outputOpenStartElement();
+ Iterator<QName> startElements = startElementStack.iterator();
+ while (startElements.hasNext()) {
+ // Map<String, XMLSecNamespace> namespaceMap = nsStack.pop();
+ nsStack.pop();
+ //todo namespaces which are going out of scope for endElement?
+ chainProcessEvent(XMLSecEventFactory.createXmlSecEndElement(startElements.next()));
+ }
+ chainProcessEvent(XMLSecEventFactory.createXMLSecEndDocument());
+ endDocumentWritten = true;
}
- chainProcessEvent(XMLSecEventFactory.createXMLSecEndDocument());
}
public void close() throws XMLStreamException {
@@ -258,7 +264,12 @@ public class XMLSecurityStreamWriter imp
}
public void writeDefaultNamespace(String namespaceURI) throws XMLStreamException {
+ //workaround for sun's stax parser:
+ if (this.openStartElement != null && this.openStartElement.getPrefix().equals("")) {
+ this.openStartElement = new QName(namespaceURI, openStartElement.getLocalPart(), "");
+ }
putNamespaceOntoStack("", XMLSecEventFactory.createXMLSecNamespace(null, namespaceURI));
+
}
public void writeComment(String data) throws XMLStreamException {
@@ -268,7 +279,7 @@ public class XMLSecurityStreamWriter imp
public void writeProcessingInstruction(String target) throws XMLStreamException {
outputOpenStartElement();
- chainProcessEvent(XMLSecEventFactory.createXMLSecProcessingInstruction(target, null));
+ chainProcessEvent(XMLSecEventFactory.createXMLSecProcessingInstruction(target, ""));
}
public void writeProcessingInstruction(String target, String data) throws XMLStreamException {
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/stax/XMLSecNamespaceImpl.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/stax/XMLSecNamespaceImpl.java?rev=1398845&r1=1398844&r2=1398845&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/stax/XMLSecNamespaceImpl.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/stax/XMLSecNamespaceImpl.java Tue Oct 16 15:22:53 2012
@@ -50,6 +50,10 @@ public class XMLSecNamespaceImpl extends
if (prefix == null) {
prefix = "";
}
+ //sun's stax parser returns null for the default namespace
+ if (uri == null) {
+ uri = "";
+ }
Map<String, XMLSecNamespace> nsMap = xmlSecNamespaceMap.get(prefix);
if (nsMap != null) {
XMLSecNamespace xmlSecNamespace = nsMap.get(uri);
Modified: santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/transformer/TransformIdentityTest.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/transformer/TransformIdentityTest.java?rev=1398845&r1=1398844&r2=1398845&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/transformer/TransformIdentityTest.java (original)
+++ santuario/xml-security-java/trunk/src/test/java/org/apache/xml/security/test/stax/transformer/TransformIdentityTest.java Tue Oct 16 15:22:53 2012
@@ -54,6 +54,7 @@ public class TransformIdentityTest exten
Init.init(this.getClass().getClassLoader().getResource("security-config.xml").toURI());
this.xmlInputFactory = XMLInputFactory.newInstance();
this.xmlInputFactory.setEventAllocator(new XMLSecEventAllocator());
+ this.xmlInputFactory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE);
}
@Test