/**
* Copyright (c) 2009-2014 Câmara dos Deputados. Todos os direitos reservados.
*
* e-Democracia é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro
* dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do
* Software Livre (FSF); na versão 2.1 da Licença, ou (na sua opinião) qualquer versão.
*
* Este programa é distribuído na esperança de que possa ser útil, mas SEM NENHUMA GARANTIA;
* sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR.
* Veja a Licença Pública Geral Menor GNU para maiores detalhes.
*/
package br.gov.camara.edemocracia.util;
import java.lang.reflect.Constructor;
import javax.servlet.http.HttpServletRequest;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.GetterUtil;
public class RequestAttributeUtil {
private RequestAttributeUtil() {
}
private static final Log LOG = LogFactoryUtil.getLog(RequestAttributeUtil.class);
@SuppressWarnings("unchecked")
private static <T> T get(HttpServletRequest req, String att, Class<T> clazz) {
Object val = req.getAttribute(att);
// Se já for do tipo definido, retorna
if (val != null && clazz.isInstance(val))
return (T) val;
String value;
if (val == null)
value = "";
else
value = val.toString();
// Caso especial
if (clazz == Character.class) {
if (value.length() != 0)
throw new IllegalArgumentException("Invalid cast to Character");
Character chr = value.charAt(0);
return (T) chr;
} else if (clazz == Boolean.class) {
return (T) Boolean.valueOf(GetterUtil.get(value, false));
}
//
try {
Constructor<T> ctor = clazz.getConstructor(String.class);
return ctor.newInstance(value);
} catch (Exception e) {
LOG.error("Nao foi possivel instanciar " + clazz.getName(), e);
throw new IllegalArgumentException("Invalid class " + clazz.getName());
}
}
public static Long getLong(HttpServletRequest req, String att) {
return get(req, att, Long.class);
}
public static Integer getInteger(HttpServletRequest req, String att) {
return get(req, att, Integer.class);
}
public static String getString(HttpServletRequest req, String att) {
return get(req, att, String.class);
}
public static Boolean getBoolean(HttpServletRequest req, String att) {
return get(req, att, Boolean.class);
}
}