package org.jboss.resteasy.client.jaxrs.internal; import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Set; import javax.ws.rs.RuntimeType; import javax.ws.rs.core.Feature; import org.jboss.resteasy.spi.ResteasyProviderFactory; /** * A version of ResteasyProviderFactory which does not reference its parent * after it is created. Used for client framework Configurables. * * @author <a href="mailto:ron.sigal@jboss.com">Ron Sigal</a> * @date April 27, 2016 */ public class LocalResteasyProviderFactory extends ResteasyProviderFactory { public LocalResteasyProviderFactory(ResteasyProviderFactory factory) { super(factory, true); } @Override public boolean isEnabled(Feature feature) { for (Feature f : enabledFeatures) { if (f == feature) { return true; } } return false; } @Override public boolean isEnabled(Class<? extends Feature> featureClass) { if (enabledFeatures == null) return false; for (Feature feature : enabledFeatures) { if (featureClass.equals(feature.getClass())) { return true; } } return false; } @Override public boolean isRegistered(Class<?> componentClass) { if (providerClasses.contains(componentClass)) return true; for (Object obj : providerInstances) { if (obj.getClass().equals(componentClass)) return true; } return false; } @Override public Map<Class<?>, Integer> getContracts(Class<?> componentClass) { Map<Class<?>, Integer> classIntegerMap = classContracts.get(componentClass); if (classIntegerMap == null) return Collections.emptyMap(); return classIntegerMap; } @Override public Set<Class<?>> getProviderClasses() { return new HashSet<Class<?>>(providerClasses); } @Override public Set<Object> getProviderInstances() { return new HashSet<Object>(providerInstances); } @Override public RuntimeType getRuntimeType() { return RuntimeType.CLIENT; } }