org.jolokia.config.ConfigKey Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jolokia-core Show documentation
Show all versions of jolokia-core Show documentation
jar file containing servlet and helper classes
package org.jolokia.config;
/*
* Copyright 2009-2013 Roland Huss
*
* Licensed 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.
*/
import java.util.HashMap;
import java.util.Map;
import org.jolokia.backend.plugin.MBeanPlugin;
/**
* Enumeration defining the various configuration constant names which
* can be used to configure the agent globally (e.g. in web.xml) or
* as processing parameters (e.g. as query params).
*
* @author roland
* @since Jan 1, 2010
*/
public enum ConfigKey {
/**
* Maximum number of history entries to keep
*/
HISTORY_MAX_ENTRIES("historyMaxEntries",true, false, "10"),
/**
* Whether debug is switched on or not
*/
DEBUG("debug",true, false, "false"),
/**
* Maximum number of debug entries to hold
*/
DEBUG_MAX_ENTRIES("debugMaxEntries",true, false, "100"),
/**
* Request Dispatcher to use in addition to the local dispatcher.
*/
DISPATCHER_CLASSES("dispatcherClasses", true, false),
/**
* Log handler class to use, which must have an empty constructor.
* If not set, then a default logging mechanism is used.
*/
LOGHANDLER_CLASS("logHandlerClass", true, false),
/**
* Maximum traversal depth for serialization of complex objects.
*/
MAX_DEPTH("maxDepth",true, true),
/**
* Maximum size of collections returned during serialization.
* If larger, the collection is truncated
*/
MAX_COLLECTION_SIZE("maxCollectionSize",true, true),
/**
* Maximum number of objects returned by serialization
*/
MAX_OBJECTS("maxObjects",true, true),
/**
* Custom restrictor to be used instead of default one
*/
RESTRICTOR_CLASS("restrictorClass", true, false),
/**
* Init parameter for the location of the policy file. This should be an URL pointing to
* the policy file. If this URL uses a scheme classpath
then do a class lookup.
*
* The URL given can contain also placeholders which gets replaced:
*
* - $host or ${host} : Host name (if possible), otherwise address
* - $ip or ${ip} : IP Address
* - ${prop:foo} : System property foo
* - ${env:FOO} : Environment variable FOO
*
*/
POLICY_LOCATION("policyLocation",true,false,"classpath:/jolokia-access.xml"),
/**
* Whether a reverse DNS lookup is allowed or not. Reverse DNS lookups might happen for checking
* host based restrictions, but might be costly.
*/
// 2.0 : Default to 'false'
ALLOW_DNS_REVERSE_LOOKUP("allowDnsReverseLookup", true, false, "true"),
/**
* Runtime configuration (i.e. must come in with a request)
* for ignoring errors during JMX operations and JSON serialization.
* This works only for certain operations like pattern reads.
*/
IGNORE_ERRORS("ignoreErrors", false, true),
/**
* Whether to include a stack trace in the response when an error occurs.
* The allowed values are "true" for inclusion, "false" if no stacktrace
* should be included or "runtime" if only {@link RuntimeException}s should
* be included. Default is "true"
*/
// 2.0: Default to 'false'
INCLUDE_STACKTRACE("includeStackTrace", true, true, "true"),
/**
* Whether to include a JSON serialized version of the exception. If set
* to "true", the exception is added under the key "error_value" in
* the response. Default is false.
*/
SERIALIZE_EXCEPTION("serializeException", true, true, "false"),
/**
* Whether expose extended error information like stacktraces or serialized exception
* at all. INCLUDE_STACKTRACE and SERIALIZE_EXCEPTION take effect only when ALLOW_ERROR_DETAILS
* is set to true. This could be set to false to avoid exposure of internal data.
*/
ALLOW_ERROR_DETAILS("allowErrorDetails", true, false, "true"),
/**
* Whether property keys of ObjectNames should be ordered in the canonical way or in the way that they
* are created.
* The allowed values are either "true" in which case the canonical key order (== alphabetical
* sorted) is used or "false" for getting the keys as registered. Default is "true"
*/
CANONICAL_NAMING("canonicalNaming", true, true, "true"),
/**
* Optional domain name for registering own MBeans
*/
MBEAN_QUALIFIER("mbeanQualifier", true, false),
/**
* Option which can be given to a request to specify a JSONP callback.
* The generated answer will be of type text/javascript and it will
* contain a Javascript function to be called.
*/
CALLBACK("callback", false, true),
/**
* Mime Type to use for the response value. By default, this is
* text/plain
, but it could be useful to return
* application/json
, too. A request parameter overrides a global
* configuration.
*/
MIME_TYPE("mimeType", true, true, "text/plain"),
/**
* For LIST requests, this option can be used to return
* the result only if they set of registered MBeans has
* been changed since the timestamp given in this option.
* The timestamp has to be given in seconds since 1.1.1970
* (epoch time).
*/
IF_MODIFIED_SINCE("ifModifiedSince",false,true),
/**
* Whether to enable listening and responding to discovery multicast requests
* for discovering agent details.
*/
DISCOVERY_ENABLED("discoveryEnabled",true,false),
/**
* Specify the agent URL to return for an discovery multicast request. If this option
* is given {@link #DISCOVERY_ENABLED} is set to true
automatically.
* The URL given can contain placeholders:
*
* - $host or ${host} : Host name (if possible), otherwise address
* - $ip or ${ip} : IP Address
* - ${prop:foo} : System property foo
* - ${env:FOO} : Environment variable FOO
*
*/
DISCOVERY_AGENT_URL("discoveryAgentUrl",true,false),
// ================================================================================
// Configuration relevant for OSGI container
/**
* User for authentication purposes. Used by OSGi and JDK agent.
*/
USER("user", true, false),
/**
* Password for authentication purposes. Used by OSGi and JDK agent
*/
PASSWORD("password", true, false),
/**
* The security realm used for login
*/
REALM("realm", true, false, "jolokia"),
/**
* What authentication to use. Support values: "basic" for basic authentication, "jaas" for
* JaaS authentication.
*/
AUTH_MODE("authMode", true, false, "basic"),
/**
* Custom authenticator to be used instead of default user/password one (JVM agent)
*/
AUTH_CLASS("authClass", true, false),
/**
* URL used for a dispatcher authentication (authMode == delegate)
*/
AUTH_URL("authUrl",true,false),
/**
* Extractor specification for getting the principal (authMode == delegate)
*/
AUTH_PRINCIPAL_SPEC("authPrincipalSpec",true,false),
/**
* Whether to ignore CERTS when doing a dispatching authentication (authMode == delegate)
*/
AUTH_IGNORE_CERTS("authIgnoreCerts",true,false,"false"),
/**
* Context used for agent, used e.g. in the OSGi activator
* (but not for the servlet, this is done in web.xml)
*/
AGENT_CONTEXT("agentContext", true, false, "/jolokia"),
/**
* For OSGi, if set to true, the agent uses a restrictor service when it kicks in,
* but denies access otherwise.
*/
USE_RESTRICTOR_SERVICE("useRestrictorService", true, false, "false"),
/**
* By default, the OSGi Agent listens for an OSGi HttpService to which it will register
* an agent servlet. Set this to false if you want to instantiate the
* servlet on your own (either declaratively within another war or programmatically)
*/
LISTEN_FOR_HTTP_SERVICE("listenForHttpService", true, false, "true"),
/**
* By default, the OSGi Agent will bind to all HttpService implementations.
* Set this to control which of the implementations of HttpService are bound to.
* The syntax is that of the standard OSGi Filter.
*
* (VirtualServer=__asadmin) - Glassfish 3+ administration server
*
* Note this will be combined with the objectClass filter for HttpService with
* the and (&) operator.
*/
HTTP_SERVICE_FILTER("httpServiceFilter",true,false),
/**
* Extra options passed to a server handle after it has been detected. The value
* must be a JSON object with the product name as key and another JSON object as value containing
* the specific handle configuration.
*
* E.g.
*
*
* {
* "glassfish" : { "bootAmx" : true},
* "jboss" : { "disableWorkaround" : true}
* }
*
*/
DETECTOR_OPTIONS("detectorOptions",true, false),
/**
* Extra options which are passed to {@link MBeanPlugin}. As for {@link #DETECTOR_OPTIONS}, the value
* must be a JSON object in string representation where the keys are MBean plugin ids and the values are
* JSON objects whith the plugin specific configuration.
*/
MBEAN_PLUGIN_OPTIONS("mbeanPluginOptions",true , false),
/**
* The ID to uniquely identify this agent within a JVM. There
* can be multiple agents registered a JVM. This id is e.g. used to
* uniquely create MBean names.
*/
AGENT_ID("agentId", true, false),
/**
* The agent type holds the information which kind of agent (war,jvm,osgi,mule)
* is in use. This configuration cannot be set from the outside but is
* written by the agent itself
*/
AGENT_TYPE("agentType", true, false),
/**
* A description which can be used to describe the agent further. Typically
* this can be used by clients to provide additional information to
* the user.
*/
AGENT_DESCRIPTION("agentDescription",true,false);
/**
* JAAS Subject to attach to an HTTP request as attribute if JAAS based authentication is in use.
* This constant can only be used programtically
*/
public static final String JAAS_SUBJECT_REQUEST_ATTRIBUTE = "org.jolokia.jaasSubject";
private String key;
private String defaultValue;
private boolean globalConfig;
private boolean requestConfig;
private static Map keyByName;
private static Map globalKeyByName;
private static Map requestKeyByName;
// Build up internal reverse map
static {
keyByName = new HashMap();
globalKeyByName = new HashMap();
requestKeyByName = new HashMap();
for (ConfigKey ck : ConfigKey.values()) {
keyByName.put(ck.getKeyValue(),ck);
if (ck.isGlobalConfig()) {
globalKeyByName.put(ck.getKeyValue(),ck);
}
if (ck.isRequestConfig()) {
requestKeyByName.put(ck.getKeyValue(),ck);
}
}
}
ConfigKey(String pValue,boolean pIsGlobalConfig,boolean pIsRequestConfig) {
this(pValue,pIsGlobalConfig,pIsRequestConfig,null);
}
ConfigKey(String pValue, boolean pIsGlobalConfig, boolean pIsRequestConfig, String pDefault) {
key = pValue;
defaultValue = pDefault;
globalConfig = pIsGlobalConfig;
requestConfig = pIsRequestConfig;
}
@Override
/** {@inheritDoc} */
public String toString() {
return key;
}
/**
* Get the configuration key for a global configuration
*
* @param pKeyS the key to lookup
* @return the key or null if the key is not known or is not a global key
*/
public static ConfigKey getGlobalConfigKey(String pKeyS) {
return globalKeyByName.get(pKeyS);
}
/**
* Get the configuration key for a request configuration
*
* @param pKeyS the key to lookup
* @return the key or null if the key is not known or is not a request key
*/
public static ConfigKey getRequestConfigKey(String pKeyS) {
return requestKeyByName.get(pKeyS);
}
/**
* Get the string value of a key
*
* @return string value of a key
*/
public String getKeyValue() {
return key;
}
/**
* Get the default value
*
* @return the default value of a key
*/
public String getDefaultValue() {
return defaultValue;
}
/**
* Whether this key is a global configuration key
* @return true if this is a global configuration key
*/
public boolean isGlobalConfig() {
return globalConfig;
}
/**
* Whether this key is a request configuration key
* @return true if this is a request configuration key
*/
public boolean isRequestConfig() {
return requestConfig;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy