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();