use of org.apache.synapse.mediators.template.InvokeMediator in project wso2-synapse by wso2.
the class MediatorFactoryFinder method getDynamicInvokeMediator.
public InvokeMediator getDynamicInvokeMediator(OMElement connectorElem, String libraryName) {
InvokeMediator invokeMediator = new InvokeMediator();
if (connectorElem.getLocalName() != null && libraryName != null && !libraryName.equals("")) {
invokeMediator.setTargetTemplate(libraryName + "." + connectorElem.getLocalName());
}
// load configuration based references for the given connector
OMAttribute config_key = connectorElem.getAttribute(new QName(XMLConfigConstants.CONFIG_REF));
if (config_key != null) {
// ValueFactory for creating dynamic or static Value
ValueFactory keyFac = new ValueFactory();
// create dynamic or static key based on OMElement
Value generatedKey = keyFac.createValue(XMLConfigConstants.CONFIG_REF, connectorElem);
// setKey
invokeMediator.setKey(generatedKey);
}
buildParamteres(connectorElem, invokeMediator);
invokeMediator.setPackageName(libraryName);
invokeMediator.setDynamicMediator(true);
return invokeMediator;
}
use of org.apache.synapse.mediators.template.InvokeMediator in project wso2-synapse by wso2.
the class MediatorFactoryFinder method main.
public static void main(String[] args) throws Exception {
String connectorStr = "<sfdc.getContact xmlns=\"http://ws.apache.org/ns/synapse\">\n" + "\t\t <parameter name=\"param1\" value=\"val1\"/>\n" + "\t\t <parameter name=\"param2\" value=\"val2\"/>\n" + "\t</sfdc.getContact>";
OMElement inConnectorElem = AXIOMUtil.stringToOM(connectorStr);
String libName = "synapse.lang.eip";
InvokeMediator invokeMediator = MediatorFactoryFinder.getInstance().getDynamicInvokeMediator(inConnectorElem, libName);
invokeMediator.getTargetTemplate();
}
use of org.apache.synapse.mediators.template.InvokeMediator in project wso2-synapse by wso2.
the class MediatorTreeTraverseUtil method getMediatorReference.
/**
* Returns mediator referece associated with position while traversing the mediator tree.
*
* @param synCfg synapse configuration reference
* @param seqMediator sequence mediator which traverse happens
* @param position array of tree nodes specifying position integer with respect to it's parent node
* starting from the root parent.
* @return Mediator reference
*/
public static Mediator getMediatorReference(SynapseConfiguration synCfg, Mediator seqMediator, int[] position) {
Mediator current_mediator = null;
for (int counter = 0; counter < position.length; counter++) {
if (counter == 0) {
int mediatorCount = ((AbstractListMediator) seqMediator).getList().size();
int correctedPosition = getCorrectedPossition((AbstractListMediator) seqMediator, position[counter]);
if (mediatorCount > correctedPosition) {
current_mediator = ((AbstractListMediator) seqMediator).getChild(correctedPosition);
} else {
log.warn("Mediator position requested is larger than last index : " + position[counter]);
}
}
if (current_mediator != null && counter != 0) {
if (current_mediator instanceof InvokeMediator) {
current_mediator = synCfg.getSequenceTemplate(((InvokeMediator) current_mediator).getTargetTemplate());
} else if (current_mediator instanceof FilterMediator) {
if (position[counter] == 0) {
if (((FilterMediator) current_mediator).getElseMediator() != null) {
current_mediator = ((FilterMediator) current_mediator).getElseMediator();
} else if (((FilterMediator) current_mediator).getElseKey() != null) {
current_mediator = synCfg.getSequence(((FilterMediator) current_mediator).getElseKey());
}
continue;
} else if (position[counter] == 1) {
if (((FilterMediator) current_mediator).getThenKey() != null) {
current_mediator = synCfg.getSequence(((FilterMediator) current_mediator).getThenKey());
} else {
counter = counter + 1;
if (counter < position.length) {
int mediatorCount = ((AbstractListMediator) current_mediator).getList().size();
int correctedPosition = getCorrectedPossition((AbstractListMediator) current_mediator, position[counter]);
if (mediatorCount > correctedPosition) {
current_mediator = ((AbstractListMediator) current_mediator).getChild(correctedPosition);
} else {
log.warn("Mediator position requested is larger than last index : " + position[counter]);
}
}
}
continue;
}
} else if (current_mediator instanceof SwitchMediator) {
if (position[counter] == 0) {
SwitchCase switchCase = ((SwitchMediator) current_mediator).getDefaultCase();
if (switchCase != null) {
current_mediator = switchCase.getCaseMediator();
} else {
current_mediator = null;
}
} else {
SwitchCase switchCase = ((SwitchMediator) current_mediator).getCases().get(position[counter] - 1);
if (switchCase != null) {
current_mediator = switchCase.getCaseMediator();
} else {
current_mediator = null;
}
}
continue;
} else if (current_mediator instanceof AggregateMediator) {
if (((AggregateMediator) current_mediator).getOnCompleteSequence() != null) {
current_mediator = ((AggregateMediator) current_mediator).getOnCompleteSequence();
} else if (((AggregateMediator) current_mediator).getOnCompleteSequenceRef() != null) {
current_mediator = synCfg.getSequence(((AggregateMediator) current_mediator).getOnCompleteSequenceRef());
}
} else if (current_mediator instanceof ForEachMediator) {
if (((ForEachMediator) current_mediator).getSequence() != null) {
current_mediator = ((ForEachMediator) current_mediator).getSequence();
} else if (((ForEachMediator) current_mediator).getSequenceRef() != null) {
current_mediator = synCfg.getSequence(((ForEachMediator) current_mediator).getSequenceRef());
}
} else if (current_mediator instanceof IterateMediator) {
if (((IterateMediator) current_mediator).getTarget().getSequence() != null) {
current_mediator = ((IterateMediator) current_mediator).getTarget().getSequence();
} else if (((IterateMediator) current_mediator).getTarget().getSequenceRef() != null) {
current_mediator = synCfg.getSequence(((IterateMediator) current_mediator).getTarget().getSequenceRef());
}
} else if (current_mediator instanceof CloneMediator) {
if (((CloneMediator) current_mediator).getTargets().get(position[counter]).getSequence() != null) {
current_mediator = ((CloneMediator) current_mediator).getTargets().get(position[counter]).getSequence();
} else if (((CloneMediator) current_mediator).getTargets().get(position[counter]).getSequenceRef() != null) {
current_mediator = synCfg.getSequence(((CloneMediator) current_mediator).getTargets().get(position[counter]).getSequenceRef());
}
continue;
} else if (current_mediator.getType().equals("ThrottleMediator")) {
current_mediator = ((EnclosedInlinedSequence) current_mediator).getInlineSequence(synCfg, position[counter]);
continue;
} else if (current_mediator.getType().equals("EntitlementMediator")) {
current_mediator = ((EnclosedInlinedSequence) current_mediator).getInlineSequence(synCfg, position[counter]);
continue;
} else if (current_mediator.getType().equals("CacheMediator")) {
current_mediator = ((EnclosedInlinedSequence) current_mediator).getInlineSequence(synCfg, 0);
}
if (current_mediator != null && (current_mediator instanceof AbstractListMediator)) {
int mediatorCount = ((AbstractListMediator) current_mediator).getList().size();
int correctedPosition = getCorrectedPossition((AbstractListMediator) current_mediator, position[counter]);
if (mediatorCount > correctedPosition) {
current_mediator = ((AbstractListMediator) current_mediator).getChild(correctedPosition);
} else {
log.warn("Mediator position requested is larger than last index : " + position[counter]);
}
} else {
current_mediator = null;
break;
}
}
}
return current_mediator;
}
use of org.apache.synapse.mediators.template.InvokeMediator in project wso2-synapse by wso2.
the class InvokeMediatorFactory method createSpecificMediator.
@Override
protected Mediator createSpecificMediator(OMElement elem, Properties properties) {
invoker = new InvokeMediator();
processAuditStatus(invoker, elem);
OMAttribute targetTemplateAttr = elem.getAttribute(ATT_TARGET);
if (targetTemplateAttr != null) {
invoker.setTargetTemplate(targetTemplateAttr.getAttributeValue());
buildParameters(elem);
} else {
String msg = "EIP Invoke mediator should have a target template specified.";
log.error(msg);
throw new SynapseException(msg);
}
return invoker;
}
use of org.apache.synapse.mediators.template.InvokeMediator in project wso2-synapse by wso2.
the class InvokeMediatorSerializer method serializeSpecificMediator.
@Override
protected OMElement serializeSpecificMediator(Mediator m) {
if (!(m instanceof InvokeMediator)) {
handleException("Unsupported mediator passed in for serialization : " + m.getType());
}
InvokeMediator mediator = (InvokeMediator) m;
OMElement invokeElem = null;
if (mediator.isDynamicMediator()) {
String packageName = (mediator.getPackageName() != null && !mediator.getPackageName().isEmpty()) ? mediator.getPackageName() : "";
invokeElem = fac.createOMElement(mediator.getTargetTemplate().substring(packageName.length() + 1, mediator.getTargetTemplate().length()), synNS);
if (mediator.getKey() != null) {
// Serialize Value using ValueSerializer
ValueSerializer keySerializer = new ValueSerializer();
keySerializer.serializeValue(mediator.getKey(), XMLConfigConstants.CONFIG_REF, invokeElem);
}
} else {
invokeElem = fac.createOMElement(INVOKE_N, synNS);
}
if (mediator.getTargetTemplate() != null) {
if (!mediator.isDynamicMediator()) {
invokeElem.addAttribute(fac.createOMAttribute("target", nullNS, mediator.getTargetTemplate()));
}
serializeParams(invokeElem, mediator);
saveTracingState(invokeElem, mediator);
}
return invokeElem;
}
Aggregations