com.rabbitmq.tools.jsonrpc.ServiceDescription Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of amqp-client Show documentation
Show all versions of amqp-client Show documentation
The RabbitMQ Java client library allows Java applications to interface with RabbitMQ.
// The contents of this file are subject to the Mozilla Public License
// Version 1.1 (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.mozilla.org/MPL/
//
// Software distributed under the License is distributed on an "AS IS"
// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
// the License for the specific language governing rights and
// limitations under the License.
//
// The Original Code is RabbitMQ.
//
// The Initial Developer of the Original Code is VMware, Inc.
// Copyright (c) 2007-2011 VMware, Inc. All rights reserved.
//
package com.rabbitmq.tools.jsonrpc;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import com.rabbitmq.tools.json.JSONUtil;
/**
* Description of a JSON-RPC service.
*/
public class ServiceDescription {
public static final String JSON_RPC_VERSION = "1.1";
/** The service name */
public String name;
/** ID for the service */
public String id;
/** Version of the service */
public String version;
/** Human-readable summary for the service */
public String summary;
/** Human-readable instructions for how to get information on the service's operation */
public String help;
/** Map from procedure name to {@link ProcedureDescription} */
private Map procedures;
public ServiceDescription(Map rawServiceDescription) {
JSONUtil.tryFill(this, rawServiceDescription);
}
public ServiceDescription(Class klass) {
this.procedures = new HashMap();
for (Method m: klass.getMethods()) {
ProcedureDescription proc = new ProcedureDescription(m);
addProcedure(proc);
}
}
public ServiceDescription() {
// No work to do here
}
/** Gets a collection of all {@link ProcedureDescription} for this service */
public Collection getProcs() {
return procedures.values();
}
/** Private API - used via reflection during parsing/loading */
public void setProcs(Collection