package org.jboss.naming.interceptors;
import java.io.Externalizable;
import java.io.IOException;
import javax.naming.CommunicationException;
import javax.naming.NamingException;
import javax.naming.ServiceUnavailableException;
import org.jboss.invocation.Invocation;
import org.jboss.proxy.Interceptor;
public class ExceptionInterceptor extends Interceptor
implements Externalizable
{
private static final long serialVersionUID = 6010013004557885014L;
public Object invoke(Invocation mi) throws Throwable
{
Object value = null;
try
{
value = getNext().invoke(mi);
}
catch(NamingException e)
{
throw e;
}
catch(IOException e)
{
CommunicationException ce = new CommunicationException("Operation failed");
ce.setRootCause(e);
throw ce;
}
catch(Throwable t)
{
ServiceUnavailableException sue = new ServiceUnavailableException("Unexpected failure");
sue.setRootCause(t);
throw sue;
}
return value;
}
}