org.jolokia.client.request.J4pListRequest Maven / Gradle / Ivy
package org.jolokia.client.request;
/*
* 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.ArrayList;
import java.util.List;
import javax.management.ObjectName;
import org.json.simple.JSONObject;
/**
* Request for list JMX information
*
* @author roland
* @since 26.03.11
*/
public class J4pListRequest extends J4pRequest {
private List pathElements;
/**
* Default constructor to be used when all meta information should
* be fetched.
*/
protected J4pListRequest() {
this(null, (String) null);
}
/**
* Default constructor to be used when all meta information should
* be fetched.
*
* @param pTargetConfig proxy target configuration or null
if no proxy should be used
*/
protected J4pListRequest(J4pTargetConfig pTargetConfig) {
this(pTargetConfig, (String) null);
}
/**
* Constructor using a path to restrict the information
* returned by the list command
*
* @param pPath path into the JSON response. The path must already be
* properly escaped when it contains slashes or exclamation marks.
* You can use {@link #escape(String)} in order to escape a single path element.
*/
public J4pListRequest(String pPath) {
this(null, pPath);
}
/**
* Constructor using a path to restrict the information
* returned by the list command
*
* @param pConfig proxy target configuration or null
if no proxy should be used
* @param pPath path into the JSON response. The path must already be
* properly escaped when it contains slashes or exclamation marks.
* You can use {@link #escape(String)} in order to escape a single path element.
*/
public J4pListRequest(J4pTargetConfig pConfig, String pPath) {
super(J4pType.LIST,pConfig);
pathElements = splitPath(pPath);
}
/**
* Constructor using a list of path elements to restrict the information
*
* @param pPathElements list of path elements. The elements must not be escaped
*/
public J4pListRequest(List pPathElements) {
this(null, pPathElements);
}
/**
* Constructor using a list of path elements to restrict the information
*
* @param pConfig proxy target configuration or null
if no proxy should be used
* @param pPathElements list of path elements. The elements must not be escaped
*/
public J4pListRequest(J4pTargetConfig pConfig, List pPathElements) {
super(J4pType.LIST,pConfig);
pathElements = pPathElements;
}
/**
* Constructor for fetching the meta data of a specific MBean
*
* @param pObjectName name of MBean for which to fetch the meta data
*/
public J4pListRequest(ObjectName pObjectName) {
this(null, pObjectName);
}
/**
* Constructor for fetching the meta data of a specific MBean
*
* @param pConfig proxy target configuration or null
if no proxy should be used
* @param pObjectName name of MBean for which to fetch the meta data
*/
public J4pListRequest(J4pTargetConfig pConfig, ObjectName pObjectName) {
super(J4pType.LIST,pConfig);
pathElements = new ArrayList();
pathElements.add(pObjectName.getDomain());
pathElements.add(pObjectName.getCanonicalKeyPropertyListString());
}
@Override
J4pListResponse createResponse(JSONObject pResponse) {
return new J4pListResponse(this,pResponse);
}
@Override
List getRequestParts() {
return pathElements;
}
@Override
JSONObject toJson() {
JSONObject ret = super.toJson();
if (pathElements != null) {
StringBuilder path = new StringBuilder();
for (int i = 0; i < pathElements.size(); i++) {
path.append(escape(pathElements.get(i)));
if (i < pathElements.size() - 1) {
path.append("/");
}
}
ret.put("path",path.toString());
}
return ret;
}
}