use of org.apache.axiom.om.impl.llom.OMElementImpl in project wso2-synapse by wso2.
the class SOAPEnvelopeTextRetriever method getSourceText.
public String getSourceText(EvaluatorContext context) throws EvaluatorException {
SOAPEnvelope envelope = context.getMessageContext().getEnvelope();
Object result;
try {
if (compiledXPath == null) {
compiledXPath = new AXIOMXPath(source);
}
result = compiledXPath.evaluate(envelope);
} catch (JaxenException e) {
throw new EvaluatorException("Error while parsing the XPath expression: " + source, e);
}
if (result instanceof List) {
List list = (List) result;
if (list.size() == 1 && list.get(0) == null) {
return null;
}
StringBuffer textValue = new StringBuffer();
for (Object o : list) {
if (o instanceof OMTextImpl) {
textValue.append(((OMTextImpl) o).getText());
} else if (o instanceof OMElementImpl) {
String s = ((OMElementImpl) o).getText();
if (s.trim().length() == 0) {
s = o.toString();
}
textValue.append(s);
} else if (o instanceof OMDocumentImpl) {
textValue.append(((OMDocumentImpl) o).getOMDocumentElement().toString());
} else if (o instanceof OMAttribute) {
textValue.append(((OMAttribute) o).getAttributeValue());
}
}
return textValue.toString();
} else {
return result.toString();
}
}
use of org.apache.axiom.om.impl.llom.OMElementImpl in project wso2-synapse by wso2.
the class SynapseXPath method stringValueOf.
/**
* <P>Evaluates the XPath expression against the MessageContext of the current message and
* returns a String representation of the result</p>
*
* @param synCtx the source message which holds the MessageContext against full context
* @return a String representation of the result of evaluation
*/
public String stringValueOf(MessageContext synCtx) {
try {
if (forceFailoverEvaluation) {
if (log.isDebugEnabled()) {
log.debug("Forced evaluation of the expression with the DOM parser by bypassing the Jaxen: " + getExpression());
}
throw new UnresolvableException("Forced to evaluate with DOM parser bypassing Jaxen");
}
InputStream inputStream = null;
Object result = null;
org.apache.axis2.context.MessageContext axis2MC = null;
if (!forceDisableStreamXpath && "true".equals(enableStreamingXpath) && streamingXPATH != null && (((Axis2MessageContext) synCtx).getEnvelope() == null || ((Axis2MessageContext) synCtx).getEnvelope().getBody().getFirstElement() == null)) {
try {
axis2MC = ((Axis2MessageContext) synCtx).getAxis2MessageContext();
String contentType = (String) axis2MC.getProperty(SynapseConstants.AXIS2_PROPERTY_CONTENT_TYPE);
if (!isStreamingXpathSupportedContentType(contentType) && !Boolean.TRUE.equals(PassThroughConstants.MESSAGE_BUILDER_INVOKED)) {
RelayUtils.buildMessage(axis2MC);
} else {
inputStream = getMessageInputStreamPT(axis2MC);
}
} catch (XMLStreamException e) {
handleException("Error occurred while building the message from the message context", e);
} catch (IOException e) {
log.error("Error occurred while obtaining input stream from the message context", e);
}
if (inputStream != null) {
try {
result = streamingXPATH.getStringValue(inputStream);
} catch (XMLStreamException e) {
handleException("Error occurred while parsing the XPATH String", e);
} catch (StreamingXPATHException e) {
handleException("Error occurred while parsing the XPATH String", e);
}
} else {
try {
result = streamingXPATH.getStringValue(synCtx.getEnvelope());
} catch (XMLStreamException e) {
handleException("Error occurred while parsing the XPATH String", e);
} catch (StreamingXPATHException e) {
handleException("Error occurred while parsing the XPATH String", e);
}
}
} else {
result = evaluate(synCtx);
}
if (result == null) {
return null;
}
StringBuffer textValue = new StringBuffer();
if (result instanceof List) {
List list = (List) result;
for (Object o : list) {
if (o == null && list.size() == 1) {
return null;
}
if (o instanceof OMTextImpl) {
textValue.append(((OMTextImpl) o).getText());
} else if (o instanceof OMElementImpl) {
String s = ((OMElementImpl) o).getText();
// We use StringUtils.trim as String.trim does not remove U+00A0 (int 160) (No-break space)
if (s.replace(String.valueOf((char) 160), " ").trim().length() == 0) {
s = o.toString();
}
textValue.append(s);
} else if (o instanceof OMDocumentImpl) {
textValue.append(((OMDocumentImpl) o).getOMDocumentElement().toString());
} else if (o instanceof OMAttribute) {
textValue.append(((OMAttribute) o).getAttributeValue());
} else if (o instanceof SynapseXPath) {
textValue.append(((SynapseXPath) o).stringValueOf(synCtx));
}
}
} else if ("true".equals(enableStreamingXpath) && streamingXPATH != null) {
if (!"".equals((String) result)) {
OMElement re = AXIOMUtil.stringToOM((String) result);
if (re != null) {
textValue.append(re.getText());
} else {
textValue.append(result.toString());
}
}
} else {
textValue.append(result.toString());
}
return textValue.toString();
} catch (UnresolvableException ex) {
// xpath processing in DOM fashion which can support XPATH2.0 with supported XAPTH engine like SAXON
if ("true".equals(domXpathConfig)) {
if (log.isDebugEnabled()) {
log.debug("AXIOM xpath evaluation failed with UnresolvableException, " + "trying to perform DOM based XPATH", ex);
}
try {
return evaluateDOMXPath(synCtx);
} catch (Exception e) {
handleException("Evaluation of the XPath expression " + this.toString() + " resulted in an error", e);
}
} else {
handleException("Evaluation of the XPath expression " + this.toString() + " resulted in an error", ex);
}
} catch (JaxenException je) {
handleException("Evaluation of the XPath expression " + this.toString() + " resulted in an error", je);
} catch (XMLStreamException e) {
handleException("Evaluation of the XPath expression " + this.toString() + " resulted in an error", e);
}
return null;
}
use of org.apache.axiom.om.impl.llom.OMElementImpl in project wso2-synapse by wso2.
the class TaskManagerSerializerTest method testCase.
/**
* Test serializetaskManager method by asserting resulting OMElement.
*
* @throws XMLStreamException
*/
@Test
public void testCase() throws XMLStreamException {
String input = "<template xmlns=\"http://ws.apache.org/ns/synapse\" name=\"HelloWordLogger\">\n" + " <sequence>\n" + " <log level=\"full\">\n" + " <property xmlns:ns2=\"http://org.apache.synapse/xsd\" name=\"message\" " + "expression=\"$func:message\"></property>\n" + " </log>\n" + " </sequence>\n" + "</template>";
OMElement element = AXIOMUtil.stringToOM(input);
TaskManager taskManager = new QuartzTaskManager();
Properties properties = new Properties();
properties.setProperty("name", "testName");
taskManager.setConfigurationProperties(properties);
OMElement omElement = TaskManagerSerializer.serializetaskManager(element, taskManager);
Assert.assertEquals("asserting localName inserted by the method", "taskManager", omElement.getLocalName());
Iterator iter = omElement.getChildElements();
while (iter.hasNext()) {
OMElementImpl impl = (OMElementImpl) iter.next();
Assert.assertEquals("asserting localName inserted by the method", "parameter", impl.getLocalName());
}
}
Aggregations