[1/2] camel git commit: CAMEL-8525: Aggregate - Expose statistics about completed exchanges. Rename forceCompletion to force so its similar to the others.
Repository: camel Updated Branches: refs/heads/master c0f1f02c1 - 16cc8a920 CAMEL-8525: Aggregate - Expose statistics about completed exchanges. Rename forceCompletion to force so its similar to the others. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/94a6f9a0 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/94a6f9a0 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/94a6f9a0 Branch: refs/heads/master Commit: 94a6f9a0c79a3981630f1e64cb0f3ae4281c50b4 Parents: c0f1f02 Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 10:49:52 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 10:49:52 2015 +0100 -- .../mbean/ManagedAggregateProcessorMBean.java | 37 +++ .../mbean/ManagedAggregateProcessor.java| 40 +++ .../processor/aggregate/AggregateProcessor.java | 105 ++- .../aggregate/AggregateProcessorStatistics.java | 86 +++ .../ManagedAggregateControllerTest.java | 28 - .../aggregator/AggregateControllerTest.java | 4 +- .../AggregateForceCompletionHeaderTest.java | 4 +- .../aggregator/AggregateProcessorTest.java | 2 +- ...awtDBAggregateForceCompletionHeaderTest.java | 4 +- ...velDBAggregateForceCompletionHeaderTest.java | 4 +- .../JdbcAggregateForceCompletionHeaderTest.java | 4 +- 11 files changed, 303 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/94a6f9a0/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java -- diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java index f4bed8d..a1810c7 100644 --- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java +++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java @@ -78,4 +78,41 @@ public interface ManagedAggregateProcessorMBean extends ManagedProcessorMBean { @ManagedOperation(description = To force complete of all groups) int forceCompletionOfAllGroups(); +@ManagedAttribute(description = Total number of exchanges arrived into the aggregator) +long getTotalIn(); + +@ManagedAttribute(description = Total number of exchanges completed and outgoing from the aggregator) +long getTotalCompleted(); + +@ManagedAttribute(description = Total number of exchanged completed by completion size trigger) +long getCompletedBySize(); + +@ManagedAttribute(description = Total number of exchanged completed by completion aggregation strategy trigger) +long getCompletedByStrategy(); + +@ManagedAttribute(description = Total number of exchanged completed by completion interval (timeout) trigger) +long getCompletedByInterval(); + +@ManagedAttribute(description = Total number of exchanged completed by completion timeout trigger) +long getCompletedByTimeout(); + +@ManagedAttribute(description = Total number of exchanged completed by completion predicate trigger) +long getCompletedByPredicate(); + +@ManagedAttribute(description = Total number of exchanged completed by completion batch consumer trigger) +long getCompletedByBatchConsumer(); + +@ManagedAttribute(description = Total number of exchanged completed by completion force trigger) +long getCompletedByForce(); + +@ManagedOperation(description = Reset the statistics counters) +void resetStatistics(); + +@ManagedAttribute(description = Sets whether statistics is enabled) +boolean isStatisticsEnabled(); + +@ManagedAttribute(description = Sets whether statistics is enabled) +void setStatisticsEnabled(boolean statisticsEnabled); + + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/94a6f9a0/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java -- diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java index 3b09c52..7a7705d 100644 --- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java +++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedAggregateProcessor.java @@ -149,4 +149,44 @@ public class ManagedAggregateProcessor extends ManagedProcessor implements Manag return 0; } } + +public long getTotalIn() { +
[2/2] camel git commit: Fixed test
Fixed test Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/16cc8a92 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/16cc8a92 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/16cc8a92 Branch: refs/heads/master Commit: 16cc8a9202a756def094735cee6356d306c20b03 Parents: 94a6f9a Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 11:13:52 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 11:13:52 2015 +0100 -- .../processor/async/AsyncProcessorAwaitManagerInterruptTest.java| 1 - 1 file changed, 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/16cc8a92/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptTest.java -- diff --git a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptTest.java b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptTest.java index 2e24346..3d5939a 100644 --- a/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptTest.java +++ b/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptTest.java @@ -42,7 +42,6 @@ public class AsyncProcessorAwaitManagerInterruptTest extends ContextTestSupport try { template.requestBody(direct:start, Hello Camel, String.class); -fail(Should have thrown exception); } catch (CamelExecutionException e) { RejectedExecutionException cause = assertIsInstanceOf(RejectedExecutionException.class, e.getCause()); assertTrue(cause.getMessage().startsWith(Interrupted while waiting for asynchronous callback));
[2/3] camel git commit: Fix CS errors
Fix CS errors Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c7a60abc Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c7a60abc Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c7a60abc Branch: refs/heads/camel-2.15.x Commit: c7a60abcc509fdba50882f6d544eaff09b58804d Parents: 74f9ea0 Author: Gregor Zurowski gre...@zurowski.org Authored: Fri Mar 20 20:41:06 2015 -0400 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 07:23:50 2015 +0100 -- .../java/org/apache/camel/catalog/DefaultCamelCatalog.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/c7a60abc/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java -- diff --git a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java index bc10145..cd4a11b 100644 --- a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java +++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java @@ -472,7 +472,7 @@ public class DefaultCamelCatalog implements CamelCatalog { // parse the syntax and find the same group in the uri Matcher matcher = SYNTAX_PATTERN.matcher(syntax); ListString word = new ArrayListString(); -while (matcher.find() ) { +while (matcher.find()) { String s = matcher.group(1); if (!scheme.equals(s)) { word.add(s); @@ -647,7 +647,7 @@ public class DefaultCamelCatalog implements CamelCatalog { // parse the syntax into each options Matcher matcher = SYNTAX_PATTERN.matcher(originalSyntax); ListString options = new ArrayListString(); -while (matcher.find() ) { +while (matcher.find()) { String s = matcher.group(1); options.add(s); } @@ -655,7 +655,7 @@ public class DefaultCamelCatalog implements CamelCatalog { // parse the syntax into each options Matcher matcher2 = SYNTAX_PATTERN.matcher(syntax); ListString options2 = new ArrayListString(); -while (matcher2.find() ) { +while (matcher2.find()) { String s = matcher2.group(1); options2.add(s); }
[3/3] camel git commit: CAMEL-7999: Fixed catalog to use default jetty component
CAMEL-7999: Fixed catalog to use default jetty component Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c89f2790 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c89f2790 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c89f2790 Branch: refs/heads/camel-2.15.x Commit: c89f2790468ff969d847fd664092c9d1c03f71cd Parents: c7a60ab Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 07:23:20 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 07:23:54 2015 +0100 -- .../java/org/apache/camel/maven/packaging/PackageHelper.java | 4 ++-- .../org/apache/camel/maven/packaging/PrepareCatalogMojo.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/c89f2790/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java -- diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java index c9da4bf..e3794d7 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java @@ -110,8 +110,8 @@ public final class PackageHelper { @Override public boolean accept(File pathname) { -// skip camel-jetty8 as its a duplicate of camel-jetty9 -if (camel-jetty8.equals(pathname)) { +// skip camel-jetty9 as its a duplicate of camel-jetty +if (camel-jetty9.equals(pathname)) { return false; } return pathname.isDirectory() || pathname.getName().endsWith(.json); http://git-wip-us.apache.org/repos/asf/camel/blob/c89f2790/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java -- diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java index 7b8846e..0a5625b 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java @@ -287,8 +287,8 @@ public class PrepareCatalogMojo extends AbstractMojo { File[] components = componentsDir.listFiles(); if (components != null) { for (File dir : components) { -// skip camel-jetty8 as its a duplicate of camel-jetty9 -if (dir.isDirectory() !camel-jetty8.equals(dir.getName()) !target.equals(dir.getName())) { +// skip camel-jetty9 as its a duplicate of camel-jetty8 +if (dir.isDirectory() !camel-jetty9.equals(dir.getName()) !target.equals(dir.getName())) { File target = new File(dir, target/classes); int before = componentFiles.size();
[1/3] camel git commit: CAMEL-7999: Fixed catalog to use default jetty component
Repository: camel Updated Branches: refs/heads/camel-2.15.x 74f9ea0be - c89f27904 refs/heads/master 32b4fd25d - 1aa206102 CAMEL-7999: Fixed catalog to use default jetty component Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1aa20610 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1aa20610 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1aa20610 Branch: refs/heads/master Commit: 1aa2061023bfff846e4f3eb3a52d291462a3bf1b Parents: 32b4fd2 Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 07:23:20 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 07:23:20 2015 +0100 -- .../java/org/apache/camel/maven/packaging/PackageHelper.java | 4 ++-- .../org/apache/camel/maven/packaging/PrepareCatalogMojo.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/1aa20610/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java -- diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java index c9da4bf..e3794d7 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java @@ -110,8 +110,8 @@ public final class PackageHelper { @Override public boolean accept(File pathname) { -// skip camel-jetty8 as its a duplicate of camel-jetty9 -if (camel-jetty8.equals(pathname)) { +// skip camel-jetty9 as its a duplicate of camel-jetty +if (camel-jetty9.equals(pathname)) { return false; } return pathname.isDirectory() || pathname.getName().endsWith(.json); http://git-wip-us.apache.org/repos/asf/camel/blob/1aa20610/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java -- diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java index 7b8846e..0a5625b 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java @@ -287,8 +287,8 @@ public class PrepareCatalogMojo extends AbstractMojo { File[] components = componentsDir.listFiles(); if (components != null) { for (File dir : components) { -// skip camel-jetty8 as its a duplicate of camel-jetty9 -if (dir.isDirectory() !camel-jetty8.equals(dir.getName()) !target.equals(dir.getName())) { +// skip camel-jetty9 as its a duplicate of camel-jetty8 +if (dir.isDirectory() !camel-jetty9.equals(dir.getName()) !target.equals(dir.getName())) { File target = new File(dir, target/classes); int before = componentFiles.size();
[1/3] camel git commit: CAMEL-8500: Avoid ClassCastException if something else is bound to properties when starting CamelContext and looking up if there is a properties component defined.
Repository: camel Updated Branches: refs/heads/camel-2.14.x 865b7ffea - e6cca31dd refs/heads/camel-2.15.x c89f27904 - 8e9b48820 refs/heads/master 1aa206102 - ae8ce7379 CAMEL-8500: Avoid ClassCastException if something else is bound to properties when starting CamelContext and looking up if there is a properties component defined. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ae8ce737 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ae8ce737 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ae8ce737 Branch: refs/heads/master Commit: ae8ce7379ffae5c7d22086bc6e7d190bd3aa40f4 Parents: 1aa2061 Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 07:38:24 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 07:38:24 2015 +0100 -- .../apache/camel/util/CamelContextHelper.java | 8 ++- ...esComponentSomethingElseBoundToJndiTest.java | 60 2 files changed, 65 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/ae8ce737/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java -- diff --git a/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java b/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java index 39d9b73..1b01fef 100644 --- a/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java +++ b/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java @@ -571,15 +571,17 @@ public final class CamelContextHelper { // no existing properties component so lookup and add as component if possible PropertiesComponent answer = (PropertiesComponent) camelContext.hasComponent(properties); if (answer == null) { -answer = camelContext.getRegistry().lookupByNameAndType(properties, PropertiesComponent.class); -if (answer != null) { +// lookup what is stored under properties, as it may not be the Camel properties component +Object found = camelContext.getRegistry().lookupByName(properties); +if (found != null found instanceof PropertiesComponent) { +answer = (PropertiesComponent) found; camelContext.addComponent(properties, answer); } } if (answer == null autoCreate) { // create a default properties component to be used as there may be default values we can use LOG.info(No existing PropertiesComponent has been configured, creating a new default PropertiesComponent with name: properties); -// do not auto create using getComponent as spring autowrire by constructor causes a side effect +// do not auto create using getComponent as spring auto-wire by constructor causes a side effect answer = new PropertiesComponent(); camelContext.addComponent(properties, answer); } http://git-wip-us.apache.org/repos/asf/camel/blob/ae8ce737/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java -- diff --git a/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java b/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java new file mode 100644 index 000..4e96bda --- /dev/null +++ b/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java @@ -0,0 +1,60 @@ +/** + * 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 + * + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.properties; + +import org.apache.camel.ContextTestSupport; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.impl.JndiRegistry; + +/** + * @version + */ +public class PropertiesComponentSomethingElseBoundToJndiTest extends
[2/3] camel git commit: CAMEL-8500: Avoid ClassCastException if something else is bound to properties when starting CamelContext and looking up if there is a properties component defined.
CAMEL-8500: Avoid ClassCastException if something else is bound to properties when starting CamelContext and looking up if there is a properties component defined. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8e9b4882 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8e9b4882 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8e9b4882 Branch: refs/heads/camel-2.15.x Commit: 8e9b488200a4b624bd3483475747dfaffb761301 Parents: c89f279 Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 07:38:24 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 08:01:48 2015 +0100 -- .../apache/camel/util/CamelContextHelper.java | 8 ++- ...esComponentSomethingElseBoundToJndiTest.java | 60 2 files changed, 65 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/8e9b4882/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java -- diff --git a/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java b/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java index 39d9b73..1b01fef 100644 --- a/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java +++ b/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java @@ -571,15 +571,17 @@ public final class CamelContextHelper { // no existing properties component so lookup and add as component if possible PropertiesComponent answer = (PropertiesComponent) camelContext.hasComponent(properties); if (answer == null) { -answer = camelContext.getRegistry().lookupByNameAndType(properties, PropertiesComponent.class); -if (answer != null) { +// lookup what is stored under properties, as it may not be the Camel properties component +Object found = camelContext.getRegistry().lookupByName(properties); +if (found != null found instanceof PropertiesComponent) { +answer = (PropertiesComponent) found; camelContext.addComponent(properties, answer); } } if (answer == null autoCreate) { // create a default properties component to be used as there may be default values we can use LOG.info(No existing PropertiesComponent has been configured, creating a new default PropertiesComponent with name: properties); -// do not auto create using getComponent as spring autowrire by constructor causes a side effect +// do not auto create using getComponent as spring auto-wire by constructor causes a side effect answer = new PropertiesComponent(); camelContext.addComponent(properties, answer); } http://git-wip-us.apache.org/repos/asf/camel/blob/8e9b4882/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java -- diff --git a/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java b/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java new file mode 100644 index 000..4e96bda --- /dev/null +++ b/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java @@ -0,0 +1,60 @@ +/** + * 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 + * + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.properties; + +import org.apache.camel.ContextTestSupport; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.impl.JndiRegistry; + +/** + * @version + */ +public class PropertiesComponentSomethingElseBoundToJndiTest extends ContextTestSupport { + +@Override +public boolean isUseRouteBuilder() { +return false; +} + +public void testPropertiesComponent() throws
[3/3] camel git commit: CAMEL-8500: Avoid ClassCastException if something else is bound to properties when starting CamelContext and looking up if there is a properties component defined.
CAMEL-8500: Avoid ClassCastException if something else is bound to properties when starting CamelContext and looking up if there is a properties component defined. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/e6cca31d Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e6cca31d Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e6cca31d Branch: refs/heads/camel-2.14.x Commit: e6cca31dd9cc899bd204dfc1658875f129d3d4d2 Parents: 865b7ff Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 07:38:24 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 08:01:58 2015 +0100 -- .../apache/camel/util/CamelContextHelper.java | 8 ++- ...esComponentSomethingElseBoundToJndiTest.java | 60 2 files changed, 65 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/e6cca31d/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java -- diff --git a/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java b/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java index 7e4fac1..b1e3b19 100644 --- a/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java +++ b/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java @@ -489,15 +489,17 @@ public final class CamelContextHelper { // no existing properties component so lookup and add as component if possible PropertiesComponent answer = (PropertiesComponent) camelContext.hasComponent(properties); if (answer == null) { -answer = camelContext.getRegistry().lookupByNameAndType(properties, PropertiesComponent.class); -if (answer != null) { +// lookup what is stored under properties, as it may not be the Camel properties component +Object found = camelContext.getRegistry().lookupByName(properties); +if (found != null found instanceof PropertiesComponent) { +answer = (PropertiesComponent) found; camelContext.addComponent(properties, answer); } } if (answer == null autoCreate) { // create a default properties component to be used as there may be default values we can use LOG.info(No existing PropertiesComponent has been configured, creating a new default PropertiesComponent with name: properties); -// do not auto create using getComponent as spring autowrire by constructor causes a side effect +// do not auto create using getComponent as spring auto-wire by constructor causes a side effect answer = new PropertiesComponent(); camelContext.addComponent(properties, answer); } http://git-wip-us.apache.org/repos/asf/camel/blob/e6cca31d/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java -- diff --git a/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java b/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java new file mode 100644 index 000..4e96bda --- /dev/null +++ b/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentSomethingElseBoundToJndiTest.java @@ -0,0 +1,60 @@ +/** + * 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 + * + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.properties; + +import org.apache.camel.ContextTestSupport; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.impl.JndiRegistry; + +/** + * @version + */ +public class PropertiesComponentSomethingElseBoundToJndiTest extends ContextTestSupport { + +@Override +public boolean isUseRouteBuilder() { +return false; +} + +public void testPropertiesComponent() throws
[1/3] camel git commit: CAMEL-7434: Aggregate now allows using a controller to control completion of groups from external source.
Repository: camel Updated Branches: refs/heads/master ae8ce7379 - 4bb4be751 CAMEL-7434: Aggregate now allows using a controller to control completion of groups from external source. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/53500cf7 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/53500cf7 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/53500cf7 Branch: refs/heads/master Commit: 53500cf7aca91373fad5e3f77c5537f493351df7 Parents: ae8ce73 Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 08:31:43 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 08:31:43 2015 +0100 -- .../apache/camel/model/AggregateDefinition.java | 41 +++- .../aggregate/AggregateController.java | 56 ++ .../processor/aggregate/AggregateProcessor.java | 57 +- .../aggregate/DefaultAggregateController.java | 71 + .../aggregator/AggregateControllerTest.java | 103 +++ 5 files changed, 324 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/53500cf7/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java -- diff --git a/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java b/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java index f5d3746..087bc74 100644 --- a/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java @@ -35,6 +35,7 @@ import org.apache.camel.Processor; import org.apache.camel.builder.ExpressionClause; import org.apache.camel.model.language.ExpressionDefinition; import org.apache.camel.processor.CamelInternalProcessor; +import org.apache.camel.processor.aggregate.AggregateController; import org.apache.camel.processor.aggregate.AggregateProcessor; import org.apache.camel.processor.aggregate.AggregationStrategy; import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter; @@ -113,6 +114,10 @@ public class AggregateDefinition extends ProcessorDefinitionAggregateDefinition private Boolean discardOnCompletionTimeout; @XmlAttribute private Boolean forceCompletionOnStop; +@XmlTransient +private AggregateController aggregateController; +@XmlAttribute +private String aggregateControllerRef; @XmlElementRef private ListProcessorDefinition? outputs = new ArrayListProcessorDefinition?(); @@ -182,7 +187,7 @@ public class AggregateDefinition extends ProcessorDefinitionAggregateDefinition shutdownThreadPool = true; } -AggregateProcessor answer = new AggregateProcessor(routeContext.getCamelContext(), internal, +AggregateProcessor answer = new AggregateProcessor(routeContext.getCamelContext(), getId(), internal, correlation, strategy, threadPool, shutdownThreadPool); AggregationRepository repository = createAggregationRepository(routeContext); @@ -190,6 +195,10 @@ public class AggregateDefinition extends ProcessorDefinitionAggregateDefinition answer.setAggregationRepository(repository); } +if (getAggregateController() == null getAggregateControllerRef() != null) { + setAggregateController(routeContext.mandatoryLookup(getAggregateControllerRef(), AggregateController.class)); +} + // this EIP supports using a shared timeout checker thread pool or fallback to create a new thread pool boolean shutdownTimeoutThreadPool = false; ScheduledExecutorService timeoutThreadPool = timeoutCheckerExecutorService; @@ -264,6 +273,9 @@ public class AggregateDefinition extends ProcessorDefinitionAggregateDefinition } else { answer.setOptimisticLockRetryPolicy(optimisticLockRetryPolicy); } +if (getAggregateController() != null) { +answer.setAggregateController(getAggregateController()); +} return answer; } @@ -613,6 +625,22 @@ public class AggregateDefinition extends ProcessorDefinitionAggregateDefinition this.forceCompletionOnStop = forceCompletionOnStop; } +public AggregateController getAggregateController() { +return aggregateController; +} + +public void setAggregateController(AggregateController aggregateController) { +this.aggregateController = aggregateController; +} + +public String getAggregateControllerRef() { +return aggregateControllerRef; +} + +public void setAggregateControllerRef(String aggregateControllerRef) { +this.aggregateControllerRef = aggregateControllerRef; +} + // Fluent
[2/3] camel git commit: CAMEL-7434: Aggregate now allows using a controller to control completion of groups from external source.
CAMEL-7434: Aggregate now allows using a controller to control completion of groups from external source. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a664b08c Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a664b08c Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a664b08c Branch: refs/heads/master Commit: a664b08cb3beb975ee5fe4e6971ecb5525e9a501 Parents: 53500cf Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 09:04:51 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 09:08:20 2015 +0100 -- .../mbean/ManagedAggregateProcessorMBean.java | 81 ++ .../DefaultManagementObjectStrategy.java| 4 + .../mbean/ManagedAggregateProcessor.java| 152 ++ .../processor/aggregate/AggregateProcessor.java | 16 +- .../ManagedAggregateControllerTest.java | 159 +++ .../aggregator/AggregateProcessorTest.java | 22 +-- ...teProcessorTimeoutCompletionRestartTest.java | 6 +- 7 files changed, 424 insertions(+), 16 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/a664b08c/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java -- diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java new file mode 100644 index 000..f4bed8d --- /dev/null +++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java @@ -0,0 +1,81 @@ +/** + * 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 + * + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.api.management.mbean; + +import org.apache.camel.api.management.ManagedAttribute; +import org.apache.camel.api.management.ManagedOperation; + +public interface ManagedAggregateProcessorMBean extends ManagedProcessorMBean { + +@ManagedAttribute(description = Correlation Expression) +String getCorrelationExpression(); + +@ManagedAttribute(description = Completion timeout in millis) +long getCompletionTimeout(); + +@ManagedAttribute(description = Completion timeout expression) +String getCompletionTimeoutExpression(); + +@ManagedAttribute(description = Completion interval in millis) +long getCompletionInterval(); + +@ManagedAttribute(description = Completion size) +int getCompletionSize(); + +@ManagedAttribute(description = Completion size expression) +String getCompletionSizeExpression(); + +@ManagedAttribute(description = Complete from batch consumers) +boolean isCompletionFromBatchConsumer(); + +@ManagedAttribute(description = Ignore invalid correlation keys) +boolean isIgnoreInvalidCorrelationKeys(); + +@ManagedAttribute(description = Whether to close the correlation group on completion) +Integer getCloseCorrelationKeyOnCompletion(); + +@ManagedAttribute(description = Parallel mode) +boolean isParallelProcessing(); + +@ManagedAttribute(description = Optimistic locking) +boolean isOptimisticLocking(); + +@ManagedAttribute(description = Whether or not to eager check for completion when a new incoming Exchange has been received) +boolean isEagerCheckCompletion(); + +@ManagedAttribute(description = A Predicate to indicate when an aggregated exchange is complete) +String getCompletionPredicate(); + +@ManagedAttribute(description = Whether or not exchanges which complete due to a timeout should be discarded) +boolean isDiscardOnCompletionTimeout(); + +@ManagedAttribute(description = Indicates to complete all current aggregated exchanges when the context is stopped) +boolean isForceCompletionOnStop(); + +@ManagedAttribute(description = Number of completed exchanges which are currently in-flight) +int getInProgressCompleteExchanges(); + +@ManagedOperation(description = Number of groups
[3/3] camel git commit: CAMEL-7434: Aggregate now allows using a controller to control completion of groups from external source.
CAMEL-7434: Aggregate now allows using a controller to control completion of groups from external source. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/4bb4be75 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4bb4be75 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4bb4be75 Branch: refs/heads/master Commit: 4bb4be75181a89d8f5f12217188be3455d35571b Parents: a664b08 Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 10:05:58 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 10:05:58 2015 +0100 -- .../apache/camel/model/AggregateDefinition.java | 2 +- .../aggregate/AggregateController.java | 6 +-- .../processor/aggregate/AggregateProcessor.java | 21 ++ .../aggregate/DefaultAggregateController.java | 27 ++-- .../aggregator/AggregateControllerTest.java | 18 +--- .../aggregator/AggregateProcessorTest.java | 22 +- ...teProcessorTimeoutCompletionRestartTest.java | 6 +-- .../SpringAggregateControllerTest.java | 39 ++ .../SpringAggregateControllerTest.xml | 43 9 files changed, 117 insertions(+), 67 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/4bb4be75/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java -- diff --git a/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java b/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java index 087bc74..c880c8a 100644 --- a/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java @@ -187,7 +187,7 @@ public class AggregateDefinition extends ProcessorDefinitionAggregateDefinition shutdownThreadPool = true; } -AggregateProcessor answer = new AggregateProcessor(routeContext.getCamelContext(), getId(), internal, +AggregateProcessor answer = new AggregateProcessor(routeContext.getCamelContext(), internal, correlation, strategy, threadPool, shutdownThreadPool); AggregationRepository repository = createAggregationRepository(routeContext); http://git-wip-us.apache.org/repos/asf/camel/blob/4bb4be75/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateController.java -- diff --git a/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateController.java b/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateController.java index dab9d6e..974ee9a 100644 --- a/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateController.java +++ b/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateController.java @@ -25,18 +25,16 @@ public interface AggregateController { /** * Callback when the aggregate processor is started. * - * @param idthe aggregator id * @param processor the aggregate processor */ -void onStart(String id, AggregateProcessor processor); +void onStart(AggregateProcessor processor); /** * Callback when the aggregate processor is stopped. * - * @param idthe aggregator id * @param processor the aggregate processor */ -void onStop(String id, AggregateProcessor processor); +void onStop(AggregateProcessor processor); /** * To force completing a specific group by its key. http://git-wip-us.apache.org/repos/asf/camel/blob/4bb4be75/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java -- diff --git a/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java index 1a773ea..8e34284 100644 --- a/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java +++ b/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java @@ -47,7 +47,6 @@ import org.apache.camel.TimeoutMap; import org.apache.camel.Traceable; import org.apache.camel.spi.AggregationRepository; import org.apache.camel.spi.ExceptionHandler; -import org.apache.camel.spi.HasId; import org.apache.camel.spi.OptimisticLockingAggregationRepository; import org.apache.camel.spi.RecoverableAggregationRepository; import org.apache.camel.spi.ShutdownPrepared; @@ -80,7 +79,7 @@ import org.slf4j.LoggerFactory; * and older prices are discarded). Another idea is to combine line item messages * together into a
camel git commit: CAMEL-7434: Aggregate now allows using a controller to control completion of groups from external source.
Repository: camel Updated Branches: refs/heads/master 4bb4be751 - c0f1f02c1 CAMEL-7434: Aggregate now allows using a controller to control completion of groups from external source. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c0f1f02c Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c0f1f02c Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c0f1f02c Branch: refs/heads/master Commit: c0f1f02c12b6f4ceceeb87098d96502731b4e3af Parents: 4bb4be7 Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 10:07:04 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 10:07:04 2015 +0100 -- .../main/java/org/apache/camel/model/AggregateDefinition.java| 4 1 file changed, 4 insertions(+) -- http://git-wip-us.apache.org/repos/asf/camel/blob/c0f1f02c/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java -- diff --git a/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java b/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java index c880c8a..942d69b 100644 --- a/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java @@ -637,6 +637,10 @@ public class AggregateDefinition extends ProcessorDefinitionAggregateDefinition return aggregateControllerRef; } +/** + * To use a {@link org.apache.camel.processor.aggregate.AggregateController} to allow external sources to control + * this aggregator. + */ public void setAggregateControllerRef(String aggregateControllerRef) { this.aggregateControllerRef = aggregateControllerRef; }
camel git commit: Use ManagedLoadTimer as JMX name in threadpools to better indicate what the pool does. Its the JMX background thread for load statistics.
Repository: camel Updated Branches: refs/heads/master 16cc8a920 - 8c6de215e Use ManagedLoadTimer as JMX name in threadpools to better indicate what the pool does. Its the JMX background thread for load statistics. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8c6de215 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8c6de215 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8c6de215 Branch: refs/heads/master Commit: 8c6de215ebfac20f9e399c1a5ec87fce74c40494 Parents: 16cc8a9 Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 11:25:36 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 11:25:36 2015 +0100 -- .../DefaultManagementLifecycleStrategy.java | 14 - .../camel/management/ManagedLoadTimer.java | 31 .../camel/support/TimerListenerManager.java | 4 +-- 3 files changed, 39 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/8c6de215/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java -- diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java index 4834d64..33d713b 100644 --- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java +++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java @@ -118,8 +118,8 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement private final MapProcessor, KeyValueHolderProcessorDefinition?, InstrumentationProcessor wrappedProcessors = new HashMapProcessor, KeyValueHolderProcessorDefinition?, InstrumentationProcessor(); private final ListPreRegisterService preServices = new ArrayListPreRegisterService(); -private final TimerListenerManager timerListenerManager = new TimerListenerManager(); -private final TimerListenerManagerStartupListener timerManagerStartupListener = new TimerListenerManagerStartupListener(); +private final TimerListenerManager loadTimer = new ManagedLoadTimer(); +private final TimerListenerManagerStartupListener loadTimerStartupListener = new TimerListenerManagerStartupListener(); private volatile CamelContext camelContext; private volatile ManagedCamelContext camelContextMBean; private volatile boolean initialized; @@ -821,7 +821,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement getManagementStrategy().manageObject(me); if (me instanceof TimerListener) { TimerListener timer = (TimerListener) me; -timerListenerManager.addTimerListener(timer); +loadTimer.addTimerListener(timer); } } @@ -834,7 +834,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement protected void unmanageObject(Object me) throws Exception { if (me instanceof TimerListener) { TimerListener timer = (TimerListener) me; -timerListenerManager.removeTimerListener(timer); +loadTimer.removeTimerListener(timer); } getManagementStrategy().unmanageObject(me); } @@ -900,7 +900,7 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement ObjectHelper.notNull(camelContext, CamelContext); // defer starting the timer manager until CamelContext has been fully started -camelContext.addStartupListener(timerManagerStartupListener); +camelContext.addStartupListener(loadTimerStartupListener); } private final class TimerListenerManagerStartupListener implements StartupListener { @@ -914,9 +914,9 @@ public class DefaultManagementLifecycleStrategy extends ServiceSupport implement LOG.debug(Load performance statistics {}, disabled ? disabled : enabled); if (!disabled) { // must use 1 sec interval as the load statistics is based on 1 sec calculations -timerListenerManager.setInterval(1000); +loadTimer.setInterval(1000); // we have to defer enlisting timer lister manager as a service until CamelContext has been started -getCamelContext().addService(timerListenerManager); +getCamelContext().addService(loadTimer); } } } http://git-wip-us.apache.org/repos/asf/camel/blob/8c6de215/camel-core/src/main/java/org/apache/camel/management/ManagedLoadTimer.java
[2/2] camel git commit: CAMEL-7474: Add option to mail consumer to skip or handle if there is an error retrieving a mail from the mailbox. This can avoid an endless problem if one mail is problematic.
CAMEL-7474: Add option to mail consumer to skip or handle if there is an error retrieving a mail from the mailbox. This can avoid an endless problem if one mail is problematic. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/99106e41 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/99106e41 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/99106e41 Branch: refs/heads/camel-2.15.x Commit: 99106e411de7e7e94a905320846d663430482e92 Parents: adf655d Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 12:31:47 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 12:37:06 2015 +0100 -- .../camel/component/mail/MailConfiguration.java | 34 +- .../camel/component/mail/MailConsumer.java | 47 ++-- .../camel/component/mail/MailEndpoint.java | 3 ++ 3 files changed, 79 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/99106e41/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java -- diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java index 526e32c..794ebf6 100644 --- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java +++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java @@ -20,7 +20,6 @@ import java.net.URI; import java.util.HashMap; import java.util.Map; import java.util.Properties; - import javax.mail.Message; import javax.mail.Session; import javax.net.ssl.SSLContext; @@ -98,6 +97,10 @@ public class MailConfiguration implements Cloneable { private boolean closeFolder = true; @UriParam(defaultValue = true) @Metadata(label = consumer) private boolean peek = true; +@UriParam @Metadata(label = consumer) +private boolean skipFailedMessage; +@UriParam @Metadata(label = consumer) +private boolean handleFailedMessage; @UriParam private SSLContextParameters sslContextParameters; private ClassLoader applicationClassLoader; @@ -633,4 +636,33 @@ public class MailConfiguration implements Cloneable { public void setPeek(boolean peek) { this.peek = peek; } + +public boolean isSkipFailedMessage() { +return skipFailedMessage; +} + +/** + * If the mail consumer cannot retrieve a given mail message, then this option allows to skip + * the message and move on to retrieve the next mail message. + * p/ + * The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. + */ +public void setSkipFailedMessage(boolean skipFailedMessage) { +this.skipFailedMessage = skipFailedMessage; +} + +public boolean isHandleFailedMessage() { +return handleFailedMessage; +} + +/** + * If the mail consumer cannot retrieve a given mail message, then this option allows to handle + * the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, + * then the Camel routing error handler can handle the exception instead. + * p/ + * The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. + */ +public void setHandleFailedMessage(boolean handleFailedMessage) { +this.handleFailedMessage = handleFailedMessage; +} } http://git-wip-us.apache.org/repos/asf/camel/blob/99106e41/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java -- diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java index 2015cca..7ba9397 100644 --- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java +++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java @@ -16,8 +16,10 @@ */ package org.apache.camel.component.mail; +import java.util.ArrayList; import java.util.Enumeration; import java.util.LinkedList; +import java.util.List; import java.util.Queue; import java.util.UUID; import javax.mail.Flags; @@ -54,6 +56,8 @@ public class MailConsumer extends ScheduledBatchPollingConsumer { private final JavaMailSender sender; private Folder folder; private Store store; +private boolean skipFailedMessage; +private boolean handleFailedMessage;
[1/2] camel git commit: CAMEL-7474: Add option to mail consumer to skip or handle if there is an error retrieving a mail from the mailbox. This can avoid an endless problem if one mail is problematic.
Repository: camel Updated Branches: refs/heads/camel-2.15.x adf655d54 - 99106e411 refs/heads/master 5224a13e5 - 8639a14ea CAMEL-7474: Add option to mail consumer to skip or handle if there is an error retrieving a mail from the mailbox. This can avoid an endless problem if one mail is problematic. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8639a14e Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8639a14e Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8639a14e Branch: refs/heads/master Commit: 8639a14ead5440860f4638ce2608f407ded278a7 Parents: 5224a13 Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 12:31:47 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 12:36:43 2015 +0100 -- .../camel/component/mail/MailConfiguration.java | 34 +- .../camel/component/mail/MailConsumer.java | 47 ++-- .../camel/component/mail/MailEndpoint.java | 3 ++ 3 files changed, 79 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/8639a14e/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java -- diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java index 526e32c..794ebf6 100644 --- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java +++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java @@ -20,7 +20,6 @@ import java.net.URI; import java.util.HashMap; import java.util.Map; import java.util.Properties; - import javax.mail.Message; import javax.mail.Session; import javax.net.ssl.SSLContext; @@ -98,6 +97,10 @@ public class MailConfiguration implements Cloneable { private boolean closeFolder = true; @UriParam(defaultValue = true) @Metadata(label = consumer) private boolean peek = true; +@UriParam @Metadata(label = consumer) +private boolean skipFailedMessage; +@UriParam @Metadata(label = consumer) +private boolean handleFailedMessage; @UriParam private SSLContextParameters sslContextParameters; private ClassLoader applicationClassLoader; @@ -633,4 +636,33 @@ public class MailConfiguration implements Cloneable { public void setPeek(boolean peek) { this.peek = peek; } + +public boolean isSkipFailedMessage() { +return skipFailedMessage; +} + +/** + * If the mail consumer cannot retrieve a given mail message, then this option allows to skip + * the message and move on to retrieve the next mail message. + * p/ + * The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. + */ +public void setSkipFailedMessage(boolean skipFailedMessage) { +this.skipFailedMessage = skipFailedMessage; +} + +public boolean isHandleFailedMessage() { +return handleFailedMessage; +} + +/** + * If the mail consumer cannot retrieve a given mail message, then this option allows to handle + * the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, + * then the Camel routing error handler can handle the exception instead. + * p/ + * The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. + */ +public void setHandleFailedMessage(boolean handleFailedMessage) { +this.handleFailedMessage = handleFailedMessage; +} } http://git-wip-us.apache.org/repos/asf/camel/blob/8639a14e/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java -- diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java index 2015cca..7ba9397 100644 --- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java +++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java @@ -16,8 +16,10 @@ */ package org.apache.camel.component.mail; +import java.util.ArrayList; import java.util.Enumeration; import java.util.LinkedList; +import java.util.List; import java.util.Queue; import java.util.UUID; import javax.mail.Flags; @@ -54,6 +56,8 @@ public class MailConsumer extends ScheduledBatchPollingConsumer { private final JavaMailSender sender; private
[1/2] camel git commit: CAMEL-7565: SFTP using PollEnrich with disconnect=true and delete=true does NOT delete the file.
Repository: camel Updated Branches: refs/heads/camel-2.15.x 8e9b48820 - adf655d54 refs/heads/master 8c6de215e - 5224a13e5 CAMEL-7565: SFTP using PollEnrich with disconnect=true and delete=true does NOT delete the file. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5224a13e Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5224a13e Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5224a13e Branch: refs/heads/master Commit: 5224a13e5257fcf289e5b95f65a5baaeb67ddecf Parents: 8c6de21 Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 12:12:36 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 12:12:36 2015 +0100 -- .../file/remote/RemoteFileConsumer.java | 39 -- ...nrichConsumeWithDisconnectAndDeleteTest.java | 78 2 files changed, 111 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/5224a13e/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java -- diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java index bb418e2..4a4ba2d 100644 --- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java +++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java @@ -20,17 +20,19 @@ import java.io.IOException; import java.util.List; import org.apache.camel.Exchange; +import org.apache.camel.Ordered; import org.apache.camel.Processor; import org.apache.camel.component.file.GenericFile; import org.apache.camel.component.file.GenericFileConsumer; import org.apache.camel.component.file.GenericFileOperationFailedException; +import org.apache.camel.support.SynchronizationAdapter; /** * Base class for remote file consumers. */ public abstract class RemoteFileConsumerT extends GenericFileConsumerT { -protected boolean loggedIn; -protected boolean loggedInWarning; +protected transient boolean loggedIn; +protected transient boolean loggedInWarning; public RemoteFileConsumer(RemoteFileEndpointT endpoint, Processor processor, RemoteFileOperationsT operations) { super(endpoint, processor, operations); @@ -87,10 +89,6 @@ public abstract class RemoteFileConsumerT extends GenericFileConsumerT { if (log.isTraceEnabled()) { log.trace(postPollCheck on + getEndpoint().getConfiguration().remoteServerInformation()); } -if (getEndpoint().isDisconnect()) { -log.trace(postPollCheck disconnect from: {}, getEndpoint()); -disconnect(); -} } @Override @@ -98,6 +96,35 @@ public abstract class RemoteFileConsumerT extends GenericFileConsumerT { // mark the exchange to be processed synchronously as the ftp client is not thread safe // and we must execute the callbacks in the same thread as this consumer exchange.setProperty(Exchange.UNIT_OF_WORK_PROCESS_SYNC, Boolean.TRUE); + +// defer disconnect til the UoW is complete - but only the last exchange from the batch should do that +boolean isLast = exchange.getProperty(Exchange.BATCH_COMPLETE, true, Boolean.class); +if (isLast getEndpoint().isDisconnect()) { +exchange.addOnCompletion(new SynchronizationAdapter() { +@Override +public void onDone(Exchange exchange) { +log.trace(postPollCheck disconnect from: {}, getEndpoint()); +disconnect(); +} + +@Override +public boolean allowHandover() { +// do not allow handover as we must execute the callbacks in the same thread as this consumer +return false; +} + +@Override +public int getOrder() { +// we want to disconnect last +return Ordered.LOWEST; +} + +public String toString() { +return Disconnect; +} +}); +} + return super.processExchange(exchange); } http://git-wip-us.apache.org/repos/asf/camel/blob/5224a13e/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/SftpPollEnrichConsumeWithDisconnectAndDeleteTest.java -- diff --git
[2/2] camel git commit: CAMEL-7565: SFTP using PollEnrich with disconnect=true and delete=true does NOT delete the file.
CAMEL-7565: SFTP using PollEnrich with disconnect=true and delete=true does NOT delete the file. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/adf655d5 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/adf655d5 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/adf655d5 Branch: refs/heads/camel-2.15.x Commit: adf655d54abd0fb67326f4b50d35d5ee2676af7e Parents: 8e9b488 Author: Claus Ibsen davscl...@apache.org Authored: Sat Mar 21 12:12:36 2015 +0100 Committer: Claus Ibsen davscl...@apache.org Committed: Sat Mar 21 12:13:25 2015 +0100 -- .../file/remote/RemoteFileConsumer.java | 39 -- ...nrichConsumeWithDisconnectAndDeleteTest.java | 78 2 files changed, 111 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/camel/blob/adf655d5/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java -- diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java index bb418e2..4a4ba2d 100644 --- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java +++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java @@ -20,17 +20,19 @@ import java.io.IOException; import java.util.List; import org.apache.camel.Exchange; +import org.apache.camel.Ordered; import org.apache.camel.Processor; import org.apache.camel.component.file.GenericFile; import org.apache.camel.component.file.GenericFileConsumer; import org.apache.camel.component.file.GenericFileOperationFailedException; +import org.apache.camel.support.SynchronizationAdapter; /** * Base class for remote file consumers. */ public abstract class RemoteFileConsumerT extends GenericFileConsumerT { -protected boolean loggedIn; -protected boolean loggedInWarning; +protected transient boolean loggedIn; +protected transient boolean loggedInWarning; public RemoteFileConsumer(RemoteFileEndpointT endpoint, Processor processor, RemoteFileOperationsT operations) { super(endpoint, processor, operations); @@ -87,10 +89,6 @@ public abstract class RemoteFileConsumerT extends GenericFileConsumerT { if (log.isTraceEnabled()) { log.trace(postPollCheck on + getEndpoint().getConfiguration().remoteServerInformation()); } -if (getEndpoint().isDisconnect()) { -log.trace(postPollCheck disconnect from: {}, getEndpoint()); -disconnect(); -} } @Override @@ -98,6 +96,35 @@ public abstract class RemoteFileConsumerT extends GenericFileConsumerT { // mark the exchange to be processed synchronously as the ftp client is not thread safe // and we must execute the callbacks in the same thread as this consumer exchange.setProperty(Exchange.UNIT_OF_WORK_PROCESS_SYNC, Boolean.TRUE); + +// defer disconnect til the UoW is complete - but only the last exchange from the batch should do that +boolean isLast = exchange.getProperty(Exchange.BATCH_COMPLETE, true, Boolean.class); +if (isLast getEndpoint().isDisconnect()) { +exchange.addOnCompletion(new SynchronizationAdapter() { +@Override +public void onDone(Exchange exchange) { +log.trace(postPollCheck disconnect from: {}, getEndpoint()); +disconnect(); +} + +@Override +public boolean allowHandover() { +// do not allow handover as we must execute the callbacks in the same thread as this consumer +return false; +} + +@Override +public int getOrder() { +// we want to disconnect last +return Ordered.LOWEST; +} + +public String toString() { +return Disconnect; +} +}); +} + return super.processExchange(exchange); } http://git-wip-us.apache.org/repos/asf/camel/blob/adf655d5/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/SftpPollEnrichConsumeWithDisconnectAndDeleteTest.java -- diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/SftpPollEnrichConsumeWithDisconnectAndDeleteTest.java