use of org.apache.synapse.mediators.Value in project wso2-synapse by wso2.
the class EJBMediatorSerializer method serializeSpecificMediator.
public OMElement serializeSpecificMediator(Mediator m) {
if (!(m instanceof EJBMediator)) {
handleException("An unsupported mediator was passed in for serialization : " + m.getType());
return null;
}
EJBMediator mediator = (EJBMediator) m;
OMElement mediatorElem = fac.createOMElement(EJB, synNS);
saveTracingState(mediatorElem, mediator);
if (mediator.getBeanstalkName() != null) {
mediatorElem.addAttribute(fac.createOMAttribute(EJBConstants.BEANSTALK, nullNS, mediator.getBeanstalkName()));
} else {
handleException();
}
if (mediator.getClassName() != null) {
mediatorElem.addAttribute(fac.createOMAttribute(BeanConstants.CLASS, nullNS, mediator.getClassName()));
} else {
handleException();
}
if (mediator.getBeanId() != null) {
mediatorElem.addAttribute(fac.createOMAttribute(EJBConstants.STATEFUL, nullNS, Boolean.toString(true)));
new ValueSerializer().serializeValue(mediator.getBeanId(), EJBConstants.BEAN_ID, mediatorElem);
}
if (mediator.getMethod() != null) {
mediatorElem.addAttribute(fac.createOMAttribute(EJBConstants.METHOD, nullNS, mediator.getMethod().getName()));
} else if (!mediator.isRemove()) {
handleException();
}
if (mediator.getTarget() != null) {
mediator.getTarget().serializeTarget(BeanConstants.TARGET, mediatorElem);
}
if (mediator.getJndiName() != null) {
mediatorElem.addAttribute(fac.createOMAttribute(EJBConstants.JNDI_NAME, nullNS, mediator.getJndiName()));
}
if (mediator.isRemove()) {
mediatorElem.addAttribute(fac.createOMAttribute(EJBConstants.REMOVE, nullNS, Boolean.toString(true)));
}
List<Value> argList = mediator.getArgumentList();
if (argList != null && argList.size() > 0) {
OMElement argumentsElem = fac.createOMElement(EJBConstants.ARGS, synNS);
for (Value arg : argList) {
OMElement argElem = fac.createOMElement(EJBConstants.ARG, synNS);
new ValueSerializer().serializeValue(arg, BeanConstants.VALUE, argElem);
argumentsElem.addChild(argElem);
}
mediatorElem.addChild(argumentsElem);
}
return mediatorElem;
}
use of org.apache.synapse.mediators.Value in project wso2-synapse by wso2.
the class InvokeMediatorSerializer method serializeParams.
private void serializeParams(OMElement invokeElem, InvokeMediator mediator) {
Map<String, Value> paramsMap = mediator.getpName2ExpressionMap();
Iterator<String> paramIterator = paramsMap.keySet().iterator();
while (paramIterator.hasNext()) {
String paramName = paramIterator.next();
if (!"".equals(paramName)) {
if (mediator.isDynamicMediator()) {
OMElement paramEl = fac.createOMElement(paramName, synNS);
Value value = paramsMap.get(paramName);
new ValueSerializer().serializeTextValue(value, "value", paramEl);
invokeElem.addChild(paramEl);
} else {
String prefix = mediator.isDynamicMediator() ? InvokeMediatorFactory.WITH_PARAM_DYNAMIC_Q.getLocalPart() : InvokeMediatorFactory.WITH_PARAM_Q.getLocalPart();
OMElement paramEl = fac.createOMElement(prefix, synNS);
paramEl.addAttribute(fac.createOMAttribute("name", nullNS, paramName));
// serialize value attribute
Value value = paramsMap.get(paramName);
new ValueSerializer().serializeValue(value, "value", paramEl);
invokeElem.addChild(paramEl);
}
}
}
}
use of org.apache.synapse.mediators.Value in project wso2-synapse by wso2.
the class TemplateMessageExecutor method buildParameters.
private void buildParameters(OMElement elem) {
Iterator subElements = elem.getChildElements();
while (subElements.hasNext()) {
OMElement child = (OMElement) subElements.next();
Value paramValue = new ValueFactory().createTextValue(child);
invoker.addExpressionForParamName(child.getLocalName(), paramValue);
}
}
use of org.apache.synapse.mediators.Value in project wso2-synapse by wso2.
the class ScriptMediator method prepareExternalScript.
/**
* Prepares the mediator for the invocation of an external script
*
* @param synCtx MessageContext script
* @throws ScriptException For any errors , when compile the script
*/
protected ScriptEngineWrapper prepareExternalScript(MessageContext synCtx) throws ScriptException {
// Derive actual key from xpath expression or get static key
String generatedScriptKey = key.evaluateValue(synCtx);
Entry entry = synCtx.getConfiguration().getEntryDefinition(generatedScriptKey);
boolean needsReload = (entry != null) && entry.isDynamic() && (!entry.isCached() || entry.isExpired());
ScriptEngineWrapper sew = getNewScriptEngine();
Bindings engineBinding = sew.getEngine().getBindings(ScriptContext.ENGINE_SCOPE);
// if we don't do this, previous state can affect successive executions! ESBJAVA-4583
engineBinding.clear();
if (scriptSourceCode == null || needsReload || !sew.isInitialized()) {
Object o = synCtx.getEntry(generatedScriptKey);
if (o instanceof OMElement) {
scriptSourceCode = ((OMElement) (o)).getText();
sew.getEngine().eval(scriptSourceCode, engineBinding);
} else if (o instanceof String) {
scriptSourceCode = (String) o;
sew.getEngine().eval(scriptSourceCode, engineBinding);
} else if (o instanceof OMText) {
DataHandler dataHandler = (DataHandler) ((OMText) o).getDataHandler();
if (dataHandler != null) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(dataHandler.getInputStream()));
StringBuilder scriptSB = new StringBuilder();
String currentLine;
while ((currentLine = reader.readLine()) != null) {
scriptSB.append(currentLine).append('\n');
}
scriptSourceCode = scriptSB.toString();
sew.getEngine().eval(scriptSourceCode, engineBinding);
} catch (IOException e) {
handleException("Error in reading script as a stream ", e, synCtx);
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
handleException("Error in closing input stream ", e, synCtx);
}
}
}
}
}
} else {
// Will drop TPS, but is required for ESBJAVA-4583
sew.getEngine().eval(scriptSourceCode, engineBinding);
}
// load <include /> scripts; reload each script if needed
for (Value includeKey : includes.keySet()) {
String includeSourceCode = (String) includes.get(includeKey);
String generatedKey = includeKey.evaluateValue(synCtx);
Entry includeEntry = synCtx.getConfiguration().getEntryDefinition(generatedKey);
boolean includeEntryNeedsReload = (includeEntry != null) && includeEntry.isDynamic() && (!includeEntry.isCached() || includeEntry.isExpired());
if (includeSourceCode == null || includeEntryNeedsReload || !sew.isInitialized()) {
log.debug("Re-/Loading the include script with key " + includeKey);
Object o = synCtx.getEntry(generatedKey);
if (o instanceof OMElement) {
includeSourceCode = ((OMElement) (o)).getText();
sew.getEngine().eval(includeSourceCode, engineBinding);
} else if (o instanceof String) {
includeSourceCode = (String) o;
sew.getEngine().eval(includeSourceCode, engineBinding);
} else if (o instanceof OMText) {
DataHandler dataHandler = (DataHandler) ((OMText) o).getDataHandler();
if (dataHandler != null) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(dataHandler.getInputStream()));
StringBuilder scriptSB = new StringBuilder();
String currentLine;
while ((currentLine = reader.readLine()) != null) {
scriptSB.append(currentLine).append('\n');
}
includeSourceCode = scriptSB.toString();
sew.getEngine().eval(includeSourceCode, engineBinding);
} catch (IOException e) {
handleException("Error in reading script as a stream ", e, synCtx);
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
handleException("Error in closing input" + " stream ", e, synCtx);
}
}
}
}
}
includes.put(includeKey, includeSourceCode);
} else {
// Will drop TPS, but required for ESBJAVA-4583
sew.getEngine().eval(includeSourceCode, engineBinding);
}
}
sew.setInitialized(true);
return sew;
}
use of org.apache.synapse.mediators.Value in project wso2-synapse by wso2.
the class ScriptMediatorFactory method createSpecificMediator.
public Mediator createSpecificMediator(OMElement elem, Properties properties) {
ScriptMediator mediator;
ClassLoader classLoader = (ClassLoader) properties.get(SynapseConstants.SYNAPSE_LIB_LOADER);
OMAttribute keyAtt = elem.getAttribute(new QName(XMLConfigConstants.NULL_NAMESPACE, "key"));
OMAttribute langAtt = elem.getAttribute(new QName(XMLConfigConstants.NULL_NAMESPACE, "language"));
OMAttribute functionAtt = elem.getAttribute(new QName(XMLConfigConstants.NULL_NAMESPACE, "function"));
if (langAtt == null) {
throw new SynapseException("The 'language' attribute is required for" + " a script mediator");
// TODO: couldn't this be determined from the key in some scenarios?
}
if (keyAtt == null && functionAtt != null) {
throw new SynapseException("Cannot use 'function' attribute without 'key' " + "attribute for a script mediator");
}
Map<Value, Object> includeKeysMap = getIncludeKeysMap(elem);
if (keyAtt != null) {
// ValueFactory for creating dynamic or static Key
ValueFactory keyFac = new ValueFactory();
// create dynamic or static key based on OMElement
Value generatedKey = keyFac.createValue(XMLConfigConstants.KEY, elem);
String functionName = (functionAtt == null ? null : functionAtt.getAttributeValue());
mediator = new ScriptMediator(langAtt.getAttributeValue(), includeKeysMap, generatedKey, functionName, classLoader);
} else {
mediator = new ScriptMediator(langAtt.getAttributeValue(), elem.getText(), classLoader);
}
processAuditStatus(mediator, elem);
return mediator;
}
Aggregations