/************************************************************************
* Copyright (c) 2011-2012 HONG LEIMING.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to permit
* persons to whom the Software is furnished to do so, subject to the
* following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
* NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
* USE OR OTHER DEALINGS IN THE SOFTWARE.
***************************************************************************/
package org.zbus.client.rpc;
import java.util.Arrays;
/**
* RPC请求格式,模块+方法+参数列表,附加请求二进制的编码格式
*
* @author 洪磊明(rushmore)
*
*/
public class Request{
private String module = ""; //模块标识
private String method; //远程方法
private Object[] params; //参数列表
private String[] paramTypes;
private String encoding = "UTF-8";
public String getModule() {
return module;
}
public void setModule(String module) {
this.module = module;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public Object[] getParams() {
return params;
}
public void setParams(Object[] params) {
this.params = params;
}
public String[] getParamTypes() {
return paramTypes;
}
public void setParamTypes(String[] paramTypes) {
this.paramTypes = paramTypes;
}
public String getEncoding() {
return encoding;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
public void assignParamTypes(Class<?>... types){
this.paramTypes = new String[types.length];
for(int i=0; i<types.length; i++){
this.paramTypes[i]= types[i].getCanonicalName();
}
}
public static void normalize(Request req){
if(req.module == null){
req.module = "";
}
if(req.params == null){
req.params = new Object[0];
}
}
@Override
public String toString() {
return "Request [module=" + module + ", method=" + method + ", params="
+ Arrays.toString(params) + ", paramTypes="
+ Arrays.toString(paramTypes) + ", encoding=" + encoding + "]";
}
}