/*
*
*/
package org.smartly.commons.remoting.rpc.descriptor;
import java.util.*;
/**
*
* @author angelo.geminiani
*/
public class MethodDescriptor {
private String _name;
private final Map<String, Class> _paremeters;
public MethodDescriptor() {
_paremeters = Collections.synchronizedMap(new LinkedHashMap<String, Class>());
}
@Override
public String toString(){
final StringBuilder result = new StringBuilder();
result.append(_name);
result.append("(");
if(!_paremeters.isEmpty()){
final Set<String> names = _paremeters.keySet();
int i = 0;
for(final String name:names){
final Class aclass = _paremeters.get(name);
if(i>0){
result.append(", ");
}
result.append(aclass.getName());
result.append(" ").append(name);
i++;
}
}
result.append(")");
return result.toString();
}
public String getName() {
return _name;
}
public void setName(String name) {
this._name = name;
}
public void addParameter(final String name, final Class paramType) {
synchronized (_paremeters) {
_paremeters.put(name, paramType);
}
}
public void addParameter(final Class paramType) {
synchronized (_paremeters) {
final String name = "param" + (_paremeters.size()+1);
_paremeters.put(name, paramType);
}
}
public String[] getParameterNames() {
synchronized (_paremeters) {
final Set<String> keys = _paremeters.keySet();
return keys.toArray(new String[keys.size()]);
}
}
public Class[] getParameterTypes() {
synchronized (_paremeters) {
final Collection<Class> values = _paremeters.values();
return values.toArray(new Class[values.size()]);
}
}
public Map<String, Class> getParameters() {
synchronized (_paremeters) {
return new LinkedHashMap<String, Class>(_paremeters);
}
}
public boolean hasParameters(){
synchronized (_paremeters) {
return !_paremeters.isEmpty();
}
}
}