/**
* 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.IOException;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
import javax.management.openmbean.TabularData;
import org.apache.camel.api.management.ManagedAttribute;
import org.apache.camel.api.management.ManagedOperation;
public interface ManagedCamelContextMBean extends ManagedPerformanceCounterMBean {
@ManagedAttribute(description = "Camel ID")
String getCamelId();
@ManagedAttribute(description = "Camel ManagementName")
String getManagementName();
@ManagedAttribute(description = "Camel Version")
String getCamelVersion();
@ManagedAttribute(description = "Camel State")
String getState();
@ManagedAttribute(description = "Uptime [human readable text]")
String getUptime();
@ManagedAttribute(description = "Uptime [milliseconds]")
long getUptimeMillis();
@ManagedAttribute(description = "Camel Management StatisticsLevel")
String getManagementStatisticsLevel();
@Deprecated
@ManagedAttribute(description = "Camel Properties")
Map<String, String> getProperties();
@ManagedAttribute(description = "Camel Global Options")
Map<String, String> getGlobalOptions();
@ManagedAttribute(description = "ClassResolver class name")
String getClassResolver();
@ManagedAttribute(description = "PackageScanClassResolver class name")
String getPackageScanClassResolver();
@ManagedAttribute(description = "ApplicationContext class name")
String getApplicationContextClassName();
@Deprecated
@ManagedOperation(description = "Gets the value of a Camel global option")
String getProperty(String key) throws Exception;
/**
* Gets the value of a CamelContext global option
*
* @param key the global option key
* @return the global option value
* @throws Exception when an error occurred
*/
@ManagedOperation(description = "Gets the value of a Camel global option")
String getGlobalOption(String key) throws Exception;
@Deprecated
@ManagedOperation(description = "Sets the value of a Camel global option")
void setProperty(String key, String value) throws Exception;
/**
* Sets the value of a CamelContext property name
*
* @param key the global option key
* @param value the global option value
* @throws Exception when an error occurred
*/
@ManagedOperation(description = "Sets the value of a Camel global option")
void setGlobalOption(String key, String value) throws Exception;
@ManagedAttribute(description = "Tracing")
Boolean getTracing();
@ManagedAttribute(description = "Tracing")
void setTracing(Boolean tracing);
/**
* @deprecated use {@link #getExchangesInflight()}
*/
@ManagedAttribute(description = "Current number of inflight Exchanges")
@Deprecated
Integer getInflightExchanges();
@ManagedAttribute(description = "Total number of routes")
Integer getTotalRoutes();
@ManagedAttribute(description = "Current number of started routes")
Integer getStartedRoutes();
@ManagedAttribute(description = "Shutdown timeout")
void setTimeout(long timeout);
@ManagedAttribute(description = "Shutdown timeout")
long getTimeout();
@ManagedAttribute(description = "Shutdown timeout time unit")
void setTimeUnit(TimeUnit timeUnit);
@ManagedAttribute(description = "Shutdown timeout time unit")
TimeUnit getTimeUnit();
@ManagedAttribute(description = "Whether to force shutdown now when a timeout occurred")
void setShutdownNowOnTimeout(boolean shutdownNowOnTimeout);
@ManagedAttribute(description = "Whether to force shutdown now when a timeout occurred")
boolean isShutdownNowOnTimeout();
@ManagedAttribute(description = "Average load over the last minute")
String getLoad01();
@ManagedAttribute(description = "Average load over the last five minutes")
String getLoad05();
@ManagedAttribute(description = "Average load over the last fifteen minutes")
String getLoad15();
@ManagedAttribute(description = "Whether breadcrumbs is in use")
boolean isUseBreadcrumb();
@ManagedAttribute(description = "Whether allowing access to the original message during routing")
boolean isAllowUseOriginalMessage();
@ManagedAttribute(description = "Whether message history is enabled")
boolean isMessageHistory();
@ManagedAttribute(description = "Whether security mask for Logging is enabled")
boolean isLogMask();
@ManagedAttribute(description = "Whether MDC logging is supported")
boolean isUseMDCLogging();
@ManagedOperation(description = "Start Camel")
void start() throws Exception;
@ManagedOperation(description = "Stop Camel (shutdown)")
void stop() throws Exception;
@ManagedOperation(description = "Restart Camel (stop and then start)")
void restart() throws Exception;
@ManagedOperation(description = "Suspend Camel")
void suspend() throws Exception;
@ManagedOperation(description = "Resume Camel")
void resume() throws Exception;
@ManagedOperation(description = "Starts all the routes which currently is not started")
void startAllRoutes() throws Exception;
@ManagedOperation(description = "Whether its possible to send to the endpoint (eg the endpoint has a producer)")
boolean canSendToEndpoint(String endpointUri);
@ManagedOperation(description = "Send body (in only)")
void sendBody(String endpointUri, Object body) throws Exception;
@ManagedOperation(description = "Send body (String type) (in only)")
void sendStringBody(String endpointUri, String body) throws Exception;
@ManagedOperation(description = "Send body and headers (in only)")
void sendBodyAndHeaders(String endpointUri, Object body, Map<String, Object> headers) throws Exception;
@ManagedOperation(description = "Request body (in out)")
Object requestBody(String endpointUri, Object body) throws Exception;
@ManagedOperation(description = "Request body (String type) (in out)")
Object requestStringBody(String endpointUri, String body) throws Exception;
@ManagedOperation(description = "Request body and headers (in out)")
Object requestBodyAndHeaders(String endpointUri, Object body, Map<String, Object> headers) throws Exception;
@ManagedOperation(description = "Dumps the rests as XML")
String dumpRestsAsXml() throws Exception;
@ManagedOperation(description = "Dumps the rests as XML")
String dumpRestsAsXml(boolean resolvePlaceholders) throws Exception;
@ManagedOperation(description = "Dumps the routes as XML")
String dumpRoutesAsXml() throws Exception;
@ManagedOperation(description = "Dumps the routes as XML")
String dumpRoutesAsXml(boolean resolvePlaceholders) throws Exception;
@ManagedOperation(description = "Adds or updates existing routes from XML")
void addOrUpdateRoutesFromXml(String xml) throws Exception;
@ManagedOperation(description = "Adds or updates existing routes from XML")
void addOrUpdateRoutesFromXml(String xml, boolean urlDecode) throws Exception;
@ManagedOperation(description = "Dumps the CamelContext and routes stats as XML")
String dumpRoutesStatsAsXml(boolean fullStats, boolean includeProcessors) throws Exception;
@ManagedOperation(description = "Dumps the routes coverage as XML")
String dumpRoutesCoverageAsXml() throws Exception;
/**
* Creates the endpoint by the given uri
*
* @param uri uri of endpoint to create
* @return <tt>true</tt> if a new endpoint was created, <tt>false</tt> if the endpoint already existed
* @throws Exception is thrown if error occurred
*/
@ManagedOperation(description = "Creates the endpoint by the given URI")
boolean createEndpoint(String uri) throws Exception;
/**
* Removes the endpoint by the given pattern
*
* @param pattern the pattern
* @return number of endpoints removed
* @throws Exception is thrown if error occurred
* @see org.apache.camel.CamelContext#removeEndpoints(String)
*/
@ManagedOperation(description = "Removes endpoints by the given pattern")
int removeEndpoints(String pattern) throws Exception;
/**
* Find information about all the Camel components available in the classpath and {@link org.apache.camel.spi.Registry}.
*
* @return a map with the component name, and value with component details.
* @throws Exception is thrown if error occurred
*/
@ManagedOperation(description = "Find all Camel components available in the classpath")
Map<String, Properties> findComponents() throws Exception;
/**
* Find information about all the EIPs from camel-core.
*
* @return a map with node id, and value with EIP details.
* @throws Exception is thrown if error occurred
*/
@ManagedOperation(description = "Find all Camel EIPs from camel-core")
Map<String, Properties> findEips() throws Exception;
/**
* Find the names of all the EIPs from camel-core.
*
* @return a list with the names of the camel EIPs
* @throws Exception is thrown if error occurred
*/
@ManagedOperation(description = "Find all Camel EIP names from camel-core")
List<String> findEipNames() throws Exception;
/**
* Find the names of all the Camel components available in the classpath and {@link org.apache.camel.spi.Registry}.
*
* @return a list with the names of the camel components
* @throws Exception is thrown if error occurred
*/
@ManagedOperation(description = "Find all Camel components names available in the classpath")
List<String> findComponentNames() throws Exception;
/**
* Find information about all the Camel components available in the classpath and {@link org.apache.camel.spi.Registry}.
*
* @return a list with the data
* @throws Exception is thrown if error occurred
*/
@ManagedOperation(description = "List all Camel components available in the classpath")
TabularData listComponents() throws Exception;
/**
* Find information about all the EIPs from camel-core.
*
* @return a list with the data
* @throws Exception is thrown if error occurred
*/
@ManagedOperation(description = "List all Camel EIPs from camel-core")
TabularData listEips() throws Exception;
/**
* Returns the JSON schema representation with information about the component and the endpoint parameters it supports
*
* @param componentName the name of the component to lookup
* @throws Exception is thrown if error occurred
*/
@ManagedOperation(description = "Returns the JSON schema representation of the endpoint parameters for the given component name")
@Deprecated
String componentParameterJsonSchema(String componentName) throws Exception;
/**
* Returns the JSON schema representation with information about the data format and the parameters it supports
*
* @param dataFormatName the name of the data format to lookup
* @throws Exception is thrown if error occurred
*/
@ManagedOperation(description = "Returns the JSON schema representation of the data format parameters for the given data format name")
String dataFormatParameterJsonSchema(String dataFormatName) throws Exception;
/**
* Returns the JSON schema representation with information about the language and the parameters it supports
*
* @param languageName the name of the language to lookup
* @throws Exception is thrown if error occurred
*/
@ManagedOperation(description = "Returns the JSON schema representation of the language parameters for the given language name")
String languageParameterJsonSchema(String languageName) throws Exception;
/**
* Returns the JSON schema representation with information about the EIP and the parameters it supports
*
* @param eipName the name of the EIP to lookup
* @throws Exception is thrown if error occurred
*/
@ManagedOperation(description = "Returns the JSON schema representation of the EIP parameters for the given EIP name")
String eipParameterJsonSchema(String eipName) throws Exception;
/**
* Returns a JSON schema representation of the EIP parameters for the given EIP by its id.
*
* @param nameOrId the name of the EIP ({@link org.apache.camel.NamedNode#getShortName()} or a node id to refer to a specific node from the routes.
* @param includeAllOptions whether to include non configured options also (eg default options)
* @return the json or <tt>null</tt> if the eipName or the id was not found
*/
@ManagedOperation(description = "Returns a JSON schema representation of the EIP parameters for the given EIP by its id")
String explainEipJson(String nameOrId, boolean includeAllOptions);
/**
* Returns a JSON schema representation of the component parameters (not endpoint parameters) for the given component by its id.
*
* @param componentName the id of the component
* @param includeAllOptions whether to include non configured options also (eg default options)
*/
@ManagedOperation(description = " Returns a JSON schema representation of the component parameters for the given component by its id")
String explainComponentJson(String componentName, boolean includeAllOptions) throws Exception;
/**
* Returns a JSON schema representation of the endpoint parameters for the given endpoint uri
*
* @param uri the endpoint uri
* @param includeAllOptions whether to include non configured options also (eg default options)
*/
@ManagedOperation(description = " Returns a JSON schema representation of the endpoint parameters for the given endpoint uri")
String explainEndpointJson(String uri, boolean includeAllOptions) throws Exception;
/**
* Resets all the performance counters.
*
* @param includeRoutes whether to reset all routes as well.
* @throws Exception is thrown if error occurred
*/
@ManagedOperation(description = "Reset counters")
void reset(boolean includeRoutes) throws Exception;
/**
* Helper method for tooling which returns the completion list of the endpoint path
* from the given endpoint name, properties and current path expression.
* <p/>
* For example if using the file endpoint, this should complete a list of files (rather like bash completion)
* or for an ActiveMQ component this should complete the list of queues or topics.
*
* @param componentName the component name
* @param endpointParameters parameters of the endpoint
* @param completionText the entered text which we want to have completion suggestions for
* @throws Exception is thrown if error occurred
*/
@ManagedOperation(description = "Returns the list of available endpoint paths for the given component name, endpoint properties and completion text")
@Deprecated
List<String> completeEndpointPath(String componentName, Map<String, Object> endpointParameters, String completionText) throws Exception;
/**
* Returns the HTML documentation for the given camel component
*
* @param componentName the component name
* @deprecated use camel-catalog instead
*/
@ManagedOperation(description = "Returns the HTML documentation for the given camel component")
@Deprecated
String getComponentDocumentation(String componentName) throws IOException;
@ManagedOperation(description = "Returns the JSON representation of all the static and dynamic endpoints defined in all the routes")
String createRouteStaticEndpointJson();
@ManagedOperation(description = "Returns the JSON representation of all the static endpoints (and possible dynamic) defined in all the routes")
String createRouteStaticEndpointJson(boolean includeDynamic);
}