package com.bansheeproject.engine;
import com.bansheeproject.engine.converters.ObjectConverter;
/**
* Provides a shell for object parameters.
*
* @author Alexandre Saudate
* @since 1.0
*/
public class ObjectParameter extends ServiceParameter {
private Object parameter;
private Class expectedResponseType;
private ObjectConverter converter;
public ObjectParameter(Object objectParameter, Class expectedResponseType, ObjectConverter converter) {
this.parameter = objectParameter;
this.expectedResponseType = expectedResponseType;
this.converter = converter;
}
@Override
public Object decode() {
return parameter;
}
@Override
public String encode() {
String encoded = converter.encode(parameter);
return encoded;
}
@Override
public ServiceParameter resolveResponse(String response) {
Object responseObject = this.converter.decode(response, expectedResponseType);
ObjectParameter parameter = new ObjectParameter(responseObject, expectedResponseType, converter);
return parameter;
}
}