package org.jboss.resteasy.core.interception;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Method;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.jboss.resteasy.spi.interception.AcceptedByMethod;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
* @deprecated Use org.jboss.resteasy.core.interception.jaxrs.JaxrsInterceptorRegistry<T> instead.
*/
@SuppressWarnings("unchecked")
@Deprecated
public class JaxrsInterceptorRegistry<T> extends org.jboss.resteasy.core.interception.jaxrs.JaxrsInterceptorRegistry<T>
{
public JaxrsInterceptorRegistry(ResteasyProviderFactory providerFactory, Class<T> intf)
{
super(providerFactory, intf);
}
public JaxrsInterceptorRegistry<T> clone(ResteasyProviderFactory factory)
{
JaxrsInterceptorRegistry<T> clone = new JaxrsInterceptorRegistry(factory, intf);
clone.interceptors.addAll(interceptors);
return clone;
}
public abstract class AbstractLegacyInterceptorFactory extends AbstractInterceptorFactory
{
protected LegacyPrecedence precedence;
protected AbstractLegacyInterceptorFactory(Class declaring, LegacyPrecedence precedence)
{
super(declaring);
this.precedence = precedence;
}
@Override
protected void setPrecedence(Class<?> declaring)
{
order = precedence.calculateOrder(declaring);
}
@Override
public Match preMatch()
{
return null;
}
public Object getLegacyMatch(Class declaring, AccessibleObject target)
{
Object interceptor = getInterceptor();
if (interceptor instanceof AcceptedByMethod)
{
if (target == null || !(target instanceof Method)) return null;
Method method = (Method) target;
if (((AcceptedByMethod) interceptor).accept(declaring, method))
{
return interceptor;
} else
{
return null;
}
}
return interceptor;
}
}
protected class LegacySingletonInterceptorFactory extends AbstractLegacyInterceptorFactory
{
protected Object interceptor;
public LegacySingletonInterceptorFactory(Class declaring, Object interceptor, LegacyPrecedence precedence)
{
super(declaring, precedence);
this.interceptor = interceptor;
setPrecedence(declaring);
}
@Override
protected void initialize()
{
providerFactory.injectProperties(interceptor);
}
@Override
protected Object getInterceptor()
{
checkInitialize();
return interceptor;
}
}
protected class LegacyPerMethodInterceptorFactory extends AbstractLegacyInterceptorFactory
{
public LegacyPerMethodInterceptorFactory(Class declaring, LegacyPrecedence precedence)
{
super(declaring, precedence);
setPrecedence(declaring);
}
@Override
protected void initialize()
{
}
@Override
protected Object getInterceptor()
{
Object interceptor = createInterceptor();
providerFactory.injectProperties(interceptor);
return interceptor;
}
}
}