0,0 → 1,63 |
package ak.hostadmiral.core.taglib; |
|
import java.lang.reflect.Method; |
import javax.servlet.jsp.JspException; |
|
import ak.hostadmiral.core.model.User; |
import org.apache.struts.util.RequestUtils; |
|
public abstract class MethodTagBase |
extends RightTagBase |
{ |
protected String method; |
|
public String getMethod() |
{ |
return method; |
} |
|
public void setMethod(String method) |
{ |
this.method = method; |
} |
|
public void release() |
{ |
super.release(); |
method = null; |
} |
|
protected boolean condition() |
throws JspException |
{ |
Method m; |
Object value; |
|
// find method |
try { |
m = object.getClass().getMethod(method, new Class[] { User.class } ); |
} |
catch(NoSuchMethodException ex) { |
throw new JspException("Method " + method |
+ " with parameter of type user not found"); |
} |
|
// invoke it |
try { |
value = m.invoke(object, new Object[] { user } ); |
} |
catch(Exception ex) { |
throw new JspException("Cannot call " + method + ": " + ex.getMessage()); |
} |
|
// check value type |
if(!(value instanceof Boolean)) |
throw new JspException("Return type of method " + method |
+ " must be java.lang.Boolean"); |
|
return condition(((Boolean)value).booleanValue()); |
} |
|
protected abstract boolean condition(boolean value) |
throws JspException; |
} |