package org.jboss.test.jmx.interceptors;
import java.security.Principal;
import org.jboss.mx.interceptor.AbstractInterceptor;
import org.jboss.mx.server.Invocation;
import org.jboss.logging.Logger;
import org.jboss.security.SecurityAssociation;
public final class PrincipalInterceptor
extends AbstractInterceptor
{
private static Logger log = Logger.getLogger(PrincipalInterceptor.class);
public Object invoke(Invocation invocation) throws Throwable
{
String type = invocation.getType();
if( type != Invocation.OP_GETMBEANINFO )
{
Principal caller = SecurityAssociation.getPrincipal();
String opName = invocation.getName();
log.info("invoke, opName="+opName+", caller="+caller);
if( caller == null || caller.getName().equals("jduke") == false )
{
throw new SecurityException("Caller="+caller+" is not jduke");
}
}
return invocation.nextInterceptor().invoke(invocation);
}
}