use of org.apache.axiom.om.impl.intf.TextContent in project webservices-axiom by apache.
the class OMFactoryImpl method importChildNode.
private AxiomChildNode importChildNode(OMNode child) {
int type = child.getType();
switch(type) {
case OMNode.ELEMENT_NODE:
{
OMElement element = (OMElement) child;
AxiomElement importedElement = createNode(AxiomElement.class);
copyName(element, importedElement);
for (Iterator<OMAttribute> it = element.getAllAttributes(); it.hasNext(); ) {
importedElement.coreAppendAttribute(importAttribute(it.next()));
}
for (Iterator<OMNamespace> it = element.getAllDeclaredNamespaces(); it.hasNext(); ) {
OMNamespace ns = it.next();
AxiomNamespaceDeclaration nsDecl = createNode(AxiomNamespaceDeclaration.class);
nsDecl.coreSetDeclaredNamespace(ns.getPrefix(), ns.getNamespaceURI());
importedElement.coreAppendAttribute(nsDecl);
}
importChildren(element, importedElement);
return importedElement;
}
case OMNode.TEXT_NODE:
case OMNode.SPACE_NODE:
case OMNode.CDATA_SECTION_NODE:
{
OMText text = (OMText) child;
Object content;
if (text.isBinary()) {
content = new TextContent(text.getContentID(), text.getDataHandler(), text.isOptimized());
} else {
content = text.getText();
}
return createAxiomText(null, content, type);
}
case OMNode.PI_NODE:
{
OMProcessingInstruction pi = (OMProcessingInstruction) child;
AxiomProcessingInstruction importedPI = createNode(AxiomProcessingInstruction.class);
importedPI.setTarget(pi.getTarget());
importedPI.setValue(pi.getValue());
return importedPI;
}
case OMNode.COMMENT_NODE:
{
OMComment comment = (OMComment) child;
AxiomComment importedComment = createNode(AxiomComment.class);
importedComment.setValue(comment.getValue());
return importedComment;
}
case OMNode.DTD_NODE:
{
OMDocType docType = (OMDocType) child;
AxiomDocType importedDocType = createNode(AxiomDocType.class);
importedDocType.coreSetRootName(docType.getRootName());
importedDocType.coreSetPublicId(docType.getPublicId());
importedDocType.coreSetSystemId(docType.getSystemId());
importedDocType.coreSetInternalSubset(docType.getInternalSubset());
return importedDocType;
}
case OMNode.ENTITY_REFERENCE_NODE:
AxiomEntityReference importedEntityRef = createNode(AxiomEntityReference.class);
importedEntityRef.coreSetName(((OMEntityReference) child).getName());
return importedEntityRef;
default:
throw new IllegalArgumentException("Unsupported node type");
}
}
use of org.apache.axiom.om.impl.intf.TextContent in project webservices-axiom by apache.
the class StAXPullReader method processText.
private void processText(int textType) throws StreamException {
if (textType == XMLStreamConstants.CHARACTERS && dataHandlerReader != null && dataHandlerReader.isBinary()) {
TextContent data;
if (dataHandlerReader.isDeferred()) {
data = new TextContent(dataHandlerReader.getContentID(), dataHandlerReader.getDataHandlerProvider(), dataHandlerReader.isOptimized());
} else {
try {
data = new TextContent(dataHandlerReader.getContentID(), dataHandlerReader.getDataHandler(), dataHandlerReader.isOptimized());
} catch (XMLStreamException ex) {
throw new OMException(ex);
}
}
handler.processCharacterData(data, false);
} else {
// Some parsers (like Woodstox) parse text nodes lazily and may throw a
// RuntimeException in getText()
String text;
try {
text = parser.getText();
} catch (RuntimeException ex) {
parserException = ex;
throw ex;
}
switch(textType) {
case XMLStreamConstants.CHARACTERS:
handler.processCharacterData(text, false);
break;
case XMLStreamConstants.SPACE:
handler.processCharacterData(text, true);
break;
case XMLStreamConstants.CDATA:
handler.startCDATASection();
handler.processCharacterData(text, false);
handler.endCDATASection();
break;
default:
throw new IllegalStateException();
}
}
}
use of org.apache.axiom.om.impl.intf.TextContent in project webservices-axiom by apache.
the class XOPEncodingFilterHandler method processCharacterData.
@Override
protected String processCharacterData(Object data) throws StreamException {
if (data instanceof TextContent) {
TextContent textContent = (TextContent) data;
if (textContent.isBinary()) {
Object dataHandlerObject = textContent.getDataHandlerObject();
boolean optimize;
try {
if (dataHandlerObject instanceof DataHandlerProvider) {
optimize = optimizationPolicy.isOptimized((DataHandlerProvider) dataHandlerObject, textContent.isOptimize());
} else {
optimize = optimizationPolicy.isOptimized((DataHandler) dataHandlerObject, textContent.isOptimize());
}
} catch (IOException ex) {
throw new StreamException(ex);
}
if (optimize) {
String contentID = contentIDGenerator.generateContentID(textContent.getContentID());
dataHandlerObjects.put(contentID, dataHandlerObject);
return contentID;
}
}
}
return null;
}
Aggregations