You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/05/14 04:29:36 UTC
[camel] 05/07: CAMEL-13503: Camel main - Allow to configure global
and common options ala camel-spring-boot have.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 9a30dff770ffd1e85b5c5a15cdf435a9eb4884b2
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue May 14 06:04:43 2019 +0200
CAMEL-13503: Camel main - Allow to configure global and common options ala camel-spring-boot have.
---
.../camel/main/MainConfigurationProperties.java | 208 ++++++++++++++++++++-
.../java/org/apache/camel/main/MainSupport.java | 8 +-
.../java/org/apache/camel/main/MainExample.java | 2 +
3 files changed, 212 insertions(+), 6 deletions(-)
diff --git a/core/camel-core/src/main/java/org/apache/camel/main/MainConfigurationProperties.java b/core/camel-core/src/main/java/org/apache/camel/main/MainConfigurationProperties.java
index f542a58..7c1b54d 100644
--- a/core/camel-core/src/main/java/org/apache/camel/main/MainConfigurationProperties.java
+++ b/core/camel-core/src/main/java/org/apache/camel/main/MainConfigurationProperties.java
@@ -1,13 +1,13 @@
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
+ *
+ * http://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.
@@ -64,6 +64,7 @@ public class MainConfigurationProperties {
private String threadNamePattern;
// getter and setters
+ // --------------------------------------------------------------
public String getName() {
return name;
@@ -573,5 +574,202 @@ public class MainConfigurationProperties {
this.threadNamePattern = threadNamePattern;
}
-
+ // fluent builders
+ // --------------------------------------------------------------
+
+ public MainConfigurationProperties withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public MainConfigurationProperties withShutdownTimeout(int shutdownTimeout) {
+ this.shutdownTimeout = shutdownTimeout;
+ return this;
+ }
+
+ public MainConfigurationProperties withShutdownSuppressLoggingOnTimeout(boolean shutdownSuppressLoggingOnTimeout) {
+ this.shutdownSuppressLoggingOnTimeout = shutdownSuppressLoggingOnTimeout;
+ return this;
+ }
+
+ public MainConfigurationProperties withShutdownNowOnTimeout(boolean shutdownNowOnTimeout) {
+ this.shutdownNowOnTimeout = shutdownNowOnTimeout;
+ return this;
+ }
+
+ public MainConfigurationProperties withShutdownRoutesInReverseOrder(boolean shutdownRoutesInReverseOrder) {
+ this.shutdownRoutesInReverseOrder = shutdownRoutesInReverseOrder;
+ return this;
+ }
+
+ public MainConfigurationProperties withShutdownLogInflightExchangesOnTimeout(boolean shutdownLogInflightExchangesOnTimeout) {
+ this.shutdownLogInflightExchangesOnTimeout = shutdownLogInflightExchangesOnTimeout;
+ return this;
+ }
+
+ public MainConfigurationProperties withJmxEnabled(boolean jmxEnabled) {
+ this.jmxEnabled = jmxEnabled;
+ return this;
+ }
+
+ public MainConfigurationProperties withProducerTemplateCacheSize(int producerTemplateCacheSize) {
+ this.producerTemplateCacheSize = producerTemplateCacheSize;
+ return this;
+ }
+
+ public MainConfigurationProperties withConsumerTemplateCacheSize(int consumerTemplateCacheSize) {
+ this.consumerTemplateCacheSize = consumerTemplateCacheSize;
+ return this;
+ }
+
+ public MainConfigurationProperties withFileConfigurations(String fileConfigurations) {
+ this.fileConfigurations = fileConfigurations;
+ return this;
+ }
+
+ public MainConfigurationProperties withDurationMaxSeconds(int durationMaxSeconds) {
+ this.durationMaxSeconds = durationMaxSeconds;
+ return this;
+ }
+
+ public MainConfigurationProperties withDurationMaxIdleSeconds(int durationMaxIdleSeconds) {
+ this.durationMaxIdleSeconds = durationMaxIdleSeconds;
+ return this;
+ }
+
+ public MainConfigurationProperties withDurationMaxMessages(int durationMaxMessages) {
+ this.durationMaxMessages = durationMaxMessages;
+ return this;
+ }
+
+ public MainConfigurationProperties withLogDebugMaxChars(int logDebugMaxChars) {
+ this.logDebugMaxChars = logDebugMaxChars;
+ return this;
+ }
+
+ public MainConfigurationProperties withStreamCachingEnabled(boolean streamCachingEnabled) {
+ this.streamCachingEnabled = streamCachingEnabled;
+ return this;
+ }
+
+ public MainConfigurationProperties withStreamCachingSpoolDirectory(String streamCachingSpoolDirectory) {
+ this.streamCachingSpoolDirectory = streamCachingSpoolDirectory;
+ return this;
+ }
+
+ public MainConfigurationProperties withStreamCachingSpoolChiper(String streamCachingSpoolChiper) {
+ this.streamCachingSpoolChiper = streamCachingSpoolChiper;
+ return this;
+ }
+
+ public MainConfigurationProperties withStreamCachingSpoolThreshold(long streamCachingSpoolThreshold) {
+ this.streamCachingSpoolThreshold = streamCachingSpoolThreshold;
+ return this;
+ }
+
+ public MainConfigurationProperties withStreamCachingSpoolUsedHeapMemoryThreshold(int streamCachingSpoolUsedHeapMemoryThreshold) {
+ this.streamCachingSpoolUsedHeapMemoryThreshold = streamCachingSpoolUsedHeapMemoryThreshold;
+ return this;
+ }
+
+ public MainConfigurationProperties withStreamCachingSpoolUsedHeapMemoryLimit(String streamCachingSpoolUsedHeapMemoryLimit) {
+ this.streamCachingSpoolUsedHeapMemoryLimit = streamCachingSpoolUsedHeapMemoryLimit;
+ return this;
+ }
+
+ public MainConfigurationProperties withStreamCachingAnySpoolRules(boolean streamCachingAnySpoolRules) {
+ this.streamCachingAnySpoolRules = streamCachingAnySpoolRules;
+ return this;
+ }
+
+ public MainConfigurationProperties withStreamCachingBufferSize(int streamCachingBufferSize) {
+ this.streamCachingBufferSize = streamCachingBufferSize;
+ return this;
+ }
+
+ public MainConfigurationProperties withStreamCachingRemoveSpoolDirectoryWhenStopping(boolean streamCachingRemoveSpoolDirectoryWhenStopping) {
+ this.streamCachingRemoveSpoolDirectoryWhenStopping = streamCachingRemoveSpoolDirectoryWhenStopping;
+ return this;
+ }
+
+ public MainConfigurationProperties withStreamCachingStatisticsEnabled(boolean streamCachingStatisticsEnabled) {
+ this.streamCachingStatisticsEnabled = streamCachingStatisticsEnabled;
+ return this;
+ }
+
+ public MainConfigurationProperties withTracing(boolean tracing) {
+ this.tracing = tracing;
+ return this;
+ }
+
+ public MainConfigurationProperties withMessageHistory(boolean messageHistory) {
+ this.messageHistory = messageHistory;
+ return this;
+ }
+
+ public MainConfigurationProperties withLogMask(boolean logMask) {
+ this.logMask = logMask;
+ return this;
+ }
+
+ public MainConfigurationProperties withLogExhaustedMessageBody(boolean logExhaustedMessageBody) {
+ this.logExhaustedMessageBody = logExhaustedMessageBody;
+ return this;
+ }
+
+ public MainConfigurationProperties withHandleFault(boolean handleFault) {
+ this.handleFault = handleFault;
+ return this;
+ }
+
+ public MainConfigurationProperties withAutoStartup(boolean autoStartup) {
+ this.autoStartup = autoStartup;
+ return this;
+ }
+
+ public MainConfigurationProperties withAllowUseOriginalMessage(boolean allowUseOriginalMessage) {
+ this.allowUseOriginalMessage = allowUseOriginalMessage;
+ return this;
+ }
+
+ public MainConfigurationProperties withEndpointRuntimeStatisticsEnabled(boolean endpointRuntimeStatisticsEnabled) {
+ this.endpointRuntimeStatisticsEnabled = endpointRuntimeStatisticsEnabled;
+ return this;
+ }
+
+ public MainConfigurationProperties withUseDataType(boolean useDataType) {
+ this.useDataType = useDataType;
+ return this;
+ }
+
+ public MainConfigurationProperties withUseBreadcrumb(boolean useBreadcrumb) {
+ this.useBreadcrumb = useBreadcrumb;
+ return this;
+ }
+
+ public MainConfigurationProperties withJmxManagementStatisticsLevel(ManagementStatisticsLevel jmxManagementStatisticsLevel) {
+ this.jmxManagementStatisticsLevel = jmxManagementStatisticsLevel;
+ return this;
+ }
+
+ public MainConfigurationProperties withJmxManagementNamePattern(String jmxManagementNamePattern) {
+ this.jmxManagementNamePattern = jmxManagementNamePattern;
+ return this;
+ }
+
+ public MainConfigurationProperties withJmxCreateConnector(boolean jmxCreateConnector) {
+ this.jmxCreateConnector = jmxCreateConnector;
+ return this;
+ }
+
+ public MainConfigurationProperties withUseMdcLogging(boolean useMdcLogging) {
+ this.useMdcLogging = useMdcLogging;
+ return this;
+ }
+
+ public MainConfigurationProperties withThreadNamePattern(String threadNamePattern) {
+ this.threadNamePattern = threadNamePattern;
+ return this;
+ }
+
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/main/MainSupport.java b/core/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
index 819ad65..3c0edde 100644
--- a/core/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
+++ b/core/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
@@ -110,7 +110,6 @@ public abstract class MainSupport extends ServiceSupport {
protected final AtomicBoolean completed = new AtomicBoolean(false);
protected final AtomicInteger exitCode = new AtomicInteger(UNINITIALIZED_EXIT_CODE);
- // TODO: Fluent builder on Main configuration properties
// TODO: Move these to mainConfigurationProperties (delegate)
protected long duration = -1;
protected String fileWatchDirectory;
@@ -406,6 +405,13 @@ public abstract class MainSupport extends ServiceSupport {
options.add(option);
}
+ /**
+ * To configure options on Camel Main.
+ */
+ public MainConfigurationProperties configure() {
+ return mainConfigurationProperties;
+ }
+
public long getDuration() {
return duration;
}
diff --git a/core/camel-core/src/test/java/org/apache/camel/main/MainExample.java b/core/camel-core/src/test/java/org/apache/camel/main/MainExample.java
index 47ff37f..13a2193 100644
--- a/core/camel-core/src/test/java/org/apache/camel/main/MainExample.java
+++ b/core/camel-core/src/test/java/org/apache/camel/main/MainExample.java
@@ -43,6 +43,8 @@ public class MainExample {
main.addMainListener(new Events());
// set the properties from a file
main.setPropertyPlaceholderLocations("example.properties");
+ // to configure some options
+ main.configure().withName("MyMainCamel").withJmxEnabled(false).withMessageHistory(false);
// run until you terminate the JVM
System.out.println("Starting Camel. Use ctrl + c to terminate the JVM.\n");
main.run();