protected CallMediator getCallMediator(SequenceMediator sequence) { CallMediator callMediator = null; int size = sequence.getList().size(); if (size > 0 && sequence.getList().get(size - 1) instanceof CallMediator) { callMediator = (CallMediator) sequence.getList().get(size - 1); } else { callMediator = new CallMediator(); sequence.addChild(callMediator); } return callMediator; }
protected SendMediator getSendMediator(SequenceMediator sequence) { SendMediator sendMediator = null; int size = sequence.getList().size(); if (size > 0 && sequence.getList().get(size - 1) instanceof SendMediator) { sendMediator = (SendMediator) sequence.getList().get(size - 1); } else { sendMediator = new SendMediator(); sequence.addChild(sendMediator); } return sendMediator; }
protected void setEndpointToSendOrCallMediator(SequenceMediator sequence, Endpoint synapseEP) { int size = sequence.getList().size(); Object mediator = null; if (size > 0) { mediator = sequence.getList().get(size - 1); } if (mediator instanceof SendMediator) { SendMediator sendMediator = getSendMediator(sequence); sendMediator.setEndpoint(synapseEP); } else if (mediator instanceof CallMediator) { CallMediator callMediator = getCallMediator(sequence); callMediator.setEndpoint(synapseEP); } }
/** * Deserialize a sequence * * @param mediatorFlow * @param sequence * @param connector * @param reversed * @throws DeserializerException */ protected void deserializeSequence( IGraphicalEditPart part, SequenceMediator sequenceMediator, EsbConnector connector, boolean reversed) throws DeserializerException { LinkedList<EsbNode> nodeList = new LinkedList<>(); LinkedList<CommentMediator> commentMediatorList = new LinkedList<>(); SequenceMediator sequence = EditorUtils.stripUnsupportedMediators(sequenceMediator); TransactionalEditingDomain domain = part.getEditingDomain(); if (connector instanceof OutputConnector) { int mediatorsCount = sequence.getList().size(); boolean lastMediator = false; for (int i = 0; i < mediatorsCount; ++i) { AbstractMediator mediator = (AbstractMediator) sequence.getList().get(i); if (mediatorsCount == (i + 1)) { lastMediator = true; } if (reversedNodes.contains(connector.eContainer())) { executeMediatorDeserializer( part, nodeList, domain, mediator, true, commentMediatorList, lastMediator); reversedNodes.addAll(nodeList); } else { executeMediatorDeserializer( part, nodeList, domain, mediator, reversed, commentMediatorList, lastMediator); if (reversed) { reversedNodes.addAll(nodeList); } } } connectionFlowMap.put(connector, nodeList); } else if (connector instanceof InputConnector) { int mediatorsCount = sequence.getList().size(); boolean lastMediator = false; for (int i = mediatorsCount - 1; i >= 0; --i) { if (i == 0) { lastMediator = true; } AbstractMediator mediator = (AbstractMediator) sequence.getList().get(i); executeMediatorDeserializer( part, nodeList, domain, mediator, true, commentMediatorList, lastMediator); } connectionFlowMap.put(connector, nodeList); reversedNodes.addAll(nodeList); } }
private org.apache.synapse.mediators.builtin.ValidateMediator createValidateMediator( EsbNode subject, TransformationInfo information) throws TransformerException, JaxenException { /* * Check subject. */ Assert.isTrue(subject instanceof ValidateMediator, "Invalid subject."); ValidateMediator visualValidateMediator = (ValidateMediator) subject; /* * Configure Validate mediator. */ org.apache.synapse.mediators.builtin.ValidateMediator validateMediator = new org.apache.synapse.mediators.builtin.ValidateMediator(); setCommonProperties(validateMediator, visualValidateMediator); NamespacedProperty sourceXPath = visualValidateMediator.getSourceXpath(); if (sourceXPath.getPropertyValue() != null && !sourceXPath.getPropertyValue().equals("")) { SynapseXPath synapseXPath = new SynapseXPath(sourceXPath.getPropertyValue()); for (Entry<String, String> entry : sourceXPath.getNamespaces().entrySet()) { synapseXPath.addNamespace(entry.getKey(), entry.getValue()); } validateMediator.setSource(synapseXPath); } List<Value> valueList = new ArrayList<Value>(); for (ValidateSchema schema : visualValidateMediator.getSchemas()) { if (schema.getValidateSchemaKeyType().getLiteral().equals(KeyType.STATIC.getLiteral())) { if (schema.getValidateStaticSchemaKey() != null && schema.getValidateStaticSchemaKey().getKeyValue() != null) { Value val = new Value(schema.getValidateStaticSchemaKey().getKeyValue()); valueList.add(val); } } else { NamespacedProperty dynamicSchemaKey = schema.getValidateDynamicSchemaKey(); if (dynamicSchemaKey != null && dynamicSchemaKey.getPropertyValue() != null) { SynapseXPath xpath = new SynapseXPath(dynamicSchemaKey.getPropertyValue()); for (Entry<String, String> entry : dynamicSchemaKey.getNamespaces().entrySet()) { xpath.addNamespace(entry.getKey(), entry.getValue()); } Value val = new Value(xpath); valueList.add(val); } } } validateMediator.setSchemaKeys(valueList); // ListMediator onFailMediatorList = new AnonymousListMediator(); SequenceMediator onFailMediatorList = new SequenceMediator(); TransformationInfo newOnFailInfo = new TransformationInfo(); newOnFailInfo.setTraversalDirection(information.getTraversalDirection()); newOnFailInfo.setSynapseConfiguration(information.getSynapseConfiguration()); newOnFailInfo.setOriginInSequence(information.getOriginInSequence()); newOnFailInfo.setOriginOutSequence(information.getOriginOutSequence()); newOnFailInfo.setCurrentProxy(information.getCurrentProxy()); newOnFailInfo.setParentSequence(onFailMediatorList); doTransform(newOnFailInfo, visualValidateMediator.getOnFailOutputConnector()); validateMediator.addAll(onFailMediatorList.getList()); for (ValidateFeature feature : visualValidateMediator.getFeatures()) { try { validateMediator.addFeature(feature.getFeatureName(), feature.isFeatureEnabled()); } catch (Exception e) { log.error(e); } } if (!visualValidateMediator.getResources().isEmpty()) { ResourceMap rMap = new ResourceMap(); for (ValidateResource resource : visualValidateMediator.getResources()) { if (resource.getLocation() != null && resource.getKey() != null) { rMap.addResource(resource.getLocation(), resource.getKey().getKeyValue()); } } validateMediator.setResourceMap(rMap); } return validateMediator; }