package cz.cas.lib.proarc.authentication;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
public class ProarcAuthenticatedHTTPRequest implements InvocationHandler {
private HttpServletRequest reqest;
private ProarcPrincipal userPrincipal;
private String remoteUser;
ProarcAuthenticatedHTTPRequest(HttpServletRequest request,
ProarcPrincipal uPrincipal, String rUser) {
super();
this.reqest = request;
this.userPrincipal = uPrincipal;
this.remoteUser = rUser;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
if (method.getName().equals("getRemoteUser")) {
return this.remoteUser;
} else if (method.getName().equals("getUserPrincipal")) {
return this.userPrincipal;
} else {
return method.invoke(this.reqest, args);
}
}
public static HttpServletRequest newInstance(HttpServletRequest reqest,
ProarcPrincipal uPrincipal, String rUser) {
return (HttpServletRequest) java.lang.reflect.Proxy.newProxyInstance(
ProarcAuthenticatedHTTPRequest.class.getClassLoader(),
new Class[] { ServletRequest.class, HttpServletRequest.class },
new ProarcAuthenticatedHTTPRequest(reqest, uPrincipal, rUser));
}
}