Skip to content

Commit a376ef0

Browse files
committed
Add unit test and migrate transformation class to a template
1 parent 499dc6c commit a376ef0

File tree

4 files changed

+252
-79
lines changed

4 files changed

+252
-79
lines changed

components/sbm-core/src/test/java/org/springframework/sbm/project/parser/ProjectContextInitializerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
ScanCommand.class,
8686
ProjectResourceSetHolder.class,
8787
JavaRefactoringFactoryImpl.class,
88-
ProjectResourceWrapperRegistry.class
88+
ProjectResourceWrapperRegistry.class,
8989
RewriteSourceFileWrapper.class
9090
}, properties = {"sbm.gitSupportEnabled=false", "sbm.muleTriggerMeshTransformEnabled=false"})
9191
@Disabled

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

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,35 +16,30 @@
1616

1717
package org.springframework.sbm.mule.actions.javadsl.translators.dwl;
1818

19-
import com.fasterxml.jackson.annotation.JsonIgnore;
19+
import freemarker.cache.FileTemplateLoader;
2020
import freemarker.template.Configuration;
21+
import freemarker.template.Version;
2122
import freemarker.template.Template;
22-
import lombok.Setter;
2323
import org.mulesoft.schema.mule.ee.dw.TransformMessageType;
24-
import org.springframework.beans.factory.annotation.Autowired;
2524
import org.springframework.sbm.java.util.Helper;
2625
import org.springframework.sbm.mule.actions.javadsl.translators.DslSnippet;
2726
import org.springframework.sbm.mule.actions.javadsl.translators.MuleComponentToSpringIntegrationDslTranslator;
2827
import org.springframework.sbm.mule.api.toplevel.configuration.MuleConfigurations;
2928
import org.springframework.stereotype.Component;
3029

3130
import javax.xml.namespace.QName;
31+
import java.io.File;
3232
import java.io.StringWriter;
3333
import java.util.HashMap;
3434
import java.util.Map;
3535

3636
@Component
3737
public class DwlTransformTranslator implements MuleComponentToSpringIntegrationDslTranslator<TransformMessageType> {
3838
public static final String TRANSFORM_STATEMENT_CONTENT = ".transform($CLASSNAME::transform)";
39-
public static final String externalPackageName = "package com.example.javadsl;\n\n";
40-
41-
@Autowired
42-
@Setter
43-
@JsonIgnore
44-
private Configuration templateConfiguration;
39+
public static final String externalPackageName = "com.example.javadsl";
4540

4641
/* Define the stubs for adding the transformation as a comment to be addressed */
47-
private static final String externalClassContentPrefixTemplate = externalPackageName +
42+
private static final String externalClassContentPrefixTemplate = "package " + externalPackageName + ";\n\n" +
4843
"public class $CLASSNAME {\n" +
4944
" /*\n" +
5045
" * TODO:\n" +
@@ -138,9 +133,12 @@ private DslSnippet formTriggerMeshDWLBasedDSLSnippet(TransformMessageType compon
138133
templateParams.put("className", className);
139134
templateParams.put("outputContentType", outputContentType);
140135
templateParams.put("dwSpell", sanitizeSpell(dwlSpell));
136+
templateParams.put("packageName", externalPackageName);
141137

142138
StringWriter sw = new StringWriter();
143139
try {
140+
Configuration templateConfiguration = new Configuration(new Version("2.3.0"));
141+
templateConfiguration.setTemplateLoader(new FileTemplateLoader(new File("./src/main/resources/templates")));
144142
Template template = templateConfiguration.getTemplate("triggermesh-dw-transformation-template.ftl");
145143
template.process(templateParams, sw);
146144
} catch (Exception e) {
Lines changed: 68 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,68 @@
1-
<#if packageName?has_content>
2-
package ${packageName};
3-
4-
<#else>
5-
package com.example.javadsl;
6-
7-
</#if>
8-
import com.fasterxml.jackson.databind.ObjectMapper;
9-
10-
import java.net.URI;
11-
import java.net.http.HttpClient;
12-
import java.net.http.HttpRequest;
13-
import java.net.http.HttpResponse;
14-
15-
public class ${className} {
16-
public static class DataWeavePayload {
17-
public String input_data;
18-
public String spell;
19-
public String input_content_type;
20-
public String output_content_type;
21-
};
22-
23-
public static String transform(TmDwPayload payload) {
24-
String uuid = payload.getId();
25-
String url = System.getenv("K_SINK");
26-
HttpClient client = HttpClient.newHttpClient();
27-
HttpRequest.Builder requestBuilder;
28-
DataWeavePayload dwPayload = new DataWeavePayload();
29-
30-
if (payload.getSourceType().contains(";")) {
31-
dwPayload.input_content_type = payload.getSourceType().split(";")[0];
32-
} else {
33-
dwPayload.input_content_type = payload.getSourceType();
34-
}
35-
dwPayload.output_content_type = "${outputContentType}";
36-
37-
//TODO: Verify the spell conforms to Dataweave 2.x: https://docs.mulesoft.com/mule-runtime/4.4/migration-dataweave
38-
dwPayload.spell = "${dwSpell}";
39-
dwPayload.input_data = payload.getPayload();
40-
String body;
41-
42-
try {
43-
requestBuilder = HttpRequest.newBuilder(new URI(url));
44-
ObjectMapper om = new ObjectMapper();
45-
body = om.writeValueAsString(dwPayload);
46-
} catch (Exception e) {
47-
System.out.println("Error sending request: " + e.toString());
48-
return null;
49-
}
50-
51-
requestBuilder.setHeader("content-type", "application/json");
52-
requestBuilder.setHeader("ce-specversion", "1.0");
53-
requestBuilder.setHeader("ce-source", payload.getSource());
54-
requestBuilder.setHeader("ce-type", "io.triggermesh.dataweave.transform");
55-
requestBuilder.setHeader("ce-id", payload.getId());
56-
57-
HttpRequest request = requestBuilder.POST(HttpRequest.BodyPublishers.ofString(body)).build();
58-
59-
try {
60-
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
61-
// TODO: verify the response status and body
62-
return response.body();
63-
} catch (Exception e) {
64-
System.out.println("Error sending event: " + e.toString());
65-
return null;
66-
}
67-
}
68-
}
1+
<#if packageName?has_content>
2+
package ${packageName};
3+
4+
<#else>
5+
package com.example.javadsl;
6+
7+
</#if>
8+
import com.fasterxml.jackson.databind.ObjectMapper;
9+
10+
import java.net.URI;
11+
import java.net.http.HttpClient;
12+
import java.net.http.HttpRequest;
13+
import java.net.http.HttpResponse;
14+
15+
public class ${className} {
16+
public static class DataWeavePayload {
17+
public String input_data;
18+
public String spell;
19+
public String input_content_type;
20+
public String output_content_type;
21+
};
22+
23+
public static String transform(TmDwPayload payload) {
24+
String uuid = payload.getId();
25+
String url = System.getenv("K_SINK");
26+
HttpClient client = HttpClient.newHttpClient();
27+
HttpRequest.Builder requestBuilder;
28+
DataWeavePayload dwPayload = new DataWeavePayload();
29+
30+
if (payload.getSourceType().contains(";")) {
31+
dwPayload.input_content_type = payload.getSourceType().split(";")[0];
32+
} else {
33+
dwPayload.input_content_type = payload.getSourceType();
34+
}
35+
dwPayload.output_content_type = "${outputContentType}";
36+
37+
//TODO: Verify the spell conforms to Dataweave 2.x: https://docs.mulesoft.com/mule-runtime/4.4/migration-dataweave
38+
dwPayload.spell = "${dwSpell}";
39+
dwPayload.input_data = payload.getPayload();
40+
String body;
41+
42+
try {
43+
requestBuilder = HttpRequest.newBuilder(new URI(url));
44+
ObjectMapper om = new ObjectMapper();
45+
body = om.writeValueAsString(dwPayload);
46+
} catch (Exception e) {
47+
System.out.println("Error sending request: " + e.toString());
48+
return null;
49+
}
50+
51+
requestBuilder.setHeader("content-type", "application/json");
52+
requestBuilder.setHeader("ce-specversion", "1.0");
53+
requestBuilder.setHeader("ce-source", payload.getSource());
54+
requestBuilder.setHeader("ce-type", "io.triggermesh.dataweave.transform");
55+
requestBuilder.setHeader("ce-id", payload.getId());
56+
57+
HttpRequest request = requestBuilder.POST(HttpRequest.BodyPublishers.ofString(body)).build();
58+
59+
try {
60+
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
61+
// TODO: verify the response status and body
62+
return response.body();
63+
} catch (Exception e) {
64+
System.out.println("Error sending event: " + e.toString());
65+
return null;
66+
}
67+
}
68+
}

0 commit comments

Comments
 (0)