package controllers;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import play.api.templates.Html;
import play.i18n.Lang;
import play.mvc.Controller;
/**
* Base class for other controllers.
*
* @author ThanhNB
* @since 0.1.0
*/
public class BaseController extends Controller {
/**
* Utility method to render a HTML page.
*
* @param view
* @param params
* @return
* @throws InstantiationException
* @throws IllegalAccessException
* @throws ClassNotFoundException
* @throws SecurityException
* @throws NoSuchMethodException
* @throws IllegalArgumentException
* @throws InvocationTargetException
*/
protected static Html render(String view, Object... params) throws InstantiationException,
IllegalAccessException, ClassNotFoundException, SecurityException,
NoSuchMethodException, IllegalArgumentException, InvocationTargetException {
String clazzName = "views.html." + view;
Class<?> clazz = Class.forName(clazzName);
Method[] methods = clazz.getMethods();
for (Method method : methods) {
if (method.getName().equals("render")) {
Lang lang = lang();
Object[] combinedParams = new Object[params.length + 1];
combinedParams[params.length] = lang;
for (int i = 0; i < params.length; i++) {
combinedParams[i] = params[i];
}
return (Html) method.invoke(null, combinedParams);
}
}
return null;
}
}