├── .gitignore ├── mule4-batch-demo ├── src │ ├── main │ │ ├── resources │ │ │ ├── mule-artifact.properties │ │ │ └── log4j2.xml │ │ └── mule │ │ │ ├── application-types.xml │ │ │ ├── mule4-batch-demo.xml │ │ │ ├── mule4-batch-variables.xml │ │ │ └── mule4-batch-aggregator-demo.xml │ └── test │ │ └── resources │ │ └── log4j2-test.xml ├── mule-artifact.json ├── README.md ├── .project ├── .settings │ └── org.eclipse.jdt.core.prefs ├── .classpath └── pom.xml ├── mule4-dw2-avro-support ├── mule-artifact.json ├── src │ ├── test │ │ └── resources │ │ │ ├── sample_data │ │ │ ├── design-info.json │ │ │ └── unknown.dwl │ │ │ └── log4j2-test.xml │ └── main │ │ ├── resources │ │ ├── employee.avro.json │ │ └── log4j2.xml │ │ └── mule │ │ └── mule4-dw2-avro-support.xml ├── Readme.ad ├── .gitignore └── pom.xml ├── say-hello-mule4-docker ├── buildAndRun.sh ├── Dockerfile ├── mule-artifact.json ├── src │ ├── test │ │ └── resources │ │ │ └── log4j2-test.xml │ └── main │ │ ├── mule │ │ └── say-hello-mule4-docker.xml │ │ └── resources │ │ └── log4j2.xml ├── README.md ├── .gitignore └── pom.xml └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | **/target 3 | **/.mule 4 | 5 | -------------------------------------------------------------------------------- /mule4-batch-demo/src/main/resources/mule-artifact.properties: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mule4-batch-demo/mule-artifact.json: -------------------------------------------------------------------------------- 1 | { 2 | "minMuleVersion": "4.2.1" 3 | } -------------------------------------------------------------------------------- /mule4-dw2-avro-support/mule-artifact.json: -------------------------------------------------------------------------------- 1 | { 2 | "minMuleVersion": "4.2.0" 3 | } -------------------------------------------------------------------------------- /mule4-batch-demo/README.md: -------------------------------------------------------------------------------- 1 | # Batch Processing in Mule 4 2 | 3 | This example demonstrates batch processing capabilities in Mule 4. 4 | -------------------------------------------------------------------------------- /say-hello-mule4-docker/buildAndRun.sh: -------------------------------------------------------------------------------- 1 | 2 | mvn clean package 3 | 4 | docker build -t hellomule4 . 5 | 6 | docker run -it --rm -p 8081:8081 hellomule4 7 | -------------------------------------------------------------------------------- /say-hello-mule4-docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM javastreets/mule:latest 2 | 3 | COPY ./target/say-hello-mule4-docker*.jar /opt/mule/apps/ 4 | 5 | CMD [ "/opt/mule/bin/mule"] 6 | -------------------------------------------------------------------------------- /mule4-batch-demo/src/main/mule/application-types.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /mule4-dw2-avro-support/src/test/resources/sample_data/design-info.json: -------------------------------------------------------------------------------- 1 | { 2 | "sampleData": { 3 | "0c866aa5-41a1-483f-8598-5e182fab3659": { 4 | "payload": "sample_data/unknown.dwl" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /mule4-dw2-avro-support/Readme.ad: -------------------------------------------------------------------------------- 1 | = DataWeave 2.2 and Avro Format 2 | This is an example project for DataWeave 2.2 and Avro Format.For more details, see https://javastreets.com/blog/mule-dataweave-2-avro-format.html 3 | 4 | This requires Mule Runtime version 4.2.0 and beyond. 5 | 6 | Once deployed, you can access http://localhost:8081/write for triggering demo flows. 7 | -------------------------------------------------------------------------------- /mule4-dw2-avro-support/src/test/resources/sample_data/unknown.dwl: -------------------------------------------------------------------------------- 1 | { 2 | data: [ 3 | { 4 | idx: 2 as Number {class: "java.lang.Integer"}, 5 | firstname: "????" as String {class: "java.lang.String"}, 6 | lastname: "????" as String {class: "java.lang.String"} 7 | } as Object {class: "java.util.LinkedHashMap"} 8 | ] as Array {class: "java.util.ArrayList"} 9 | } as Object {encoding: "UTF-8", mediaType: "*/*", mimeType: "*/*", class: "java.util.LinkedHashMap"} -------------------------------------------------------------------------------- /say-hello-mule4-docker/mule-artifact.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs": [ 3 | "say-hello-mule4-docker.xml" 4 | ], 5 | "secureProperties": [], 6 | "redeploymentEnabled": true, 7 | "name": "say-hello-mule4-docker", 8 | "minMuleVersion": "4.1.0", 9 | "requiredProduct": "MULE", 10 | "classLoaderModelLoaderDescriptor": { 11 | "id": "mule", 12 | "attributes": { 13 | "exportedResources": [] 14 | } 15 | }, 16 | "bundleDescriptorLoader": { 17 | "id": "mule", 18 | "attributes": {} 19 | } 20 | } -------------------------------------------------------------------------------- /mule4-dw2-avro-support/src/main/resources/employee.avro.json: -------------------------------------------------------------------------------- 1 | { 2 | "namespace": "com.javastreets.avro", 3 | "name": "com.javastreets.avro.Employee", 4 | "type": "record", 5 | "fields": [ 6 | { 7 | "name": "employeeId", 8 | "type": "int" 9 | }, 10 | { 11 | "name": "firstname", 12 | "type": "string" 13 | }, 14 | { 15 | "name": "lastname", 16 | "type": "string" 17 | }, 18 | { 19 | "name": "address", 20 | "type": "string" 21 | }, 22 | { 23 | "name": "notes", 24 | "type": "string" 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Mule 4 Examples Repository 2 | 3 | This repository contains examples for Mule ESB 4. 4 | 5 | * **mule4-batch-demo**: Implements batch processing in mule 4. https://javastreets.com/blog/2017/10/mule-4-batch-processing.html 6 | * **say-hello-mule4-docker**: A Simple Mule 4 Application running inside Mule 4 Docker Image. https://javastreets.com/blog/run-mule4-in-docker-container.html 7 | * **mule4-dw2-avro-support**: This is an example project for DataWeave 2.2 and Avro Format.For more details, see https://javastreets.com/blog/mule-dataweave-2-avro-format.html 8 | -------------------------------------------------------------------------------- /mule4-batch-demo/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | mule4-batch-demo 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.mule.tooling.core.muleStudioBuilder 15 | 16 | 17 | 18 | 19 | 20 | org.mule.tooling.core.muleStudioNature 21 | org.eclipse.jdt.core.javanature 22 | 23 | 24 | -------------------------------------------------------------------------------- /mule4-batch-demo/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /mule4-batch-demo/src/test/resources/log4j2-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /say-hello-mule4-docker/src/test/resources/log4j2-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /mule4-dw2-avro-support/src/test/resources/log4j2-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /say-hello-mule4-docker/README.md: -------------------------------------------------------------------------------- 1 | # Say Hello Mule 4 from Docker 2 | 3 | This example runs a simple hello from mule application inside Docker Container. 4 | 5 | To build and run the application - execute `sh buildAndRun.sh`. 6 | 7 | This file performs 3 steps - 8 | 9 | * Run Maven Build to package application. 10 | * Build Docker image named `hellomule4` and adds this application to Mule within docker. 11 | * Starts the docker container to run mule in foreground. (press CTRL+C to stop mule) 12 | 13 | To run application in background, you may also run below command - 14 | 15 | `docker run -d --name hellomule4 -p 8081:8081 hellomule4` 16 | 17 | This docker image exposes 8081 port and binds it to the 8081 of localhost. 18 | 19 | Once application is running, access below url to see Hello from Mule - 20 | 21 | http://localhost:8081/test/hello 22 | 23 | It should output - 24 | 25 | _Hello from Mule ESB (Version: 4.1.0). I am running inside docker image javastreets/mule:latest-4_ 26 | -------------------------------------------------------------------------------- /mule4-dw2-avro-support/.gitignore: -------------------------------------------------------------------------------- 1 | # ------------------------------------------------------------------------------ # 2 | # Java defaults (https://github.com/github/gitignore/blob/master/Java.gitignore) # 3 | # ------------------------------------------------------------------------------ # 4 | *.class 5 | 6 | # Package Files # 7 | *.jar 8 | *.war 9 | *.ear 10 | 11 | # ------------------------------------------------------------------------------------------- # 12 | # Eclipse-specific (https://github.com/github/gitignore/blob/master/Global/Eclipse.gitignore) # 13 | # ------------------------------------------------------------------------------------------- # 14 | *.pydevproject 15 | .metadata 16 | bin/** 17 | tmp/** 18 | tmp/**/* 19 | *.tmp 20 | *.bak 21 | *.swp 22 | *~.nib 23 | local.properties 24 | .settings/ 25 | .loadpath 26 | .project 27 | .classpath 28 | 29 | # External tool builders 30 | .externalToolBuilders/ 31 | 32 | # Locally stored "Eclipse launch configurations" 33 | *.launch 34 | 35 | # CDT-specific 36 | .cproject 37 | 38 | # PDT-specific 39 | .buildpath 40 | 41 | # --------------- # 42 | # Studio-specific # 43 | # --------------- # 44 | target/ 45 | .mule/** 46 | .mule/**/* 47 | .DS_Store 48 | velocity.log -------------------------------------------------------------------------------- /say-hello-mule4-docker/.gitignore: -------------------------------------------------------------------------------- 1 | # ------------------------------------------------------------------------------ # 2 | # Java defaults (https://github.com/github/gitignore/blob/master/Java.gitignore) # 3 | # ------------------------------------------------------------------------------ # 4 | *.class 5 | 6 | # Package Files # 7 | *.jar 8 | *.war 9 | *.ear 10 | 11 | # ------------------------------------------------------------------------------------------- # 12 | # Eclipse-specific (https://github.com/github/gitignore/blob/master/Global/Eclipse.gitignore) # 13 | # ------------------------------------------------------------------------------------------- # 14 | *.pydevproject 15 | .metadata 16 | bin/** 17 | tmp/** 18 | tmp/**/* 19 | *.tmp 20 | *.bak 21 | *.swp 22 | *~.nib 23 | local.properties 24 | .settings/ 25 | .loadpath 26 | .project 27 | .classpath 28 | 29 | # External tool builders 30 | .externalToolBuilders/ 31 | 32 | # Locally stored "Eclipse launch configurations" 33 | *.launch 34 | 35 | # CDT-specific 36 | .cproject 37 | 38 | # PDT-specific 39 | .buildpath 40 | 41 | # --------------- # 42 | # Studio-specific # 43 | # --------------- # 44 | target/ 45 | .mule/** 46 | .mule/**/* 47 | .DS_Store 48 | velocity.log -------------------------------------------------------------------------------- /say-hello-mule4-docker/src/main/mule/say-hello-mule4-docker.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /mule4-batch-demo/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /mule4-batch-demo/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /mule4-dw2-avro-support/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /say-hello-mule4-docker/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /say-hello-mule4-docker/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | com.javastreets 6 | say-hello-mule4-docker 7 | 1.0.0-SNAPSHOT 8 | mule-application 9 | 10 | say-hello-mule4-docker-docker 11 | 12 | 13 | UTF-8 14 | UTF-8 15 | 16 | 4.2.0 17 | 3.2.7 18 | 19 | 20 | 21 | 22 | 23 | org.mule.tools.maven 24 | mule-maven-plugin 25 | ${mule.maven.plugin.version} 26 | true 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | org.mule.connectors 36 | mule-http-connector 37 | 1.5.3 38 | mule-plugin 39 | 40 | 41 | org.mule.connectors 42 | mule-sockets-connector 43 | 1.1.5 44 | mule-plugin 45 | 46 | 47 | 48 | 49 | 50 | anypoint-exchange 51 | Anypoint Exchange 52 | https://maven.anypoint.mulesoft.com/api/v1/maven 53 | default 54 | 55 | 56 | mulesoft-releases 57 | MuleSoft Releases Repository 58 | https://repository.mulesoft.org/releases/ 59 | default 60 | 61 | 62 | 63 | 64 | mulesoft-releases 65 | mulesoft release repository 66 | default 67 | https://repository.mulesoft.org/releases/ 68 | 69 | false 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /mule4-dw2-avro-support/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | com.javastreets 6 | mule4-dw2-avro-support 7 | 1.0.0-SNAPSHOT 8 | mule-application 9 | 10 | mule4-dw2-avro-support 11 | 12 | 13 | UTF-8 14 | UTF-8 15 | 16 | 4.2.0 17 | 3.2.7 18 | 19 | 20 | 21 | 22 | 23 | org.mule.tools.maven 24 | mule-maven-plugin 25 | ${mule.maven.plugin.version} 26 | true 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | org.mule.connectors 36 | mule-http-connector 37 | 1.5.3 38 | mule-plugin 39 | 40 | 41 | org.mule.connectors 42 | mule-sockets-connector 43 | 1.1.5 44 | mule-plugin 45 | 46 | 47 | org.mule.connectors 48 | mule-file-connector 49 | 1.2.2 50 | mule-plugin 51 | 52 | 53 | 54 | 55 | 56 | anypoint-exchange 57 | Anypoint Exchange 58 | https://maven.anypoint.mulesoft.com/api/v1/maven 59 | default 60 | 61 | 62 | mulesoft-releases 63 | MuleSoft Releases Repository 64 | https://repository.mulesoft.org/releases/ 65 | default 66 | 67 | 68 | 69 | 70 | mulesoft-releases 71 | mulesoft release repository 72 | default 73 | https://repository.mulesoft.org/releases/ 74 | 75 | false 76 | 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /mule4-dw2-avro-support/src/main/mule/mule4-dw2-avro-support.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /mule4-batch-demo/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | com.mycompany 6 | mule4-batch-demo 7 | 1.0.0-SNAPSHOT 8 | mule-application 9 | 10 | mule4-batch-demo 11 | 12 | 13 | UTF-8 14 | UTF-8 15 | 16 | 4.2.1 17 | 3.2.7 18 | 19 | 20 | 21 | 22 | 23 | org.mule.tools.maven 24 | mule-maven-plugin 25 | ${mule.maven.plugin.version} 26 | true 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | org.mule.connectors 37 | mule-http-connector 38 | 1.5.10 39 | mule-plugin 40 | 41 | 42 | org.mule.modules 43 | mule-validation-module 44 | 1.4.0 45 | mule-plugin 46 | 47 | 48 | org.mule.connectors 49 | mule-file-connector 50 | 1.2.0 51 | mule-plugin 52 | 53 | 54 | org.mule.modules 55 | mule-module-file-extension-common 56 | 1.2.0 57 | mule-plugin 58 | 59 | 60 | org.mule.connectors 61 | mule-sockets-connector 62 | 1.1.5 63 | mule-plugin 64 | 65 | 66 | org.mule.modules 67 | mule-scripting-module 68 | 1.1.6 69 | mule-plugin 70 | 71 | 72 | 73 | 74 | 75 | anypoint-exchange 76 | Anypoint Exchange 77 | https://maven.anypoint.mulesoft.com/api/v1/maven 78 | default 79 | 80 | 81 | mulesoft-releases 82 | MuleSoft Releases Repository 83 | https://repository.mulesoft.org/releases/ 84 | default 85 | 86 | 87 | 88 | 89 | mulesoft-releases 90 | mulesoft release repository 91 | default 92 | https://repository.mulesoft.org/releases/ 93 | 94 | false 95 | 96 | 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /mule4-batch-demo/src/main/mule/mule4-batch-demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /mule4-batch-demo/src/main/mule/mule4-batch-variables.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 | 14 | 15 | 16 | 17 | 18 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /mule4-batch-demo/src/main/mule/mule4-batch-aggregator-demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 12 | 13 | 14 | 15 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | payload[0].status = 'Test' 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | payload.value.status = 'Test' 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | --------------------------------------------------------------------------------