CAMEL-9776 : camel-braintree: add uri param to configure advanced options
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9812112f Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9812112f Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9812112f Branch: refs/heads/camel-2.17.x Commit: 9812112f4607c2e598f29d7687da07d276c9884d Parents: 49a4f19 Author: lburgazzoli <lburgazz...@gmail.com> Authored: Wed Mar 30 17:28:10 2016 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Mar 31 07:58:38 2016 +0200 ---------------------------------------------------------------------- components/camel-braintree/pom.xml | 42 +++++----- .../braintree/BraintreeConfiguration.java | 82 +++++++++++++++++++- .../braintree/AbstractBraintreeTestSupport.java | 3 + .../src/test/resources/log4j.properties | 8 +- parent/pom.xml | 5 ++ .../features/src/main/resources/features.xml | 2 +- 6 files changed, 121 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/9812112f/components/camel-braintree/pom.xml ---------------------------------------------------------------------- diff --git a/components/camel-braintree/pom.xml b/components/camel-braintree/pom.xml index 9bcd01b..8f03e3a 100644 --- a/components/camel-braintree/pom.xml +++ b/components/camel-braintree/pom.xml @@ -54,24 +54,6 @@ <artifactId>braintree-java</artifactId> <version>${braintree-gateway-version}</version> </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - <version>${commons-lang3-version}</version> - </dependency> - - <dependency> - <groupId>commons-collections</groupId> - <artifactId>commons-collections</artifactId> - <version>${commons-collections-version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <version>${google-guava-version}</version> - <scope>test</scope> - </dependency> <!-- Component API javadoc in provided scope to read API signatures --> <dependency> @@ -90,6 +72,12 @@ </dependency> <dependency> <groupId>org.slf4j</groupId> + <artifactId>jul-to-slf4j</artifactId> + </dependency> + + <!-- testing - logging --> + <dependency> + <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <scope>test</scope> </dependency> @@ -105,6 +93,24 @@ <artifactId>camel-test</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <version>${commons-lang3-version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + <version>${commons-collections-version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>${google-guava-version}</version> + <scope>test</scope> + </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/camel/blob/9812112f/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeConfiguration.java ---------------------------------------------------------------------- diff --git a/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeConfiguration.java b/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeConfiguration.java index b7a5d87..1b4e39c 100644 --- a/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeConfiguration.java +++ b/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeConfiguration.java @@ -16,6 +16,10 @@ */ package org.apache.camel.component.braintree; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.Logger; + import com.braintreegateway.BraintreeGateway; import com.braintreegateway.Environment; import org.apache.camel.component.braintree.internal.BraintreeApiName; @@ -24,6 +28,7 @@ import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriParams; import org.apache.camel.spi.UriPath; import org.apache.camel.util.ObjectHelper; +import org.slf4j.bridge.SLF4JBridgeHandler; /** * Component configuration for Braintree component. @@ -65,6 +70,17 @@ public class BraintreeConfiguration { @Metadata(label = "proxy") private Integer proxyPort; + @UriParam(javaType = "java.lang.String") + @Metadata(label = "advanced,logging") + private Level httpLogLevel; + + @Metadata(label = "advanced,logging") + private String httpLogName; + + @UriParam + @Metadata(label = "advanced") + private Integer httpReadTimeout; + public BraintreeApiName getApiName() { return apiName; } @@ -153,6 +169,46 @@ public class BraintreeConfiguration { this.proxyPort = proxyPort; } + public Level getHttpLogLevel() { + return httpLogLevel; + } + + /** + * Set logging level for http calls, @see java.util.logging.Level + */ + public void setHttpLogLevel(String httpLogLevel) { + this.httpLogLevel = Level.parse(httpLogLevel); + } + + /** + * Set logging level for http calls, @see java.util.logging.Level + */ + public void setHttpLogLevel(Level httpLogLevel) { + this.httpLogLevel = httpLogLevel; + } + + public String getHttpLogName() { + return httpLogName; + } + + /** + * Set log category to use to log http calls, default "Braintree" + */ + public void setHttpLogName(String httpLogName) { + this.httpLogName = httpLogName; + } + + public Integer getHttpReadTimeout() { + return httpReadTimeout; + } + + /** + * Set read timeout for http calls. + */ + public void setHttpReadTimeout(Integer httpReadTimeout) { + this.httpReadTimeout = httpReadTimeout; + } + /** * Helper method to get and Environment object from its name */ @@ -176,7 +232,7 @@ public class BraintreeConfiguration { /** * Construct a BraintreeGateway from configuration */ - BraintreeGateway newBraintreeGateway() { + synchronized BraintreeGateway newBraintreeGateway() { final BraintreeGateway gateway = new BraintreeGateway( getBraintreeEnvironment(), getMerchantId(), @@ -187,6 +243,30 @@ public class BraintreeConfiguration { gateway.setProxy(proxyHost, proxyPort); } + if (httpReadTimeout != null) { + gateway.getConfiguration().setTimeout(httpReadTimeout); + } + + // If custom log name is defined, a new logger wil be requested otherwise + // the one supplied by Braintree' SDK will be used + final Logger logger = ObjectHelper.isNotEmpty(httpLogName) + ? Logger.getLogger(httpLogName) + : gateway.getConfiguration().getLogger(); + + // Cleanup handlers as by default braintree install a ConsoleHandler + for (Handler handler : logger.getHandlers()) { + logger.removeHandler(handler); + } + + // Add SLF4J bridge + logger.addHandler(new SLF4JBridgeHandler()); + + if (httpLogLevel != null) { + logger.setLevel(httpLogLevel); + } + + gateway.getConfiguration().setLogger(logger); + return gateway; } } http://git-wip-us.apache.org/repos/asf/camel/blob/9812112f/components/camel-braintree/src/test/java/org/apache/camel/component/braintree/AbstractBraintreeTestSupport.java ---------------------------------------------------------------------- diff --git a/components/camel-braintree/src/test/java/org/apache/camel/component/braintree/AbstractBraintreeTestSupport.java b/components/camel-braintree/src/test/java/org/apache/camel/component/braintree/AbstractBraintreeTestSupport.java index 33bbc9e..c145b9b 100644 --- a/components/camel-braintree/src/test/java/org/apache/camel/component/braintree/AbstractBraintreeTestSupport.java +++ b/components/camel-braintree/src/test/java/org/apache/camel/component/braintree/AbstractBraintreeTestSupport.java @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Properties; +import java.util.logging.Level; import com.braintreegateway.BraintreeGateway; import org.apache.camel.CamelContext; @@ -70,6 +71,8 @@ public class AbstractBraintreeTestSupport extends CamelTestSupport { addOptionIfMissing(options, "privateKey" , "CAMEL_BRAINTREE_PRIVATE_KEY"); final BraintreeConfiguration configuration = new BraintreeConfiguration(); + configuration.setHttpLogLevel(Level.WARNING); + configuration.setHttpLogName("org.apache.camel.component.braintree.camel-braintree"); IntrospectionSupport.setProperties(configuration, options); // add BraintreeComponent to Camel context http://git-wip-us.apache.org/repos/asf/camel/blob/9812112f/components/camel-braintree/src/test/resources/log4j.properties ---------------------------------------------------------------------- diff --git a/components/camel-braintree/src/test/resources/log4j.properties b/components/camel-braintree/src/test/resources/log4j.properties index befa085..9e38447 100644 --- a/components/camel-braintree/src/test/resources/log4j.properties +++ b/components/camel-braintree/src/test/resources/log4j.properties @@ -18,10 +18,11 @@ # # The logging properties used # -log4j.rootLogger=INFO, out +log4j.rootLogger=INFO, file # uncomment the following line to turn on Camel debugging #log4j.logger.org.apache.camel=DEBUG +#log4j.logger.org.apache.camel.component.braintree=TRACE # CONSOLE appender not used by default log4j.appender.out=org.apache.log4j.ConsoleAppender @@ -29,3 +30,8 @@ log4j.appender.out.layout=org.apache.log4j.PatternLayout log4j.appender.out.layout.ConversionPattern=[%30.30t] %-30.30c{1} %-5p %m%n #log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n +# File appender +log4j.appender.file=org.apache.log4j.FileAppender +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d %-5p %c{1} - %m %n +log4j.appender.file.file=target/camel-braintree-test.log http://git-wip-us.apache.org/repos/asf/camel/blob/9812112f/parent/pom.xml ---------------------------------------------------------------------- diff --git a/parent/pom.xml b/parent/pom.xml index 4630491..ffa997c 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -2082,6 +2082,11 @@ <version>${slf4j-version}</version> </dependency> <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jul-to-slf4j</artifactId> + <version>${slf4j-version}</version> + </dependency> + <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j-version}</version> http://git-wip-us.apache.org/repos/asf/camel/blob/9812112f/platforms/karaf/features/src/main/resources/features.xml ---------------------------------------------------------------------- diff --git a/platforms/karaf/features/src/main/resources/features.xml b/platforms/karaf/features/src/main/resources/features.xml index ac7ab20..84ec749 100644 --- a/platforms/karaf/features/src/main/resources/features.xml +++ b/platforms/karaf/features/src/main/resources/features.xml @@ -238,7 +238,7 @@ </feature> <feature name='camel-braintree' version='${project.version}' resolver='(obr)' start-level='50'> <feature version='${project.version}'>camel-core</feature> - <bundle dependency='true'>mvn:org.apache.commons/commons-lang3/${commons-lang3-version}</bundle> + <bundle dependency='true'>mvn:org.slf4j/jul-to-slf4j/${slf4j-version}</bundle> <bundle dependency='true'>mvn:com.braintreepayments.gateway/braintree-java/${braintree-gateway-version}</bundle> <bundle>mvn:org.apache.camel/camel-braintree/${project.version}</bundle> </feature>