in src/main/java/org/apache/xml/security/stax/ext/stax/XMLSecEventFactory.java [52:108]
public static XMLSecEvent allocate(XMLStreamReader xmlStreamReader, XMLSecStartElement parentXMLSecStartElement) throws XMLStreamException {
switch (xmlStreamReader.getEventType()) {
case XMLStreamConstants.START_ELEMENT: {
List<XMLSecAttribute> comparableAttributes = null;
final int attributeCount = xmlStreamReader.getAttributeCount();
if (attributeCount > 0) {
comparableAttributes = new ArrayList<>(attributeCount);
for (int i = 0; i < attributeCount; i++) {
comparableAttributes.add(XMLSecEventFactory.createXMLSecAttribute(xmlStreamReader.getAttributeName(i), xmlStreamReader.getAttributeValue(i)));
}
}
List<XMLSecNamespace> comparableNamespaces = null;
final int namespaceCount = xmlStreamReader.getNamespaceCount();
if (namespaceCount > 0) {
comparableNamespaces = new ArrayList<>(namespaceCount);
for (int i = 0; i < namespaceCount; i++) {
comparableNamespaces.add(XMLSecNamespaceImpl.getInstance(xmlStreamReader.getNamespacePrefix(i), xmlStreamReader.getNamespaceURI(i)));
}
}
return new XMLSecStartElementImpl(xmlStreamReader.getName(), comparableAttributes, comparableNamespaces, parentXMLSecStartElement);
}
case XMLStreamConstants.END_ELEMENT:
return new XMLSecEndElementImpl(xmlStreamReader.getName(), parentXMLSecStartElement);
case XMLStreamConstants.PROCESSING_INSTRUCTION:
return new XMLSecProcessingInstructionImpl(xmlStreamReader.getPITarget(), xmlStreamReader.getPIData(), parentXMLSecStartElement);
case XMLStreamConstants.CHARACTERS:
char[] text = new char[xmlStreamReader.getTextLength()];
xmlStreamReader.getTextCharacters(0, text, 0, xmlStreamReader.getTextLength());
return new XMLSecCharactersImpl(text, false, false, xmlStreamReader.isWhiteSpace(), parentXMLSecStartElement);
case XMLStreamConstants.COMMENT:
return new XMLSecCommentImpl(xmlStreamReader.getText(), parentXMLSecStartElement);
case XMLStreamConstants.SPACE:
return new XMLSecCharactersImpl(xmlStreamReader.getText(), false, true, xmlStreamReader.isWhiteSpace(), parentXMLSecStartElement);
case XMLStreamConstants.START_DOCUMENT:
String systemId = xmlStreamReader.getLocation() != null ? xmlStreamReader.getLocation().getSystemId() : null;
return new XMLSecStartDocumentImpl(systemId, xmlStreamReader.getCharacterEncodingScheme(),
xmlStreamReader.standaloneSet() ? xmlStreamReader.isStandalone() : null, xmlStreamReader.getVersion());
case XMLStreamConstants.END_DOCUMENT:
return new XMLSecEndDocumentImpl();
case XMLStreamConstants.ENTITY_REFERENCE:
return new XMLSecEntityReferenceImpl(xmlStreamReader.getLocalName(), null, parentXMLSecStartElement);
case XMLStreamConstants.ATTRIBUTE:
throw new UnsupportedOperationException("Attribute event not supported");
case XMLStreamConstants.DTD:
return new XMLSecDTDImpl(xmlStreamReader.getText(), parentXMLSecStartElement);
case XMLStreamConstants.CDATA:
return new XMLSecCharactersImpl(xmlStreamReader.getText(), false, false, xmlStreamReader.isWhiteSpace(), parentXMLSecStartElement);
case XMLStreamConstants.NAMESPACE:
throw new UnsupportedOperationException("Namespace event not supported");
case XMLStreamConstants.NOTATION_DECLARATION:
throw new UnsupportedOperationException("NotationDeclaration event not supported");
case XMLStreamConstants.ENTITY_DECLARATION:
throw new UnsupportedOperationException("Entity declaration event not supported");
}
throw new IllegalArgumentException("Unknown XML event occurred");
}