use of com.mulesoft.tools.migration.step.category.MigrationReport in project mule-migration-assistant by mulesoft.
the class OAuth2ProviderConfig method migrateAuthorizationConfig.
private void migrateAuthorizationConfig(Element element, MigrationReport report) {
final Element authorizationConfig = new Element("authorization-config", OAUTH2_PROVIDER_NAMESPACE);
if (element.getAttributeValue("loginPage") != null) {
authorizationConfig.setAttribute("loginPage", element.getAttributeValue("loginPage"));
element.removeAttribute("loginPage");
}
final String path = element.getAttributeValue("authorizationEndpointPath");
if (path != null) {
authorizationConfig.setAttribute("path", path.startsWith("/") ? path : "/" + path);
element.removeAttribute("authorizationEndpointPath");
}
if (element.getAttributeValue("authorizationCodeStore-ref") != null) {
getApplicationModel().getNodeOptional("//*[namespace-uri() = '" + SPRING_BEANS_NS_URI + "' and local-name() = 'bean' and @name='" + element.getAttributeValue("authorizationCodeStore-ref") + "']").ifPresent(b -> {
authorizationConfig.setAttribute("authorizationCodeStore", b.getAttributes().stream().filter(att -> "objectStore-ref".equals(att.getName())).map(att -> att.getValue()).findFirst().get());
});
element.removeAttribute("authorizationCodeStore-ref");
if (element.getAttributeValue("authorizationTtlSeconds") != null) {
report.report("oauth2Provider.authorizationTtl", element, authorizationConfig);
element.removeAttribute("authorizationTtlSeconds");
}
}
element.addContent(authorizationConfig);
}
use of com.mulesoft.tools.migration.step.category.MigrationReport in project mule-migration-assistant by mulesoft.
the class VmOutboundEndpoint method migrateOutboundVmEndpoint.
public static void migrateOutboundVmEndpoint(Element object, MigrationReport report, Optional<Element> connector, String configName, Element vmConfig) {
String path = processAddress(object, report).map(address -> address.getPath()).orElseGet(() -> obtainPath(object));
addQueue(VM_NAMESPACE, connector, vmConfig, path);
if (object.getAttribute("responseTimeout") != null) {
object.setAttribute("timeout", object.getAttributeValue("responseTimeout"));
object.setAttribute("timeoutUnit", "MILLISECONDS");
object.removeAttribute("responseTimeout");
}
object.setAttribute("config-ref", configName);
object.setAttribute("queueName", path);
object.removeAttribute("path");
object.removeAttribute("name");
object.removeAttribute("mimeType");
object.removeAttribute("disableTransportTransformer");
Element content = buildContent(VM_NAMESPACE);
object.addContent(content);
report.report("vm.sessionVars", content, content);
}
use of com.mulesoft.tools.migration.step.category.MigrationReport in project mule-migration-assistant by mulesoft.
the class HttpTransformers method execute.
@Override
public void execute(Element object, MigrationReport report) throws RuntimeException {
if ("request-wildcard-filter".equals(object.getName())) {
addValidationDependency(getApplicationModel().getPomModel().get());
addValidationNamespace(object.getDocument());
Element wildcardFilterTryScope = new Element("try", CORE_NAMESPACE);
Element matchValidator = new Element("matches-regex", VALIDATION_NAMESPACE);
String regex;
Element parent = object.getParentElement();
if ("not-filter".equals(parent.getName()) && parent.getNamespace().equals(CORE_NAMESPACE)) {
addElementAfter(wildcardFilterTryScope, object.getParentElement());
object.getParentElement().detach();
regex = "^(?!" + object.getAttributeValue("pattern").replaceAll("\\*", ".*") + ").*$";
} else {
regex = "^" + object.getAttributeValue("pattern").replaceAll("\\*", ".*") + "$";
addElementAfter(wildcardFilterTryScope, object);
object.detach();
}
matchValidator.setAttribute("value", "#[message.attributes.requestPath]");
matchValidator.setAttribute("regex", regex);
matchValidator.removeAttribute("pattern");
wildcardFilterTryScope.addContent(matchValidator);
wildcardFilterTryScope.addContent(new Element("error-handler", CORE_NAMESPACE).addContent(new Element("on-error-propagate", CORE_NAMESPACE).addContent(new Element("set-variable", CORE_NAMESPACE).setAttribute("variableName", "statusCode").setAttribute("value", "406")).setAttribute("type", "MULE:VALIDATION")));
} else if ("body-to-parameter-map-transformer".equals(object.getName())) {
Element bodyToParamMap = new Element("set-payload", CORE_NAMESPACE).setAttribute("value", "#[output application/java --- payload]");
if (object.getParentElement() == object.getDocument().getRootElement()) {
getApplicationModel().getNodes("//mule:transformer[@ref='" + object.getAttributeValue("name") + "']").forEach(t -> {
addElementAfter(bodyToParamMap, t);
t.detach();
});
} else {
addElementAfter(bodyToParamMap, object);
}
object.detach();
} else {
if (object.getAttribute("name") != null) {
getApplicationModel().getNodes("//mule:transformer[@ref = '" + object.getAttributeValue("name") + "']").forEach(t -> t.detach());
}
object.detach();
}
}
use of com.mulesoft.tools.migration.step.category.MigrationReport in project mule-migration-assistant by mulesoft.
the class JmsInboundEndpoint method execute.
@Override
public void execute(Element object, MigrationReport report) throws RuntimeException {
jmsTransportLib(getApplicationModel());
addMigrationAttributeToElement(object, new Attribute("isMessageSource", "true"));
Element tx = object.getChild("transaction", JMS_NAMESPACE);
while (tx != null) {
String txAction = mapTransactionalAction(tx.getAttributeValue("action"), report, tx, object);
object.setAttribute("transactionalAction", txAction);
object.removeChild("transaction", JMS_NAMESPACE);
tx = object.getChild("transaction", JMS_NAMESPACE);
}
while (object.getChild("xa-transaction", CORE_NAMESPACE) != null) {
Element xaTx = object.getChild("xa-transaction", CORE_NAMESPACE);
String txAction = mapTransactionalAction(xaTx.getAttributeValue("action"), report, xaTx, object);
object.setAttribute("transactionalAction", txAction);
object.setAttribute("transactionType", "XA");
object.removeChild("xa-transaction", CORE_NAMESPACE);
}
while (object.getChild("multi-transaction", CORE_EE_NAMESPACE) != null) {
Element multiTx = object.getChild("multi-transaction", CORE_EE_NAMESPACE);
String txAction = mapTransactionalAction(multiTx.getAttributeValue("action"), report, multiTx, object);
object.setAttribute("transactionalAction", txAction);
object.removeChild("multi-transaction", CORE_EE_NAMESPACE);
}
getApplicationModel().addNameSpace(JMS_NAMESPACE, "http://www.mulesoft.org/schema/mule/jms/current/mule-jms.xsd", object.getDocument());
object.setNamespace(JMS_NAMESPACE);
object.setName("listener");
Optional<Element> connector = resolveJmsConnector(object, getApplicationModel());
String configName = migrateJmsConfig(object, report, connector, getApplicationModel());
connector.ifPresent(m3c -> {
migrateReconnect(m3c, object, report, object);
if (m3c.getAttributeValue("acknowledgementMode") != null) {
switch(m3c.getAttributeValue("acknowledgementMode")) {
case "CLIENT_ACKNOWLEDGE":
object.setAttribute("ackMode", "MANUAL");
break;
case "DUPS_OK_ACKNOWLEDGE":
object.setAttribute("ackMode", "DUPS_OK");
break;
default:
}
}
if (m3c.getAttributeValue("numberOfConsumers") != null) {
object.setAttribute("numberOfConsumers", m3c.getAttributeValue("numberOfConsumers"));
}
handleConnectorChildElements(m3c, getApplicationModel().getNode("*/*[namespace-uri()='" + JMS_NAMESPACE_URI + "' and local-name()='config' and @name='" + configName + "']"), new Element("connection", CORE_NAMESPACE), report);
});
String destination = processAddress(object, report).map(address -> {
String path = address.getPath();
if ("topic".equals(path)) {
configureTopicListener(object, JMS_NAMESPACE, connector);
return address.getPort();
} else {
return path;
}
}).orElseGet(() -> {
if (object.getAttributeValue("queue") != null) {
return object.getAttributeValue("queue");
} else {
configureTopicListener(object, JMS_NAMESPACE, connector);
return object.getAttributeValue("topic");
}
});
if (object.getAttribute("exchange-pattern") == null || object.getAttributeValue("exchange-pattern").equals("request-response")) {
Element outboundBuilder = new Element("response", JMS_NAMESPACE);
outboundBuilder.addContent(compatibilityProperties(getApplicationModel()));
outboundBuilder.setAttribute("correlationId", "#[migration::JmsTransport::jmsCorrelationId(correlationId, vars)]");
report.report("jms.propertiesListener", object, object);
connector.ifPresent(m3c -> {
if (m3c.getAttributeValue("persistentDelivery") != null) {
outboundBuilder.setAttribute("persistentDelivery", m3c.getAttributeValue("persistentDelivery"));
}
});
object.addContent(outboundBuilder);
}
if (object.getChild("selector", JMS_NAMESPACE) != null) {
object.setAttribute("selector", object.getChild("selector", JMS_NAMESPACE).getAttributeValue("expression"));
object.removeChild("selector", JMS_NAMESPACE);
}
object.setAttribute("config-ref", configName);
if (destination != null) {
object.setAttribute("destination", destination);
}
object.removeAttribute("queue");
object.removeAttribute("topic");
object.removeAttribute("name");
object.removeAttribute("responseTimeout");
// TODO
object.removeAttribute("xaPollingTimeout");
if (object.getAttribute("exchange-pattern") == null || object.getAttributeValue("exchange-pattern").equals("request-response")) {
migrateInboundEndpointStructure(getApplicationModel(), object, report, true);
} else {
migrateInboundEndpointStructure(getApplicationModel(), object, report, false);
}
addAttributesToInboundProperties(object, getApplicationModel(), report);
}
use of com.mulesoft.tools.migration.step.category.MigrationReport in project mule-migration-assistant by mulesoft.
the class JmsOutboundEndpoint method migrateOutboundJmsEndpoint.
public static void migrateOutboundJmsEndpoint(Element object, MigrationReport report, Optional<Element> connector, String configName, ApplicationModel appModel) {
String destination = processAddress(object, report).map(address -> {
String path = address.getPath();
if ("topic".equals(path)) {
configureTopicPublisher(object);
return address.getPort();
} else {
return path;
}
}).orElseGet(() -> {
if (object.getAttributeValue("queue") != null) {
return object.getAttributeValue("queue");
} else {
configureTopicPublisher(object);
return object.getAttributeValue("topic");
}
});
report.report("jms.propertiesPublish", object, object);
Element outboundBuilder = new Element("message", JMS_NAMESPACE);
Attribute migrationReplyTo = object.getAttribute("reply-to", Namespace.getNamespace("migration", "migration"));
if (migrationReplyTo != null) {
if (migrationReplyTo.getValue().startsWith("TOPIC:")) {
outboundBuilder.addContent(new Element("reply-to", JMS_NAMESPACE).setAttribute("destination", migrationReplyTo.getValue()).setAttribute("destinationType", "TOPIC"));
} else {
outboundBuilder.addContent(new Element("reply-to", JMS_NAMESPACE).setAttribute("destination", migrationReplyTo.getValue()));
}
migrationReplyTo.detach();
} else {
outboundBuilder.addContent(new Element("reply-to", JMS_NAMESPACE).setAttribute("destination", "#[migration::JmsTransport::jmsPublishReplyTo(vars)]"));
}
outboundBuilder.addContent(compatibilityProperties(appModel));
outboundBuilder.setAttribute("correlationId", "#[migration::JmsTransport::jmsCorrelationId(correlationId, vars)]");
object.setAttribute("sendCorrelationId", "#[migration::JmsTransport::jmsSendCorrelationId(vars)]");
object.addContent(outboundBuilder);
connector.ifPresent(m3c -> {
if (m3c.getAttributeValue("persistentDelivery") != null) {
object.setAttribute("persistentDelivery", m3c.getAttributeValue("persistentDelivery"));
}
// This logic comes from JmsMessageDispatcher#dispatchMessage in Mule 3
if ("true".equals(m3c.getAttributeValue("honorQosHeaders"))) {
report.report("jms.inboundProperties", m3c, object);
String defaultDeliveryMode = "true".equals(m3c.getAttributeValue("persistentDelivery")) ? "2" : "1";
object.setAttribute("persistentDelivery", "#[(vars.compatibility_inboundProperties.JMSDeliveryMode default " + defaultDeliveryMode + ") == 2]");
object.setAttribute("priority", "#[vars.compatibility_inboundProperties.JMSPriority default 4]");
}
handleConnectorChildElements(m3c, appModel.getNode("*/*[namespace-uri()='" + JMS_NAMESPACE_URI + "' and local-name()='config' and @name='" + configName + "']"), new Element("connection", CORE_NAMESPACE), report);
});
if (object.getAttribute("responseTimeout") != null) {
object.addContent(new Element("consume-configuration", JMS_NAMESPACE).setAttribute("maximumWait", object.getAttributeValue("responseTimeout")));
}
object.removeAttribute("responseTimeout");
object.setAttribute("config-ref", configName);
if (destination != null) {
object.setAttribute("destination", destination);
}
object.removeAttribute("queue");
object.removeAttribute("topic");
object.removeAttribute("name");
object.removeAttribute("exchange-pattern");
}
Aggregations