package ddth.dasp.hetty.message;
import org.apache.commons.lang3.StringUtils;
/**
* This request parser assumes the first (index 0) path parameter is the request
* module and the second (index 1) path parameter is the request action.
*
* @author Thanh Ba Nguyen <btnguyen2k@gmail.com>
*/
public class HettyRequestParser implements IRequestParser {
public final static int PATH_PARAM_INDEX_MODULE = 0;
public final static int PATH_PARAM_INDEX_ACTION = 1;
private String urlSuffix;
public void setUrlSuffix(String urlSuffix) {
this.urlSuffix = urlSuffix;
}
protected String getUrlSuffix() {
return urlSuffix;
}
/**
* {@inheritDoc}
*/
@Override
public String getAction(IRequest request) {
return getPathParam(request, PATH_PARAM_INDEX_ACTION);
}
/**
* {@inheritDoc}
*/
@Override
public String getModule(IRequest request) {
return getPathParam(request, PATH_PARAM_INDEX_MODULE);
}
/**
* {@inheritDoc}
*/
@Override
public String getPathParam(IRequest request, int index) {
String[] pathParams = request.getPathParams();
String result = 0 <= index && index < pathParams.length ? pathParams[index] : null;
if (!StringUtils.isBlank(result) && !StringUtils.isBlank(urlSuffix)
&& result.endsWith(urlSuffix)) {
return result.substring(0, result.length() - urlSuffix.length());
}
return result;
}
/**
* {@inheritDoc}
*/
@Override
public String getUrlParam(IRequest request, String name) {
return request.getUrlParams().get(name);
}
}