This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit d8c8123fbc3e14528a776ce8c4eb179d7445cc5e
Author: Guillaume Nodet <gno...@gmail.com>
AuthorDate: Thu Oct 4 16:02:12 2018 +0200

    Extract org.apache.camel.api.management packages
---
 bom/camel-bom/pom.xml                              |   5 +
 camel-api/pom.xml                                  |   7 +
 .../java/org/apache/camel/spi/RouteContext.java    |   2 +-
 .../java/org/apache/camel/spi/RouteController.java |   3 -
 camel-core/pom.xml                                 |  17 +
 .../apache/camel/impl/DefaultRouteController.java  |   2 +-
 .../camel/impl/SupervisingRouteController.java     |   2 +-
 .../impl/cluster/ClusteredRouteController.java     |   2 +-
 .../camel/management/mbean/ManagedComponent.java   | 174 +++++++-
 .../camel/management/mbean/ManagedRoute.java       |  30 +-
 .../mbean/ManagedStreamCachingStrategy.java        |  39 +-
 .../camel/management/ManagedComponentTest.java     |  14 +-
 .../camel/management/ManagementTestSupport.java    |  11 +-
 {camel-api => camel-management-api}/pom.xml        |  13 +-
 .../JmxNotificationBroadcasterAware.java           |   0
 .../camel/api/management/ManagedAttribute.java     |   0
 .../camel/api/management/ManagedInstance.java      |   0
 .../camel/api/management/ManagedNotification.java  |   0
 .../camel/api/management/ManagedNotifications.java |   0
 .../camel/api/management/ManagedOperation.java     |   0
 .../camel/api/management/ManagedResource.java      |   0
 .../camel/api/management/NotificationSender.java   |   0
 .../api/management/NotificationSenderAware.java    |   0
 .../mbean/BacklogTracerEventMessage.java           |   0
 .../api/management/mbean/CamelOpenMBeanTypes.java  |   0
 .../mbean/ComponentVerifierExtension.java          | 471 +++++++++++++++++++++
 .../mbean/ManagedAggregateProcessorMBean.java      |   0
 .../ManagedAsyncProcessorAwaitManagerMBean.java    |   0
 .../mbean/ManagedBacklogDebuggerMBean.java         |   0
 .../mbean/ManagedBacklogTracerMBean.java           |   0
 .../api/management/mbean/ManagedBeanMBean.java     |   0
 .../mbean/ManagedBrowsableEndpointMBean.java       |   0
 .../management/mbean/ManagedCamelContextMBean.java |   0
 .../management/mbean/ManagedCamelHealthMBean.java  |   0
 .../api/management/mbean/ManagedChoiceMBean.java   |   0
 .../management/mbean/ManagedClaimCheckMBean.java   |   0
 .../mbean/ManagedClusterServiceMBean.java          |   0
 .../management/mbean/ManagedComponentMBean.java    |   1 -
 .../mbean/ManagedConsumerCacheMBean.java           |   0
 .../api/management/mbean/ManagedConsumerMBean.java |   0
 .../management/mbean/ManagedConvertBodyMBean.java  |   0
 .../api/management/mbean/ManagedCounterMBean.java  |   0
 .../mbean/ManagedCustomLoadBalancerMBean.java      |   0
 .../management/mbean/ManagedDataFormatMBean.java   |   0
 .../api/management/mbean/ManagedDelayerMBean.java  |   0
 .../mbean/ManagedDynamicRouterMBean.java           |   0
 .../api/management/mbean/ManagedEndpointMBean.java |   0
 .../mbean/ManagedEndpointRegistryMBean.java        |   0
 .../api/management/mbean/ManagedEnricherMBean.java |   0
 .../management/mbean/ManagedErrorHandlerMBean.java |   0
 .../mbean/ManagedExtendedInformation.java          |   0
 .../mbean/ManagedFailoverLoadBalancerMBean.java    |   0
 .../api/management/mbean/ManagedFilterMBean.java   |   0
 .../mbean/ManagedIdempotentConsumerMBean.java      |   0
 .../mbean/ManagedInflightRepositoryMBean.java      |   0
 .../api/management/mbean/ManagedLogMBean.java      |   0
 .../api/management/mbean/ManagedLoopMBean.java     |   0
 .../api/management/mbean/ManagedMarshalMBean.java  |   0
 .../management/mbean/ManagedMulticastMBean.java    |   0
 .../mbean/ManagedPerformanceCounterMBean.java      |   0
 .../management/mbean/ManagedPollEnricherMBean.java |   0
 .../api/management/mbean/ManagedProcessMBean.java  |   0
 .../management/mbean/ManagedProcessorMBean.java    |   0
 .../mbean/ManagedProducerCacheMBean.java           |   0
 .../api/management/mbean/ManagedProducerMBean.java |   0
 .../mbean/ManagedRandomLoadBalancerMBean.java      |   0
 .../mbean/ManagedRecipientListMBean.java           |   0
 .../management/mbean/ManagedRemoveHeaderMBean.java |   0
 .../mbean/ManagedRemoveHeadersMBean.java           |   0
 .../mbean/ManagedRemovePropertiesMBean.java        |   0
 .../mbean/ManagedRemovePropertyMBean.java          |   0
 .../management/mbean/ManagedResequencerMBean.java  |   0
 .../mbean/ManagedResourceEndpointMBean.java        |   0
 .../management/mbean/ManagedRestRegistryMBean.java |   0
 .../api/management/mbean/ManagedRollbackMBean.java |   0
 .../mbean/ManagedRoundRobinLoadBalancerMBean.java  |   0
 .../mbean/ManagedRouteControllerMBean.java         |   0
 .../api/management/mbean/ManagedRouteMBean.java    |   3 +-
 .../management/mbean/ManagedRoutingSlipMBean.java  |   0
 .../mbean/ManagedRuntimeCamelCatalogMBean.java     |   0
 .../mbean/ManagedRuntimeEndpointRegistryMBean.java |   0
 .../mbean/ManagedSamplingThrottlerMBean.java       |   0
 .../mbean/ManagedSchedulePollConsumerMBean.java    |   0
 .../api/management/mbean/ManagedScriptMBean.java   |   0
 .../mbean/ManagedSendDynamicProcessorMBean.java    |   0
 .../mbean/ManagedSendProcessorMBean.java           |   0
 .../api/management/mbean/ManagedServiceMBean.java  |   0
 .../api/management/mbean/ManagedSetBodyMBean.java  |   0
 .../mbean/ManagedSetExchangePatternMBean.java      |   0
 .../management/mbean/ManagedSetHeaderMBean.java    |   0
 .../management/mbean/ManagedSetPropertyMBean.java  |   0
 .../api/management/mbean/ManagedSplitterMBean.java |   0
 .../mbean/ManagedStickyLoadBalancerMBean.java      |   0
 .../api/management/mbean/ManagedStopMBean.java     |   0
 .../mbean/ManagedStreamCachingStrategyMBean.java   |  12 +-
 .../mbean/ManagedSuspendableRouteMBean.java        |   0
 .../management/mbean/ManagedThreadPoolMBean.java   |   0
 .../api/management/mbean/ManagedThreadsMBean.java  |   0
 .../management/mbean/ManagedThrottlerMBean.java    |   0
 ...ManagedThrottlingExceptionRoutePolicyMBean.java |   0
 .../ManagedThrottlingInflightRoutePolicyMBean.java |   0
 .../mbean/ManagedThroughputLoggerMBean.java        |   0
 .../mbean/ManagedThrowExceptionMBean.java          |   0
 .../mbean/ManagedTopicLoadBalancerMBean.java       |   0
 .../management/mbean/ManagedTransformMBean.java    |   0
 .../mbean/ManagedTransformerRegistryMBean.java     |   0
 .../mbean/ManagedTypeConverterRegistryMBean.java   |   0
 .../management/mbean/ManagedUnmarshalMBean.java    |   0
 .../api/management/mbean/ManagedValidateMBean.java |   0
 .../mbean/ManagedValidatorRegistryMBean.java       |   0
 .../mbean/ManagedWeightedBalancerMBean.java        |   0
 .../api/management/mbean/ManagedWireTapMBean.java  |   0
 .../camel/api/management/mbean/RouteError.java     |  30 +-
 .../apache/camel/api/management/mbean/package.html |   0
 .../org/apache/camel/api/management/package.html   |   0
 parent/pom.xml                                     |   5 +
 .../camel-spring-boot-dependencies/pom.xml         |   5 +
 pom.xml                                            |   1 +
 .../meta-annotations/pom.xml                       |  30 +-
 .../java/org/apache/camel/meta}/Experimental.java  |   2 +-
 tooling/pom.xml                                    |   1 +
 121 files changed, 824 insertions(+), 58 deletions(-)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 612af60..f8ea547 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -1610,6 +1610,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-management-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-manual</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/camel-api/pom.xml b/camel-api/pom.xml
index 87d6aa0..6875740 100644
--- a/camel-api/pom.xml
+++ b/camel-api/pom.xml
@@ -45,6 +45,13 @@
 
     <dependency>
       <groupId>org.apache.camel</groupId>
+      <artifactId>meta-annotations</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
       <artifactId>camel-util</artifactId>
       <version>${project.version}</version>
     </dependency>
diff --git a/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java 
b/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
index 7124450..10b7eac 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
@@ -22,7 +22,7 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.EndpointAware;
-import org.apache.camel.Experimental;
+import org.apache.camel.meta.Experimental;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeConfiguration;
diff --git a/camel-api/src/main/java/org/apache/camel/spi/RouteController.java 
b/camel-api/src/main/java/org/apache/camel/spi/RouteController.java
index 5cb8600..b6f39b5 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/RouteController.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/RouteController.java
@@ -19,11 +19,8 @@ package org.apache.camel.spi;
 import java.util.Collection;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.Experimental;
 import org.apache.camel.Route;
-import org.apache.camel.Service;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.StaticService;
 
diff --git a/camel-core/pom.xml b/camel-core/pom.xml
index 936dd22..8864537 100644
--- a/camel-core/pom.xml
+++ b/camel-core/pom.xml
@@ -134,6 +134,15 @@
     <!-- it will be shade into camel-core by bnd plugin -->
     <dependency>
       <groupId>org.apache.camel</groupId>
+      <artifactId>meta-annotations</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <!-- required dependencies by camel-core -->
+    <!-- it will be shade into camel-core by bnd plugin -->
+    <dependency>
+      <groupId>org.apache.camel</groupId>
       <artifactId>camel-util</artifactId>
       <version>${project.version}</version>
     </dependency>
@@ -147,6 +156,14 @@
     </dependency>
 
     <!-- required dependencies by camel-core -->
+    <!-- it will be shade into camel-core by bnd plugin -->
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-management-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <!-- required dependencies by camel-core -->
     <!-- which we shade into camel-core so its available for everybody out of 
the box -->
     <dependency>
       <groupId>com.github.ben-manes.caffeine</groupId>
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java 
b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
index 766423a..e98d019 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java
@@ -21,9 +21,9 @@ import java.util.Collections;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.Experimental;
 import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
+import org.apache.camel.meta.Experimental;
 import org.apache.camel.spi.RouteController;
 import org.apache.camel.support.ServiceSupport;
 
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
 
b/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
index b832239..a607c0a 100644
--- 
a/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
+++ 
b/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java
@@ -38,13 +38,13 @@ import java.util.stream.Collectors;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
-import org.apache.camel.Experimental;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.StartupListener;
 import org.apache.camel.management.event.CamelContextStartedEvent;
+import org.apache.camel.meta.Experimental;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.HasId;
 import org.apache.camel.spi.RouteContext;
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
 
b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
index cc8921f..aae4459 100644
--- 
a/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
+++ 
b/camel-core/src/main/java/org/apache/camel/impl/cluster/ClusteredRouteController.java
@@ -31,12 +31,12 @@ import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.Experimental;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.cluster.CamelClusterService;
 import org.apache.camel.impl.DefaultRouteController;
+import org.apache.camel.meta.Experimental;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.spi.RoutePolicyFactory;
diff --git 
a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
 
b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
index fe12abb..770f9b7 100644
--- 
a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
+++ 
b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedComponent.java
@@ -17,9 +17,19 @@
 package org.apache.camel.management.mbean;
 
 import java.io.IOException;
+import java.util.AbstractList;
+import java.util.AbstractMap;
+import java.util.AbstractSet;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Optional;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.CompositeDataSupport;
@@ -34,8 +44,17 @@ import org.apache.camel.StatefulService;
 import org.apache.camel.api.management.ManagedInstance;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.CamelOpenMBeanTypes;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.Result;
+import 
org.apache.camel.api.management.mbean.ComponentVerifierExtension.Result.Status;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.Scope;
+import 
org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError;
+import 
org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.ExceptionAttribute;
+import 
org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.GroupAttribute;
+import 
org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.HttpAttribute;
+import 
org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.StandardCode;
 import org.apache.camel.api.management.mbean.ManagedComponentMBean;
-import org.apache.camel.component.extension.ComponentVerifierExtension;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension;
+import 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.Attribute;
 import org.apache.camel.component.extension.verifier.ResultBuilder;
 import org.apache.camel.component.extension.verifier.ResultErrorBuilder;
 import org.apache.camel.spi.ManagementStrategy;
@@ -139,23 +158,160 @@ public class ManagedComponent implements 
ManagedInstance, ManagedComponentMBean
 
     @Override
     public boolean isVerifySupported() {
-        return 
component.getExtension(ComponentVerifierExtension.class).isPresent();
+        return 
component.getExtension(org.apache.camel.component.extension.ComponentVerifierExtension.class).isPresent();
     }
 
     @Override
     public ComponentVerifierExtension.Result verify(String scope, Map<String, 
String> options) {
         try {
-            ComponentVerifierExtension.Scope scopeEnum = 
ComponentVerifierExtension.Scope.fromString(scope);
-            Optional<ComponentVerifierExtension> verifier = 
component.getExtension(ComponentVerifierExtension.class);
+            
org.apache.camel.component.extension.ComponentVerifierExtension.Scope scopeEnum 
= 
org.apache.camel.component.extension.ComponentVerifierExtension.Scope.fromString(scope);
+            
Optional<org.apache.camel.component.extension.ComponentVerifierExtension> 
verifier = 
component.getExtension(org.apache.camel.component.extension.ComponentVerifierExtension.class);
             if (verifier.isPresent()) {
-                return verifier.get().verify(scopeEnum, 
CastUtils.cast(options));
+                
org.apache.camel.component.extension.ComponentVerifierExtension.Result result = 
verifier.get().verify(scopeEnum, CastUtils.cast(options));
+                String rstatus = result.getStatus().toString();
+                String rscope = result.getScope().toString();
+                return new ResultImpl(Scope.valueOf(rscope), 
Status.valueOf(rstatus),
+                        
result.getErrors().stream().map(this::translate).collect(Collectors.toList()));
+
             } else {
-                return ResultBuilder.unsupported().build();
+                return new ResultImpl(Scope.PARAMETERS, Status.UNSUPPORTED, 
Collections.emptyList());
             }
         } catch (IllegalArgumentException e) {
-            return 
ResultBuilder.withStatus(ComponentVerifierExtension.Result.Status.UNSUPPORTED)
-                .error(ResultErrorBuilder.withUnsupportedScope(scope).build())
-                .build();
+            return new ResultImpl(Scope.PARAMETERS, Status.UNSUPPORTED, 
Collections.singletonList(
+                    new VerificationErrorImpl(StandardCode.UNSUPPORTED_SCOPE, 
"Unsupported scope: " + scope)));
+        }
+    }
+
+    private VerificationError 
translate(org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError
 error) {
+        return new VerificationErrorImpl(translate(error.getCode()), 
error.getDescription(),
+                error.getParameterKeys(), translate(error.getDetails()));
+    }
+
+    private Map<VerificationError.Attribute, Object> 
translate(Map<org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.Attribute,
 Object> details) {
+        return details.entrySet().stream().collect(Collectors.toMap(e -> 
translate(e.getKey()), Entry::getValue));
+    }
+
+    private VerificationError.Attribute 
translate(org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.Attribute
 attribute) {
+        if (attribute == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.GroupAttribute.GROUP_NAME)
 {
+            return GroupAttribute.GROUP_NAME;
+        } else if (attribute == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.GroupAttribute.GROUP_OPTIONS)
 {
+            return GroupAttribute.GROUP_OPTIONS;
+        } else if (attribute == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.HttpAttribute.HTTP_CODE)
 {
+            return HttpAttribute.HTTP_CODE;
+        } else if (attribute == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.HttpAttribute.HTTP_REDIRECT)
 {
+            return HttpAttribute.HTTP_REDIRECT;
+        } else if (attribute == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.HttpAttribute.HTTP_TEXT)
 {
+            return HttpAttribute.HTTP_TEXT;
+        } else if (attribute == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.ExceptionAttribute.EXCEPTION_CLASS)
 {
+            return ExceptionAttribute.EXCEPTION_CLASS;
+        } else if (attribute == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.ExceptionAttribute.EXCEPTION_INSTANCE)
 {
+            return ExceptionAttribute.EXCEPTION_INSTANCE;
+        }  else if (attribute != null) {
+            return VerificationError.asAttribute(attribute.getName());
+        } else {
+            return null;
+        }
+    }
+
+    private VerificationError.Code 
translate(org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.Code
 code) {
+        if (code == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.AUTHENTICATION)
 {
+            return StandardCode.AUTHENTICATION;
+        } else if (code == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.EXCEPTION)
 {
+            return StandardCode.EXCEPTION;
+        } else if (code == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.INTERNAL)
 {
+            return StandardCode.INTERNAL;
+        } else if (code == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.MISSING_PARAMETER)
 {
+            return StandardCode.MISSING_PARAMETER;
+        } else if (code == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.UNKNOWN_PARAMETER)
 {
+            return StandardCode.UNKNOWN_PARAMETER;
+        } else if (code == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.ILLEGAL_PARAMETER)
 {
+            return StandardCode.ILLEGAL_PARAMETER;
+        } else if (code == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.ILLEGAL_PARAMETER_GROUP_COMBINATION)
 {
+            return StandardCode.ILLEGAL_PARAMETER_GROUP_COMBINATION;
+        } else if (code == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.ILLEGAL_PARAMETER_VALUE)
 {
+            return StandardCode.ILLEGAL_PARAMETER_VALUE;
+        } else if (code == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.INCOMPLETE_PARAMETER_GROUP)
 {
+            return StandardCode.ILLEGAL_PARAMETER_GROUP_COMBINATION;
+        } else if (code == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.UNSUPPORTED)
 {
+            return StandardCode.UNSUPPORTED;
+        } else if (code == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.UNSUPPORTED_SCOPE)
 {
+            return StandardCode.UNSUPPORTED_SCOPE;
+        } else if (code == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.UNSUPPORTED_COMPONENT)
 {
+            return StandardCode.UNSUPPORTED_COMPONENT;
+        } else if (code == 
org.apache.camel.component.extension.ComponentVerifierExtension.VerificationError.StandardCode.GENERIC)
 {
+            return StandardCode.GENERIC;
+        } else if (code != null) {
+            return VerificationError.asCode(code.getName());
+        } else {
+            return null;
+        }
+    }
+
+    public static class VerificationErrorImpl implements VerificationError {
+        private final Code code;
+        private final String description;
+        private final Set<String> parameterKeys;
+        private final Map<Attribute, Object> details;
+
+        public VerificationErrorImpl(Code code, String description) {
+            this.code = code;
+            this.description = description;
+            this.parameterKeys = Collections.emptySet();
+            this.details = Collections.emptyMap();
+        }
+
+        public VerificationErrorImpl(Code code, String description, 
Set<String> parameterKeys, Map<Attribute, Object> details) {
+            this.code = code;
+            this.description = description;
+            this.parameterKeys = parameterKeys;
+            this.details = details;
+        }
+
+        @Override
+        public Code getCode() {
+            return code;
+        }
+
+        @Override
+        public String getDescription() {
+            return description;
+        }
+
+        @Override
+        public Set<String> getParameterKeys() {
+            return parameterKeys;
+        }
+
+        @Override
+        public Map<Attribute, Object> getDetails() {
+            return details;
+        }
+    }
+
+    public static class ResultImpl implements Result {
+        private final Scope scope;
+        private final Status status;
+        private final List<VerificationError> errors;
+
+        public ResultImpl(Scope scope, Status status, List<VerificationError> 
errors) {
+            this.scope = scope;
+            this.status = status;
+            this.errors = errors;
+        }
+
+        @Override
+        public Scope getScope() {
+            return scope;
+        }
+
+        @Override
+        public Status getStatus() {
+            return status;
+        }
+
+        @Override
+        public List<VerificationError> getErrors() {
+            return errors;
         }
     }
 }
diff --git 
a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java 
b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
index 322f524..c124945 100644
--- 
a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
+++ 
b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
@@ -52,12 +52,12 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.CamelOpenMBeanTypes;
 import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
+import org.apache.camel.api.management.mbean.RouteError;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.ModelHelper;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.ManagementStrategy;
-import org.apache.camel.spi.RouteError;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.XmlLineNumberParser;
@@ -546,7 +546,33 @@ public class ManagedRoute extends 
ManagedPerformanceCounter implements TimerList
 
     @Override
     public RouteError getLastError() {
-        return route.getRouteContext().getLastError();
+        org.apache.camel.spi.RouteError error = 
route.getRouteContext().getLastError();
+        if (error == null) {
+            return null;
+        } else {
+            return new RouteError() {
+                @Override
+                public Phase getPhase() {
+                    if (error.getPhase() != null) {
+                        switch (error.getPhase()) {
+                            case START: return Phase.START;
+                            case STOP: return Phase.STOP;
+                            case SUSPEND: return Phase.SUSPEND;
+                            case RESUME: return Phase.RESUME;
+                            case SHUTDOWN: return Phase.SHUTDOWN;
+                            case REMOVE: return Phase.REMOVE;
+                            default: throw new IllegalStateException();
+                        }
+                    }
+                    return null;
+                }
+
+                @Override
+                public Throwable getException() {
+                    return error.getException();
+                }
+            };
+        }
     }
 
     /**
diff --git 
a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
 
b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
index cf8c371..4cb5efc 100644
--- 
a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
+++ 
b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
@@ -69,12 +69,39 @@ public class ManagedStreamCachingStrategy extends 
ManagedService implements Mana
         return streamCachingStrategy.getSpoolUsedHeapMemoryThreshold();
     }
 
-    public void 
setSpoolUsedHeapMemoryLimit(StreamCachingStrategy.SpoolUsedHeapMemoryLimit 
limit) {
-        streamCachingStrategy.setSpoolUsedHeapMemoryLimit(limit);
-    }
-
-    public StreamCachingStrategy.SpoolUsedHeapMemoryLimit 
getSpoolUsedHeapMemoryLimit() {
-        return streamCachingStrategy.getSpoolUsedHeapMemoryLimit();
+    public void setSpoolUsedHeapMemoryLimit(SpoolUsedHeapMemoryLimit limit) {
+        StreamCachingStrategy.SpoolUsedHeapMemoryLimit l;
+        if (limit == null) {
+            l = null;
+        } else {
+            switch (limit) {
+                case Committed:
+                    l = 
StreamCachingStrategy.SpoolUsedHeapMemoryLimit.Committed;
+                    break;
+                case Max:
+                    l = StreamCachingStrategy.SpoolUsedHeapMemoryLimit.Max;
+                    break;
+                default:
+                    throw new IllegalStateException();
+            }
+        }
+        streamCachingStrategy.setSpoolUsedHeapMemoryLimit(l);
+    }
+
+    public SpoolUsedHeapMemoryLimit getSpoolUsedHeapMemoryLimit() {
+        StreamCachingStrategy.SpoolUsedHeapMemoryLimit l = 
streamCachingStrategy.getSpoolUsedHeapMemoryLimit();
+        if (l == null) {
+            return null;
+        } else {
+            switch (l) {
+                case Committed:
+                    return SpoolUsedHeapMemoryLimit.Committed;
+                case Max:
+                    return SpoolUsedHeapMemoryLimit.Max;
+                default:
+                    throw new IllegalStateException();
+            }
+        }
     }
 
     public void setBufferSize(int bufferSize) {
diff --git 
a/camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java
 
b/camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java
index 45d611a..a4c4523 100644
--- 
a/camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java
+++ 
b/camel-core/src/test/java/org/apache/camel/management/ManagedComponentTest.java
@@ -20,14 +20,18 @@ import java.util.Collections;
 import java.util.Map;
 
 import javax.management.MBeanServer;
+import javax.management.MBeanServerConnection;
 import javax.management.ObjectName;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.direct.DirectComponent;
-import org.apache.camel.component.extension.ComponentVerifierExtension;
-import org.apache.camel.component.extension.ComponentVerifierExtension.Result;
-import org.apache.camel.component.extension.ComponentVerifierExtension.Scope;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.Result;
+import org.apache.camel.api.management.mbean.ComponentVerifierExtension.Scope;
 import 
org.apache.camel.component.extension.verifier.DefaultComponentVerifierExtension;
 import org.apache.camel.component.extension.verifier.ResultBuilder;
 import org.apache.camel.support.DefaultComponent;
@@ -41,6 +45,7 @@ public class ManagedComponentTest extends 
ManagementTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
+        
context.getManagementStrategy().getManagementAgent().setCreateConnector(true);
         context.addComponent("my-verifiable-component", new 
MyVerifiableComponent());
         context.addComponent("direct", new DirectComponent());
 
@@ -74,7 +79,8 @@ public class ManagedComponentTest extends 
ManagementTestSupport {
             return;
         }
 
-        MBeanServer mbeanServer = getMBeanServer();
+        JMXConnector connector = JMXConnectorFactory.connect(new 
JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi/camel"));
+        MBeanServerConnection mbeanServer = 
connector.getMBeanServerConnection();
 
         ObjectName on = 
ObjectName.getInstance("org.apache.camel:context=camel-1,type=components,name=\"my-verifiable-component\"");
         assertTrue(mbeanServer.isRegistered(on));
diff --git 
a/camel-core/src/test/java/org/apache/camel/management/ManagementTestSupport.java
 
b/camel-core/src/test/java/org/apache/camel/management/ManagementTestSupport.java
index 6bae86d..e61f41a 100644
--- 
a/camel-core/src/test/java/org/apache/camel/management/ManagementTestSupport.java
+++ 
b/camel-core/src/test/java/org/apache/camel/management/ManagementTestSupport.java
@@ -16,9 +16,12 @@
  */
 package org.apache.camel.management;
 
+import java.io.IOException;
+
 import javax.management.InstanceNotFoundException;
 import javax.management.MBeanException;
 import javax.management.MBeanServer;
+import javax.management.MBeanServerConnection;
 import javax.management.ObjectName;
 import javax.management.ReflectionException;
 
@@ -39,14 +42,14 @@ public abstract class ManagementTestSupport extends 
ContextTestSupport {
     }
 
     @SuppressWarnings("unchecked")
-    protected <T> T invoke(MBeanServer server, ObjectName name, String 
operationName)
-        throws InstanceNotFoundException, MBeanException, ReflectionException {
+    protected <T> T invoke(MBeanServerConnection server, ObjectName name, 
String operationName)
+            throws InstanceNotFoundException, MBeanException, 
ReflectionException, IOException {
         return (T)server.invoke(name, operationName, null, null);
     }
 
     @SuppressWarnings("unchecked")
-    protected <T> T invoke(MBeanServer server, ObjectName name, String 
operationName, Object params[], String signature[])
-            throws InstanceNotFoundException, MBeanException, 
ReflectionException {
+    protected <T> T invoke(MBeanServerConnection server, ObjectName name, 
String operationName, Object params[], String signature[])
+            throws InstanceNotFoundException, MBeanException, 
ReflectionException, IOException {
         return (T)server.invoke(name, operationName, params, signature);
     }
 }
diff --git a/camel-api/pom.xml b/camel-management-api/pom.xml
similarity index 97%
copy from camel-api/pom.xml
copy to camel-management-api/pom.xml
index 87d6aa0..67f61c3 100644
--- a/camel-api/pom.xml
+++ b/camel-management-api/pom.xml
@@ -29,10 +29,10 @@
     <relativePath>../parent</relativePath>
   </parent>
 
-  <artifactId>camel-api</artifactId>
+  <artifactId>camel-management-api</artifactId>
   <packaging>jar</packaging>
-  <name>Camel :: API</name>
-  <description>The Camel API</description>
+  <name>Camel :: Management API</name>
+  <description>The Camel Management API</description>
 
   <dependencies>
 
@@ -45,6 +45,13 @@
 
     <dependency>
       <groupId>org.apache.camel</groupId>
+      <artifactId>meta-annotations</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
       <artifactId>camel-util</artifactId>
       <version>${project.version}</version>
     </dependency>
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/JmxNotificationBroadcasterAware.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/JmxNotificationBroadcasterAware.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/JmxNotificationBroadcasterAware.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/JmxNotificationBroadcasterAware.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/ManagedAttribute.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedAttribute.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/ManagedAttribute.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/ManagedAttribute.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/ManagedInstance.java 
b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedInstance.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/ManagedInstance.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/ManagedInstance.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/ManagedNotification.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedNotification.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/ManagedNotification.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/ManagedNotification.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/ManagedNotifications.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedNotifications.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/ManagedNotifications.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/ManagedNotifications.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/ManagedOperation.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedOperation.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/ManagedOperation.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/ManagedOperation.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/ManagedResource.java 
b/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedResource.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/ManagedResource.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/ManagedResource.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/NotificationSender.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/NotificationSender.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/NotificationSender.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/NotificationSender.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/NotificationSenderAware.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/NotificationSenderAware.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/NotificationSenderAware.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/NotificationSenderAware.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/BacklogTracerEventMessage.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/BacklogTracerEventMessage.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/BacklogTracerEventMessage.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/BacklogTracerEventMessage.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
diff --git 
a/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ComponentVerifierExtension.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ComponentVerifierExtension.java
new file mode 100644
index 0000000..e65f2ca
--- /dev/null
+++ 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ComponentVerifierExtension.java
@@ -0,0 +1,471 @@
+/**
+ * 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 java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import 
org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.Attribute;
+import 
org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.Code;
+import 
org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.ExceptionAttribute;
+import 
org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.GroupAttribute;
+import 
org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.HttpAttribute;
+import 
org.apache.camel.api.management.mbean.ComponentVerifierExtension.VerificationError.StandardCode;
+
+/**
+ * Defines the interface used for validating component/endpoint parameters. 
The central method of this
+ * interface is {@link ManagedComponentMBean#verify(String, Map)} which takes 
a scope and a set of parameters which should be verified.
+ * <p/>
+ * The return value is a {@link ComponentVerifierExtension.Result} of the 
verification
+ *
+ */
+public final class ComponentVerifierExtension {
+
+    /**
+     * The result of a verification
+     */
+    public interface Result extends Serializable {
+
+        /**
+         * Status of the verification
+         */
+        enum Status {
+            /**
+             * Verification succeeded
+             */
+            OK,
+            /**
+             * Error occurred during the verification
+             */
+            ERROR,
+            /**
+             * Verification is not supported. This can depend on the given 
scope.
+             */
+            UNSUPPORTED
+        }
+
+        /**
+         * Scope of the verification. This is the scope given to the call to 
{@link ManagedComponentMBean#verify(String, Map)}  and
+         * can be used for correlation.
+         *
+         * @return the scope against which the parameters have been validated.
+         */
+        Scope getScope();
+
+        /**
+         * Result of the validation as status. This should be the first datum 
to check after a verification
+         * happened.
+         *
+         * @return the status
+         */
+        Status getStatus();
+
+        /**
+         * Collection of errors happened for the verification. This list is 
empty (but non null) if the verification
+         * succeeded.
+         *
+         * @return a list of errors. Can be empty when verification was 
successful
+         */
+        List<VerificationError> getErrors();
+    }
+
+    /**
+     * The scope defines how the parameters should be verified.
+     */
+    public enum Scope {
+        /**
+         * Only validate the parameters for their <em>syntactic</em> 
soundness. Verifications in this scope should
+         * be as fast as possible
+         */
+        PARAMETERS,
+
+        /**
+         * Reach out to the backend and verify that a connection can be 
established. This means, if the verification
+         * in this scope succeeds, then it can safely be assumed that the 
component can be used.
+         */
+        CONNECTIVITY;
+
+        /**
+         * Get an instance of this scope from a string representation
+         *
+         * @param scope the scope as string, which can be in any case
+         * @return the scope enum represented by this string
+         */
+        public static Scope fromString(String scope) {
+            return Scope.valueOf(scope != null ? scope.toUpperCase() : null);
+        }
+    }
+
+    // 
=============================================================================================
+
+    /**
+     * This interface represents a detailed error in case when the 
verification fails.
+     */
+    public interface VerificationError extends Serializable {
+
+        /**
+         * The overall error code, which can be either a {@link StandardCode} 
or a custom code. It is
+         * recommended to stick to the predefined standard codes
+         *
+         * @return the general error code.
+         */
+        Code getCode();
+
+        /**
+         * A human readable description of the error in plain english
+         *
+         * @return the error description (if available)
+         */
+        String getDescription();
+
+        /**
+         * A set of input parameter names which fails the verification. These 
are keys to the parameter provided
+         * to {@link ManagedComponentMBean#verify(String, Map)}.
+         *
+         * @return the parameter names which are malformed and caused the 
failure of the validation
+         */
+        Set<String> getParameterKeys();
+
+        /**
+         * Details about the failed verification. The keys can be either 
predefined values
+         * ({@link ExceptionAttribute}, {@link HttpAttribute}, {@link 
GroupAttribute}) or it can be free-form
+         * custom keys specific to a component. The standard attributes are 
defined as enums in all uppercase (with
+         * underscore as separator), custom attributes are supposed to be in 
all lower case (also with underscores
+         * as separators)
+         *
+         * @return a number of key/value pair with additional information 
related to the verification.
+         */
+        Map<Attribute, Object> getDetails();
+
+        /**
+         * Get a single detail for a given attribute
+         *
+         * @param attribute the attribute to lookup
+         * @return the detail value or null if no such attribute exists
+         */
+        default Object getDetail(Attribute attribute) {
+            Map<Attribute, Object> details = getDetails();
+            if (details != null) {
+                return details.get(attribute);
+            }
+            return null;
+        }
+
+        /**
+         * Get a single detail for a given attribute
+         *
+         * @param attribute the attribute to lookup
+         * @return the detail value or null if no such attribute exists
+         */
+        default Object getDetail(String attribute) {
+            return getDetail(asAttribute(attribute));
+        }
+
+        /**
+         * Convert a string to an {@link Code}
+         *
+         * @param code the code to convert. It should be in all lower case 
(with
+         *             underscore as a separator) to avoid overlap with {@link 
StandardCode}
+         * @return error code
+         */
+        static Code asCode(String code) {
+            return new ErrorCode(code);
+        }
+
+        /**
+         * Convert a string to an {@link Attribute}
+         *
+         * @param attribute the string representation of an attribute to 
convert. It should be in all lower case (with
+         *                  underscore as a separator) to avoid overlap with 
standard attributes like {@link ExceptionAttribute},
+         *                  {@link HttpAttribute} or {@link GroupAttribute}
+         * @return generated attribute
+         */
+        static Attribute asAttribute(String attribute) {
+            return new ErrorAttribute(attribute);
+        }
+
+        /**
+         * Interface defining an error code. This is implemented by the {@link 
StandardCode} but also
+         * own code can be generated by implementing this interface. This is 
best done via {@link #asCode(String)}
+         * If possible, the standard codes should be reused
+         */
+        interface Code extends Serializable {
+            /**
+             * Name of the code. All uppercase for standard codes, all lower 
case for custom codes.
+             * Separator between two words is an underscore.
+             *
+             * @return code name
+             */
+            String name();
+
+            /**
+             * Bean style accessor to name.
+             * This is required for framework like Jackson using bean 
convention for object serialization.
+             *
+             * @return code name
+             */
+            default String getName() {
+                return name();
+            }
+        }
+
+        /**
+         * Standard set of error codes
+         */
+        interface StandardCode extends Code {
+            /**
+             * Authentication failed
+             */
+            StandardCode AUTHENTICATION = new 
StandardErrorCode("AUTHENTICATION");
+            /**
+             * An exception occurred
+             */
+            StandardCode EXCEPTION = new StandardErrorCode("EXCEPTION");
+            /**
+             * Internal error while performing the verification
+             */
+            StandardCode INTERNAL = new StandardErrorCode("INTERNAL");
+            /**
+             * A mandatory parameter is missing
+             */
+            StandardCode MISSING_PARAMETER = new 
StandardErrorCode("MISSING_PARAMETER");
+            /**
+             * A given parameter is not known to the component
+             */
+            StandardCode UNKNOWN_PARAMETER = new 
StandardErrorCode("UNKNOWN_PARAMETER");
+            /**
+             * A given parameter is illegal
+             */
+            StandardCode ILLEGAL_PARAMETER = new 
StandardErrorCode("ILLEGAL_PARAMETER");
+            /**
+             * A combination of parameters is illegal. See {@link 
VerificationError#getParameterKeys()} for the set
+             * of affected parameters
+             */
+            StandardCode ILLEGAL_PARAMETER_GROUP_COMBINATION = new 
StandardErrorCode("ILLEGAL_PARAMETER_GROUP_COMBINATION");
+            /**
+             * A parameter <em>value</em> is not valid
+             */
+            StandardCode ILLEGAL_PARAMETER_VALUE = new 
StandardErrorCode("ILLEGAL_PARAMETER_VALUE");
+            /**
+             * A group of parameters is not complete in order to be valid
+             */
+            StandardCode INCOMPLETE_PARAMETER_GROUP = new 
StandardErrorCode("INCOMPLETE_PARAMETER_GROUP");
+            /**
+             * The verification is not supported
+             */
+            StandardCode UNSUPPORTED = new StandardErrorCode("UNSUPPORTED");
+            /**
+             * The requested {@link Scope} is not supported
+             */
+            StandardCode UNSUPPORTED_SCOPE = new 
StandardErrorCode("UNSUPPORTED_SCOPE");
+            /**
+             * The requested {@link Component} is not supported
+             */
+            StandardCode UNSUPPORTED_COMPONENT = new 
StandardErrorCode("UNSUPPORTED_COMPONENT");
+            /**
+             * Generic error which is explained in more details with {@link 
VerificationError#getDetails()}
+             */
+            StandardCode GENERIC = new StandardErrorCode("GENERIC");
+        }
+
+        /**
+         * Interface defining an attribute which is a key for the detailed 
error messages.
+         */
+        interface Attribute extends Serializable {
+            /**
+             * Name of the attribute. All uppercase for standard attributes 
and all lower case for custom attributes.
+             * Separator between words is an underscore.
+             *
+             * @return attribute name
+             */
+            String name();
+
+            /**
+             * Bean style accessor to name;
+             * This is required for framework like Jackson using bean 
convention for object serialization.
+             *
+             * @return attribute name
+             */
+            default String getName() {
+                return name();
+            }
+        }
+
+        /**
+         * Attributes for details about an exception that was raised
+         */
+        interface ExceptionAttribute extends Attribute {
+            /**
+             * The exception object that has been thrown. Note that this can 
be a complex
+             * object and can cause large content when e.g. serialized as JSON
+             */
+            ExceptionAttribute EXCEPTION_INSTANCE = new 
ExceptionErrorAttribute("EXCEPTION_INSTANCE");
+            /**
+             * The exception class
+             */
+            ExceptionAttribute EXCEPTION_CLASS = new 
ExceptionErrorAttribute("EXCEPTION_CLASS");
+        }
+
+        /**
+         * HTTP related error details
+         */
+        interface HttpAttribute extends Attribute {
+            /**
+             * The erroneous HTTP code that occurred
+             */
+            HttpAttribute HTTP_CODE = new HttpErrorAttribute("HTTP_CODE");
+            /**
+             * HTTP response's body
+             */
+            HttpAttribute HTTP_TEXT = new HttpErrorAttribute("HTTP_TEXT");
+            /**
+             * If given as details, specifies that a redirect happened and the
+             * content of this detail is the redirect URL
+             */
+            HttpAttribute HTTP_REDIRECT = new 
HttpErrorAttribute("HTTP_REDIRECT");
+        }
+
+        /**
+         * Group related details
+         */
+        interface GroupAttribute extends Attribute {
+            /**
+             * Group name
+             */
+            GroupAttribute GROUP_NAME = new GroupErrorAttribute("GROUP_NAME");
+            /**
+             * Options for the group
+             */
+            GroupAttribute GROUP_OPTIONS = new 
GroupErrorAttribute("GROUP_OPTIONS");
+        }
+    }
+
+    /**
+     * Custom class for error codes
+     */
+    static class ErrorCode implements Code {
+
+        private final String name;
+
+        ErrorCode(String name) {
+            if (name == null) {
+                throw new IllegalArgumentException("Name of an error code must 
not be null");
+            }
+            this.name = name;
+        }
+
+        @Override
+        public String name() {
+            return name;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) {
+                return true;
+            }
+            if (!(o instanceof Code)) {
+                return false;
+            }
+
+            Code errorCode = (Code) o;
+
+            return name.equals(errorCode.name());
+        }
+
+        @Override
+        public int hashCode() {
+            return name.hashCode();
+        }
+
+        @Override
+        public String toString() {
+            return name();
+        }
+    }
+
+    static class ErrorAttribute implements Attribute {
+
+        private final String name;
+
+        ErrorAttribute(String name) {
+            if (name == null) {
+                throw new IllegalArgumentException("Name of an error attribute 
must not be null");
+            }
+            this.name = name;
+        }
+
+        @Override
+        public String name() {
+            return name;
+        }
+
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) {
+                return true;
+            }
+            if (!(o instanceof Attribute)) {
+                return false;
+            }
+
+            Attribute that = (Attribute) o;
+
+            return name.equals(that.name());
+        }
+
+        @Override
+        public int hashCode() {
+            return name.hashCode();
+        }
+
+        @Override
+        public String toString() {
+            return name();
+        }
+    }
+
+    // 
===========================================================================================================
+    // Helper classes for implementing the constants in ComponentVerifier:
+
+    static class StandardErrorCode extends ErrorCode implements StandardCode {
+        StandardErrorCode(String name) {
+            super(name);
+        }
+    }
+
+    static class ExceptionErrorAttribute extends ErrorAttribute implements 
ExceptionAttribute {
+        ExceptionErrorAttribute(String name) {
+            super(name);
+        }
+    }
+
+    static class HttpErrorAttribute extends ErrorAttribute implements 
HttpAttribute {
+        HttpErrorAttribute(String name) {
+            super(name);
+        }
+    }
+
+    static class GroupErrorAttribute extends ErrorAttribute implements 
GroupAttribute {
+        GroupErrorAttribute(String name) {
+            super(name);
+        }
+    }
+}
\ No newline at end of file
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAggregateProcessorMBean.java
rename to 
camel-management-api/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/ManagedAsyncProcessorAwaitManagerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedAsyncProcessorAwaitManagerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedAsyncProcessorAwaitManagerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedAsyncProcessorAwaitManagerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogDebuggerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogDebuggerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogDebuggerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogDebuggerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogTracerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogTracerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogTracerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBacklogTracerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBeanMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBeanMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBeanMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBeanMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBrowsableEndpointMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBrowsableEndpointMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedBrowsableEndpointMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBrowsableEndpointMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelHealthMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelHealthMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelHealthMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelHealthMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java
similarity index 100%
copy from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java
copy to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedClaimCheckMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedClaimCheckMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedClaimCheckMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedClaimCheckMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedClusterServiceMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedClusterServiceMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedClusterServiceMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedClusterServiceMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
similarity index 96%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
index ad4ee9b..1eb3503 100644
--- 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
+++ 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedComponentMBean.java
@@ -22,7 +22,6 @@ import javax.management.openmbean.TabularData;
 
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedOperation;
-import org.apache.camel.component.extension.ComponentVerifierExtension;
 
 public interface ManagedComponentMBean {
 
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerCacheMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerCacheMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerCacheMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerCacheMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedConvertBodyMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConvertBodyMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedConvertBodyMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConvertBodyMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCounterMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCounterMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCounterMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCounterMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCustomLoadBalancerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCustomLoadBalancerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedCustomLoadBalancerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCustomLoadBalancerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDataFormatMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedDataFormatMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDataFormatMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedDataFormatMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDelayerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedDelayerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDelayerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedDelayerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEnricherMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEnricherMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEnricherMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEnricherMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedExtendedInformation.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedExtendedInformation.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedExtendedInformation.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedExtendedInformation.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFailoverLoadBalancerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedFailoverLoadBalancerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFailoverLoadBalancerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedFailoverLoadBalancerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedInflightRepositoryMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedInflightRepositoryMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedInflightRepositoryMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedInflightRepositoryMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLogMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedLogMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLogMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedLogMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedMarshalMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedMarshalMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedMarshalMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedMarshalMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedMulticastMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedMulticastMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedMulticastMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedMulticastMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPollEnricherMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedPollEnricherMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPollEnricherMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedPollEnricherMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerCacheMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerCacheMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerCacheMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerCacheMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedProducerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRandomLoadBalancerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRandomLoadBalancerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRandomLoadBalancerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRandomLoadBalancerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRecipientListMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRecipientListMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRecipientListMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRecipientListMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeaderMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeaderMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeaderMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeaderMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeadersMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeadersMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeadersMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemoveHeadersMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertiesMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertiesMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertiesMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertiesMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertyMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertyMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertyMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRemovePropertyMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedResequencerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedResequencerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedResequencerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedResequencerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedResourceEndpointMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedResourceEndpointMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedResourceEndpointMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedResourceEndpointMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRollbackMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRollbackMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRollbackMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRollbackMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoundRobinLoadBalancerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRoundRobinLoadBalancerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoundRobinLoadBalancerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRoundRobinLoadBalancerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
similarity index 98%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
index b17b15e..ede4f95 100644
--- 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
+++ 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
@@ -18,10 +18,9 @@ package org.apache.camel.api.management.mbean;
 
 import javax.management.openmbean.TabularData;
 
-import org.apache.camel.Experimental;
+import org.apache.camel.meta.Experimental;
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedOperation;
-import org.apache.camel.spi.RouteError;
 
 public interface ManagedRouteMBean extends ManagedPerformanceCounterMBean {
 
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeCamelCatalogMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeCamelCatalogMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeCamelCatalogMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeCamelCatalogMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeEndpointRegistryMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeEndpointRegistryMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeEndpointRegistryMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRuntimeEndpointRegistryMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSamplingThrottlerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSamplingThrottlerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSamplingThrottlerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSamplingThrottlerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSchedulePollConsumerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSchedulePollConsumerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSchedulePollConsumerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSchedulePollConsumerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedScriptMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedScriptMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedScriptMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedScriptMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendDynamicProcessorMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSendDynamicProcessorMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendDynamicProcessorMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSendDynamicProcessorMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetBodyMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetBodyMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetBodyMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetBodyMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetExchangePatternMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetExchangePatternMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetExchangePatternMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetExchangePatternMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetHeaderMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetHeaderMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetHeaderMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetHeaderMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetPropertyMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetPropertyMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSetPropertyMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetPropertyMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSplitterMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSplitterMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSplitterMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSplitterMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStickyLoadBalancerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStickyLoadBalancerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStickyLoadBalancerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStickyLoadBalancerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStopMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStopMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStopMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStopMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java
similarity index 92%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java
index 5af8674..00b690a 100644
--- 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java
+++ 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedStreamCachingStrategyMBean.java
@@ -18,10 +18,16 @@ package org.apache.camel.api.management.mbean;
 
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedOperation;
-import org.apache.camel.spi.StreamCachingStrategy;
 
 public interface ManagedStreamCachingStrategyMBean extends ManagedServiceMBean 
{
 
+    /**
+     * Used for selecting if the memory limit is <tt>committed</tt> or 
<tt>maximum</tt> heap memory setting.
+     */
+    enum SpoolUsedHeapMemoryLimit {
+        Committed, Max
+    }
+
     @ManagedAttribute(description = "Whether stream caching is enabled")
     boolean isEnabled();
 
@@ -44,10 +50,10 @@ public interface ManagedStreamCachingStrategyMBean extends 
ManagedServiceMBean {
     int getSpoolUsedHeapMemoryThreshold();
 
     @ManagedAttribute(description = "Whether used heap memory limit is 
committed or maximum")
-    void 
setSpoolUsedHeapMemoryLimit(StreamCachingStrategy.SpoolUsedHeapMemoryLimit 
limit);
+    void setSpoolUsedHeapMemoryLimit(SpoolUsedHeapMemoryLimit limit);
 
     @ManagedAttribute(description = "Whether used heap memory limit is 
committed or maximum")
-    StreamCachingStrategy.SpoolUsedHeapMemoryLimit 
getSpoolUsedHeapMemoryLimit();
+    SpoolUsedHeapMemoryLimit getSpoolUsedHeapMemoryLimit();
 
     @ManagedAttribute(description = "Buffer size in bytes to use when coping 
between buffers")
     void setBufferSize(int bufferSize);
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSuspendableRouteMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSuspendableRouteMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSuspendableRouteMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSuspendableRouteMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadPoolMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThreadsMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingExceptionRoutePolicyMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingExceptionRoutePolicyMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingExceptionRoutePolicyMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingExceptionRoutePolicyMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingInflightRoutePolicyMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingInflightRoutePolicyMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingInflightRoutePolicyMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrottlingInflightRoutePolicyMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThroughputLoggerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThroughputLoggerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThroughputLoggerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThroughputLoggerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrowExceptionMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrowExceptionMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedThrowExceptionMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedThrowExceptionMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTopicLoadBalancerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTopicLoadBalancerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTopicLoadBalancerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTopicLoadBalancerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformerRegistryMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformerRegistryMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformerRegistryMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTransformerRegistryMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedUnmarshalMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedUnmarshalMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedUnmarshalMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedUnmarshalMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedValidateMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedValidateMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedValidateMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedValidateMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedValidatorRegistryMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedValidatorRegistryMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedValidatorRegistryMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedValidatorRegistryMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedWeightedBalancerMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedWeightedBalancerMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedWeightedBalancerMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedWeightedBalancerMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedWireTapMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedWireTapMBean.java
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedWireTapMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedWireTapMBean.java
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java
 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/RouteError.java
similarity index 69%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/RouteError.java
index 32c2bf8..d63ac8b 100644
--- 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedChoiceMBean.java
+++ 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/RouteError.java
@@ -16,13 +16,27 @@
  */
 package org.apache.camel.api.management.mbean;
 
-import javax.management.openmbean.TabularData;
+public interface RouteError {
+    enum Phase {
+        START,
+        STOP,
+        SUSPEND,
+        RESUME,
+        SHUTDOWN,
+        REMOVE
+    }
 
-import org.apache.camel.api.management.ManagedOperation;
+    /**
+     * Gets the phase associated with the error.
+     *
+     * @return the phase.
+     */
+    Phase getPhase();
 
-public interface ManagedChoiceMBean extends ManagedProcessorMBean {
-
-    @ManagedOperation(description = "Statistics of the content based router 
for each predicate")
-    TabularData choiceStatistics();
-
-}
\ No newline at end of file
+    /**
+     * Gets the error.
+     *
+     * @return the error.
+     */
+    Throwable getException();
+}
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/package.html 
b/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/package.html
similarity index 100%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/mbean/package.html
rename to 
camel-management-api/src/main/java/org/apache/camel/api/management/mbean/package.html
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/package.html 
b/camel-management-api/src/main/java/org/apache/camel/api/management/package.html
similarity index 100%
copy from camel-core/src/main/java/org/apache/camel/api/management/package.html
copy to 
camel-management-api/src/main/java/org/apache/camel/api/management/package.html
diff --git a/parent/pom.xml b/parent/pom.xml
index f231348..06d2524 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -827,6 +827,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-management-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-core</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git 
a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml 
b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
index dadf55a..4514be3 100644
--- 
a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
+++ 
b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
@@ -1811,6 +1811,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-management-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-manual</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/pom.xml b/pom.xml
index 3b6723c..182f871 100644
--- a/pom.xml
+++ b/pom.xml
@@ -147,6 +147,7 @@
     <module>buildingtools</module>
     <module>camel-util</module>
     <module>camel-api</module>
+    <module>camel-management-api</module>
     <module>camel-core</module>
     <module>components</module>
     <module>archetypes</module>
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/package.html 
b/tooling/meta-annotations/pom.xml
similarity index 53%
rename from 
camel-core/src/main/java/org/apache/camel/api/management/package.html
rename to tooling/meta-annotations/pom.xml
index 73b0183..fbfb381 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/package.html
+++ b/tooling/meta-annotations/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one or more
@@ -16,13 +17,26 @@
     limitations under the License.
 
 -->
-<html>
-<head>
-</head>
-<body>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
 
-Service provider interfaces for management. These help make components 
management-aware and 
-also allow components to implement their own management strategies.
+  <modelVersion>4.0.0</modelVersion>
 
-</body>
-</html>
+  <parent>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>tooling</artifactId>
+    <version>3.0.0-SNAPSHOT</version>
+  </parent>
+
+  <!-- should not be OSGi bundle as we shade this component into camel-core -->
+
+  <artifactId>meta-annotations</artifactId>
+  <name>Camel :: Meta Annotations</name>
+  <description>Annotations for Camel code</description>
+
+  <properties>
+  </properties>
+
+  <dependencies>
+  </dependencies>
+
+</project>
diff --git a/camel-api/src/main/java/org/apache/camel/Experimental.java 
b/tooling/meta-annotations/src/main/java/org/apache/camel/meta/Experimental.java
similarity index 97%
rename from camel-api/src/main/java/org/apache/camel/Experimental.java
rename to 
tooling/meta-annotations/src/main/java/org/apache/camel/meta/Experimental.java
index 6ea6c1f..d7179c5 100644
--- a/camel-api/src/main/java/org/apache/camel/Experimental.java
+++ 
b/tooling/meta-annotations/src/main/java/org/apache/camel/meta/Experimental.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel;
+package org.apache.camel.meta;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/tooling/pom.xml b/tooling/pom.xml
index 138ba57..f4d218e 100644
--- a/tooling/pom.xml
+++ b/tooling/pom.xml
@@ -39,6 +39,7 @@
 
   <modules>
     <module>parent</module>
+    <module>meta-annotations</module>
     <module>spi-annotations</module>
     <module>json-simple-ordered</module>
     <module>apt</module>

Reply via email to