From b86c77db5644140543d0e77f297e3c955a090538 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Tue, 7 Jan 2020 12:45:23 -0500 Subject: [PATCH] Upgrade samples to Log4J2 * Remove those samples which are note related to this repo any more --- samples/aws-s3/README.md | 62 ------- samples/aws-s3/pom.xml | 112 ------------ .../s3-local-storage/polled_files_go_here.txt | 0 .../integration/samples/aws/s3/Main.java | 155 ---------------- .../spring-integration-context.xml | 44 ----- samples/aws-s3/src/main/resources/log4j.xml | 28 --- samples/kafka/.gitignore | 2 - samples/kafka/README.md | 5 - samples/kafka/build.gradle | 92 ---------- samples/kafka/gradle.properties | 6 - .../kafka/gradle/wrapper/gradle-wrapper.jar | Bin 50514 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - samples/kafka/gradlew | 164 ----------------- samples/kafka/gradlew.bat | 90 ---------- samples/kafka/schemas/user.avdl | 7 - .../samples/kafka/inbound/InboundRunner.java | 27 --- .../kafka/outbound/CustomPartitioner.java | 37 ---- .../kafka/outbound/OutboundRunner.java | 77 -------- .../outbound/PartitionlessTransformer.java | 56 ------ .../kafka/outbound/UserTransformer.java | 27 --- .../kafka/src/main/resources/log4j.properties | 10 -- ...kafkaInboundAdapterParserTests-context.xml | 74 -------- ...afkaOutboundAdapterParserTests-context.xml | 69 -------- samples/mail-ses-integration/README.md | 4 - samples/mail-ses-integration/pom.xml | 84 --------- .../samples/mailses/EmailService.java | 24 --- .../integration/samples/mailses/Main.java | 101 ----------- .../spring-integration-context.xml | 34 ---- .../src/main/resources/log4j.xml | 28 --- samples/mail-ses/README.md | 5 - samples/mail-ses/pom.xml | 84 --------- .../integration/samples/mailses/Main.java | 165 ------------------ .../spring-integration-context.xml | 44 ----- samples/mail-ses/src/main/resources/log4j.xml | 28 --- samples/splunk/.gitignore | 2 - samples/splunk/README.md | 65 ------- samples/splunk/build.gradle | 30 ---- samples/splunk/gradle.properties | 8 - .../splunk/gradle/wrapper/gradle-wrapper.jar | Bin 39860 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - samples/splunk/gradlew | 164 ----------------- samples/splunk/gradlew.bat | 90 ---------- .../splunk/inbound/SplunkDataHandler.java | 38 ---- ...nkInboundChannelAdapterBlockingSample.java | 32 ---- ...lunkInboundChannelAdapterExportSample.java | 33 ---- ...nboundChannelAdapterNonBlockingSample.java | 33 ---- ...nkInboundChannelAdapterRealtimeSample.java | 32 ---- ...plunkInboundChannelAdapterSavedSample.java | 32 ---- ...unkOutboundChannelAdapterStreamSample.java | 47 ----- ...unkOutboundChannelAdapterSubmitSample.java | 53 ------ ...SplunkOutboundChannelAdapterTcpSample.java | 47 ----- .../src/main/resources/log4j.properties | 6 - .../samples/splunk/SplunkCommon-context.xml | 19 -- ...ndChannelAdapterBlockingSample-context.xml | 24 --- ...unkInboundChannelAdapterCommon-context.xml | 22 --- ...oundChannelAdapterExportSample-context.xml | 22 --- ...hannelAdapterNonBlockingSample-context.xml | 23 --- ...ndChannelAdapterRealtimeSample-context.xml | 23 --- ...boundChannelAdapterSavedSample-context.xml | 23 --- ...nkOutboundChannelAdapterCommon-context.xml | 41 ----- ...oundChannelAdapterStreamSample-context.xml | 20 --- ...oundChannelAdapterSubmitSample-context.xml | 26 --- ...utboundChannelAdapterTcpSample-context.xml | 21 --- samples/voldemort/pom.xml | 34 +--- .../integration/samples/voldemort/Main.java | 40 +++-- .../spring-integration-context.xml | 2 +- .../voldemort/src/main/resources/log4j.xml | 28 --- .../voldemort/src/main/resources/log4j2.xml | 15 ++ samples/xquery/README.md | 103 ----------- samples/xquery/pom.xml | 153 ---------------- .../org/springframework/integration/Main.java | 133 -------------- .../integration/service/CustomerService.java | 36 ---- .../spring-integration-context.xml | 42 ----- .../src/main/resources/data/customers.xml | 18 -- .../xquery/src/main/resources/data/xquery.xql | 4 - samples/xquery/src/main/resources/log4j.xml | 28 --- samples/xquery/src/main/resources/log4j2.xml | 15 ++ .../integration/CustomerServiceTest.java | 67 ------- samples/zip/pom.xml | 50 ++---- .../integration/samples/zip/Main.java | 10 +- .../samples/zip/SpringIntegrationUtils.java | 2 +- .../samples/zip/TransformationHandler.java | 4 +- samples/zip/src/main/resources/log4j.xml | 28 --- samples/zip/src/main/resources/log4j2.xml | 15 ++ 84 files changed, 99 insertions(+), 3461 deletions(-) delete mode 100644 samples/aws-s3/README.md delete mode 100644 samples/aws-s3/pom.xml delete mode 100644 samples/aws-s3/s3-local-storage/polled_files_go_here.txt delete mode 100644 samples/aws-s3/src/main/java/org/springframework/integration/samples/aws/s3/Main.java delete mode 100644 samples/aws-s3/src/main/resources/META-INF/spring/integration/spring-integration-context.xml delete mode 100644 samples/aws-s3/src/main/resources/log4j.xml delete mode 100644 samples/kafka/.gitignore delete mode 100644 samples/kafka/README.md delete mode 100644 samples/kafka/build.gradle delete mode 100644 samples/kafka/gradle.properties delete mode 100644 samples/kafka/gradle/wrapper/gradle-wrapper.jar delete mode 100644 samples/kafka/gradle/wrapper/gradle-wrapper.properties delete mode 100755 samples/kafka/gradlew delete mode 100644 samples/kafka/gradlew.bat delete mode 100644 samples/kafka/schemas/user.avdl delete mode 100644 samples/kafka/src/main/java/org/springframework/integration/samples/kafka/inbound/InboundRunner.java delete mode 100644 samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/CustomPartitioner.java delete mode 100644 samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/OutboundRunner.java delete mode 100644 samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/PartitionlessTransformer.java delete mode 100644 samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/UserTransformer.java delete mode 100644 samples/kafka/src/main/resources/log4j.properties delete mode 100644 samples/kafka/src/main/resources/org/springframework/integration/samples/kafka/inbound/kafkaInboundAdapterParserTests-context.xml delete mode 100644 samples/kafka/src/main/resources/org/springframework/integration/samples/kafka/outbound/kafkaOutboundAdapterParserTests-context.xml delete mode 100644 samples/mail-ses-integration/README.md delete mode 100644 samples/mail-ses-integration/pom.xml delete mode 100644 samples/mail-ses-integration/src/main/java/org/springframework/integration/samples/mailses/EmailService.java delete mode 100644 samples/mail-ses-integration/src/main/java/org/springframework/integration/samples/mailses/Main.java delete mode 100644 samples/mail-ses-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml delete mode 100644 samples/mail-ses-integration/src/main/resources/log4j.xml delete mode 100644 samples/mail-ses/README.md delete mode 100644 samples/mail-ses/pom.xml delete mode 100644 samples/mail-ses/src/main/java/org/springframework/integration/samples/mailses/Main.java delete mode 100644 samples/mail-ses/src/main/resources/META-INF/spring/integration/spring-integration-context.xml delete mode 100644 samples/mail-ses/src/main/resources/log4j.xml delete mode 100644 samples/splunk/.gitignore delete mode 100644 samples/splunk/README.md delete mode 100644 samples/splunk/build.gradle delete mode 100644 samples/splunk/gradle.properties delete mode 100644 samples/splunk/gradle/wrapper/gradle-wrapper.jar delete mode 100644 samples/splunk/gradle/wrapper/gradle-wrapper.properties delete mode 100644 samples/splunk/gradlew delete mode 100644 samples/splunk/gradlew.bat delete mode 100644 samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkDataHandler.java delete mode 100644 samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterBlockingSample.java delete mode 100644 samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterExportSample.java delete mode 100644 samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterNonBlockingSample.java delete mode 100644 samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterRealtimeSample.java delete mode 100644 samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterSavedSample.java delete mode 100644 samples/splunk/src/main/java/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterStreamSample.java delete mode 100644 samples/splunk/src/main/java/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterSubmitSample.java delete mode 100644 samples/splunk/src/main/java/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterTcpSample.java delete mode 100644 samples/splunk/src/main/resources/log4j.properties delete mode 100644 samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/SplunkCommon-context.xml delete mode 100644 samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterBlockingSample-context.xml delete mode 100644 samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterCommon-context.xml delete mode 100644 samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterExportSample-context.xml delete mode 100644 samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterNonBlockingSample-context.xml delete mode 100644 samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterRealtimeSample-context.xml delete mode 100644 samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterSavedSample-context.xml delete mode 100644 samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterCommon-context.xml delete mode 100644 samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterStreamSample-context.xml delete mode 100644 samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterSubmitSample-context.xml delete mode 100644 samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterTcpSample-context.xml delete mode 100644 samples/voldemort/src/main/resources/log4j.xml create mode 100644 samples/voldemort/src/main/resources/log4j2.xml delete mode 100644 samples/xquery/README.md delete mode 100644 samples/xquery/pom.xml delete mode 100644 samples/xquery/src/main/java/org/springframework/integration/Main.java delete mode 100644 samples/xquery/src/main/java/org/springframework/integration/service/CustomerService.java delete mode 100644 samples/xquery/src/main/resources/META-INF/spring/integration/spring-integration-context.xml delete mode 100644 samples/xquery/src/main/resources/data/customers.xml delete mode 100644 samples/xquery/src/main/resources/data/xquery.xql delete mode 100644 samples/xquery/src/main/resources/log4j.xml create mode 100644 samples/xquery/src/main/resources/log4j2.xml delete mode 100644 samples/xquery/src/test/java/org/springframework/integration/CustomerServiceTest.java delete mode 100644 samples/zip/src/main/resources/log4j.xml create mode 100644 samples/zip/src/main/resources/log4j2.xml diff --git a/samples/aws-s3/README.md b/samples/aws-s3/README.md deleted file mode 100644 index 36cf57d..0000000 --- a/samples/aws-s3/README.md +++ /dev/null @@ -1,62 +0,0 @@ -Spring Integration - Amazon S3 Sample -===================================== - -## Introduction - -This sample demonstrate the usage of the *Spring Integration* support for -[Amazon Simple Storage Service][] (Amazon S3). The sample covers 2 use-cases: - -* **Upload** a file to Amazon S3 using the *s3-outbound-channel-adapter* -* **Poll** files from Amazon S3 using the *s3-inbound-channel-adapter* - -## How to Run the Sample - -You can execute this sample simply via [Maven][]: - - $ mvn clean package exec:java - -Once executed you should see the following screen: - - ========================================================= - - Welcome to the Spring Integration Amazon S3 Sample - - For more information please visit: - https://github.com/SpringSource/spring-integration-extensions - - ========================================================= - What would you like to do? - 1. Upload a file to Amazon S3 - 2. Poll files from Amazon S3 - q. Quit the application - > - -Once you have selected either **Option 1** or **Option 2**, you will be asked to -provide the **Access Key ID** and the **Secret Access Key** for *Amazon Web Services*. - -You may also consider providing the **Access Key ID** and the **Secret Access Key** -via the command line: - - $ mvn clean package exec:java -DaccessKey=12345 -DsecretKey=12345 - -In that case you will not be asked to provide that information again. - -## s3-outbound-channel-adapter - -When you selected the option to upload a file you will be asked to specify the file you would like to upload: - - Please enter the path to the file you want to upload: - -Enter a path such as `/demo/data/myfile.txt`. - -## s3-inbound-channel-adapter - -The polled files will be stored under `s3-local-storage`. - --------------------------------------------------------------------------------- - -For help please take a look at the [Spring Integration documentation][] - -[Amazon Simple Storage Service]: https://aws.amazon.com/s3/ -[Maven]: https://maven.apache.org/ -[Spring Integration documentation]: https://www.springsource.org/spring-integration diff --git a/samples/aws-s3/pom.xml b/samples/aws-s3/pom.xml deleted file mode 100644 index 20142a1..0000000 --- a/samples/aws-s3/pom.xml +++ /dev/null @@ -1,112 +0,0 @@ - - 4.0.0 - - org.springframework.integration.samples - aws-s3 - 1.0.0.BUILD-SNAPSHOT - jar - - aws-s3 - https://www.springsource.org/spring-integration - - - 2.2.1 - - - - UTF-8 - 2.2.1.RELEASE - 0.5.0.BUILD-SNAPSHOT - 1.2.17 - 4.11 - - - - - repo.springsource.org.milestone - Spring Framework Maven Milestone Repository - https://repo.springsource.org/libs-snapshot - - - - - - - maven-eclipse-plugin - 2.9 - - - org.springframework.ide.eclipse.core.springnature - - - org.springframework.ide.eclipse.core.springbuilder - - true - true - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.0 - - 1.6 - 1.6 - -Xlint:all - true - true - - - - org.codehaus.mojo - exec-maven-plugin - 1.2.1 - - org.springframework.integration.samples.aws.s3.Main - - - - - - - - - - - junit - junit - ${junit.version} - test - - - - - - org.springframework.integration - spring-integration-core - ${spring.integration.version} - - - - org.springframework.integration - spring-integration-file - ${spring.integration.version} - - - - org.springframework.integration - spring-integration-aws - ${spring.integration.aws.version} - - - - - - log4j - log4j - ${log4j.version} - - - - diff --git a/samples/aws-s3/s3-local-storage/polled_files_go_here.txt b/samples/aws-s3/s3-local-storage/polled_files_go_here.txt deleted file mode 100644 index e69de29..0000000 diff --git a/samples/aws-s3/src/main/java/org/springframework/integration/samples/aws/s3/Main.java b/samples/aws-s3/src/main/java/org/springframework/integration/samples/aws/s3/Main.java deleted file mode 100644 index 55f1dbc..0000000 --- a/samples/aws-s3/src/main/java/org/springframework/integration/samples/aws/s3/Main.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2002-2013 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.aws.s3; - -import java.io.File; -import java.util.Scanner; - -import org.apache.log4j.Logger; -import org.springframework.context.support.GenericXmlApplicationContext; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.integration.MessageChannel; -import org.springframework.integration.support.MessageBuilder; - -/** - * Starts the Spring Context and will initialize the Spring Integration routes. - * - * @author Gunnar Hillert - * @since 1.0 - * - */ -public final class Main { - - private static final Logger LOGGER = Logger.getLogger(Main.class); - - private static final String HORIZONTAL_LINE = "\n========================================================="; - - private Main() { } - - /** - * Load the Spring Integration Application Context - * - * @param args - command line arguments - */ - public static void main(final String... args) { - - final Scanner scanner = new Scanner(System.in); - - if (LOGGER.isInfoEnabled()) { - LOGGER.info(HORIZONTAL_LINE - + "\n " - + "\n Welcome to the Spring Integration Amazon S3 Sample " - + "\n " - + "\n For more information please visit: " - + "\nhttps://github.com/SpringSource/spring-integration-extensions" - + "\n " - + HORIZONTAL_LINE ); - } - - final GenericXmlApplicationContext context = new GenericXmlApplicationContext(); - final ConfigurableEnvironment environment = context.getEnvironment(); - - System.out.println("What would you like to do?"); - System.out.println("\t1. Upload a file to Amazon S3"); - System.out.println("\t2. Poll files from Amazon S3"); - System.out.println("\tq. Quit the application"); - System.out.print(" > "); - - String filePath; - - while (true) { - final String input = scanner.nextLine(); - - if("1".equals(input.trim())) { - - System.out.println("Uploading to Amazon S3..."); - - environment.setActiveProfiles("upload-to-s3"); - setupCredentials(environment, scanner); - setupS3info(environment, scanner); - - context.load("classpath:META-INF/spring/integration/*-context.xml"); - context.registerShutdownHook(); - context.refresh(); - - System.out.print("\nPlease enter the path to the file you want to upload: "); - filePath = scanner.nextLine(); - - final MessageChannel messageChannel = context.getBean("s3channel", MessageChannel.class); - messageChannel.send(MessageBuilder.withPayload(new File(filePath)).build()); - - break; - - } - else if("2".equals(input.trim())) { - - System.out.println("Polling files from Amazon S3..."); - environment.setActiveProfiles("poll-s3"); - setupCredentials(environment, scanner); - setupS3info(environment, scanner); - - context.load("classpath:META-INF/spring/integration/*-context.xml"); - context.registerShutdownHook(); - context.refresh(); - - } - else if("q".equals(input.trim())) { - System.out.println("Exiting application...bye."); - System.exit(0); - } - else { - System.out.println("Invalid choice\n\n"); - System.out.print("Enter you choice: "); - } - } - - - if (LOGGER.isInfoEnabled()) { - LOGGER.info("Exiting application...bye."); - } - - System.exit(0); - - } - - private static void setupCredentials(ConfigurableEnvironment environment, Scanner scanner) { - if (!environment.containsProperty("accessKey")) { - System.out.print("\nPlease enter your Access Key ID: "); - final String accessKey = scanner.nextLine(); - environment.getSystemProperties().put("accessKey", accessKey); - } - - if (!environment.containsProperty("secretKey")) { - System.out.print("\nPlease enter your Secret Access Key: "); - final String secretKey = scanner.nextLine(); - environment.getSystemProperties().put("secretKey", secretKey); - } - } - - private static void setupS3info(ConfigurableEnvironment environment, Scanner scanner) { - if (!environment.containsProperty("bucket")) { - System.out.print("\nWhich bucket do you want to use? "); - final String bucket = scanner.nextLine(); - environment.getSystemProperties().put("bucket", bucket); - } - - if (!environment.containsProperty("remoteDirectory")) { - System.out.print("\nPlease enter the S3 remote directory to use: "); - final String remoteDirectory = scanner.nextLine(); - environment.getSystemProperties().put("remoteDirectory", remoteDirectory); - } - } -} diff --git a/samples/aws-s3/src/main/resources/META-INF/spring/integration/spring-integration-context.xml b/samples/aws-s3/src/main/resources/META-INF/spring/integration/spring-integration-context.xml deleted file mode 100644 index 1ca39bb..0000000 --- a/samples/aws-s3/src/main/resources/META-INF/spring/integration/spring-integration-context.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/aws-s3/src/main/resources/log4j.xml b/samples/aws-s3/src/main/resources/log4j.xml deleted file mode 100644 index 5ae5943..0000000 --- a/samples/aws-s3/src/main/resources/log4j.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/kafka/.gitignore b/samples/kafka/.gitignore deleted file mode 100644 index 38b0df2..0000000 --- a/samples/kafka/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -derby.log - diff --git a/samples/kafka/README.md b/samples/kafka/README.md deleted file mode 100644 index d4cb9b3..0000000 --- a/samples/kafka/README.md +++ /dev/null @@ -1,5 +0,0 @@ -Spring Integration Kafka Sample -================================ - -This sample demonstrates the usage of the *[Spring Integration Kafka][]* adapters. - diff --git a/samples/kafka/build.gradle b/samples/kafka/build.gradle deleted file mode 100644 index 9c2f052..0000000 --- a/samples/kafka/build.gradle +++ /dev/null @@ -1,92 +0,0 @@ -description = 'Spring Integration Kafka Sample' - -buildscript { - repositories { - maven { url 'https://repo.maven.apache.org/maven2/' } - //mavenLocal() - maven { url 'https://repo.spring.io/simple/ext-release-local' } - } - dependencies { - classpath 'org.apache.maven:maven-artifact:2.2.1' // 3.x won't work - classpath 'org.apache.avro:avro-compiler:1.7.3' // use Avro 1.7.4 to compile the Avro files - //classpath 'org.clojars.miguno:avro-gradle-plugin:1.7.2' - classpath "org.apache.avro:avro-gradle-plugin:1.7.2" - } -} - -apply plugin: 'base' -apply plugin: 'java' -apply plugin: 'eclipse' -apply plugin: 'application' -apply plugin: 'idea' -apply plugin: 'maven' -apply plugin: 'avro-gradle-plugin' - -ext { - avroTaskGroup = "Avro" - avroSource = "schemas" - avroDest = "target/generated-avro-sources/main/java" -} - -repositories { - maven { - url 'https://repository.apache.org/content/groups/public' - } - maven { url 'https://repo.springsource.org/libs-milestone' } - mavenLocal() -} - -dependencies { - compile "org.springframework.integration:spring-integration-stream:$springIntegrationVersion" - compile("org.springframework.integration:spring-integration-kafka:$springIntegrationKafkaVersion") { - exclude module: 'log4j' - exclude module: 'jms' - exclude module: 'jmxtools' - exclude module: 'jmxri' - } - compile("log4j:log4j:1.2.15") { - exclude module: 'mail' - exclude module: 'jms' - exclude module: 'jmx' - exclude module: 'jmxtools' - exclude module: 'jmxri' - } - compile "commons-logging:commons-logging:1.1.1" -} - -compileAvro.group = avroTaskGroup -compileAvro.description = "Generates Java code from avro schema" -compileAvro.source = avroSource -compileAvro.destinationDir = file(avroDest) - -task cleanAvro(type: Delete) { - group = avroTaskGroup - description = "deletes generated avro code" - delete avroDest -} - -compileJava.dependsOn compileAvro - -sourceSets { - main { - java { - srcDir avroDest - } - resources { - srcDir avroSource - } - } -} - -task wrapper(type: Wrapper) { - description = 'Generates gradlew[.bat] scripts' - gradleVersion = '1.8' -} - -eclipse { - project { - name = "spring-integration-kafka-sample" - } -} - -defaultTasks 'clean', 'build' diff --git a/samples/kafka/gradle.properties b/samples/kafka/gradle.properties deleted file mode 100644 index d1a04db..0000000 --- a/samples/kafka/gradle.properties +++ /dev/null @@ -1,6 +0,0 @@ -springIntegrationVersion = 4.0.3.RELEASE -springIntegrationKafkaVersion = 1.0.0.BUILD-SNAPSHOT -version = 1.0.0.BUILD-SNAPSHOT - - - diff --git a/samples/kafka/gradle/wrapper/gradle-wrapper.jar b/samples/kafka/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 667288ad6c2b3b87c990ece1267e56f0bcbf3622..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50514 zcmagFbChSz(k5EAZQHhOS9NvSwr&2(Rb94i+qSxF+w8*h%sKPjdA~XL-o1A2m48I8 z#Ey)JC!a_qSx_(-ARs6xAQ?F>QJ}vM$p8HOeW3pqd2uyidT9j-Mo=K7e+XW0&Y<)E z6;S(I(Ed+Bd0_=<32{|526>4G`Kd`cS$c+fcv*UynW@=E6{aQD-J|;{`Z4Kg`Dt2d zI$)UdFq4$SA}#7RO!AV$BBL=9%jVsq{Ueb7*4^J8{%c%df9v*6=Kt4_{!ba$f6JIV z8JgIb{(p+1{!`T5$U)an0fVi9CwR`^$R`EMcp&rQVa-R*4b4Nb_H8H{ZVot=H7 z#(J{{DW4ze_Ck|1(EbPiGfXTO}v^zl-H!Y3ls9=HV&q>SAGP=VEDW z=wk2muSF2y_lb}fJxZ}al~$+3RF^U!k9x5x zWyl(8dbQ0`AG$%Y?*M0m+cp^Qa}1udZW_Tm3>qdzZv!1x+<_Uf(p@M@ymKp>OX9|F z#L1je z9d6SUXxx2fS*7N*e<;=+3&t4*d+M`}GIPJUbTo-OSVjvF3WrfXg7*_H3ct9cxJKZ9 zLrMzth3?nx0{#c^OdHM`vr>x#A)-roI0OOn<=2h_wo|XV0&wMtLI5!@**l*_XQ2R` zrLSV49cUPRsX#(O5oQzZaIYwwq8Zs2DLXGdDKbr!Yg?7fxU|>+HHQ`48#X--yYCk5 z2_CBTW9rX2eLQC0%EyQli<87+%+Sy))FFW+RMC{*hfJ$|;#$?pAT~P0nL-F}%M*RxwBh)JT4trq7rR7dHloLmiM^IC{>usB=4fXXH9NMyWznFd(bffDK zE@*_maXO?|$?M^W>jXtsnk2}7g8b8%oLp);SNzqtjlYHDKkJ?J|K42x(kk(o{=Zub zF6?{i>=+HX3r6qB=&q|022@z-QLmMSLx%Up}FGL44Gk+C_QL5BU+!i2(vEvNf8Z)-btUdpVY9ovODm+#V7jjU7Y!AWEnY5L4 zy;^;=x#{x<{pUJOVPj)cXJ>gsJ418R ze{ZN{4Os^?bu@m)^eIMs5MU5c;IIG|=#WSfkfeyP1R(>Iv2Y(9if76Ptu~dWzdSmPFUp;6Ezs&WmP-Mn-9ah*g8e8 znAxyrWhx~~tuF4fFyFI)v-S3=C$HmPHmqv%hb3*;ljbj9zaA_}QvfU@RJCGH%&3Mc=GR}sQDh$UWT-8|{1QwhXWO-dM z3?^C@cbP^-hfFljgacs|7mE%a1FSMK5?o1{VuaVB3iP=LvFEL@C0pfwirZ4SXxMUy zrMG05M!9CU@G7-}bgjI%x$|_B9Z@Hc86jXlPhZpJfk@$BToMpqU8Y zS7rRkdp>e0{86ZjFbE^zkdwV*R|JV3EhCJcqjJlZ1HJnbe0I+>a5?HpHLs6A`4&VE zZkHUK@cLRF?y^Gi~ zzERBcPdAs0R^=N{aeUhK(Oc+@?mb~Y)__*Dt{8Wawz6H_)v6niTA_*_%)UP`0`WBL zFONOa&+T9+RMF!QsgKq(%Ib;a-!w+*&V)Y#Xz0(87=H{^VBk3UVeed$SFCL{IJMl-`1FQ@Es zq)F=J+jn(WH_*lNW;=>)d5ZFyL~O+t;)Rex`&~h0ZJ`wg7K@*lu0E7;tx>KLWPduY zB{4G}TQLJE$Fp^?*3raESC`NSpmv`$M^ zR?`+VFj;fQu`)I4O1dHwa_R-0y`qHjG*yT1*ta##G_W-;1ira)uP6}+r|OX64}vD7 zCfB#p>H^?YEyF6K(H( zcSh4u5_|{iq)=K{S8Z{@n?&h}u!l2^EP#?v?Obp5kDl`o9~up%2*s>1Ix5~kT~M3` zo9Mg;n$TcwaN!PHHbuUUw3tRqYfjpz$rm9)1|S{rtPnG|3qao}1W27Wig_4j-(rTjVi`D@Hu z`P>h7i$K>zzc1rQ!~L?29sG(`4ewg^)@Jc)II0KI)@q=D4CEaX%j&RlZ>Dhv0p=|f zDJPQ~ioTP^ju2_j2(V9haP$r!cTNIK`eUF|-}43c=4*G09&bROE80IECDekrK%+jW zBayIlJSDqrri?dj#ZGRQI45{XfBLkOiWIkGb#Tk>GU0NMA&{q`1jQe9jlfJZSTNF_ z5nD5A=Z=a%6uCagCu3np^0R1ibyV8p>-XWfFJK2Gb#o`L=pCm3Bz0F-w`5gv7zJaA z)RS8mWR&`<;DgOxA@S6FQ*5HVF=Pi6>}viGQ3jbA1*0gz7vev?ig9gVhr!>t4e76E zq5scb<;TCmT2XsDGfQ(RVj)A|h<&2OW-AJrbhweQvr{uOf)AdTJN|xO zAOSplNX(IEhc4?4!HsA&Vy7Ayn|y;{2-yn=}+S<{JboP z+O;`IR0`XIjUt&s+%;#~ImRt_GtRFatr{*eLSOp`M&L2~I&K?Jn-<|hTDADdW0!CI zT`L(i=DpZ{m#h7}m5b)AA2rK@4IrsGNhTCLuA(5#C4^ihsG8k9wtfgz{e1{i2dg)4 z+mI{R5E#Qkbkp^PpXHo%=j>nj&GC#hXN&B=ng^Nz`nHCfc3$|&N@`tY-`ccR_&0zX zWOMW?UqQVp6a|9)%p$rhzNSyZx#rwXmnhl-bz2n%^a-VY_->1Rq3M@UM*B73Rbh3KcNU|sUv}tj}yqehs%OmelPMB0M zliOnQ$*!7!%0vXViN+eRgc?|(1-`Kgq(g{Uq<|t%Bz*Q}Y@)~Dxqfxxh@oH`C}F!u zVKM>}SoSAuA}tUnZK%W}VFDOojbWmn1c%601hYWY6h!VJL@bC6^kD6@5DA{~rDbc` zz$!9AztbeXVgISB%D(uPM}Of3_Fv4&^q*DrzatANL%Y8i?%&Z*jK+mCsyf=YZKlbf z+hn1Vj7%sLh~;}k0J;qf&74dzBAF6hP=~yIQm6^14M!6?dhV;l=Kx&n;12=r;6bdu znKAcoswa2O{OPE5Gq3CJ6W7_dZ0Fg_o$rq~%z)3=pMwn1WgeoUs1j^hLuCL?_E++U zUl8cV_e>1#s5BJnSsHgKVH(k3juJJ{(latn3c<1EL^IYNxQh#yBCy;2!x%aPorztP zjJ%Y^H`Yu{q|z#bbRlXv*1|BB=p}$j7!c7C(+){=Hpz}swAa{;Mv?w7=0z0L(939t z85~w@r}dG`qJ(r7Jk^{@x!g>S2N}H{+N(b&vsMA1Z#qSh8<*eRxUKlI&Oa;*Luox`bScaqq#hN!IK3bgB zB`i9szi)5mm7=-Sfccdew3}(DLGfBO@@O!zHa3jAA@asvg`6x7z?j<@r!?HkxDGl; zA4MQQdP?iygX<&#Pt&fZ>4)tZ`4;uBW9N{x=T%*k!S#nf$>KRy}>6yQy?^(R#_fv9|9gTaH7IwKpOb=Xo?gi;akww64+&sf$z|_oI zuZahhq^LF60F>Rc%fkD!7@rigV#kVa^+@?Px~$YsNR3)QPBOZ(f96@IYTBerb(63c zz>}2iX36tDclpTaec;b}1pAap^JYHW{v(X;O)ygVC?+2IJ<4~lV|hQY9F&fz1UDoX5607wu*7FLP=u_rpZVqb zT#DD($Gu8`ZL1j?)6BP@h^#Ro?+wo>lacs#^O^h3c%lrP#Tk&f76F66$)uko$~U{i zFxE>!FOr^ZN46l7O(fh3ODY*ED*fGB+br75!b zD9RQm9(DT(;y?RI{yGj7%_y8*a2V>LYb1M$e5qJezC!U zR-eGYfjYJ!gD34F6x`2&w_<7T-E^D#yUo<&OS zc1dmXr~k)`Uat3yd(Xob>E|E8mmLrXobN;jv|@g)D0OHYJ1I8rlyDYAbYvcT+%8Sj zyDTth@@-~MGjYR*#RQ^#3j3XXL*1dUkl@#l5XF0c^E)53T$DRY=-htu!q=>j*#p?F zSCUz~s8xl*&iOy(^Ngfv-XmA*;GBW zd)}`C2W_ashy}02xm~3DH36VWBLJ10Il7Id6nt$~7hora6?Ils4LaFoFuZm?UJmAT z-3&$(^VAx-lSbLl_O;C=Q{eh>+zEMdU5!VT4k3ic1#w_+)-by@fE^>1sU&)xy_ws4 zq>WjPpOyZ&8o<pKeHD!`!)ch6}P=2?*1GiR*lYgDdHl?x-o7`hcV{KiLo}+xZ%sf#cl0pH_6K{bq zJ^!4l)|nnxEEZo|+C^#VtxL;YGSGqvxx;)O*@`@qRekwLLNq6DAOt*bI;>KPM!}** z*1Fv^$Ob1f_^3hhEllh0rml_3l0gYu~zep zi*ck$)DHOCTC>mzKw9~QfB`qEqwJY9v`tosEI@3GmTICiWK7~mMjAyp`O1}(QXfHS z>I0_glIrf2a);VQV~kDfQmL&R&8yX3mcimT!67&}8=24)t$%BU*8A&@Hs=$k7KZC# zTYN^qk95D4#q5?W`MM}sK)U$CCNE8|C%e3CXNafxch(eEGL_+Piz|4%*V5)8zAF*P8JmMUCYz%v(Y>ssFWfrj)^We?D7Hx)U#H`)OGH2IiptVS z2*zF^F)h%($!r@~7>1<19H#-i?~NUfQGG)@kw(C!+efD4E|L8jmIO9uP6su+9Vme) z_Ut*1ruchGUdny9ogKS9J#EHo68*jLp!D!uee*%?fo0~NSf8QchIDo8oULzpP`tQ3 zT}c@f(sqT>I-GJSSpkR;CSJA;>Vy5h`}yCCQ(YrT&O4d3zYfl}u(z6VCE6!F;F*76 z9j0J8{ssW#uLmNn53($aP9>wroVI83#TbxmSWb`TR@1fFW3)dyT%j-X7{NjG)mBPt z8z+G-hb{;ve{Nq7hNHIcwvmwURm%F#C{Jia_1Xs2a;#VmHY@`q_oFT2!7gKT1L$_S ze4X%%XFJ_o4wSPX)sr=BrRLuUVxO2k%NiH>WW1LwEI*K{3Gz#YW*r(J_Sjb*2iasE z!QPPy6q}ec#&eKI67nf|({Azk6jE$x>w`_s;hWgIE=e_ovbyj_2_8Fh5WIi)Q06ex zK_rmt=gfYqkR{}_CY95yTSFZsiL!^3CJvV4kYI{vBVoSPTEKg^5Yhjh6Q*qkbl3Z` zxrAGk8TrF!V-9SzKxWt&%eP$HlsQs0ga${AUpu%Lh1E=Z@$g5?rRAwX)DueM5vQtCS;kk&S~>Q(zA}iXj?uYPSN2g;`3 zr)tMR>iS6fS{Bt4(+lHMq?p7GTTP4Z-3CxC>~=?1uq|2lu9RZ)h-_brR*o4NcMfZt z>9{-CUh@iJ&~YV=FmZ$@bUu>LCHA9Bs#;S-ykkxyG&;)aSds(|=LmlnnN>@$5#y6f z52PWa7ov;Cg&4n9^e8SUIxgmgdaGopW=?jeS>5hOHimVi!ixB z&L3V_Y{(6VZK+dE@^d&Lp5biwj+@@G6Y|R6E7bpetG}Z6lodOa3o-q%rZKdO?53uHjV=~>M>LX0e}LqA0#;Wi z>Fi99*d>>vgM$sFrG?jSll(bPvE3F0SBr`E-F%7bVw3zL1%G0T0xl)LpRL!9rRcZ4 znW820$m!^d?*snLNAF9IeeeBXsy=xE{l^`V_?cqSTM64v;<2La{6~897oU{tV~NPl zGm`(o6A}0+qsbLx@tZ>YcEJtAnfK!lVXycvt&CpfQ~O{wVSh^PZ@v7R)Oo=a~+pMUfd_P;?MMbq0W zn5d_K8KCPRQ7_>a%$}tW5E}*pRTz%)226#|i#S263Qo`)>UAV&gS!BZJCB^* zD)9KKv*&q?w2V58r&^+i9tld&yUj=}t)c(aVaT2V_ry>mvCmQ%m0*}^30i0^;xDFP z#GK)q)7zR!wDLf_FI+hJNHi+CQYLx%kd$c4;YQ(OP45JYT0gFhYtmR|&A;F>cY8aj zC{lzsg>cZL@c@)hdyj$RA8y!D!n)(iTko!hyL)Wp!_&LE&D6}bxGl&Y_tbnuS`jQY z(f*_-X`iYEoxr&a*76lkZCe-a5AIOXCY># zbiVD(DT$0EI=U*Yf6Sl8f6>23pKEMNQ4Ajg^{ZHghmvEQH$3o{ms4*o6hgYvpNE+( z#AZ;x7E{DM`7Hvh|Bml=1j#gyl{K&_{-jEI@)yyKG&XZ8%52}!B`ZE?EL7#WtMBKol?Mvj2saaE<61>mL%<6)IXN}3^`@*!@} z341EQrH}dRV~Fjv>F3@mjwCOV$Y%oyGr0LwkxkuPb6X#ms0o?9o+d9{x3cbiGKmX3 z^!+;D#Al?M&g?P9kq(7|b*i(XsOwP?H!ElS*uhTDBDKArqGP#E7dcE;HWkvkaEAW? zF!3|NMZb>RCGHa5#)`X}8w)%}Ey|gW@8DUXNsDR*{esPO{W?k2a}RxGK|616o0)}e zw?Os9aROYmtw`mSga!UI{x(DS%Vyo@y>JF`^Fi2A{GhSfM8=YCUiq2tRfBwSZeFh1 z8SG=1Ot08%#iR0jnhZp?#@V2YFnQ7qP$zE3&#`>FhsO>}OG$enmf?*FVG@qB!C+bO{M}K?d?H2@pq=}!TIg&Q z<|^+Ey(ErEeOf1wvGI?LX+DEA>A4Ka7Q!%PAW&4a-t8+>1M9b(T0qACQ=f;57D`tu0g(=;a7O*h_Jc4JEypx1gs; zCDX69d|g$NsXEuD1H|$3$ZHE}u3HP4b!9=Q%rqHBgCfvK3>j?XLQkgDUg`93gF?}s zS4$rqaDE(s2IL!2Y@kw=(NL~wa24NU3sm0I71mIjZ>?9}bNl5^Al?Sk^y(`qsW$ER z@g$;Pyb*^A=G{Yrb0a>4vvBBZ5U2|)}iX;AAo6X<=K0YOtm49s4edp~uvJxx$&=o-&rGttC2~o83 zfuN5-wJBS(4plr-Qmhz$`*di+<4KB`>;9BgrbANhj6VsJNxLq5IoU%8vF$2M+Z2ek zTw84Kxg}m}jc^*zK>s;O8dE$R&kkO5>*Y75eKaR2>i5fb7o!D~D0P;E`CzLz<48 zBzH@erfNN`nS4Uy3@n#r)*^n}uKHeJxygl)GV-F`w49%s`cYMPYi5Gahg$5e??^in2I<7 zUKZDwHf#riMrllW@f~Nsm&l0q?KJzSfp9hXd2pb;UnzJj^xc9bqY2zVLk%GU)}?}} zB7(TNFqdZnN}qRsHgj1;xcwQt^<58f3wN(P=y%mH3&}An)2M$}(>TF|q1;N5^ZX`t zd&q8vtB(q@FPC>=6)%sC=t3jOE{U+j(IShmITq`TXA`_QKhoBZ7GXEN9MCEV z+~@7gbqUElkbsjU7o$HOfy49&nNHI)#@Dt#fvePViP1MzItEa|goh@hCZ273Hd#4Xdhb+D?L0E87T>DawyVvc3J#zePjBG zaZj%zUc`L}>#2=d=9E*RS9(6nm|%{&E`OI4~x8fs!0ZZ3b-$x(I3NCjCbUBu$h&4 zvkoaim?yiSh1?-2osDeuCf;fbpe3>H#44}rDb%z#W=Jf-*l&-c4uk{yAX)0;9gvX= z#)Ov%5_L%}8e9yEMI=PVh2w~CbgO6&n#>WB?TO?1h+5Yitr3i}=1JW98CC66#>33g zXG+Th=cRh7?7HQYiRy+vd{ov@)w1~xg@TuyK2?xGWXu88_2%M2@eaFd&c-wqqNP26!WU&USZ z8lIHzv`SrJIVF=z2amJL`aB8>O7!d0X?{4zEM+hWKZDaY!_ekJhvtHd^7?hm>;4d@ zeK2Evnj=*zE(YguNX`-&354G{M`WHLvobFJIa9yg@YweQb2NV_p4&_KA0#<1V4d`|3w~@!Wda7`st< zYW?_t6&a=_{Uf&^ zGZWvYxn={#fj-{6v~}bU*&E+%&Wlu@!G)AUL<|!YF&;Wt5x}BM0*{RdB?B3}`gI!y zj553FXs}D9SFRVNei9isSJcMC!3@^b=ePm!`OM}?eK*P2HgZK{1j$CJKRVD)>81IkA@&{z~;ow^HGAt9aw-uE=tusp@Din2k-hBfMQG|V1erRt^^#(kf zQgupM_mjXiJP~C9gG88#+vMpN>pP3tsvec=R=AjpK6(QH<hWIpOCT{1tvWALW6Lfn1W{#(itOApM^OhR99D@A%6#OSz-s+Q!9QsS& zCI3wh{eNMaMeOZeoL&CX&GLqpcB(FhPA>lsclT3!Lj#F_paHxBrO$>L%mD-~b67!D z1~-olI4)rvJ!SWC8`+8~*2V+>RkNnOb#`h)vdAAyqV9xtx zMECS`Ugw#qZsX6lS$js{u0TT5SH~X`jAmqAjD{K#w8ti!gI&?!boYkRVUWz&lbU;j zpI&^siQ!M0$w;Y8f6pGRQGT1+7^n_FK1n%n#=X`JhmStJDve0KY7S67DZM#qOJF9V zsDSvWX5_Ceg7D?vh5F&(%8r5@;-NmtUM&Z~CdhPHI<~GF>GNyiKPMbBbs?{JaFpUQsE*gVRbs zEv49jG95i*$&=}FTc(jg(zL{cLDWfnG7V?guH&aE6kMsRMlX`f2A_$)&f1YNJtD_G zEQRHuh&2^kQ#&G~_Tdnw#7hD^OP={T-S`-#7hL-v%-Yo+CsrqZStHFQd`|C z8@mVz18m8%DgMB0My7%LL@iHak7P4Ah^U6z1F{v&MJJvISf*T}A7KH-4c%fj=~gT- zHX0-tQ8*3d8Qlj)Rv5#D((4pQe6vFQ5#(Tu-+Z>7YHTlH?qLbF8gNPN0T2b2KiU7Y z;jIP@EeRtqcp`2R$~G6e(rg>M4-2lpPYXVK%YNrH7>6+!ClN+~>M1+G3DYy|u6FqV zRLMQ~o8_{~0L09EDk}#Drv!hg{E`E9y_4=#1q#C#0`sN{g1wMR!Sa`_E$=8l7$jsv zFf#b;9e?<9a6td}ThnPw7AURoVe|BpI*p4em5$dICdDLevr=8O`p=QEhH8?PVXfAZ zbbP^ybvo6rIsgHUB3EtV8lqYhw%UzDJtP{bt^XjXYH_o^OqFd@!kwVvTk2 zBG|Ahenv*#WTt1SAkrj_V~5HSuQ~GpT{->!jrjE-v`Zf|a?upEKsR@Z&l7eVgyDKx zIDZ1gJEvHlP8FUycaZm|AJ9DkFDoYnx0Aj8*#)$Fy;@{GLD$BQAC4M>u!Elq_c1vzSH@#&FR16q3Cxx4oLvwP=f+<@S8~wy}z=stlxT|jUJ$d z7cJ6nZF=Hr*d-9e8FDv5WjBhiytFq%g|TaZWe+eyM);j@Kh4r59@aW>%dyuZ8`c?m zc!k_0dh9+i(|LHI1a_11#?R8l8T2y#;fF1N)DLO;6%Q9a*hU$I7&Q|Ib5;cq%!c5DCI5wVr|1{4;5WVk%7rjfIP8hpujO@b~BuVlr29_JWtJ>hp z7A;x0N@bFp^2W-7ryDSO`!nIbok@UDoUw;UrUz>{_12X6idNYNT|a97;#C4{N3E`_ zl#!ihVWru$$=`n=h^UoGhbts>^OIOi!t9sJYex zcWq{GLBO_(QPq~CfvsV?m~BeoXB4J48?9t`7{IN^B2|pL#%|)|Nk;&(8 zd*p6;RXJJ*U8;8rG}ClE(=G}neQYM7w-S%n4>B$Z>5;c zaaFy_anPH*Iff?(4tOo)x{j(uWciGp(pj(CdQ#uE`^6Y1ad1*oFh&s7K9B@aLIusr zvrQ%{S7R&HqK%>e)vG1@Ygnp=g=GVM4CsRWisf_%v<(c^d6lo&1V8SaHp});3TlFk zG#e?^KSZefsKd{jB?QFNTvMNZINe?VKvNGmoo=CYRU?nvmJz#3kon4YoO}Y15~ii< zw`0%`p{>o+EQ~{}#TW!D&T8Tn7_+A-&mOYP^~>Hl#q^H!spWjs+8YbVgxO25UOsUN z(<7r#ZN-Y|o#k}~8SSyJ4jSgG2g5<;8IK%#EcoU}Wcs;K2RA|6f@+&2uZ&Na1+{y! zT;JvU`mgR--^zFT-XJi$H?~ClDYfY6LhB!_Ny7nx=U(#ANjOQ9v`?>wfw~{iF z7iy``+ne+ZHHI(z9M$i67}3t^eaKrOdU~_qpt*>I&Z?*lwH-fFVF%MF>aY0Bvhf7h zAlI1y-Ljs7H*OPTr(#w$4n^uB3aSI_pVg&-Ocy-|^KzFz4#@0e(^$H9Rh3J`ozlWFj&MQyrIxnfkda8;6m}LjSsPrxErj|osSsJ z&jo8TaWE!yAfCfv2+(<<2A-cY#~I^>HZ4vgd5Ba%XU?;u7MVy?F>|NMPNIp0#2YwiZTB<_ip#a=5n+UbTCvk^-;PCb06bq2hu{kC=ala6;aYD60)q3&7JGDnwT;z^yce=7daJ|-puuzal;!BAu=ok#ta0d{S zOY92%j^NNEC64@f_q2YOc@2K3Ht#+bkWS6Y!U$76?$E(tBS1TRu+X`T2%Hm}5 z$G}vhy#EjY|0ga-lGVSw`WuMSVgUis{O3Sa@_${0{C7C|Ke73L@!2|fe?!sUI;Ke` zG81Cx%rq0!BnNN}RAaayDqtfhT%j2wn*)>dzVn9Q#zt;0E5$3rjmJ8z%IBu%=ye9Q ziu%-+=bG-DKXos@+J71BpU-J{y9vdy@$Ie-Mo?j#JCH#6j@d_NnDSN{J$ImxhG4K1-AAJTfTm@y zkwzeV_Rk%-=W&#uk92?P(Z!F$V^pVyN|aM*!5)ghp6gLgG#}M-ClQ35`vbGLj~2om z#_4u1a$ZU2izx8ddYMF z#gRInDsFTHdYY+T9h!q^ZnfOxy2;G4E6k)B4e~PG{ge2GZ)yuUx}yanU0KWTuO9hM zAl4TT(^-N^1gg3mHB{CxW4JKcO>Cs{3~?3jBrL*J%hyH&b%TSTTfw8KEq-*gOqL&x zBZWS*BO+mH>r{hgLv@J=;?sO_9}yLN`zURJ3d(e(mL*kX^EqTO`HIkVlM}zQ(-hXO zS>mk1Rq9_~1CZH`7Tr>&0%wz*WIxwF^^1D^DWSKD)FAOaHzV})eyPyk7lnyNSfvfX zvTsJ$<&E_C92MF>*AHiq@?)`Dn%#|_Qh za(?Iz3f?M$e=pqHe@G7c-=TfhAzl1=vV{LG^mW8*weTRwsf8xSpe_(Y6;P(BTOe)e zH0_Qa1=sMjam$cIbyOuZ*XZDtWbcCGoVO~V+mU;qe0TM3;7?~O(LA7&E*(98L|$`0)graBHY!{tsoLS4* zluf$Jxt+S9_sS4?5D}yUJ0nggbdNR+!=$b!h6pOJ7%i+~+c5ZwSf+{kbP-D&0%eUX zQ~3L__Ams-qVs8?shPyVRnFEI9Fp(D@&g=u6(gt~b2;Tkb>z~ogt}P@EsP&6uY>iG zzr;6e=_=-iC&naxoa>OxsN>Eu*q=F0tZ$tHiNTJTSD&^~LgBrI>2_Q$j5HW}XAx^ym9D&~X_ zZ_d}T$`AcZkQ>;eg#ldX6`u3%Hka9#NRHaAu9V$8sxVSSb>3ZcO(KQ%An>4%cDST>@~&74Zl{1mEkXEVt7jfO7|_C#=ks<~N1E3-dd z9qn~MPSEoiE>UWqUA(KL#Q-MurE7nxH_S+FA25TbvWkZ}*8HNVj^tZ7R=h-$QaqQY zlM;O5?N+dZ=cPqE@}}AZibpMLO`nEc^Y&;^n3PLhyv)PH-4Q&p?wn>>;u;mqxC{*y zJFao4I#f74vU#W3H%_)UtuFXq$XfxSC|+6m1*M}im_6&DaXAqq@;?u8XYrceVyP}w z#Fx`%3{x|1G;_=f72Ui5ejJxJiW@F=zijT=G>-*gO?}u=Bwq`7*){XtvMy8Gg~t@p zH(XNd5Dc4usl=7Gd0#PxSl`e*Fm^EWvmS!Eo!@E;teuWOvo5$FfOC-UC&Lc7ehm1) zMDB2bI_8QRInX&{{5W8eoF?xBqj;l}gj-1jgb%adCJ{Tl&|!#Ym?<~p2G_bH6dSWr zSwDgMT2d7X>z|3<#wCMIK#uwVyE4T9*qY|K)e@~7tu5=+7U-ehaTd$0=re~GG|0;w zn(1QtNXrxoDaMvftH1JkJuxOZcjC|+%WUZpQ#facxj4d;jRVyix$Ge-PwLF*PILR$ zu|tmQV&Q(5I(`M|bt(@#lKQNQ$)DF@!D|LeSgnUd%|*-32PxWHB={GuvWjv}CbLOcpbin3wj(wkwzN9OC2jsj2K+KWXr)1Uw7lIYfp4DU}iJ|6y zWsYq>Dkcq~r+WFGO&6ZR&t0p$tqB&~%nUc3ou{)6oh1SGfeR-8W88{uGPelX-T-ke zk`7;RfYs4s#!&gfZyvhXNf;LkP)iG5@iIpnJ?xcdtgxUc&Kg_BR}ZJ3XWAinV$R) zekh20+d^x|)cdR~bO$Lwyi`YnOZOBa7# zzs9L-LwYI;h*DF2&7Ld$QSF)^U*^T6`wCZjm~2fVFHI~TnVO4YWA>)R+=Zm2?6A6%&V+igaN5`0 zQ?mRv#Ul$=hdpMH$oOb7jIGKWM3f~!?3-=X_7kpT{GtHDzk=oqAJ10Y z&yvY$`2V}@z(1s)|Ly4Usd3Uk(?I{=XCY>ej-=AApsK77rRr~}45R|pwibhcXlQhk z$~JOMk4Su2yTlDUL7g9Cm09`lbuZ!6l02mU)YRuXA%yi{Db|l zi;hHuv<0(K38!#VRt(yIZAFxQy{$!*jYdT@7p>hFX+1#9U#rJi*qt@RY^Ml!s-Aur z18QcAHkMGt^2-^xM@bI?m2rOM z;Wg#_KPzwfXjRk8K)~k^XOrE_^T?AD$z&}IRog;`Xu%~W(x6UZO)woHQPEKD`?(y+ zy(_yx7vn)Kf_d?+Y+}vop1+$Dr8U|JtR}Oh+SY~2_01TA?jSR}REUWo$^F_~ zugzs8%a_p4A^^_N8pbR~8jFsDb*Po)3YQw!)kk7w7QNWJ(A`eaVbebZcD zD$|h|OFU5+OI_a=$}~f~F%Z^*Yqfzq?Q+m6oQh7knGl%rzs~@@?7OSVttd&2ks4QJ zk&9P6W~DtmRXgyLi`xho4m%Z*P0e1JW|v!fUmQe5>Ig6{w=0k?%b!4qWOe2w!#)U%&09pluOgJ?^0+fb$YofO zg=R=-YjIBzBK4bmMU5M;4aL^>$ zDbnQ7!@GBME=7F{8t3qrCEO@#YLA95++Nj3`N{@WT#=z0oL0DRz&{lQv9cC%1NCbp z*VFAPc<~|RCkLqx7y}%~XLC@+<;B%Q>R|MDys5OPnuK)j<9lCF8d&(3Q%BW983-1X z`Hye1WchSn5>peL_Xx+2i@PnSOXOyN%|ELKhU^Ty#MjcJ)vTgVB@gzSeYlQ?zL1y~ zQK6-v$vz+liwY^@S<;0oKVVOy7d?v`QqjU>Rlh^8Mh|)u2+-u?n?(Mj>)AJw8UC1Y$A?R3sfBfV?JK#4=l@63iu=1w;Qdlhdme* zzj61I%uOB2h7+EoD2|LiKR}f@3_aX^)@FF)9)XREew@~1S8z_1Adp`vcX8D_!;{oo z!;|N|FnfxqjbJBFVR$koHiADY>B!g!9X+a)n-4@?gW&e$K)VhmVi2dEk+mzMA{a;> z_e_~37jCy9e)Q0$?@xeQC99Rp6*9lV`VlA0B@L{hs8-7r_=3Ypf7LvqIfyARp3~Fv zM-_n|NWvywevkTPQImE*(;qHbK!Ubb`9%jHOAPHvk$Vo#^HA z`nbpq)D|YG&Vyzq)9llv!bTgC#-+l%#m>lYP(QH;8|;(sFoc{zs%rCquMVlv%!JG<{Hy}VO!`K#* zge&eKsU*h6Kd=>D!xvqGT2&dL*(-uNuYktS9g5ctv!z|uz+>0m{ZmeG;~D|=k?p! z#GOwKXThlmC&U-%cr^l+fRBGOv^fK)bJl$U0Z|770pa?e>6m{h*&~y4Ffp*^9>t$q7<%)Yo}wk3F6$Az+Vv_p0n_=5Njw6W;vUtT zX&TZr?7QuHDWy9EM%Bz-zPhe_t9+!*uUaBB>ZUF8NRBn zF-pCG=L9u=m5IW6H_^zxLoB6_Dm^oNH}3fjF#%Ffc1Dtz0cmI6G%@3CZM3)e4)dm2 zS$kmXiA~a66gMkdpvl)?g}!Tl$B~1&Vm>eUw)7qlcQ&9cExr&DmngeT16>rVW#)#8 zXZ>d3`8Ju1jEjUHGJvdDiXGM1m)TF3@jt|XC?98IzUN*fuy^$j? z6A2mJ2Aun4;H^(LV(Qs*@_OLrw>7QZv?+&wg&3N~O|7KV&*@JE2vcn|0osoE8M(cQ|KEZb427Yj^-JTRpYLrd=ZtRBvVCO6=|EIB%9K-;{+q z*m%nKd9e9v^gXiq8uXpg_~-71d5QuvY5WU!24Qo%rL)$StgZju)I+YA|erFq502iPAbdAQX=C4R@p58(LWAzS zP*10IYwDH6p}ESu>g~f(sju*pRhc=%A#_@8fld=@UzTG>yV^a$x^=lwPJ1E-d8w<~ zo0#yc`BL&e%peQgSn(NpBX@SbS^XL8VSi$YvVx#fIRzSRXVgbk`!0a9lo7%_Ec1kop#JdZixt!qcH@W&xl~?IuM>}jGZpm$ zujoC~QHWVImrO01BbhtSa*SW#^VVW%cn2XVNhvF>wIyXdCuQE!%NG(D61GiBp1s2i zvsx<*yjsM0<{=L1-Qjm8Un88rBpv6v(VV%y1Y+tvw9iOMtA~u~02L74-~}}t-@afp ze0&h`;Mj=+8R6SQn$+HAx~s2jz`A-I5V8iOF}hf<5Uc9gIJfa1ThLo1w523X?%B#r zzi*CiBhkEDZt1-ZcWY&lg5U6m`hlvxEq5C@j&&P2i2~)pF1H;Z^}FfS`@ObaXN4QWsG+?$kOG2?I$+$$E*wIy#cl!03YFHAw-U&e z-Wp0ZK04v_1jTJFq3fYbW07eiXZ3FS`M&3&fWoc3(8rCHN}kN{Wl(}Hzfjb}fmfB7 zO8d}Y4rY7g*)lSXdTVt8@ceQdF}Aj|J$~mx7E7A_0Bv7Mh)y#qof^H`1`@xpJ%?%c zNQyrGX|lDJ(sQUXEx#R<4c!;7B5V=lHZN}P=-a;bI`Au{D#3*se|+X;F7CMDjbV%M zRr8{QPt5^#CwG0+?{bjvSA+g~2p*AbMOCzztwC4(VvD)v$!eA!$fbi(F9Jj%p?~h2 zr{YX(m(+Ht(z~TEQUwm1buJw6%7m(O?}0yh^3Hv>9H zzDR8*{1|7~;yd92_>0=^5;RLbf4UwEFScPHfTEANKv9f4#7)r;M~FCGNrM^7GW8-J zdtc9_OVnQWiYtEgrxcx1Vza!kT`CQeH7D%KiekbA6{1rrVdFumBc+)awo{8N&#|eK zq<&V}VewDn4euDKP7yi-(%5P=AZNrDtl6dF1A`eSRh#%SZuVma6|)TO<&lbR7|y=9 z9Bb$at4k;fn>FGtTE#JRhhT_SVV*3c^;+d(vre@$R=1u%t(no?^*1Jk9O2GM8kg~_ zO!8>`b6!=KRtk$~n7WH|q0Diu)9}V%HK|k==n_u6)v%>SqLeCr-&a|aJ z2mpNJrIB8@0<{HePvF9?sNeT+Z1y`9UM(tu^ac8~;LcUJCbi=A2d=dyMDE<87bIaW znPBv;wh`jlG9+VNM-Py5?U5}POYr(7b3gt~nB~e%Bc$}X-zt1wf4O!3qoR}kpB0_- z|7FkV_-UHJ;P}4{ELA4P6{yFh)ug25N5@9#hQ}s%l@Y1s)u6x8D>AVtG1b(waMZG} zC_1_$ASyAjFtHubP>oE=$TLtk$}`Hy4NK3Ky^oe)uKR+@2pnoWa_(o;o7kQPFp@J&h# z3Z{e1xAqgH7v&`@*+3rG%8gF+27UHl$Q`Bfa{ebWGMU+v)3*{*BZsr0{9+Wz$qe7^Mm_Hae|{Qj4R>pv@PO>C|H#c=hn z+ruwz3=cm|t>Qo76Z3!GE^Pdl$k@bH)WOc~(;!IB%HHhL+{*pajP$?d#wluc3TU6s zqpA7^T%%E%dHEt=5*}8Rg~SURV2E+0X;7`C-aI?94-+0_sx*=Xw;g&I$*22?w&GYO zE`BxKeWN03W##2$on)=6TQ%tF`T(zq{SA*(u7qwHZKyUtwb0x+(SXp&w>>&bl`US2 z19St zwk^6LTv8;knrD)kO58kB-D&v}VbWOPj;;e=5C$+R{Wb{LxfMMeR@{frJQj8iRO*N` zc0BLQe{+JT?K8#VYXob%fI{3ubvpX$8aAoXy%-OoiPy@!cj4S>cAWEA(O963>&B6Q z*pFDOclcOz()i)C?9ghA?W;mf)X38a=;CrAFN>$^YTv@s3urFVsjfkM&L%^(wm3_5JUPdb1J{D_HX9a zH2cBpe6&o6%3Wp>13XG#QZSD?l7-R4FKyDv2+%5b>sN_~o7GxCUL|Cp(ds3FonVvd z2lSxU0Q`=JiR8kG)5G#A_zE5pEMm?FP!a;VU+>h1-H54MY_YZ(NDleGJ8h>5MF$R2 zWq}o~DI$g2uu3VvV2iKy(fxsNys}EH(#St_%V{T!XGri3=bn*ZVhk_hGlnAb%BnC; zVaV6(pMZ+|g@M0z<{TF!w~Tf4+V$HE$qU&*X^Y;=(?D8=EJ>gAA%)LDESr{czCxnDg6_xQp5TzXc;ZtfX;hoW z(V?~0Uhvq*m;aM+{1r7U24-=9&uBUNy#7s*`d5(sEm{3+b-U?Lu-jRXtdl;&UZmXlftss&4#_1nV&>`e7Xi>4? zBU}5%ExXF}nj!gB8NCaeaY`$KRX5VhM5fIn5gd)vlkWBTWMcE+qS};_3ObA^k@=lN zuM`xaa1ZUe@f6os0^;KY5ox`M-J41IJ6T{xHca7Bkf+41$p<1R(lfT^>nbzY*HvtJ^EW(qWBf50$&{qp zufU%2q7SV`mkfsut!A=s@3J<%lf_&Yyf?k zh)d!U@0HG{2VaY++89*l%5jmoi!Xge7GdW4YfubC4<=WJp(||Ykwf8!?uh~ce$lv+ z;}c&KjuwL6kKMq_hWw)n?Q0Nr^Jb;d`{{@ZBCk;Jc`D z+!ApjU9NlB4x+o~__NKJxv6~oLQ1jKNUOy%9uFAI5957Soq2JxKLAVwLWGHCOAbo{ zOBV^I8y>1l%QdI^yG5>Gtoq_OldQ7rU@GBLjxtjuH!R3Vt(`cnj|F)mT zsIv+ud`|x$2oR9Jtl0l;KmE_?|BrdE^2ssTTYUcNX!L0V`QJ9(zf^@kH%s()^HwvX zb&*m=UDdTMvUozPyEHSSRCXy1|Y*Wq< zu9oDr=Fur3j8HM+?zPjjGi~8zX%e+)FVU8+y##fg86^{OJbEVHURpKC+_#Bww~_o! znA%2Kh7!=^+8~*wf}`x6@80+=t?k}A%wzV&Q*|TV|eQ-sqCjKNir%#+s^@-+7Mk75R$c} ze{0d1b+%v{XmBC(qV=d+Voo zsko{QpR#VVl9Tdka^xjxiQ(OIB54YQStIx6-gAoMqwkRKcVWK9N|uh7AIItvHptzC zfYjmd@-IU;W0OSz4wq;}Iwx&e6-~M7dIr(O?VEP&k2QYz6(~)UUhE4RNAd=5PO8%_ z{~HaRNCXAvhA>{-JKnw~d@%h9=3lq9BT|GL$xq}g`#InL2Qc`zx&FDVyV-qu(0|%! zoBh{1|Bv-OC1G3!j2S&d;f1xJp;6n8_N4csUJYt7B``dYskx@;)fE?zkRisxdScT; z(|q;Cmx@_h7K1)eYi%!k?R6dP=KcBwatnSO6?TcmXjOb&JgA%dFtC_E@Fg!mfv6Nq z3B~)5suPNPTqt;mEVnthS`M6hCXf^W>56VubTIl|LbR-T_|Ta6*H!RVe;Uo5i1;AN zZD6=h8cS>`Hr`MOY+ZW9-3hlL5_MX>?A8FCw54Tfmo9RBn&&G3oF>nIC zU-z!rvu(2%a>Dv&e>7*y56KhRDFdh93pw3?5!z3kqUPW@N0}{?4@TRrv6A>Ad~5 z>S4dR+;O#uWdJ!9+cmlrxT-#t7(X4s3U_@kOm@OuY4r3Z{;{_k_Ljcv#4W2(FK8aky{|ypVOp@IvMQ0XU-qISJ z)PJ7I)D8V3b*J%Qs;+cbn*`WYamHH_V^c}JC{_P}^Lcnj3mJ`~;-bOEqDKD$ZD z=2FPs?12^KB8gB8IN#xXq&GbI6>8P22YPrCmBh#j3*b`8H`M7VlYa4 zpIahc7sw@$L8h3o0M_^Cn&Y)2#S=fIcDJ6&+w|U5{=^zT2O?07$#kaB*R2vt#~cG_ zYsv)#brDA8Q)*IEu!cX+bRzw#m+ia!`^o1)?e0exYOTdQ9xW%b_KWTjIK9${Crm{w zs*}B_X%&s);F+{^AhhwGM5j?b@caw;1jM2LBQYte8gu1 zOIJJ48MtQ#WO*40+HJRslF};Ipi;kvf^rxZou&I%_E>c?!~sHr0ES537`joX*e@~N zKU);tR~y}vU*U=Piwv>6(QSe55E>?7fxn*W0~uUtvHRnNc6T_;Sgals(g}kDWF6PC za$V*f=B@QARf-4b*OlZ))%4Ce^ycN*ldkFKhz?o&H}m?uqv?EbCu_VWX*>}p;m*!D z)coj<3CDkzqWvtOu(MeUKXtlSA5}MrDzQ&+l9Ozm4V5Lj5Ty`Hki5Nc%d97INv0HG`G3JRjS4r!yi#jEpiRI-O?`P^ZrJrK@Q*6@!=q#iXX%A(y# zEtG_tTF>ee8e;(FQoND{m$k0Kig&axszzqS5kXekRaM}l=99ryXK)v636Msu2kI%a zTaBnr1J0GM)@{s0TMuNhy@HTzsy+)+#KHS|2CIa2gEmM)wDQ-2^GGOj49}kjP=~pm z&JZ=pN%bGa#br~k1HEXi+&i(}t=`9O8G?Pt+EIg8juvxMCAeeIh|Npz}Uw2`$03zq>JX}1}5wZj8Gw1Ymc zsG*5M(MAmylsFghwzMhuEX~FmleZt=CpL7rk%Z|Q1Yx!6 z3T$EbrvcPb(+AYS1@n2-72)b=>H_D|?b!>m#M9x=Urn7r)pm$&(UEppuA!}g1(xV> zd2yCJN&`2wSg#;R#%;2E;q;96UmN-Ngl+wBw3>)=CReDu?*2@((GYe6w5a+LQu5Mj ztee@qA!oX^bXj6XG;n7%e{sj|5uxdBa0RiGW0MHmD403aCh&j#CW5Mvc&}ho=ZUMg zqjeW~*p63m+hE}^6~}1!-4>1OJ02)r*pN4Flaj1J!F)n0P(< zN}tO#uJ3_xVs4OSQa&f>28y}gu9C5-j<1pf^S5ceC}@kbu8ldu1he+Lm`w_s)9|Ig zVVa!{Nzd(T9{E(Z<}RvVz0+~LXmj2_+vem>v&SfScc+QQS=jqqQGljl#CF54qxoc- zJ93v-l5D{W*Da>}i5a(=%X&L9=uBU6Ir>_%N5?UlA3IYkFcUA4TvRlTZFOTrK}LnJ zV|V>n$!a;OR6|^l+mYiS;z~d%_(J*PMi;pXz$DZj$-curva(41;IM`1gow5ykB@c8 zOwF(r>Ckx! z=cj}-;Qitc^`@}O{KiA}cM|rm{CpSZUS#GIu&sXP=bZol3Ch2xCV%mGvx?~c7Yox$ zJlGB@R}f-j92+Ab!c-(&Ksp9P7SWwSmY-TP4Tb07f_+52SY6)}`mdG^Oy{sC?J~KS z3ZL>i4zq8w4%dA2R~)*!d?6IO8-vl!$?tA7kPgJgWRYvW8llLN5JqXH#_zq7Wru6- zU$LWVzn)|T#RFrytNGzX3$E#K$jnPa}%LUwJQe9;h%TUrIcAw1y|ZEd_lUE zaM4}QXdlUA30Dh{{Gq>JMGVb1ZzwK35Fqe=*eJ#~1lb9Zsnn6~h~T4p;;d|sRJ9NoCh zRdniy+gzwc`p70rg`|a5P)Skbx?|Z(W6vtdET(^~%BWO;->#-Z96#odc;>(~_+2Hf-DaiG-hfG9 zQ4~aq3HFI9kM;FYWA4nnD&`Qo|Q@ybGA-&hQ9w=t$_QDfD+5+}yhYdUVLANET z!{sw(znM5$)%Uj8Ebhss7hmcyA}A2~5kT~Nj!xTucZaQH(~y$;Mf?yEj176b4oo@Y z4V6j-0||A)^93yx%e$2%k)3Mg^NW1q4)!>MkC;4a{oc$v3(!WJNZ5P5SVq}KpOI$O zX50~b0}DE%{C$>2m$i2ZDSY`jYbb4<^(9(3heJuK2L zB`An9PVp2pai1B%Ep(8G1X9B%GwENDW;(nab{wY3NV6 zWP>XMT`7z>8Z7_sf?ETNy)k&4t&Q#c8L%iK|#2v{CO2 zBV(XbOxE^Ie$gRpYKD%x47oj)hMZ3Ij>O5mswhd3m^Usf%*un*8;0jGELTSDY1CUtqr4B$fGATyOge-FL6 zVM0&kEXZ)l$2w68OyTUX@pi_)c|RlePg)jzvLkAG_NLjDktRel8&$J!(9$yD#YmWl|cMH<0N)aLF` zU=}n3nI0!+dzj|YS3%}xzoyzrn!apvU_~0Sty{B({zUj9O38?MY45{eaHt;g@F!-V z;mdq2EwdO=FXD@4XgoSXo|_;`}cKsnZT6qZ-;5I+gd*Fb>>jN&7?a#TYQ3y=VE2Ge&LUFv6ACAsi?3nzwV z9$9@;>Fvb^9}<$@&gXXPd$uhzuDBkM47m8;jd4Snq+6G6hAohtLL;g@E_+2u-GaW3 zWj_^t5~8EtqtdZ2zndpG_hZ1=rOmB~TM{Wb-w+p&Xf7%AFITrFqN=H%NHH=%>EacB zJ&sD}NF@*iS>;xqhawVG8821C=t~hg#Fha2Wg_*;6QwqA86C`=Lm&0+rVl;B1k+mc z&17PSP0cHU57pS#+=;*9?cbv3Ep2SZ0b3^WjslAez4yX zQYM(o5}t!?@zE*$I>t2w@Eij@hIoO2wP;AnlJGd@$5}W!Ny`+@CU^%JL zDELdM`I8VO?%i2VRi(=)xo)=jz23DvX4^mQUK#{|U9oh+m@wLxHDgHN*}EGene#A3 zaTc*thPi?}7zqTfYR2~wV0e&v;$4y} zB>Bj5SCrJKF2SnuUg9>YDNeDsRBSG)h%Yj!u=WxtPcfV9(XG?-i1g&G%x}*Wm+G|4 zMW14;+aG~?Shgn7RzZ*c@=HDhWS5mFsW75r|L)k}%!=nF)lwSb3YC-)u1Cq9s2JiU zDHx5fztFs+fyPq@G)v{YDcUEwPSi#{*KadWb7?88xI33-63_vC%vz%58dZZ0x3-qKm^MkhAAeUm(sx zySNMe?!5zsfXbtMY2##TD$N-Ew4&sg-o~K>S!sw1B zLY|#(MD$SZX%G}7iilPipwdxdyrl+W{6XHsxWOMBPj*BWnPadmfv_&kSkhL@<~EK&J4Om9+zsJ{!0 z8Cdt$#XYmOO>omRXvWGK)1L2Q7y1QeZ%)U89NI(_E22(LaeSbkmqU~J52UJr(-N|` z#Ks4n4lYjTZ85vgLes7hWyrh*c5m_2a}?&h-7YGK*+@q23I}stkov>x9f>l!a0@Yr z?m34nfRpMQiv^;HhF|4G6|CVLj?i*R`yR}Nb$n0O5Ig4EALAJSI+-b>i_rDRY4 z%js1Qx~?tk?*^P9n83oHf$gy7;H(obnkvq*=6Cqpo-x0in7p>fv!7KU^9_DRjXtdes@WZ8? zdP3}WFCSreoVmp{YA^PA7&t1!bDpG(_Cu{7w;L1My*M&X`@p5LqTs{^rLqh2@ux0a zP4)OivUV5u>diNKZ>+agB$Bttello-WIbQj!VJwp`=2RI1xc(m{Te-nZmH#E=(H|T z&y2?V^6}ZG&+_T{?B`mX?|&;${wo)lT_l4q{v>b#|EY-mpU)-#FDzk-vff{cSpGV# zI(K>b`ky-<(bN*u_UHy=B$h(xfv^dDPaM*r=R@Y|=9J_C`GNq25P>JKmx4$SjxQ*1 zR_=rozuFG7NBKS8-~Rl8-$FLyjFm`%%k>>!&^9>GOBsZ%~{ zCwN6RZ@-CU0L|C-l`?ItE_VxUI){UewjYLvG}oPeL9er{O;xWoD2s5CWRnF_4UTJu z372>=q6%{+3X@(uwwx>r6ts@;Ch+w6R#43yNWhP`Ao3^U9BkZ`sy$N3c46F`h-(LR zDu!<7ulVk5dLcVuK++c!!JewnPK5R9Uhk=;jQL98DebF}MPJqQfrPG~n4b5wt_QPL zFsr_Y$;W743wZ#G>Sd`rck!2CT+)RXL_@YMU(}e;_4QiM`63w*p51WMut$<4ji}^F zTFAY78P3u|Oe{z=_*)@@O_|Lf0(zdMe*`TjoBDnHKtey10DpRdZm#E`D{Kx|pk^@Q z2Ih}r(Yct>`HLJy1DCsiQKY?6d@<^^si~F4ZwS^%BW6doMici5lyu1c6kPs(27pHkS>@J|Fa@LSxtg3B0jatC8lGQ3K!@V;jVRb~;Rx8|h zytsaq^kT&QjAX}Pv^*O49m=44+|PrL!RWqY^5lunSn8=&uuREz)g20k zkrT07XY40#*-k?zxEL|nhqB5D4P~Hut&Lx8gWa9Rb8Y4;e&nmhx1o3q2(na@v+wGQ1l5etudXvwSZ^#F! zQpewnmq!GxxYX)AXY{q0X@Jz_#@R_IaJzSF4JYYpbvxdY^9x&b0NIpR9R*NO8OZ~T zMP`aDWxJ4zBTJ8@dT6BN5&+}@2yuv%+x*hwHO(XgT5!+MU}HzrX$A!gQ5l{&)ab|~GZ%YjAS zBGS-in+6zTuUl*GA2u|DSnkGJ&E>!YPUHfO6CA6%4YVhe`gvn{UM8$2G3 zf7NafSM@H|6ZxRaY{y{;70$jlWN{VUPl1C!gn+v#LpLhD+I83IcDX_zic&fRM%RoJ z0v?Zl3>=St5Zt*~V{PHrER=nP`bmNb_0bRAT2k!`iCGJ}Y5$QgL&U72ghd`3TT_ik`PVo%J6&>8X`jzHF1baJMqqSCWfdA6Tws4+(k!y2)amaGvfIWy(>-n#Cl-W7R`k6QqflR(a)9``;#-m z82pYO**a2G*fD_oPJL}DWv59?x>p}DXg_JCX+RD&&=ST(^?4oMNPZxf(m%DM(F( z)%6!{^mi^lha8?V`eA&u*6nrgij7U5>|?c*B4T~}SmCj18}Zs?N+IcXc^ zAR-QNfS2b2szPPN3JzVsY+tMV{M~Bqe zVVRm3+I0x(IeGmsr*+<;l=(FL%cPu+j^7kz?v9Zq&3{SA)9{VB4wxBBPv$0wAw}ut z@l!y=5+(k&W{%T>vud39epi>m-vkZ@|W~;z+tU8||3mK>g?Q&^Py+z_vv!p82k&rv# z0fAEhJ^QG64Y#z}I~siymzBki6Ux<^;gANdx6?{?DBhucHx)k1Xc0m}&Wt58w?R*h z(wJs-4)kA>oTYD5lE6a*sTaAGLCd|6$hAM#ziK73tN45I(O*z2N|@c&_Y-QteL^js z|ICO#8?{@TnYey_{IhfW-!|TVQ&9d&lvU^zLJygQ02lKWRP4(?>juX~bK50Vil)sc z!+sRyO=Y$Vg9n58kkO!Ec>D5BwToWHyd<_ucX6D>y?N&jaJXcw26?E}5yHgtvOTCx zk)#eg$9IQbMni%1laSJ|@d%bvY0auxLnZDagw(6D*IMM9(3a&H>oSoMyImSP%Em^H z)mHXuEKWalS-lQfSHJneyCRiCOaGKh9rQiKzTQS9l+?u8O-}Rv$->fic2OiWIL5m2 zzFT7KLF;Ilpi=B8<7gu8hYC^*S~r7M~`}AfjZyL-2kfoQH}ejPJ)v zuyKIQe9Qw37C}|zQl#sR`KdmQ>|^sh0qkZ206|l2;|f>3gCM$K&5DVTIbg^Jp|>Xh zF~*TA=$8kScI_sYDwD;9ATEyLoe^LnGs7-9dg7cvD0@s47DA;C&4mCCfLZ*dAPUVF zW|UbsZu?IA#0iq#PjuGcNCxz0w)kkoku~Vg3~^eRl4lRf()+*Zng1G7x$Y;MtiHBUQQ|8*l#v+p z2JW)=K%sCMV-YfIk=e&DkXh!-cJ65dT{{6=z_g!FhQ1GyIG1#Ia&VAnqUk<|6D@}m z{2mX7)ef6q=C1i5z!a31rer~1y{U1iP91?lRX33Y8fv(BjrLQkgYJ0X|_^gjCV*Tw6`x^ z`|*t>p_d&ktR#~QlscnD#>^Ox7c!f<{cV%kz&MAqzoxE?G_>R1n%Pz|?qKOWnqV=h zRiN)85~>iYwMB>(ePKF@4ARd&S)9laU-wjuH_07S3s(R&rFzR?Xj^Lb=bSL2F6Cwx zSWO7s9V;-nGs9H2tNF_tWj7`V&i#bR1H#!9Mweolg= zKC(mMl`PC|zs+Hsp`m*FP4$-E_zr9)u85o zs9U3efQ)?#Q2*bQ+&?DkKPfqFA46TU6hRApkAs6odC^&SSUXW7wm9ioOx%^bj8xDN ziXupD5wAOn7U|+&W5F#+0AYO~Xk@!?(FzF?O37EM$zWt*B{6Yij1)Z$r)j+fJu?q+ zb<8REfWtP{B(Jr^9zo|WpRP;aLqGq`XMo@J(Cj4Yw6Q;lSjU~<%~KNJM(SV=yEmoS zhit&~u)^g@`m^A#m1F*xjYa9SYp`GN8E>?I?=qW#CTEP>Wnf>@DMJ9M1_|LOhE_^GOoAm<{rIjbTAj!fZm^l!RtabpB+i z+UM~CXOBIqk3419FPX))pYlu?h;q{&ly$W}ND4VZk4Zam}1;w~3NvRX>?AblQ&MtaYeJvJ{?^7W{ z0&uqQxafpS2jpOF5-7m;{{p&<721)nDw~hYc=D2E`$advWl*%q8T6|zqc+%uyQ^m= z@ms?*vUwC&6tddb_%hF;v%7e+SrxCm@aAe%<6MFUxv6`QSYeFW_)0H)83!|;8A)mb zi^$^q>|s>Zlukj8KYa>W$C~M$;WHNcuFAGBW&BWS2-_g;vtwQ+2;;}OS6$^QU}D~0 z++$Q@tU|IpJC(%NW~?r1LAMgW;HtuA&z-MP0XaErPM3;p8FA6jIy1l;u^Xpy>$Nc` zBc3*&R?j29uO;;(XbVNsoozZ7&`4g84tctJAZ<)Gzc8EMxQtS_)zv*>$@f!xe6O-< zd1Ox~=jit*2{^y9xoSi{i6Iicl6=HwqVvBx`wFNkx3y~l0V(P3?gkO1yQLdt)0=MT zmhSG7?(XhT8j&tZrMu+ce#djwt@qqB{+F@GhA~)ku6S2H>sj-8Z=l>Z8Phg3LNk?k zLR!b|fps*k(K4U&o0!v(4G&A4u#bsXmjb7x45}1(4zl^glQ;rQ zSkI{@s#^1`4@I`JUfQxL&idlLj7l5fLU*1~Gf9+IUksg@?z5j}B3M3kdz-&$JgxhR zs(K-NRZ&@yEk!Dikv6%ypAN+-dW52xn@=_3q$mWZk+P)>$3o2cbwctxOLI3Pwjk?k zJynA4Pa{GfFAtBUg{7ZpJmd&g|9G|i!6>(4_0w%qT<&VZ5_O_oy2Uw3;OfEv$Hf_G zcUqCqDt-`8OIoyqqsE{NDtC1@)=H_?8!~pK^tT`K3K)}JUTgV!h4C7d5DVR@^2Eg+ zAdRReMZ7zis`(;ynoj|t!zlv2ro6+c)EHQ#o|>Kn^S*~CH!GDN#!C0}JlQpA6U$|c z(|rpQ#~!f?)6%GckiD!qA>5OvasOmbN+b$EUu<_?{-Q@uH9xpPORCu`j=10NAvgBm zlh!ifCMbK9R>St`7M}?vcSnyE3mRVXzO-Yt)+cBrKzLq&DiADxaR{Jl` z&hl53hQBz7m@ELth8GOS_$%JP62|r$Lj>x>qyy)k11RL&un9T$pELx##y-jZvUmN++zJ7GNwmcz9*>1e@(>G{8(U z;ouYW*+PyXX@N|L^p}~weW5i4NdZ2C!@b+y&@>=o#6ewCRil$>&^rVxU6|$0*PBTb zsWQpFwn8Ru*wLhlph}zI$91cJdMND{(fMlgIcM8UrrH&s?*a42bY2cbJ_e1=6sysQ zEy@(AK^V_B7dW7O`6JR3mDsl6$axi&s?L>woZY-8-|{|Wgu9usm`^nZ4`zti{g>+6 zv5oEO4#bK#5?|KpwzX!`nW`nRVz|xds$h@YHcZ#b*IYI=T%r0B$HALuTJ^05DaXxD ztHce=n(0~buutxceWYbiD#8oQb5vz4cvW#IT-_h!*B60%`;?q~GZdeLW6`Xi67M3q z)lD0#zsV{gT7AFXCXbT%&O;G?gm9gzy@sQNuIXcf=F>Mbu6YCEjefC^c~|^MQ-mo? zAge&9+nAh2t0=bpR-zW`2PSL+uMytH2e4zz&@x(M0-Aw)yqJP7uC*!`jBd8bOp-N)Z>#F!%CAka2Fv!V_EFDg_G5cL& zrQqqwxkR~LwAOwjrQ>7u0;<6fcI?5a7@5-xi;&=jU~QAgWkiYttk73iJBW+|@$a$< zK0u;;AP8}PbepMdj}zPK{9>foW(zws=<3n-(^HP&eHk%!{)DqZs|Ul{Zi?9nkjnf8~ZcTQr;<&zX*EHI(2y zpSLGFQ+$qkHAs#vsn-PYis+i-t98Ee0atOQP+6+T#^lCh-vi0aUQDRb(N#0dt3&_U zIfdhTelc&rgg@*{o$aiS>2uMt2HfEIm;Q57xQpOAD7g|-dm2w z)^oVyaCzuS7D6r=B~7uys@5l6-5j;GmVS9z^cQd3$vM(?NZKi^0C`s9p;VskANfW4 zi9ZE&e+@?WH`x@VBhJ;>t8#Gs3}}OzR1vmc6HJB}svz#M^Ea_nA|b%Zb|z^cczA-@ z*;Uc*HjR=tg=0-aFIXvHQd@!5mtYkzrxhk^tg93@XP=#Yb~Tx!i+>JVWnWGFc1~Cs zZuglyadwqLFp2!xat{^?Cv?vjYh6Dq7nIq;F8av$f||D(xz1d`U`1)A{bJ%=7#29xOiIVGUk! z=93k#eV>aEnKQq`kaOK=kD6r9x|b(y66rXma@iF1tRg>V|1Fb?4}(j1(@y`CaC>&z zDSq%ob4^J2gk`z_Yr0q~Pt2OOC|p^V^p&!dE&gmvnqo`HxivA;A!bd2RiGk90 zP1r8bhg_2Hfn)EiRkK2b^9AP!nle_9>lBh-K{!0pbSRi6`Q$%g#d+%P^1vR?-ufH{ zFgt%rvI#l$?!~0q(PsWLk2s?2fZQqGHW|XTy~o#hrdH4HquS&mGNrbT@lR>o_Hz5# zQQj7$4-~7yu6mJGSUyF1Ce2EYSw4N8PVs6F2jyvl1Agq&NM9{Yta?jF<5gNcn@0?m zuK|@2>Dj0O&^MWlR46nJtTMw|yPBUfEKZ&A@8Z5nE%VY0O5I222~a3$$r73CtY%r< z+zl+xkdxO$7uGI8peL(l^hK-qutbq+x?gUm)ar9{!!A*6oVWt9^lBdIli#*Nqt5#` zXnQ>+koO|!auIz-ciaw_4)fI+Vq=;k*qtv~<^(n4Mt2oU-px0?bAc|oP;XO(fbF9* zDQ|HFd*Hi!D&-Rc@{M;q`Kgx{*Wv4^2S$fb$;ZQQYs5M{8CR-tE1Jp(X&O8d<;+S) z*FHb8@S+#nv2WN9rFzwREQZd)uonReD6kjl)x9YLs75u%K+9em9b)0emwA#^#Tg(? zLm*{0OJ@ZP`~WS2=l*&!)p`s`U#tN7-Q&qGl^f{62@y-gk5y~I(OyE{~#uPuxf4U7I0IIKnK1YY1T&BMiPYqU0$kH;F)N6>(ph)aT0oroRN3^GG<+;R1E-r6exBGbn_*b>IRlYLa zrMAClUrE@mWoRMHoa}(p6;*=@r8E?dynFD}6QTF17uFW^HPOV0Y%*-av(V}K$T@!b z=Of-8$U@~0IHRBxJO-X%TmpHd<9fTj`iKN>Lr&2)>%873$K;H}LNC3{BPQJtzU66! zlsF?Hc`^1P(>o#laPL&9#)wb-95F{CNpd{ZXMFs`ScBK|vAl!99i-jkh^;D~m% zLW{FELpf>H2b>0m*ecNypVQIED>JX&&t5@X4~W{K$8H}BoLFstSjurYJ*e^aD9^6M zn-dwcyhC%n9SD$sIki##3eO|a+WL4IUc00lK!dftass0{K`^Fv+TOb@aCh*a3VEVE zPtcK)hg_Ao$SjDbd2W8Y`1E~Cz#Lgz8>Otro06~g%xFZp`{%*w_7Ioz>Dg)B7@`5> zqHXlmZOzv1?Z~>fhcu<833axKdW@*h42>Uoiutti_$Vi_2bC|Z$n?bn)_d!L@OQY@ zcaIt0ws-8m9+zkdqiK&2TY;+C^Mu}8j+7LyvgU>6zRP^}jQ0|&;e4f4r?VEjZN6w_ zE}#`%x$K(e&6kmmvn&Q}VyW&krXHE&1tlVpg(aB`CnTKS`8CdEVd&PAiPY+m2ohh? zC->=JyA7-BD~=qOZ!^lGd2=PdLfwrUvL}$>es!UD9WPX&Z+J~0-YSd%%XhQFcd)K} zQ?Ltb%k8|~j&X6HCyn_*Hv3_jR`$CjoEQ#Y^HAE*&n)Nq3%)iFa9gq0NgQALAFcDH zG4(q^ZyEzy(AHIO%KKa>``mHLJ1^lf0?zeYuuf+HEkyQONjm}FWA{+MT5Htgf#EqI z(;_YCfR_E=m=*<%Kv(SlI-a-t%XCv3=lNn%0H?owCd|R!7YUq(H9!af)O>PrsNO$H)=yID ze?n|i4xCm!caO(WtTzYT)Z_M1uP^2gAr4~JiyfwNlvr`m#a|?<5mX_@FVMXnTByz? z!i)JT-8>lCdeT+j5@6*vkEy7G-gT@>uw<^8lMG8Pt_LIOq(6QZ>(JJ@tX6`Q;p#Cw zz`~*7(z|RsxteWhd6~|*E3Kr32)93NXiFG_=w22`qO1+TF&Qi^;Mh?@($X2w(d)$? z?~K1W@V_$FuG|mipEme9q}!-vadea&rL1lEpnDEAoI70`QB!a>DW;sP`=dfUiwXXI zom%bwY!#>fb2lTyC=G+ixNZQz!iV9e?Fo*DF-v@jF3QYUx|0|i%HIZz zW>#(uL|HU!g!9Nf@TRB?O^?BW&qCmkVx~N*d@m*VvP;S@s|FWdLk>C=H5CaL*#uft zeE)fLivL$!xFo=6K2(Rx1BM#y`3~(zu@l_U7}2BadVwz=n|+{|z6_3Sdole9(Js;` zOrl6LrKEPiS>w`VK#P(Xmp>QZRks5XgB4(2tOb$d(`4SMNQLH6{2_0s?KzW-%L|L&fk zv?uq?&vvq0C%(31LmET2lWs4*3gZY}L@z8T$_oz0_uk);QM#`A{l4C*f*a($6j`Ln z8WbqR-1AAyEDOk6kS13e_eHv$@#aMaar*=1%4c5mG(ZCxB#l_nr^VUXfXDGZ&Peb> zUCM7XL?!ybPD@ZASWX>*7AOh(qg(u{$Pah^rc-8>3ThR|HXiYBM-GEAd&Vw z{qy_SIvhpLb^tqKDR+8n+wxqcZ@pW8ttfT-$RZ=rQ?l@wLX#Od+*7343MKz8wRB@x z&V+z0+2#+)#2lqY9r$Gy(>nb{SEX1Nc-g)9M1GF)Ps6AoX7dPJt-I=m`O8nR&Twht zui;e4+t=xxdLH=CU{5&nWfY}~u1&VEr~t5V;ITVd5szIKA9o8m*rc!2u2D{d0;5`7 z-v};x>;z^-oGB-wqY$bAwg&*}iT%&~bx}^FKzaj&(&|Py2TXTv%QpCqnd`Kw_6t1} zP{rE~-jdLxICKfwBf7Wc?UmKWGvxj|C&pq{jWm50_SNKzfF55Ow=I!o#JBED^{44C zxvlCg$_4Fj2)8ABlYvE7Ck>=8_?e{JIR(*kZK4y(7J$@rY-phug3tuJEi?eY;h|_077@2O;okNXBIgmdeIPVt8T4C-X zPM5$Zw246FDKyLHPuB%8#I6~h>E7GZ9@fc@zbyCEP=xUbjq`R|6Du-Ry3oR8w#t{> z_vG7)y6YHE7a{P4%=uufB6-jr_cDwUk=u+x8>3k|hNr$0=v3x`f}XU6>1qyxjP?(H z-Z0-C+T*~kZ=5JQI05%gLaWEGCHmpwzPq-szgA6`Joqu-U85*@B`8!QDabMQ`S0WU z-})*4<{Yq8bx{pp6ysjD3ea7(LH>kB&F2*g8fuVj#gb;F4_WP{ZuI^7CK?kK2(nTBUjG)H#hXB+z7f+ zbOw}?@L38Y6CHYYrC97!Fp_oW(&>qd#Ag|*PI9`2cM{|37^7^4g$|8HP1!r-Re-8nv=~Te>P*J~FK(VtHyS@Kp)cB`#+sq!@;PkLubEU~@gSpSFI`S5x z!-cs1Z7_DKb5q(8r9k23@ha#T5@hk+PE|oIC7BRw8#2vfxeUNz@410RgBI^-Q)p<( zy#1MiP`$b63-s)=bti ztdv5iRp^aT{8;n&%>*@i6D2Su z&f}~SS3|%x*cu|8*Lx7W?}&*f2GOgi8L=i!akBz-{109xcT?3r1G<1t&P$ z1-(8Bwjttb_9NLooO2PL*r@KdPypZC?o8J!#Di$PJv1X!XUn^wM@s(CS|Wmd5JW*V zLr;71+4zK0EeDWrGu9Dc1}@Pe4Bg(8JD-Gw(lD{67Lf||8KQK?P}61g^h@V-nCTc| za#g=^SE;AZPY0}s#zkP~yDrs)JyCj?v3`3=8TlIXGY;0`RhEQO_&iWW_9`Rz_5}*> zMIfLKcRAf5j!-PQItSMK<-AaCRiUZ#apPHT z)0@E)XV^}GSuI@e$q?Px^IbvM=@c7H#={B0=mU>93UPv4q|%fZBzMZ#)4D3kf-_rw z`rU(>rozoO{GJLJj1={K++We=q#`4%g8>^8sB^e&{bUZ$aMHV8>uh5RrBT|;LU(x+ zk74ElwjY&WRvwX$Obie|jGx4!k13nRmw;J<|&OYd}kO9oC0*kvQvC39usYe*K`w>N-Y6Yd5SwAJ5;WU7hYD8rq4YtDt<> zTtUg8TM3gh`osZBAEu=Bf4UfT z^^ALDx!M?lG}u{;L&4ZB^2HBXNr62%Fuqp8&o%tbU#BcGqI$xQQng)X21!MVxPy+# zN53%TVo16rrE%Y+9k?xXv$x;7-9zZ2($gBq%PWBVf`pK-Su(OW{DV^@8FC`M()$=0 zsBE-6K(_+u+b=#<<*c;@!@{GvzB9K`6U?g`K2Kaa_A6BL`^-qcT?pT;_i}g@-l)kV z!KZqVLAcx{ydrdiEtf*73+<(bAjhkZ$|zd3pJNx)P_aD6P0j7LFz27pMwfo%G_qt9 zAF#s-b$;#>`-#3zf7`!%muki=Z|oIY|Hhe0^SG|6j-mwzFF;F~321GlgeT9E$efxW zLL`SGlFI9CpPb5z-O{0%JpGwIeB9J}ScxT;KO#CjrUYs5tMm)ofW|C6({X(0!lFf6 z)7!>KLY(G~T_1x97C!(qRKBSiLBO8$Al`M`BuZ6sGK2co+62)UZwZZmatWML7s<+}%M`CJI#7C^4NaheQFS<>+jnALTva4Q=^nYG88GFOCgoGVQxO+QQ)jf$#L+ER@} zP`dVDA)7ap;CIbkrT%TtSe0DXzn zAHblsv|jGix#n0cf8+<`QnP!3+ojE6*zGQf7o>mi^c>`)p|%s2hT9C12ep(7R4l&+aQd=bbTN zVPX@sk_cN$BMlwGgjJ+%JjH+`7joqgis2Q1nS=tUqIGv9mN9;XI&pII$n)4tur}6s zQhpXOnjwTWIG0wO(|{Q=jk*w(Y(yI8B1vr^p`d{82098^r;X;5=7y_NwoWnYH zZkb*eDEhQKtjYvGxs0-~!7P`^GO7CmLp2vR;k5oGa%Zp0vV$Vx=Hwy+UC|!(Lh<^k zX~wH2Qtg8&nKej_v{>|0cWz?1ag9xDMzVG`?oV*2)LJA%(M zI1P|19PRHT|4(jHV4iPb(K^!IEExVTjOv@NINOgjdsN4F!>~W&49H`^!!s@!TOi_E z&}lrowRm|6b*rEkFGS1ad!9GweA4#fF*SettK|pQ2>nk8K3WHMgxm2^3z1o;>IQFp zlxEFes-}Q^p}5vuyEbefrME-A&Fj|pNw_L?)cmQ?7!vM=I+hPf16wbmS*<*LUm^eT zB8{R36uD!PY0H4DexhDn%X8`h=(B_GaQBX0{;T(P~c7`(&AIcdrg3@-Am&X?hGrSUIvkQ0`n8;J5ypb`r*0+I9w&t=b zWZjgkO(;5cA0c4fIOoJ{5{1fCoG>Hkl?feEZb7OJCA~LiYFy|7YhG*G*`(S8lbauh z^{RQ+xU|5Bt)$k52j)=&&+YiFsU;pHNoTU3|qm{xr@e=^-Z zmNDiDFrE_}uDLE{zni!pCtf{WSj6#xGq+CNNw~4yw;Ofduii>;^=$uo_u>JNC(;@% zNq@?K(k}`%Du!gm$B$AQQ5QEsM0+y^6SbJYQPjt;nCyeUwQP?A9M|C+KR`(cjl?5> zu!uqrqrcz{Y%6M-ej-hxDyK?q>|S!bqL~Yw)rZf)l{#Zcd+~alpjg4%2u)e@!-z9^ zt*ch#1SgKLOkCB2B%j_}gsnd0GUxb=`M#-G+0+0IQ%0rGf-Zh!i}7v84x67^Eo@$H z>5ghQ6DK`m2I4VN_gIOWERci4$B;)-%=KAz49pa-39?PoXcvn)9;H_0mop@y-#uWH{rj*$%&q= zQIZ}<$Nl&AM*JpZE=CQqE%uIfhl%Tg@b)l z48qpT{2_4x$)+KfFa3SsBMR6UT!?^oUQnP&k}DpCd<-pGyxReh__iBCdcYev!WtIO zQv|t-q31ftAUTDeiX}DF-3vv@;3Cs7F%EX|gwNW<7tVcQ(=}(ByLrcn*rV<+bfBPI zMo;G@C*Q|%xjvV5MXXBgG~h?96NyascHjLvB^`Gm@AAydzC9Uc*+>X8Rk6A(l3|vJ z=YY6Oxmh#7^~=W5SN8z6FGpsefbX}j)~LeQFi~CP-|P_f`3SyT0)7gJP;IVkRXSVnPX&W_`QcT$IKKZ@f_lz8ig~MyN(p7 z8}66LoHHg`l37Fzc70|Wt9W1+@=TacokOmtB(=h;Lm>lUz6P4`xryduc31$(cq{sX zI4LfS&VJJrzIcdZBbO3cFgheBzM&qxmHS|Wc;@(rn+SU`*#MV1?noc!x~e)4bypf% zJ8KzTE<>h@htjGHNSDg$PJ`LOXYH{@BGAg24@4nz#4`zc3h720X zUaP`OqC=0fyI~ecS22c@qTAH3d~AqGZ|6Hi&)Nn*{cxYcIrZX06_fpHVtq(zyeVYyl`Lrjp-?3x6hbhjgst%VZFRWKYHUz%(Xp9GY*wHyX?jZ1 z;%kC1^aj(D7L&LR_DVeOudWa}ND1&YzRV2(xFVXusGUr+fLWpgt%wFF?PLbYrRYAh zA!0;;R$_^RZ9SgTDOgrS=iG@1ZPfHfnA=WGCVj@8e)3MtQ$0$)>OC#$Zq&K?E?J2( zJWF3r$v2+2p}ifmTVSzv8Fym%B=K6}^Dg^_ju4Qc4Usoo+3l9~F`48?lk?GD>Qz6X z>k$%F@6+Z|B_X~O>UIsXmw zM?57ByWVMBzFB%c4IUvzTG!N12P;qJEexFUy*Vd0gJJfo+&i#xZ^5?tupZCqpMzE! zLvVjIc>exM{og^>e_3dJmP1!S`6{QS{*g%@1?3bQKjsS4<_1eeQYgL ztWK3qj~YlT5Lt$!fTGWniZ2)$kXo&ksqW$(dAap2HHmvUDJd<9xBaWz&0~^aL)7$0sVICXRs-?f)7n#!B5+Og`K-VQK*XdhaU#KET% zM!;s+w=6H-ls4oQkFLv!Qm`!!E=VN|+e5Vl^=$azibaC;cHj+YyxHc~`Ve7Z-NlIUfOsQa-g7Wox# zOMwnS*=y7`kt?==mGTV&-^3@5??a#E9tH0(RN}7eM2-2=qq&)29%^@C1?Q_og#psTqs4oi?W>0jekGCLWW;n+15 zy>a*MRBG&^Pr}Yyx|h<~<|)|DYj;Cvg-smohsCq8Y`AoL>%1t}j62sHB;~zg+yL1* z2C+a4JP?8{eXrfWsn8#NSOsk#T@qt&5K-Ll_#=TVRW$2D_B_E9vWZuK3C|&18S|lE zTlUBs;(}L*_agJ8ezhb(JjgE(!fpakW*QbrTg*C9f^rU{s(|+&hXTE8qX$8vJ!^b$`;}-}ps&9|95s z3KS0e(W3`apxZMb;{Pbmg9eB156Xi*!Ee9HiYf~-O3H~b%S->7Y=2<{^P8na8T7&U z_MhLM9Pe*?$^Rsi6_k?{6ID`Xk`)6-_?7@P$^G90n&`ei--r`Izkd_#{ihV59n()K zTE3_FE}8#N2|;q4KPBAyHR1Od2){9#_!tY_>nCyHzXARZ zT=chuICzdCv`)jZK&7_^m0aW(z_0%U5PU%gTG}}|3p&`FfOK7f`aeXA!5O!{sM{5R znC3wrvR@b-L3#K?5hVXE!(aPLaJ+d5Q95XlxlA6^65mdV|9*13bwQ@&Kj48xXU!e# zK=-Z0faZpR`uc`;cCr9VfbriU3BU>T%e|X)K~;nTB4PX+9rT^!T?eB41A&??z#4RI z4`i({0vbDj^qWCK=6}w+f;%B_15|2UP&Z)t1sd@9kI>+iE&+n8$d3#01@Mvj>=){~2wuLnf#P zRQ@2G=6EwR z{}K9otBE=p>O1^LaT^>JMf%m3JrF8AC^`rzhyQtUycwI0)u0Miy8gE)NuSK% zm&FgF>CE4VetTX2sk?!nT>n6x2W?pXWgY$b92>k4;0K03s7CYtiRypMrQnBPKVTIL z{t5Q`fbkDUV&DY;H+2uJK5$#! z5B!#je}VtsEqmbg1#Y1DK_p-EpM~LnGgrt \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/samples/kafka/gradlew.bat b/samples/kafka/gradlew.bat deleted file mode 100644 index aec9973..0000000 --- a/samples/kafka/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/samples/kafka/schemas/user.avdl b/samples/kafka/schemas/user.avdl deleted file mode 100644 index f8f9e8b..0000000 --- a/samples/kafka/schemas/user.avdl +++ /dev/null @@ -1,7 +0,0 @@ -@namespace("org.springframework.integration.samples.kafka.user") -protocol UserProtocol{ -record User { - string firstName; - string lastName; -} -} \ No newline at end of file diff --git a/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/inbound/InboundRunner.java b/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/inbound/InboundRunner.java deleted file mode 100644 index e00aece..0000000 --- a/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/inbound/InboundRunner.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2002-2013 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.kafka.inbound; - -import org.springframework.context.support.ClassPathXmlApplicationContext; - -public class InboundRunner { - private static final String CONFIG = "kafkaInboundAdapterParserTests-context.xml"; - - public static void main(final String args[]) { - final ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(CONFIG, InboundRunner.class); - ctx.start(); - } -} diff --git a/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/CustomPartitioner.java b/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/CustomPartitioner.java deleted file mode 100644 index 07c948e..0000000 --- a/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/CustomPartitioner.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2002-2013 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.kafka.outbound; - -import kafka.producer.Partitioner; - -/** - * @author Soby Chacko - * - * This class is for internal use only and therefore is at default access level - */ -class CustomPartitioner implements Partitioner { - /** - * Uses the key to calculate a partition bucket id for routing - * the data to the appropriate broker partition - * @return an integer between 0 and numPartitions-1 - */ - @Override - public int partition(final Object key, final int numPartitions) { - final String s = (String) key; - final Integer i = Integer.parseInt(s); - return i % numPartitions; - } -} diff --git a/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/OutboundRunner.java b/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/OutboundRunner.java deleted file mode 100644 index 468ae7a..0000000 --- a/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/OutboundRunner.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2002-2013 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.kafka.outbound; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.context.support.ClassPathXmlApplicationContext; -import org.springframework.integration.samples.kafka.user.User; -import org.springframework.integration.support.MessageBuilder; -import org.springframework.messaging.MessageChannel; - -public class OutboundRunner { - private static final String CONFIG = "kafkaOutboundAdapterParserTests-context.xml"; - private static final Log LOG = LogFactory.getLog(OutboundRunner.class); - - public static void main(final String args[]) { - final ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(CONFIG, OutboundRunner.class); - ctx.start(); - - final MessageChannel channel = ctx.getBean("inputToKafka", MessageChannel.class); - LOG.info(channel.getClass()); - - //sending 100,000 messages to Kafka server for topic test1 - for (int i = 0; i < 500; i++) { - final User user = new User(); - user.setFirstName("fname" + i); - user.setLastName("lname" + i); - channel.send( - MessageBuilder.withPayload(user) - .setHeader("messageKey", String.valueOf(i)) - .setHeader("topic", "test1").build()); - - LOG.info("message sent " + i); - } - - //sending 5,000 messages to kafka server for topic test2 - for (int i = 0; i < 50; i++) { - channel.send( - MessageBuilder.withPayload("hello Fom ob adapter test2 - " + i) - .setHeader("messageKey", String.valueOf(i)) - .setHeader("topic", "test2").build()); - - LOG.info("message sent " + i); - } - - //Send some messages to multiple topics matching regex. - for (int i = 0; i < 10; i++) { - channel.send( - MessageBuilder.withPayload("hello Fom ob adapter regextopic1 - " + i) - .setHeader("messageKey", String.valueOf(i)) - .setHeader("topic", "regextopic1").build()); - - LOG.info("message sent " + i); - } - for (int i = 0; i < 10; i++) { - channel.send( - MessageBuilder.withPayload("hello Fom ob adapter regextopic2 - " + i) - .setHeader("messageKey", String.valueOf(i)) - .setHeader("topic", "regextopic2").build()); - - LOG.info("message sent " + i); - } - } -} diff --git a/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/PartitionlessTransformer.java b/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/PartitionlessTransformer.java deleted file mode 100644 index 7da06c4..0000000 --- a/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/PartitionlessTransformer.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2002-2013 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.kafka.outbound; - -import org.springframework.integration.support.MessageBuilder; -import org.springframework.integration.transformer.Transformer; -import org.springframework.messaging.Message; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @author Soby Chacko - */ -public class PartitionlessTransformer implements Transformer { - @Override - @SuppressWarnings("unchecked") - public Message transform(final Message message) { - - final Map>> origData = - (Map>>) message.getPayload(); - - final Map> nonPartitionedData = new HashMap<>(); - - for(final String topic : origData.keySet()) { - final Map> partitionedData = origData.get(topic); - final Collection> nonPartitionedDataFromTopic = partitionedData.values(); - - final List mergedList = new ArrayList<>(); - - for (final List l : nonPartitionedDataFromTopic){ - mergedList.addAll(l); - } - - nonPartitionedData.put(topic, mergedList); - } - - return MessageBuilder.withPayload(nonPartitionedData).build(); - } -} diff --git a/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/UserTransformer.java b/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/UserTransformer.java deleted file mode 100644 index 093bbcb..0000000 --- a/samples/kafka/src/main/java/org/springframework/integration/samples/kafka/outbound/UserTransformer.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.springframework.integration.samples.kafka.outbound; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.integration.samples.kafka.user.User; -import org.springframework.integration.support.MessageBuilder; -import org.springframework.integration.transformer.Transformer; -import org.springframework.messaging.Message; - -/** - * @author Soby Chacko - */ -public class UserTransformer implements Transformer { - - Log logger = LogFactory.getLog(getClass()); - - @Override - public Message transform(Message message) { - if(message.getPayload().getClass().isAssignableFrom(User.class)) { - User user = (User) message.getPayload(); - user.setFirstName(user.getFirstName().toString()+user.getFirstName()); - logger.info("user confirmed " + user.getFirstName()); - return MessageBuilder.withPayload(user).copyHeaders(message.getHeaders()).build(); - } - return message; - } -} diff --git a/samples/kafka/src/main/resources/log4j.properties b/samples/kafka/src/main/resources/log4j.properties deleted file mode 100644 index 3c84b67..0000000 --- a/samples/kafka/src/main/resources/log4j.properties +++ /dev/null @@ -1,10 +0,0 @@ -log4j.rootCategory=WARN, stdout - -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss.SSS} %-5p [%t][%c] %m%n - -#log4j.category.org.springframework.integration=WARN -log4j.category.org.springframework.integration.kafka=INFO -log4j.category.org.springframework.integration.samples.kafka=INFO -log4j.category.kafka.consumer=ERROR diff --git a/samples/kafka/src/main/resources/org/springframework/integration/samples/kafka/inbound/kafkaInboundAdapterParserTests-context.xml b/samples/kafka/src/main/resources/org/springframework/integration/samples/kafka/inbound/kafkaInboundAdapterParserTests-context.xml deleted file mode 100644 index ae8d96e..0000000 --- a/samples/kafka/src/main/resources/org/springframework/integration/samples/kafka/inbound/kafkaInboundAdapterParserTests-context.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - smallest - 10485760 - 5242880 - 1000 - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/samples/kafka/src/main/resources/org/springframework/integration/samples/kafka/outbound/kafkaOutboundAdapterParserTests-context.xml b/samples/kafka/src/main/resources/org/springframework/integration/samples/kafka/outbound/kafkaOutboundAdapterParserTests-context.xml deleted file mode 100644 index a22c8ae..0000000 --- a/samples/kafka/src/main/resources/org/springframework/integration/samples/kafka/outbound/kafkaOutboundAdapterParserTests-context.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3600000 - 5 - 5242880 - - - - - - - - - - - - diff --git a/samples/mail-ses-integration/README.md b/samples/mail-ses-integration/README.md deleted file mode 100644 index 667fb78..0000000 --- a/samples/mail-ses-integration/README.md +++ /dev/null @@ -1,4 +0,0 @@ -AWS SES Spring Integration Sample -========================= - - diff --git a/samples/mail-ses-integration/pom.xml b/samples/mail-ses-integration/pom.xml deleted file mode 100644 index c00cf9a..0000000 --- a/samples/mail-ses-integration/pom.xml +++ /dev/null @@ -1,84 +0,0 @@ - - 4.0.0 - org.springframework.integration.samples - mail-ses-integration - AWS SES Mail Demo - 1.0.0.BUILD-SNAPSHOT - - - 2.2.1 - - - - UTF-8 - 2.2.0.RELEASE - 1.2.17 - 4.10 - - - - org.springframework.integration - spring-integration-mail - ${spring.integration.version} - - - org.springframework.integration - spring-integration-test - ${spring.integration.version} - - - org.springframework.integration - spring-integration-aws - 0.5.0.BUILD-SNAPSHOT - - - log4j - log4j - ${log4j.version} - - - - junit - junit - ${junit.version} - test - - - org.subethamail - subethasmtp-wiser - 1.2 - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.5.1 - - 1.6 - 1.6 - -Xlint:all - true - true - - - - org.codehaus.mojo - exec-maven-plugin - 1.2.1 - - org.springframework.integration.samples.mailses.Main - - - - - - - repo.springsource.org.milestone - SpringSource Maven Milestone Repository - https://repo.springsource.org/libs-milestone - - - \ No newline at end of file diff --git a/samples/mail-ses-integration/src/main/java/org/springframework/integration/samples/mailses/EmailService.java b/samples/mail-ses-integration/src/main/java/org/springframework/integration/samples/mailses/EmailService.java deleted file mode 100644 index a3a4050..0000000 --- a/samples/mail-ses-integration/src/main/java/org/springframework/integration/samples/mailses/EmailService.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.springframework.integration.samples.mailses; - -import org.springframework.integration.annotation.Header; -import org.springframework.integration.annotation.Payload; -import org.springframework.integration.mail.MailHeaders; - -public interface EmailService { - - - void send( - - @Header(MailHeaders.FROM) - String fromEmail, - - @Header(MailHeaders.TO) - String toEmail, - - @Header(MailHeaders.SUBJECT) - String subject, - - @Payload - String body); - -} diff --git a/samples/mail-ses-integration/src/main/java/org/springframework/integration/samples/mailses/Main.java b/samples/mail-ses-integration/src/main/java/org/springframework/integration/samples/mailses/Main.java deleted file mode 100644 index 1a0dded..0000000 --- a/samples/mail-ses-integration/src/main/java/org/springframework/integration/samples/mailses/Main.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2002-2013 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.mailses; - -import java.util.Scanner; - -import org.apache.log4j.Logger; -import org.springframework.context.support.GenericXmlApplicationContext; -import org.springframework.core.env.ConfigurableEnvironment; - -/** - * Starts the Spring Context and will initialize the Spring Integration routes. - * - * @author Gunnar Hillert - * @since 1.0 - * - */ -public final class Main { - - private static final Logger LOGGER = Logger.getLogger(Main.class); - - private static final String HORIZONTAL_LINE = "\n========================================================="; - - private Main() { - } - - /** - * Load the Spring Integration Application Context - * - * @param args - command line arguments - */ - public static void main(final String... args) { - - final Scanner scanner = new Scanner(System.in); - - LOGGER.info(HORIZONTAL_LINE + "\n" - + "\n Welcome to Spring Integration! " - + "\n" - + "\n For more information please visit: " - + "\n https://www.springsource.org/spring-integration " - + "\n" + HORIZONTAL_LINE); - - final GenericXmlApplicationContext context = new GenericXmlApplicationContext(); - final ConfigurableEnvironment environment = context.getEnvironment(); - - final String fromEmailAddress; - final String toEmailAddress; - final String subject; - final String body; - - System.out.print("\nFrom which email address would you like to send a message?: "); - fromEmailAddress = scanner.nextLine(); - - System.out.print("To which email address would you like to send a message?: "); - toEmailAddress = scanner.nextLine(); - - System.out.print("What is the subject line?: "); - subject = scanner.nextLine(); - - System.out.print("What is the body of the message?: "); - body = scanner.nextLine(); - - if (!environment.containsProperty("accessKey")) { - System.out.print("Please enter your access key: "); - final String accessKey = scanner.nextLine(); - environment.getSystemProperties().put("accessKey", accessKey); - } - - if (!environment.containsProperty("secretKey")) { - System.out.print("Please enter your secret key: "); - final String secretKey = scanner.nextLine(); - environment.getSystemProperties().put("secretKey", secretKey); - } - - context.load("classpath:META-INF/spring/integration/*-context.xml"); - context.registerShutdownHook(); - context.refresh(); - - final EmailService emailService = context.getBean(EmailService.class); - - emailService.send(fromEmailAddress, toEmailAddress, subject, body); - - System.out.println(String.format("The email to '%s' was sent successfully.", toEmailAddress)); - - System.exit(0); - - } -} diff --git a/samples/mail-ses-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml b/samples/mail-ses-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml deleted file mode 100644 index 0b30ba1..0000000 --- a/samples/mail-ses-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/samples/mail-ses-integration/src/main/resources/log4j.xml b/samples/mail-ses-integration/src/main/resources/log4j.xml deleted file mode 100644 index 364cd81..0000000 --- a/samples/mail-ses-integration/src/main/resources/log4j.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/samples/mail-ses/README.md b/samples/mail-ses/README.md deleted file mode 100644 index 35a1138..0000000 --- a/samples/mail-ses/README.md +++ /dev/null @@ -1,5 +0,0 @@ -AWS SES MailSender sample -========================= - -This sample uses a Spring-provided *JavaMailSender* to send emails. This application demonstrates that by only replacing the *JavaMailSender* XML bean declaration with the *DefaultAmazonSESMailSender*, existing applications can send emails using Amazon SES without changing application code. The *DefaultAmazonSESMailSender* is provided by the *Spring Integration Extensions AWS Module*. - diff --git a/samples/mail-ses/pom.xml b/samples/mail-ses/pom.xml deleted file mode 100644 index 1bebe16..0000000 --- a/samples/mail-ses/pom.xml +++ /dev/null @@ -1,84 +0,0 @@ - - 4.0.0 - org.springframework.integration.samples - mail-ses - AWS SES Mail Demo - 1.0.0.BUILD-SNAPSHOT - - - 2.2.1 - - - - UTF-8 - 2.2.0.RELEASE - 1.2.17 - 4.10 - - - - org.springframework.integration - spring-integration-mail - ${spring.integration.version} - - - org.springframework.integration - spring-integration-test - ${spring.integration.version} - - - org.springframework.integration - spring-integration-aws - 0.5.0.BUILD-SNAPSHOT - - - log4j - log4j - ${log4j.version} - - - - junit - junit - ${junit.version} - test - - - org.subethamail - subethasmtp-wiser - 1.2 - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.5.1 - - 1.6 - 1.6 - -Xlint:all - true - true - - - - org.codehaus.mojo - exec-maven-plugin - 1.2.1 - - org.springframework.integration.samples.mailses.Main - - - - - - - repo.springsource.org.milestone - SpringSource Maven Milestone Repository - https://repo.springsource.org/libs-milestone - - - \ No newline at end of file diff --git a/samples/mail-ses/src/main/java/org/springframework/integration/samples/mailses/Main.java b/samples/mail-ses/src/main/java/org/springframework/integration/samples/mailses/Main.java deleted file mode 100644 index f53b0e8..0000000 --- a/samples/mail-ses/src/main/java/org/springframework/integration/samples/mailses/Main.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2002-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.mailses; - -import java.util.List; -import java.util.Scanner; - -import javax.mail.Message; -import javax.mail.MessagingException; -import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeMessage; - -import org.apache.log4j.Logger; -import org.springframework.context.support.GenericXmlApplicationContext; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.mail.MailException; -import org.springframework.mail.javamail.JavaMailSender; -import org.springframework.mail.javamail.MimeMessagePreparator; -import org.subethamail.wiser.Wiser; -import org.subethamail.wiser.WiserMessage; - -/** - * Starts the Spring Context and will initialize the Spring Integration routes. - * - * @author Gunnar Hillert - * @since 2.2 - * - */ -public final class Main { - - private static final Logger LOGGER = Logger.getLogger(Main.class); - - private static final String HORIZONTAL_LINE = "\n========================================================="; - - private Main() { - } - - /** - * Load the Spring Integration Application Context - * - * @param args - command line arguments - */ - public static void main(final String... args) { - - final Scanner scanner = new Scanner(System.in); - - LOGGER.info(HORIZONTAL_LINE + "\n" - + "\n Welcome to Spring Integration! " - + "\n" - + "\n For more information please visit: " - + "\n https://www.springsource.org/spring-integration " - + "\n" + HORIZONTAL_LINE); - - System.out.println("Please enter a choice and press : "); - System.out.println("\t1. Use Embedded SMTP Server (Wiser)"); - System.out.println("\t2. Use Amazon SES"); - - System.out.println("\tq. Quit the application"); - System.out.print("Enter your choice: "); - - final GenericXmlApplicationContext context = new GenericXmlApplicationContext(); - final ConfigurableEnvironment environment = context.getEnvironment(); - - boolean usingWiser = false; - - String toEmailAddress; - - while (true) { - final String input = scanner.nextLine(); - - if("1".equals(input.trim())) { - environment.setActiveProfiles("default"); - usingWiser = true; - - System.out.print("\nTo which email address would you like to send a message?: "); - toEmailAddress = scanner.nextLine(); - - break; - } else if("2".equals(input.trim())) { - environment.setActiveProfiles("aws"); - - if (!environment.containsProperty("accessKey")) { - System.out.print("\nPlease enter your access key: "); - final String accessKey = scanner.nextLine(); - environment.getSystemProperties().put("accessKey", accessKey); - } - - if (!environment.containsProperty("secretKey")) { - System.out.print("\nPlease enter your secret key: "); - final String secretKey = scanner.nextLine(); - environment.getSystemProperties().put("secretKey", secretKey); - } - System.out.print("\nTo which email address would you like to send a message?: "); - toEmailAddress = scanner.nextLine(); - - break; - } else if("q".equals(input.trim())) { - System.out.println("Exiting application...bye."); - System.exit(0); - } else { - System.out.println("Invalid choice\n\n"); - System.out.print("Enter you choice: "); - } - } - - context.load("classpath:META-INF/spring/integration/*-context.xml"); - context.registerShutdownHook(); - context.refresh(); - - final JavaMailSender ms = context.getBean(JavaMailSender.class); - final String toEmailAddressToUse = toEmailAddress; - final MimeMessagePreparator preparator = new MimeMessagePreparator() { - - public void prepare(MimeMessage mimeMessage) throws Exception { - - mimeMessage.setRecipient(Message.RecipientType.TO, - new InternetAddress(toEmailAddressToUse)); - mimeMessage.setFrom(new InternetAddress(toEmailAddressToUse)); - mimeMessage.setSubject("Testing Email - Subject"); - mimeMessage.setText("Hello World"); - } - - }; - - try { - ms.send(preparator); - } catch (MailException e) { - throw new IllegalStateException(e); - } - - System.out.println(String.format("The email to '%s' was sent successfully.", toEmailAddress)); - - if (usingWiser) { - Wiser wiser = context.getBean(Wiser.class); - List messages = wiser.getMessages(); - - final String from; - final String subject; - try { - from = messages.get(0).getMimeMessage().getFrom()[0].toString(); - subject = messages.get(0).getMimeMessage().getSubject(); - } catch (MessagingException e) { - throw new IllegalStateException(e); - } - - System.out.println(String.format("Wiser received an email from '%s' with subject '%s'", from, subject)); - } - - System.exit(0); - - } -} diff --git a/samples/mail-ses/src/main/resources/META-INF/spring/integration/spring-integration-context.xml b/samples/mail-ses/src/main/resources/META-INF/spring/integration/spring-integration-context.xml deleted file mode 100644 index d70bf05..0000000 --- a/samples/mail-ses/src/main/resources/META-INF/spring/integration/spring-integration-context.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/mail-ses/src/main/resources/log4j.xml b/samples/mail-ses/src/main/resources/log4j.xml deleted file mode 100644 index 364cd81..0000000 --- a/samples/mail-ses/src/main/resources/log4j.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/samples/splunk/.gitignore b/samples/splunk/.gitignore deleted file mode 100644 index 38b0df2..0000000 --- a/samples/splunk/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -derby.log - diff --git a/samples/splunk/README.md b/samples/splunk/README.md deleted file mode 100644 index b1c4189..0000000 --- a/samples/splunk/README.md +++ /dev/null @@ -1,65 +0,0 @@ -Spring Integration Splunk Sample -================================ - -This sample demonstrates the usage of the *[Spring Integration Splunk][]* adapters. - -## Requirements - -### Splunk Server - -You need to install or have access to a [Splunk][] Server. You can download [Splunk][] from: - -* https://www.splunk.com/download - -#### Data Inputs - -Depending on your Splunk Server installation, you may have to open up a TCP by adding an additional *data input*. E.g. the sample uses TCP port **9999**. - -For instructions please see: - -* https://docs.splunk.com/Documentation/Splunk/latest/Data/Monitornetworkports - -### Spring Integration Splunk dependencies - -The sample application depends on the [Spring Integration Splunk][] support. As of Oct 1, 2012, the dependencies for *Spring Integration Splunk* are available through the [SpringSource Maven Repository][]: - -* https://repo.springsource.org/simple/libs-snapshot-local/org/springframework/integration/spring-integration-splunk/0.5.0.BUILD-SNAPSHOT - -However, if you prefer, you can manually build the *Spring Integration Splunk* project. In order order to do so, follow the following steps: - -1. Change to folder `spring-integration-extensions/spring-integration-splunk` -2. Execute `./gradlew publish` - -This should install the [Spring Integration Splunk] jar files to your local Maven repository. Please see the [Spring Integration Splunk][] project for further information. - -## Generate the Eclipse project: - -Now you can generate the Eclipse project for the provided sample: - -1. Change to folder `samples/splunk` -2. Execute `./gradlew eclipse` - -## Run the example applications - -1. Update the [Splunk][] server info in `src/main/resources/org/springframework/integration/samples/splunk/SplunkCommon-context.xml` -2. Run the main classes. - -You may want to run the *Outbound Channel Adapter* application first in order to push some data into [Splunk][]. After that, run the *Inbound Channel Adapter* application to read the data. - -### Outbound Channel Adapter - -* **Submit**: SplunkOutboundChannelAdapterSubmitSample -* **Tcp**: SplunkOutboundChannelAdapterTcpSample -* **Stream**: SplunkOutboundChannelAdapterStreamSample - -### Inbound Channel Adapter - -* **Blocking search**: SplunkInboundChannelAdapterBlockingSample -* **Non blocking search**: SplunkInboundChannelAdapterNonBlockingSample -* **Realtime search**: SplunkInboundChannelAdapterRealtimeSample -* **Export search**: SplunkInboundChannelAdapterExportSample -* **Saved search**: SplunkInboundChannelAdapterSavedSample - -[Splunk]: https://www.splunk.com/ -[Spring Integration Splunk]: https://github.com/SpringSource/spring-integration-extensions/tree/master/spring-integration-splunk -[SpringSource Maven Repository]: https://repo.springsource.org/ diff --git a/samples/splunk/build.gradle b/samples/splunk/build.gradle deleted file mode 100644 index d17e0b1..0000000 --- a/samples/splunk/build.gradle +++ /dev/null @@ -1,30 +0,0 @@ -description = 'Spring Integration Splunk Sample' -apply plugin: 'base' -apply plugin: 'java' -apply plugin: 'eclipse' -apply plugin: 'application' - -repositories { - mavenLocal() - maven { url "https://repo.springsource.org/libs-snapshot" } -} - -dependencies { - compile "org.springframework.integration:spring-integration-splunk:$springIntegrationSplunkVersion" - compile "org.springframework.integration:spring-integration-jdbc:$springIntegrationVersion" - compile "org.springframework:spring-jdbc:$springVersion" - compile "org.apache.derby:derby:$derbyVersion" -} - -task wrapper(type: Wrapper) { - description = 'Generates gradlew[.bat] scripts' - gradleVersion = '1.2' -} - -eclipse { - project { - name = "spring-integration-splunk-sample" - } -} - -defaultTasks 'clean', 'build' diff --git a/samples/splunk/gradle.properties b/samples/splunk/gradle.properties deleted file mode 100644 index 51566e1..0000000 --- a/samples/splunk/gradle.properties +++ /dev/null @@ -1,8 +0,0 @@ -springVersion = 3.1.2.RELEASE -springIntegrationVersion = 2.1.2.RELEASE -derbyVersion = 10.9.1.0 -springIntegrationSplunkVersion = 0.5.0.BUILD-SNAPSHOT -version = 0.5.0.BUILD-SNAPSHOT - - - diff --git a/samples/splunk/gradle/wrapper/gradle-wrapper.jar b/samples/splunk/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e3b3376e6002f9d44543761c8d3dcd199eff1d82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39860 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%0A3!wsG4uToG`VrIW5Id|4fPyx?=aMz8G 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" -APP_HOME="`pwd -P`" -cd "$SAVED" - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query businessSystem maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/samples/splunk/gradlew.bat b/samples/splunk/gradlew.bat deleted file mode 100644 index 8a0b282..0000000 --- a/samples/splunk/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkDataHandler.java b/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkDataHandler.java deleted file mode 100644 index 6c9bbb4..0000000 --- a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkDataHandler.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2011-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.splunk.inbound; - -import java.util.List; - -import org.springframework.integration.annotation.ServiceActivator; -import org.springframework.integration.splunk.entity.SplunkData; -import org.springframework.stereotype.Component; - -/** - * @author Jarred Li - * @since 1.0 - * - */ -@Component -public class SplunkDataHandler { - - @ServiceActivator - public void handle(List data) { - for (SplunkData sd : data) { - System.out.println("splunk data:" + sd.toString()); - } - } -} diff --git a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterBlockingSample.java b/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterBlockingSample.java deleted file mode 100644 index 3635a05..0000000 --- a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterBlockingSample.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2011-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.splunk.inbound; - -import org.springframework.context.support.ClassPathXmlApplicationContext; - -/** - * @author Jarred Li - * @since 1.0 - * - */ -public class SplunkInboundChannelAdapterBlockingSample { - - public static void main(String args[]) { - ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( - "SplunkInboundChannelAdapterBlockingSample-context.xml", SplunkInboundChannelAdapterBlockingSample.class); - ctx.start(); - } -} diff --git a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterExportSample.java b/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterExportSample.java deleted file mode 100644 index eedec88..0000000 --- a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterExportSample.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2011-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.integration.samples.splunk.inbound; - -import org.springframework.context.support.ClassPathXmlApplicationContext; - -/** - * @author Jarred Li - * @since 1.0 - * - */ -public class SplunkInboundChannelAdapterExportSample { - - public static void main(String args[]) { - ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( - "SplunkInboundChannelAdapterExportSample-context.xml", SplunkInboundChannelAdapterExportSample.class); - ctx.start(); - } -} diff --git a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterNonBlockingSample.java b/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterNonBlockingSample.java deleted file mode 100644 index 302ba2f..0000000 --- a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterNonBlockingSample.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2011-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.splunk.inbound; - -import org.springframework.context.support.ClassPathXmlApplicationContext; - -/** - * @author Jarred Li - * @since 1.0 - * - */ -public class SplunkInboundChannelAdapterNonBlockingSample { - - public static void main(String args[]) { - ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( - "SplunkInboundChannelAdapterNonBlockingSample-context.xml", - SplunkInboundChannelAdapterNonBlockingSample.class); - ctx.start(); - } -} diff --git a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterRealtimeSample.java b/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterRealtimeSample.java deleted file mode 100644 index 5353fae..0000000 --- a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterRealtimeSample.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2011-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.splunk.inbound; - -import org.springframework.context.support.ClassPathXmlApplicationContext; - -/** - * @author Jarred Li - * @since 1.0 - * - */ -public class SplunkInboundChannelAdapterRealtimeSample { - - public static void main(String args[]) { - ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( - "SplunkInboundChannelAdapterRealtimeSample-context.xml", SplunkInboundChannelAdapterRealtimeSample.class); - ctx.start(); - } -} diff --git a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterSavedSample.java b/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterSavedSample.java deleted file mode 100644 index 095809b..0000000 --- a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterSavedSample.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2011-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.splunk.inbound; - -import org.springframework.context.support.ClassPathXmlApplicationContext; - -/** - * @author Jarred Li - * @since 1.0 - * - */ -public class SplunkInboundChannelAdapterSavedSample { - - public static void main(String args[]) { - ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( - "SplunkInboundChannelAdapterSavedSample-context.xml", SplunkInboundChannelAdapterSavedSample.class); - ctx.start(); - } -} diff --git a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterStreamSample.java b/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterStreamSample.java deleted file mode 100644 index 4d75dc7..0000000 --- a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterStreamSample.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2011-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.splunk.outbound; - -import org.springframework.context.support.ClassPathXmlApplicationContext; -import org.springframework.integration.Message; -import org.springframework.integration.core.SubscribableChannel; -import org.springframework.integration.splunk.entity.SplunkData; -import org.springframework.integration.support.MessageBuilder; - - -/** - * @author Jarred Li - * @since 1.0 - * - */ -public class SplunkOutboundChannelAdapterStreamSample { - - public static void main(String args[]) { - ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( - "SplunkOutboundChannelAdapterStreamSample-context.xml", SplunkOutboundChannelAdapterStreamSample.class); - ctx.start(); - - SubscribableChannel channel = ctx.getBean("outputToSplunk", SubscribableChannel.class); - - SplunkData data = new SplunkData("spring", "spring:example"); - data.setCommonDesc("description"); - - Message msg = MessageBuilder.withPayload(data).build(); - channel.send(msg); - - - } -} diff --git a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterSubmitSample.java b/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterSubmitSample.java deleted file mode 100644 index 400cf5d..0000000 --- a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterSubmitSample.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2011-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.splunk.outbound; - - -import org.springframework.context.support.ClassPathXmlApplicationContext; -import org.springframework.integration.Message; -import org.springframework.integration.channel.QueueChannel; -import org.springframework.integration.splunk.entity.SplunkData; -import org.springframework.integration.support.MessageBuilder; - - -/** - * @author Jarred Li - * @since 1.0 - * - */ -public class SplunkOutboundChannelAdapterSubmitSample { - - public static void main(String args[]) { - ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( - "SplunkOutboundChannelAdapterSubmitSample-context.xml", SplunkOutboundChannelAdapterSubmitSample.class); - ctx.start(); - - generateMessage(ctx); - } - - private static void generateMessage(ClassPathXmlApplicationContext ctx) { - QueueChannel channel = ctx.getBean("outputToSplunkWithMessageStore", QueueChannel.class); - - SplunkData data = new SplunkData("spring", "spring:example"); - data.setCommonDesc("description"); - - Message msg = MessageBuilder.withPayload(data).build(); - channel.send(msg); - msg = MessageBuilder.withPayload(data).build(); - channel.send(msg); - } - -} diff --git a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterTcpSample.java b/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterTcpSample.java deleted file mode 100644 index cb7d2c8..0000000 --- a/samples/splunk/src/main/java/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterTcpSample.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2011-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.samples.splunk.outbound; - -import org.springframework.context.support.ClassPathXmlApplicationContext; -import org.springframework.integration.Message; -import org.springframework.integration.core.SubscribableChannel; -import org.springframework.integration.splunk.entity.SplunkData; -import org.springframework.integration.support.MessageBuilder; - - -/** - * @author Jarred Li - * @since 1.0 - * - */ -public class SplunkOutboundChannelAdapterTcpSample { - - public static void main(String args[]) { - ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( - "SplunkOutboundChannelAdapterTcpSample-context.xml", SplunkOutboundChannelAdapterTcpSample.class); - ctx.start(); - - SubscribableChannel channel = ctx.getBean("outputToSplunk", SubscribableChannel.class); - - SplunkData data = new SplunkData("spring", "spring:example"); - data.setCommonDesc("description"); - - Message msg = MessageBuilder.withPayload(data).build(); - channel.send(msg); - - - } -} diff --git a/samples/splunk/src/main/resources/log4j.properties b/samples/splunk/src/main/resources/log4j.properties deleted file mode 100644 index 03b2bc0..0000000 --- a/samples/splunk/src/main/resources/log4j.properties +++ /dev/null @@ -1,6 +0,0 @@ -log4j.rootCategory=DEBUG, stdout - -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss.SSS} %-5p [%t][%c] %m%n - diff --git a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/SplunkCommon-context.xml b/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/SplunkCommon-context.xml deleted file mode 100644 index bb3ba24..0000000 --- a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/SplunkCommon-context.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - diff --git a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterBlockingSample-context.xml b/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterBlockingSample-context.xml deleted file mode 100644 index 95fabaa..0000000 --- a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterBlockingSample-context.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - diff --git a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterCommon-context.xml b/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterCommon-context.xml deleted file mode 100644 index e06717b..0000000 --- a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterCommon-context.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - diff --git a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterExportSample-context.xml b/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterExportSample-context.xml deleted file mode 100644 index cc56b56..0000000 --- a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterExportSample-context.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - diff --git a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterNonBlockingSample-context.xml b/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterNonBlockingSample-context.xml deleted file mode 100644 index 04281da..0000000 --- a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterNonBlockingSample-context.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - diff --git a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterRealtimeSample-context.xml b/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterRealtimeSample-context.xml deleted file mode 100644 index 08ffea3..0000000 --- a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterRealtimeSample-context.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - diff --git a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterSavedSample-context.xml b/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterSavedSample-context.xml deleted file mode 100644 index 317c8b4..0000000 --- a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/inbound/SplunkInboundChannelAdapterSavedSample-context.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - diff --git a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterCommon-context.xml b/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterCommon-context.xml deleted file mode 100644 index 247a7a9..0000000 --- a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterCommon-context.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterStreamSample-context.xml b/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterStreamSample-context.xml deleted file mode 100644 index 6424e83..0000000 --- a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterStreamSample-context.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterSubmitSample-context.xml b/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterSubmitSample-context.xml deleted file mode 100644 index 6494406..0000000 --- a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterSubmitSample-context.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - diff --git a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterTcpSample-context.xml b/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterTcpSample-context.xml deleted file mode 100644 index 8dc028f..0000000 --- a/samples/splunk/src/main/resources/org/springframework/integration/samples/splunk/outbound/SplunkOutboundChannelAdapterTcpSample-context.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - diff --git a/samples/voldemort/pom.xml b/samples/voldemort/pom.xml index f9df767..818ccd2 100644 --- a/samples/voldemort/pom.xml +++ b/samples/voldemort/pom.xml @@ -8,47 +8,29 @@ jar voldemort-sample - https://www.springsource.org/spring-integration - - - 2.2.1 - + https://www.spring.io/spring-integration UTF-8 1.0.0.BUILD-SNAPSHOT - 1.2.17 - 4.11 + 2.13.0 + 4.12 repo.springsource.org.milestone Spring Framework Maven Milestone Repository - https://repo.springsource.org/libs-milestone + https://repo.spring.io/libs-milestone - - maven-eclipse-plugin - 2.9 - - - org.springframework.ide.eclipse.core.springnature - - - org.springframework.ide.eclipse.core.springbuilder - - true - true - - org.apache.maven.plugins maven-compiler-plugin - 3.0 + 3.8.1 1.6 1.6 @@ -60,7 +42,7 @@ org.codehaus.mojo exec-maven-plugin - 1.2.1 + 1.6.0 org.springframework.integration.samples.voldemort.Main @@ -90,8 +72,8 @@ - log4j - log4j + org.apache.logging.log4j + log4j-jcl ${log4j.version} diff --git a/samples/voldemort/src/main/java/org/springframework/integration/samples/voldemort/Main.java b/samples/voldemort/src/main/java/org/springframework/integration/samples/voldemort/Main.java index a2056f5..83bf139 100644 --- a/samples/voldemort/src/main/java/org/springframework/integration/samples/voldemort/Main.java +++ b/samples/voldemort/src/main/java/org/springframework/integration/samples/voldemort/Main.java @@ -13,14 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.integration.samples.voldemort; import java.util.Scanner; -import org.apache.log4j.Logger; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; - import org.springframework.integration.samples.voldemort.service.BusinessService; @@ -28,14 +30,16 @@ import org.springframework.integration.samples.voldemort.service.BusinessService * Starts the Spring Context and will initialize the Spring Integration routes. * * @author Gunnar Hillert + * * @since 1.0 * */ public final class Main { - private static final Logger LOGGER = Logger.getLogger(Main.class); + private static final Log LOGGER = LogFactory.getLog(Main.class); - private Main() { } + private Main() { + } /** * Load the Spring Integration Application Context @@ -46,13 +50,13 @@ public final class Main { if (LOGGER.isInfoEnabled()) { LOGGER.info("\n=========================================================" - + "\n " - + "\n Welcome to Spring Integration! " - + "\n " - + "\n For more information please visit: " - + "\n https://www.springsource.org/spring-integration " - + "\n " - + "\n=========================================================" ); + + "\n " + + "\n Welcome to Spring Integration! " + + "\n " + + "\n For more information please visit: " + + "\n https://www.springsource.org/spring-integration " + + "\n " + + "\n========================================================="); } final AbstractApplicationContext context = @@ -66,10 +70,10 @@ public final class Main { if (LOGGER.isInfoEnabled()) { LOGGER.info("\n=========================================================" - + "\n " - + "\n Please press 'q + Enter' to quit the application. " - + "\n " - + "\n=========================================================" ); + + "\n " + + "\n Please press 'q + Enter' to quit the application. " + + "\n " + + "\n========================================================="); } System.out.print("Please enter a string and press : "); @@ -80,7 +84,7 @@ public final class Main { final String data = scanner.nextLine(); - if("q".equals(data.trim())) { + if ("q".equals(data.trim())) { break; } @@ -89,7 +93,8 @@ public final class Main { System.out.println(String.format("Persisting String: '%s' with key '%s'.", data, key)); service.saveData(key, data); - } catch (Exception e) { + } + catch (Exception e) { LOGGER.error("An exception was caught: " + e); } @@ -104,4 +109,5 @@ public final class Main { System.exit(0); } + } diff --git a/samples/voldemort/src/main/resources/META-INF/spring/integration/spring-integration-context.xml b/samples/voldemort/src/main/resources/META-INF/spring/integration/spring-integration-context.xml index 3722b6c..503adea 100644 --- a/samples/voldemort/src/main/resources/META-INF/spring/integration/spring-integration-context.xml +++ b/samples/voldemort/src/main/resources/META-INF/spring/integration/spring-integration-context.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration" xmlns:int-voldemort="http://www.springframework.org/schema/integration/voldemort" - xsi:schemaLocation="http://www.springframework.org/schema/integration https://www.springframework.org/schema/integration/spring-integration-2.2.xsd + xsi:schemaLocation="http://www.springframework.org/schema/integration https://www.springframework.org/schema/integration/spring-integration.xsd http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/integration/voldemort https://www.springframework.org/schema/integration/voldemort/spring-integration-voldemort.xsd"> diff --git a/samples/voldemort/src/main/resources/log4j.xml b/samples/voldemort/src/main/resources/log4j.xml deleted file mode 100644 index dfe6fcf..0000000 --- a/samples/voldemort/src/main/resources/log4j.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/voldemort/src/main/resources/log4j2.xml b/samples/voldemort/src/main/resources/log4j2.xml new file mode 100644 index 0000000..1af817e --- /dev/null +++ b/samples/voldemort/src/main/resources/log4j2.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/samples/xquery/README.md b/samples/xquery/README.md deleted file mode 100644 index 8d4ef67..0000000 --- a/samples/xquery/README.md +++ /dev/null @@ -1,103 +0,0 @@ -Spring Integration - XQuery Sample -================================== - -## Overview - -This sample executes a simple [XQuery][] script. It uses the *[Spring Integration XQuery][]* module, which is part of the [Spring Integration Extensions][] project. The sample uses one of the following 3 XQuery processors: - -* [Saxon][] -* [Sedna][] -* [BaseX][] - -The example for [Saxon][] will work out of the box. [Sedna][] and [BaseX][] are in fact [XML Databases][], which run as external processes. For [Sedna][]- and [BaseX][]-specific setup instructions, please visit: - -* http://xqj.net/sedna/ -* http://xqj.net/basex/ - -## Running the Sample - -From the command line execute: - - $ mvn clean package - -followed by: - - $ mvn exec:java - -The application should start up and you will see the following screen on which you can choose which XQuery processor to use: - - ========================================================= - - Welcome to the Spring Integration XQuery Sample! - - For more information please visit: - https://www.springsource.org/spring-integration/ - - ========================================================= - Which XQuery Processor would you like to use? : - 1. Use Saxon - 2. Use Sedna - 3. Use BaseX - q. Quit the application - Enter you choice: - -### Note regarding BaseX - -The [BaseX][] dependency conflicts with [Sedna][]. Therefore, this sample applies a separate Maven profile for [BaseX][]. If not triggering that special profile when you try to execute the [BaseX][] example, you may encounter the following error message: - - Detected the Sedna library to be present. This conflicts with BaseX. Please start the application from the command line using: - - mvn exec:java -Dbasex - -Consequently, execute from the command line: - - $ mvn exec:java -Dbasex - -The [BaseX][] sample will now execute successfully. - -## Details - -The used XQuery Script, located under `src/main/resources/data/xquery.xql`, is quite simple: - - - { //customers/customer/name } - - -All it does is extracting the customer names from the following XML document: - - - - Foo Industries - Chemical - Glowing City - - - Bar Refreshments - Beverage - Desert Town - - - Hello World Services - Travel - Coral Sands - - - - -The XML document is located at `src/main/resources/data/customers.xml`. - -The resulting XML document should look like: - - - Foo Industries - Bar Refreshments - Hello World Services - - -[Saxon]: https://sourceforge.net/projects/saxon/ -[Sedna]: https://www.sedna.org/ -[BaseX]: https://basex.org/ -[Spring Integration XQuery]: https://github.com/SpringSource/spring-integration-extensions/tree/master/spring-integration-xquery -[Spring Integration Extensions]: https://github.com/SpringSource/spring-integration-extensions -[XML Databases]: https://en.wikipedia.org/wiki/XML_database -[XQuery]: https://en.wikipedia.org/wiki/XQuery \ No newline at end of file diff --git a/samples/xquery/pom.xml b/samples/xquery/pom.xml deleted file mode 100644 index e4ef4f2..0000000 --- a/samples/xquery/pom.xml +++ /dev/null @@ -1,153 +0,0 @@ - - 4.0.0 - - org.springframework.integration.samples - xquery - 1.0.0.BUILD-SNAPSHOT - jar - - Samples (Basic) - XQuery Sample - https://www.springsource.org/spring-integration - - - 2.2.1 - - - - UTF-8 - 4.3.19.RELEASE - 1.2.17 - 4.10 - - - - - repo.springsource.org.milestone - Spring Framework Maven Snapshot Repository - https://repo.springsource.org/libs-snapshot - true - - - - - - - maven-eclipse-plugin - 2.9 - - - org.springframework.ide.eclipse.core.springnature - - - org.springframework.ide.eclipse.core.springbuilder - - true - true - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.5.1 - - 1.6 - 1.6 - -Xlint:all - true - true - - - - org.codehaus.mojo - exec-maven-plugin - 1.2.1 - - org.springframework.integration.Main - - - - - - - - - - - junit - junit - ${junit.version} - test - - - - - - org.springframework.integration - spring-integration-core - ${spring.integration.version} - - - - org.springframework.integration - spring-integration-xml - ${spring.integration.version} - - - - org.springframework.integration - spring-integration-xquery - 1.0.0.BUILD-SNAPSHOT - - - - - - log4j - log4j - ${log4j.version} - - - - - - net.sf.saxon - Saxon-HE - 9.4 - - - - - default - - !basex - - - - net.xqj.sedna - sedna-xqj - 1.0.0 - - - com.xqj2 - xqj2 - 0.1.0 - - - - - basex - - basex - - - - net.xqj - basex-xqj - 1.2.3 - - - - - - diff --git a/samples/xquery/src/main/java/org/springframework/integration/Main.java b/samples/xquery/src/main/java/org/springframework/integration/Main.java deleted file mode 100644 index 559bd8a..0000000 --- a/samples/xquery/src/main/java/org/springframework/integration/Main.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2002-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Scanner; - -import org.apache.log4j.Logger; -import org.springframework.context.support.GenericXmlApplicationContext; -import org.springframework.core.io.Resource; -import org.springframework.integration.service.CustomerService; -import org.springframework.util.ClassUtils; -import org.springframework.util.FileCopyUtils; - - -/** - * Starts the Spring Context and will initialize the Spring Integration routes. - * - * @author Gunnar Hillert - * @version 1.0 - * - */ -public final class Main { - - private static final Logger LOGGER = Logger.getLogger(Main.class); - - private static final String HORIZONTAL_LINE = "=========================================================\n"; - - private Main() { } - - /** - * Load the Spring Integration Application Context - * - * @param args - command line arguments - * @throws IOException - */ - public static void main(final String... args) throws IOException { - - final Scanner scanner = new Scanner(System.in); - - System.out.println("\n" - + HORIZONTAL_LINE - + "\n " - + "\n Welcome to the Spring Integration XQuery Sample! " - + "\n " - + "\n For more information please visit: " - + "\n https://www.springsource.org/spring-integration/ " - + "\n " - + "\n" - + HORIZONTAL_LINE); - - System.out.println("Which XQuery Processor would you like to use? : "); - System.out.println("\t1. Use Saxon"); - System.out.println("\t2. Use Sedna"); - System.out.println("\t3. Use BaseX"); - - System.out.println("\tq. Quit the application"); - System.out.print("Enter your choice: "); - - final GenericXmlApplicationContext context = new GenericXmlApplicationContext(); - - while (true) { - final String input = scanner.nextLine(); - - if("1".equals(input.trim())) { - context.getEnvironment().setActiveProfiles("saxon"); - System.out.println("\nUsing Saxon..."); - break; - } else if("2".equals(input.trim())) { - context.getEnvironment().setActiveProfiles("sedna"); - System.out.println("\nUsing Sedna..."); - break; - } else if("3".equals(input.trim())) { - context.getEnvironment().setActiveProfiles("basex"); - System.out.println("\nUsing BaseX..."); - - if(ClassUtils.isPresent("net.xqj.sedna.SednaXQDataSource", ClassUtils.getDefaultClassLoader())) { - LOGGER.error("Detected the Sedna library to be present. This " - + "conflicts with BaseX. Please start the application " - + "from the command line using:\n\n" - + "mvn exec:java -Dbasex\n\nExiting..."); - System.exit(1); - } - - break; - } else if("q".equals(input.trim())) { - System.out.println("Exiting application...bye."); - System.exit(0); - } else { - System.out.println("Invalid choice\n\n"); - System.out.print("Enter you choice: "); - } - } - - context.load("classpath:META-INF/spring/integration/*-context.xml"); - context.registerShutdownHook(); - context.refresh(); - - final CustomerService service = context.getBean(CustomerService.class); - - final Resource resource = context.getResource("classpath:data/customers.xml"); - final InputStream is = resource.getInputStream(); - final String customers = new String(FileCopyUtils.copyToByteArray(is)); - - System.out.println("\n\nExtracting Customer Names from:\n" - + HORIZONTAL_LINE - + customers + "\n" - + HORIZONTAL_LINE - + "\n"); - final String customernames = service.getCustomerNames(customers); - System.out.println("Extracted Customer Names: \n" - + HORIZONTAL_LINE - + customernames + "\n" - + HORIZONTAL_LINE - + "\n"); - - } - -} \ No newline at end of file diff --git a/samples/xquery/src/main/java/org/springframework/integration/service/CustomerService.java b/samples/xquery/src/main/java/org/springframework/integration/service/CustomerService.java deleted file mode 100644 index 2120703..0000000 --- a/samples/xquery/src/main/java/org/springframework/integration/service/CustomerService.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2002-2012 the original author or authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.integration.service; - -/** - * XML Extraction Service. - * - * @author Gunnar Hillert - * @version 1.0 - * - */ -public interface CustomerService { - - /** - * For a given customer XML file, this method extracts all customer names and - * returns them as a new XML document. - * - * @param sourceXml The source XML file to extract the customer names from - * @return The String-based XML document containing the customer names - */ - String getCustomerNames(String sourceXml); - -} diff --git a/samples/xquery/src/main/resources/META-INF/spring/integration/spring-integration-context.xml b/samples/xquery/src/main/resources/META-INF/spring/integration/spring-integration-context.xml deleted file mode 100644 index ff5ee76..0000000 --- a/samples/xquery/src/main/resources/META-INF/spring/integration/spring-integration-context.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/xquery/src/main/resources/data/customers.xml b/samples/xquery/src/main/resources/data/customers.xml deleted file mode 100644 index 741689c..0000000 --- a/samples/xquery/src/main/resources/data/customers.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - Foo Industries - Chemical - Glowing City - - - Bar Refreshments - Beverage - Desert Town - - - Hello World Services - Travel - Coral Sands - - \ No newline at end of file diff --git a/samples/xquery/src/main/resources/data/xquery.xql b/samples/xquery/src/main/resources/data/xquery.xql deleted file mode 100644 index 841a537..0000000 --- a/samples/xquery/src/main/resources/data/xquery.xql +++ /dev/null @@ -1,4 +0,0 @@ - (: The XQuery Script that will extract the customer names from the source XML file :) - - { //customers/customer/name } - \ No newline at end of file diff --git a/samples/xquery/src/main/resources/log4j.xml b/samples/xquery/src/main/resources/log4j.xml deleted file mode 100644 index 739aaa4..0000000 --- a/samples/xquery/src/main/resources/log4j.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/xquery/src/main/resources/log4j2.xml b/samples/xquery/src/main/resources/log4j2.xml new file mode 100644 index 0000000..138645e --- /dev/null +++ b/samples/xquery/src/main/resources/log4j2.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/samples/xquery/src/test/java/org/springframework/integration/CustomerServiceTest.java b/samples/xquery/src/test/java/org/springframework/integration/CustomerServiceTest.java deleted file mode 100644 index 0266984..0000000 --- a/samples/xquery/src/test/java/org/springframework/integration/CustomerServiceTest.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2002-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.integration; - -import junit.framework.Assert; - -import org.junit.Test; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; -import org.springframework.integration.service.CustomerService; - -/** - * Verify that the Spring Integration Application Context starts successfully. - * - * @author Gunnar Hillert - * @since 1.0 - * - */ -public class CustomerServiceTest { - - @Test - public void testStartupOfSpringInegrationContext() throws Exception{ - new ClassPathXmlApplicationContext("/META-INF/spring/integration/spring-integration-context.xml", - CustomerServiceTest.class); - Thread.sleep(2000); - } - - @Test - public void testExtractCustomerNames() { - final ApplicationContext context - = new ClassPathXmlApplicationContext("/META-INF/spring/integration/spring-integration-context.xml", - CustomerServiceTest.class); - - final CustomerService service = context.getBean(CustomerService.class); - - final String sourceXml = "Foo Industries" - + "ChemicalGlowing City"; - final String expectedResult = "\n" - + "\n" - + " Foo Industries\n" - + "\n"; - - final String extractedCustomerNames = service.getCustomerNames(sourceXml); - - System.out.println(">>" + expectedResult + "<<"); - System.out.println(">>" + extractedCustomerNames + "<<"); - - Assert.assertEquals("The expected list of customer names did not match.", - expectedResult, extractedCustomerNames); - - } - -} diff --git a/samples/zip/pom.xml b/samples/zip/pom.xml index c4f005d..6a3113f 100644 --- a/samples/zip/pom.xml +++ b/samples/zip/pom.xml @@ -10,15 +10,11 @@ zip-sample https://projects.spring.io/spring-integration/ - - 2.2.1 - - UTF-8 - 1.0.1.RELEASE - 1.2.17 - 4.11 + 1.0.2.RELEASE + 2.13.0 + 4.12 @@ -31,24 +27,10 @@ - - maven-eclipse-plugin - 2.9 - - - org.springframework.ide.eclipse.core.springnature - - - org.springframework.ide.eclipse.core.springbuilder - - true - true - - org.apache.maven.plugins maven-compiler-plugin - 3.0 + 3.8.1 1.6 1.6 @@ -60,7 +42,7 @@ org.codehaus.mojo exec-maven-plugin - 1.2.1 + 1.6.0 org.springframework.integration.samples.zip.Main @@ -87,17 +69,17 @@ ${spring.integration.zip.version} - - org.springframework.integration - spring-integration-core - 4.3.17.RELEASE - - - log4j - log4j + org.apache.logging.log4j + log4j-jcl + ${log4j.version} + + + + org.apache.logging.log4j + log4j-slf4j-impl ${log4j.version} @@ -109,11 +91,5 @@ 2.4 - - org.slf4j - slf4j-jcl - 1.7.12 - - diff --git a/samples/zip/src/main/java/org/springframework/integration/samples/zip/Main.java b/samples/zip/src/main/java/org/springframework/integration/samples/zip/Main.java index d7ad856..054e2db 100644 --- a/samples/zip/src/main/java/org/springframework/integration/samples/zip/Main.java +++ b/samples/zip/src/main/java/org/springframework/integration/samples/zip/Main.java @@ -1,5 +1,5 @@ /* - * Copyright 2015-2018 the original author or authors. + * Copyright 2015-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,11 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.integration.samples.zip; import java.util.Scanner; -import org.apache.log4j.Logger; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; @@ -28,12 +30,14 @@ import org.springframework.context.support.ClassPathXmlApplicationContext; * * @author Gunnar Hillert * @author Gary Russell + * @author Artem Bilan + * * @since 1.0 * */ public final class Main { - private static final Logger LOGGER = Logger.getLogger(Main.class); + private static final Log LOGGER = LogFactory.getLog(Main.class); private Main() { } diff --git a/samples/zip/src/main/java/org/springframework/integration/samples/zip/SpringIntegrationUtils.java b/samples/zip/src/main/java/org/springframework/integration/samples/zip/SpringIntegrationUtils.java index 74e7806..7d09102 100644 --- a/samples/zip/src/main/java/org/springframework/integration/samples/zip/SpringIntegrationUtils.java +++ b/samples/zip/src/main/java/org/springframework/integration/samples/zip/SpringIntegrationUtils.java @@ -75,7 +75,7 @@ public final class SpringIntegrationUtils { stringBuilder.append("\n"); for (final String inputDirectory : inputDirectories) { - stringBuilder.append("\n Intput directory is: '" + inputDirectory + "'"); + stringBuilder.append("\n Input directory is: '" + inputDirectory + "'"); } for (final String outputDirectory : outputDirectories) { diff --git a/samples/zip/src/main/java/org/springframework/integration/samples/zip/TransformationHandler.java b/samples/zip/src/main/java/org/springframework/integration/samples/zip/TransformationHandler.java index 024a3cf..bd21924 100644 --- a/samples/zip/src/main/java/org/springframework/integration/samples/zip/TransformationHandler.java +++ b/samples/zip/src/main/java/org/springframework/integration/samples/zip/TransformationHandler.java @@ -58,13 +58,11 @@ public class TransformationHandler { throw new IllegalStateException(e); } - final Message message = MessageBuilder.withPayload(inputAsString.toUpperCase(Locale.ENGLISH)) + return MessageBuilder.withPayload(inputAsString.toUpperCase(Locale.ENGLISH)) .setHeader(FileHeaders.FILENAME, filename) .setHeader(FileHeaders.ORIGINAL_FILE, inputFile) .setHeader("file_size", inputFile.length()) .setHeader("file_extension", fileExtension) .build(); - - return message; } } diff --git a/samples/zip/src/main/resources/log4j.xml b/samples/zip/src/main/resources/log4j.xml deleted file mode 100644 index f4d8379..0000000 --- a/samples/zip/src/main/resources/log4j.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/zip/src/main/resources/log4j2.xml b/samples/zip/src/main/resources/log4j2.xml new file mode 100644 index 0000000..138645e --- /dev/null +++ b/samples/zip/src/main/resources/log4j2.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +