Skip to content

Commit d3b9ac8

Browse files
Multiple Dataweave transform message in same flow should produce multiple transform class (#118)
1 parent 8c871b1 commit d3b9ac8

24 files changed

+133
-67
lines changed

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/MuleComponentToSpringIntegrationDslTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@
2323
public interface MuleComponentToSpringIntegrationDslTranslator<T> {
2424
Class<T> getSupportedMuleType();
2525

26-
DslSnippet translate(T component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap);
26+
DslSnippet translate(int id, T component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap);
2727
}

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/UnknownStatementTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public Class getSupportedMuleType() {
3131
return null;
3232
}
3333

34-
public DslSnippet translate(Object component, QName qname, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
34+
public DslSnippet translate(int id, Object component, QName qname, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
3535
return new DslSnippet(
3636
generateDSLStatement(component, qname),
3737
Collections.emptySet(),

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/amqp/AmqConnectorTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public Class getSupportedMuleType() {
3838
}
3939

4040
@Override
41-
public DslSnippet translate(AmqpConnectorType component,
41+
public DslSnippet translate(int id, AmqpConnectorType component,
4242
QName name,
4343
MuleConfigurations muleConfigurations,
4444
String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/amqp/AmqpInboundEndpointTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public Class getSupportedMuleType() {
3838
}
3939

4040
@Override
41-
public DslSnippet translate(InboundEndpointType inboundEndpointType, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
41+
public DslSnippet translate(int id, InboundEndpointType inboundEndpointType, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
4242
String queueName = inboundEndpointType.getQueueName();
4343
String renderedSnippet = snippetTemplate.replace("${queueName}", queueName);
4444
Bean amqpConnectionFactoryBean = new Bean("connectionFactory", "org.springframework.amqp.rabbit.connection.ConnectionFactory");

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/amqp/AmqpOutboundEndpointTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public Class<OutboundEndpointType> getSupportedMuleType() {
3737
}
3838

3939
@Override
40-
public DslSnippet translate(OutboundEndpointType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
40+
public DslSnippet translate(int id, OutboundEndpointType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
4141

4242

4343
addExchange(snippet, component.getExchangeName());

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/core/ChoiceTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public Class<SelectiveOutboundRouterType> getSupportedMuleType() {
4545
" .defaultSubFlowMapping($OTHERWISE_STATEMENTS)\n";
4646

4747
@Override
48-
public DslSnippet translate(SelectiveOutboundRouterType component,
48+
public DslSnippet translate(int id, SelectiveOutboundRouterType component,
4949
QName name,
5050
MuleConfigurations muleConfigurations,
5151
String flowName,

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/core/FlowRefTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public Class getSupportedMuleType() {
4747
}
4848

4949
@Override
50-
public DslSnippet translate(FlowRef component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
50+
public DslSnippet translate(int id, FlowRef component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
5151
String subFlowName = Helper.sanitizeForBeanMethodName(translateToJavaName(component.getName()));
5252
String flowRefSnippet = javaDslFlowRefTemplate.replace(SUBFLOW_NAME, subFlowName);
5353
return new DslSnippet(flowRefSnippet,

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/core/SetPayloadTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public Class<SetPayloadTransformerType> getSupportedMuleType() {
3333
}
3434

3535
@Override
36-
public DslSnippet translate(SetPayloadTransformerType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
36+
public DslSnippet translate(int id, SetPayloadTransformerType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
3737
String valueWithoutNewLines = component.getValue().replace("\n", "");
3838
String withEscapedChars = valueWithoutNewLines.replace("\"", "\\\"");
3939
return new DslSnippet(".handle((p, h) -> " + "\"" + withEscapedChars + "\")", Collections.emptySet());

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/core/SetPropertyTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public Class<SetPropertyType> getSupportedMuleType() {
3434
}
3535

3636
@Override
37-
public DslSnippet translate(SetPropertyType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
37+
public DslSnippet translate(int id, SetPropertyType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
3838
return new DslSnippet(
3939
".enrichHeaders(h -> h.header(\"" + component.getPropertyName() + "\", \"" + component.getValue() + "\"))",
4040
Collections.emptySet()

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/core/TransformerTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public Class<AbstractTransformerType> getSupportedMuleType() {
3434
}
3535

3636
@Override
37-
public DslSnippet translate(AbstractTransformerType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
37+
public DslSnippet translate(int id, AbstractTransformerType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
3838
if (name.getLocalPart().equals("byte-array-to-string-transformer")) {
3939
return new DslSnippet(".transform(new ObjectToStringTransformer())", Set.of("org.springframework.integration.transformer.ObjectToStringTransformer"));
4040
} else {

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/db/SelectTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public Class<SelectMessageProcessorType> getSupportedMuleType() {
3636
}
3737

3838
@Override
39-
public DslSnippet translate(SelectMessageProcessorType component,
39+
public DslSnippet translate(int id, SelectMessageProcessorType component,
4040
QName name,
4141
MuleConfigurations muleConfigurations,
4242
String flowName,

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/dwl/DwlTransformTranslator.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public Class<TransformMessageType> getSupportedMuleType() {
5353

5454
@Override
5555
public DslSnippet translate(
56+
int id,
5657
TransformMessageType component,
5758
QName name,
5859
MuleConfigurations muleConfigurations,
@@ -65,7 +66,7 @@ public DslSnippet translate(
6566
return formExternalFileBasedDSLSnippet(component);
6667
}
6768

68-
return formEmbeddedDWLBasedDSLSnippet(component, Helper.sanitizeForBeanMethodName(flowName));
69+
return formEmbeddedDWLBasedDSLSnippet(component, Helper.sanitizeForBeanMethodName(flowName), id);
6970
}
7071

7172
return noSupportDslSnippet();
@@ -76,8 +77,8 @@ private DslSnippet noSupportDslSnippet() {
7677
return new DslSnippet(noSupport, Set.of(), Set.of(), Set.of());
7778
}
7879

79-
private DslSnippet formEmbeddedDWLBasedDSLSnippet(TransformMessageType component, String flowName) {
80-
String className = capitalizeFirstLetter(flowName) + "Transform";
80+
private DslSnippet formEmbeddedDWLBasedDSLSnippet(TransformMessageType component, String flowName, int id) {
81+
String className = capitalizeFirstLetter(flowName) + "Transform_" + id;
8182

8283
String dwlContent = component.getSetPayload().getContent().toString();
8384
String dwlContentCommented = " * " + dwlContent.replace("\n", "\n * ") + "\n";

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/http/HttpListenerTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public Class<ListenerType> getSupportedMuleType() {
4545
}
4646

4747
@Override
48-
public DslSnippet translate(ListenerType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
48+
public DslSnippet translate(int id, ListenerType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
4949
/*
5050
* In the connector component on your flow, the only required fields are the Path
5151
* (the path-absolute URL defining the resource location), which by default is /,

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/http/HttpRequestTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public Class getSupportedMuleType() {
5151
" )";
5252

5353
@Override
54-
public DslSnippet translate(RequestType component,
54+
public DslSnippet translate(int id, RequestType component,
5555
QName name,
5656
MuleConfigurations muleConfigurations,
5757
String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/logging/LoggingTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public Class getSupportedMuleType() {
4646
return LoggerType.class;
4747
}
4848

49-
public DslSnippet translate(LoggerType loggerType, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
49+
public DslSnippet translate(int id, LoggerType loggerType, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
5050

5151
StringBuffer sb = new StringBuffer();
5252

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/wmq/WmqInboundEndpointTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public Class<InboundEndpointType> getSupportedMuleType() {
3434
}
3535

3636
@Override
37-
public DslSnippet translate(InboundEndpointType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
37+
public DslSnippet translate(int id, InboundEndpointType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
3838
return new DslSnippet(
3939
"return IntegrationFlows.from(Jms.inboundAdapter(connectionFactory).destination(\"" + component.getQueue() +"\")).handle((p, h) -> p)",
4040
Set.of("org.springframework.integration.jms.dsl.Jms"),

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/actions/javadsl/translators/wmq/WmqOutboundEndpointTranslator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public Class<OutboundEndpointType> getSupportedMuleType() {
3434
}
3535

3636
@Override
37-
public DslSnippet translate(OutboundEndpointType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
37+
public DslSnippet translate(int id, OutboundEndpointType component, QName name, MuleConfigurations muleConfigurations, String flowName, Map<Class, MuleComponentToSpringIntegrationDslTranslator> translatorsMap) {
3838
return new DslSnippet(
3939
".handle(Jms.outboundAdapter(connectionFactory).destination(\"" +component.getQueue()+"\"))",
4040
Set.of("org.springframework.integration.jms.dsl.Jms"),

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/api/toplevel/AbstractTopLevelElement.java

+13-9
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,7 @@
2525

2626
import javax.xml.bind.JAXBElement;
2727
import javax.xml.namespace.QName;
28-
import java.util.HashSet;
29-
import java.util.List;
30-
import java.util.Map;
31-
import java.util.Set;
28+
import java.util.*;
3229
import java.util.stream.Collectors;
3330

3431
/**
@@ -61,14 +58,21 @@ public AbstractTopLevelElement(String flowName,
6158
}
6259

6360
public List<DslSnippet> buildDslSnippets() {
64-
return elements.stream()
65-
.map(o -> translate(o.getValue(), o.getName(), muleConfigurations, flowName))
66-
.collect(Collectors.toList());
61+
62+
List<DslSnippet> dslSnippets = new ArrayList<>();
63+
64+
for (int i = 0; i < elements.size(); i++) {
65+
JAXBElement<?> o = elements.get(i);
66+
dslSnippets.add(
67+
translate(i, o.getValue(), o.getName(), muleConfigurations, flowName)
68+
);
69+
}
70+
return dslSnippets;
6771
}
6872

69-
private DslSnippet translate(Object o, QName name, MuleConfigurations muleConfigurations, String flowName) {
73+
private DslSnippet translate(int id, Object o, QName name, MuleConfigurations muleConfigurations, String flowName) {
7074
MuleComponentToSpringIntegrationDslTranslator translator = translatorsMap.getOrDefault(o.getClass(), new UnknownStatementTranslator());
71-
return translator.translate(o, name, muleConfigurations, flowName, this.translatorsMap);
75+
return translator.translate(id, o, name, muleConfigurations, flowName, this.translatorsMap);
7276
}
7377

7478

0 commit comments

Comments
 (0)