From 266c036f595ce0d78336b41a3eb620c0db2683c3 Mon Sep 17 00:00:00 2001 From: Alessio Soldano Date: Fri, 13 Jul 2018 13:45:35 +0200 Subject: [PATCH] [RESTEASY-1957] Change most ResteasyProviderFactory protected fields/methods into private [RESTEASY-1956] Get rid of further deprecated / unused stuff (including old providers precedence system) [RESTEASY-1957] Change most ResteasyDeployment protected fields/methods into private Removing useless methods (basically there for testing and/or duplicating others) + a bit of harmless refactoring [RESTEASY-1957] Removing bunch of redundant / useless methods from ResteasyProviderFactory (for example, one od ther register(...) methods can be used instead of most of the add* methods) --- .../core/StringParameterInjector.java | 7 - .../ThreadLocalResteasyProviderFactory.java | 87 +-- .../jaxrs/ServerReaderInterceptorContext.java | 2 +- .../jaxrs/ServerWriterInterceptorContext.java | 2 +- .../servlet/ConfigurationBootstrap.java | 21 - .../servlet/ResteasyContextParameters.java | 3 - .../resteasy/spi/ResteasyDeployment.java | 146 ++-- .../resteasy/spi/ResteasyProviderFactory.java | 692 ++++-------------- .../resource/basic/SpecialResourceTest.java | 21 - .../resource/SpecialResourceSubFactory.java | 12 - .../resteasy/test/core/basic/ContextWeb.xml | 15 - .../test/providers/PriorityEqualityTest.java | 15 +- .../test/providers/ProviderFactoryTest.java | 3 +- 13 files changed, 200 insertions(+), 826 deletions(-) delete mode 100644 testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/resource/basic/resource/SpecialResourceSubFactory.java diff --git a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/StringParameterInjector.java b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/StringParameterInjector.java index cf6e9e3654d..59e80ce9dad 100755 --- a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/StringParameterInjector.java +++ b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/StringParameterInjector.java @@ -503,13 +503,6 @@ private boolean initialize(Annotation[] annotations, ResteasyProviderFactory fac } } - // Else try to find a StringConverter if any - converter = factory.getStringConverter(baseType); - if (converter != null) - { - return true; - } - // Else try to find a RuntimeDelegate.HeaderDelegate if any if (paramType.equals(HeaderParam.class)) { diff --git a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/ThreadLocalResteasyProviderFactory.java b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/ThreadLocalResteasyProviderFactory.java index 73a50b382b6..271073a62c8 100755 --- a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/ThreadLocalResteasyProviderFactory.java +++ b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/ThreadLocalResteasyProviderFactory.java @@ -6,13 +6,11 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.concurrent.CompletionStage; import org.jboss.resteasy.core.interception.jaxrs.ClientRequestFilterRegistry; import org.jboss.resteasy.resteasy_jaxrs.i18n.*; import javax.ws.rs.RuntimeType; -import javax.ws.rs.client.ClientRequestFilter; import javax.ws.rs.container.DynamicFeature; import javax.ws.rs.core.Application; import javax.ws.rs.core.Configuration; @@ -31,19 +29,16 @@ import org.jboss.resteasy.core.interception.jaxrs.ClientResponseFilterRegistry; import org.jboss.resteasy.core.interception.jaxrs.ContainerRequestFilterRegistry; import org.jboss.resteasy.core.interception.jaxrs.ContainerResponseFilterRegistry; -import org.jboss.resteasy.core.interception.jaxrs.JaxrsInterceptorRegistry; import org.jboss.resteasy.core.interception.jaxrs.ReaderInterceptorRegistry; import org.jboss.resteasy.core.interception.jaxrs.WriterInterceptorRegistry; import org.jboss.resteasy.spi.AsyncResponseProvider; import org.jboss.resteasy.spi.AsyncStreamProvider; -import org.jboss.resteasy.spi.ConstructorInjector; import org.jboss.resteasy.spi.ContextInjector; import org.jboss.resteasy.spi.HttpRequest; import org.jboss.resteasy.spi.HttpResponse; import org.jboss.resteasy.spi.InjectorFactory; import org.jboss.resteasy.spi.ProviderFactoryDelegate; import org.jboss.resteasy.spi.ResteasyProviderFactory; -import org.jboss.resteasy.spi.StringConverter; import org.jboss.resteasy.spi.StringParameterUnmarshaller; import org.jboss.resteasy.util.ThreadLocalStack; @@ -53,12 +48,11 @@ * @author Bill Burke * @version $Revision: 1 $ */ -@SuppressWarnings("deprecation") -public class ThreadLocalResteasyProviderFactory extends ResteasyProviderFactory implements ProviderFactoryDelegate +public final class ThreadLocalResteasyProviderFactory extends ResteasyProviderFactory implements ProviderFactoryDelegate { private static final ThreadLocalStack delegate = new ThreadLocalStack(); - private ResteasyProviderFactory defaultFactory; + private final ResteasyProviderFactory defaultFactory; public ThreadLocalResteasyProviderFactory(ResteasyProviderFactory defaultFactory) @@ -143,12 +137,6 @@ public boolean isBuiltinsRegistered() return getDelegate().isBuiltinsRegistered(); } - @Override - public Set> getFeatureClasses() - { - return getDelegate().getFeatureClasses(); - } - @Override public void setBuiltinsRegistered(boolean builtinsRegistered) { @@ -191,24 +179,12 @@ public void registerProviderInstance(Object provider) getDelegate().registerProviderInstance(provider); } - @Override - public StringConverter getStringConverter(Class clazz) - { - return getDelegate().getStringConverter(clazz); - } - @Override public StringParameterUnmarshaller createStringParameterUnmarshaller(Class clazz) { return getDelegate().createStringParameterUnmarshaller(clazz); } - @Override - public Set getFeatureInstances() - { - return getDelegate().getFeatureInstances(); - } - @Override public void setInjectorFactory(InjectorFactory injectorFactory) { @@ -254,12 +230,6 @@ public void registerProvider(Class provider, Integer priorityOverride, boolean i getDelegate().registerProvider(provider, priorityOverride, isBuiltin, contracts); } - @Override - public Map, Map, Integer>> getClassContracts() - { - return getDelegate().getClassContracts(); - } - @Override public ContainerRequestFilterRegistry getContainerRequestFilterRegistry() { @@ -314,12 +284,6 @@ public ResteasyProviderFactory register(Object provider) return getDelegate().register(provider); } - @Override - public ConstructorInjector createConstructorInjector(Class clazz) - { - return getDelegate().createConstructorInjector(clazz); - } - @Override public T createProviderInstance(Class clazz) { @@ -374,12 +338,6 @@ public ResteasyProviderFactory setProperties(Map properties) return getDelegate().setProperties(properties); } - @Override - public void injectProperties(Class declaring, Object obj) - { - getDelegate().injectProperties(declaring, obj); - } - @Override public UriBuilder createUriBuilder() { @@ -398,12 +356,6 @@ public T injectedInstance(Class clazz) return getDelegate().injectedInstance(clazz); } - @Override - public ResteasyProviderFactory getParent() - { - return getDelegate().getParent(); - } - @Override public RuntimeType getRuntimeType() { @@ -488,12 +440,6 @@ public void registerProviderInstance(Object provider, Map, Integer> con getDelegate().registerProviderInstance(provider, contracts, defaultPriority, builtIn); } - @Override - public void addStringParameterUnmarshaller(Class provider) - { - getDelegate().addStringParameterUnmarshaller(provider); - } - @Override public Set> getProviderClasses() { @@ -512,18 +458,6 @@ public ClientRequestFilterRegistry getClientRequestFilterRegistry() return getDelegate().getClientRequestFilterRegistry(); } - /** - * This method retailed for backward compatibility for jaxrs-legacy code. - * Method, getClientRequestFilterRegistry, replaces it. - * @return interceptor registry - */ - @Deprecated - @Override - public JaxrsInterceptorRegistry getClientRequestFilters() - { - return getDelegate().getClientRequestFilters(); - } - @Override public Map getProperties() { @@ -641,21 +575,4 @@ public MessageBodyReader getClientMessageBodyReader(Class type, Type g return reader; } - @Override - public MessageBodyReader getServerMessageBodyReader(Class type, Type genericType, Annotation[] annotations, MediaType mediaType) - { - MessageBodyReader reader = getDelegate().getServerMessageBodyReader(type, genericType, annotations, mediaType); - if (reader!=null) - LogMessages.LOGGER.debugf("MessageBodyReader: %s", reader.getClass().getName()); - return reader; - } - - @Override - public MessageBodyWriter getServerMessageBodyWriter(Class type, Type genericType, Annotation[] annotations, MediaType mediaType) - { - MessageBodyWriter writer = getDelegate().getServerMessageBodyWriter(type, genericType, annotations, mediaType); - if (writer!=null) - LogMessages.LOGGER.debugf("MessageBodyWriter: %s", writer.getClass().getName()); - return writer; - } } diff --git a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/interception/jaxrs/ServerReaderInterceptorContext.java b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/interception/jaxrs/ServerReaderInterceptorContext.java index 987af7e029e..e71ecacbfee 100755 --- a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/interception/jaxrs/ServerReaderInterceptorContext.java +++ b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/interception/jaxrs/ServerReaderInterceptorContext.java @@ -41,7 +41,7 @@ public ServerReaderInterceptorContext(ReaderInterceptor[] interceptors, Resteasy protected MessageBodyReader resolveReader(MediaType mediaType) { @SuppressWarnings(value = "unchecked") - MessageBodyReader reader = providerFactory.getServerMessageBodyReader(type, + MessageBodyReader reader = providerFactory.getMessageBodyReader(type, genericType, annotations, mediaType); //logger.info("**** picked reader: " + reader.getClass().getName()); return reader; diff --git a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/interception/jaxrs/ServerWriterInterceptorContext.java b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/interception/jaxrs/ServerWriterInterceptorContext.java index 2b973329332..f1b5ef6ca13 100755 --- a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/interception/jaxrs/ServerWriterInterceptorContext.java +++ b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/interception/jaxrs/ServerWriterInterceptorContext.java @@ -38,7 +38,7 @@ public ServerWriterInterceptorContext(WriterInterceptor[] interceptors, Resteasy @Override protected MessageBodyWriter resolveWriter() { - return providerFactory.getServerMessageBodyWriter( + return providerFactory.getMessageBodyWriter( type, genericType, annotations, mediaType); } diff --git a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/plugins/server/servlet/ConfigurationBootstrap.java b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/plugins/server/servlet/ConfigurationBootstrap.java index a16d32533d9..2087863fd3f 100755 --- a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/plugins/server/servlet/ConfigurationBootstrap.java +++ b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/plugins/server/servlet/ConfigurationBootstrap.java @@ -202,27 +202,6 @@ public ResteasyDeployment createDeployment() Map map = parseMap(languageExtensions); deployment.setLanguageExtensions(map); } - String before = getParameter(ResteasyContextParameters.RESTEASY_INTERCEPTOR_BEFORE_PRECEDENCE); - if (before != null) - { - Map map = parseMap(before); - deployment.setInterceptorBeforePrecedences(map); - } - String after = getParameter(ResteasyContextParameters.RESTEASY_INTERCEPTOR_AFTER_PRECEDENCE); - if (after != null) - { - Map map = parseMap(after); - deployment.setInterceptorAfterPrecedences(map); - } - String append = getParameter(ResteasyContextParameters.RESTEASY_APPEND_INTERCEPTOR_PRECEDENCE); - if (append != null) - { - String[] precedences = append.split(","); - for (String precedence : precedences) - { - deployment.getInterceptorPrecedences().add(precedence.trim()); - } - } String useContainerFormParams = getParameter(ResteasyContextParameters.RESTEASY_USE_CONTAINER_FORM_PARAMS); if (useContainerFormParams != null) diff --git a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/plugins/server/servlet/ResteasyContextParameters.java b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/plugins/server/servlet/ResteasyContextParameters.java index f8a02fd14cd..40b0c27abfb 100755 --- a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/plugins/server/servlet/ResteasyContextParameters.java +++ b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/plugins/server/servlet/ResteasyContextParameters.java @@ -27,9 +27,6 @@ public interface ResteasyContextParameters { String RESTEASY_LANGUAGE_MAPPINGS = "resteasy.language.mappings"; String RESTEASY_MEDIA_TYPE_PARAM_MAPPING = "resteasy.media.type.param.mapping"; String RESTEASY_ROLE_BASED_SECURITY = "resteasy.role.based.security"; - String RESTEASY_INTERCEPTOR_BEFORE_PRECEDENCE = "resteasy.interceptor.before.precedence"; - String RESTEASY_INTERCEPTOR_AFTER_PRECEDENCE = "resteasy.interceptor.after.precedence"; - String RESTEASY_APPEND_INTERCEPTOR_PRECEDENCE = "resteasy.append.interceptor.precedence"; String RESTEASY_SCANNED_BY_DEPLOYER = "resteasy.scanned.by.deployer"; String RESTEASY_JNDI_COMPONENT_RESOURCES = "resteasy.jndi.component.resources"; String RESTEASY_UNWRAPPED_EXCEPTIONS = "resteasy.unwrapped.exceptions"; diff --git a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/spi/ResteasyDeployment.java b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/spi/ResteasyDeployment.java index 167d3df555f..a88b51b6fd7 100755 --- a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/spi/ResteasyDeployment.java +++ b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/spi/ResteasyDeployment.java @@ -37,46 +37,43 @@ */ public class ResteasyDeployment { - protected boolean widerRequestMatching; - protected boolean useContainerFormParams = false; - protected boolean deploymentSensitiveFactoryEnabled = false; - protected boolean asyncJobServiceEnabled = false; - protected boolean addCharset = true; - protected int asyncJobServiceMaxJobResults = 100; - protected long asyncJobServiceMaxWait = 300000; - protected int asyncJobServiceThreadPoolSize = 100; - protected String asyncJobServiceBasePath = "/asynch/jobs"; - protected String applicationClass; - protected String injectorFactoryClass; - protected InjectorFactory injectorFactory; - protected Application application; - protected boolean registerBuiltin = true; - protected List scannedResourceClasses = new ArrayList(); - protected List scannedProviderClasses = new ArrayList(); - protected List scannedJndiComponentResources = new ArrayList(); - protected List jndiComponentResources = new ArrayList(); - protected List providerClasses = new ArrayList(); - protected List actualProviderClasses = new ArrayList(); - protected List providers = new ArrayList(); - protected boolean securityEnabled = false; - protected List jndiResources = new ArrayList(); - protected List resourceClasses = new ArrayList(); - protected List unwrappedExceptions = new ArrayList(); - protected List actualResourceClasses = new ArrayList(); - protected List resourceFactories = new ArrayList(); - protected List resources = new ArrayList(); - protected Map mediaTypeMappings = new HashMap(); - protected Map languageExtensions = new HashMap(); - protected List interceptorPrecedences = new ArrayList(); - protected Map interceptorBeforePrecedences = new HashMap(); - protected Map interceptorAfterPrecedences = new HashMap(); - protected Map defaultContextObjects = new HashMap(); - protected Map constructedDefaultContextObjects = new HashMap(); - protected Registry registry; - protected Dispatcher dispatcher; - protected ResteasyProviderFactory providerFactory; - protected ThreadLocalResteasyProviderFactory threadLocalProviderFactory; - protected String paramMapping; + private boolean widerRequestMatching; + private boolean useContainerFormParams = false; + private boolean deploymentSensitiveFactoryEnabled = false; + private boolean asyncJobServiceEnabled = false; + private boolean addCharset = true; + private int asyncJobServiceMaxJobResults = 100; + private long asyncJobServiceMaxWait = 300000; + private int asyncJobServiceThreadPoolSize = 100; + private String asyncJobServiceBasePath = "/asynch/jobs"; + private String applicationClass; + private String injectorFactoryClass; + private InjectorFactory injectorFactory; + private Application application; + private boolean registerBuiltin = true; + private List scannedResourceClasses = new ArrayList(); + private List scannedProviderClasses = new ArrayList(); + private List scannedJndiComponentResources = new ArrayList(); + private List jndiComponentResources = new ArrayList(); + private List providerClasses = new ArrayList(); + private List actualProviderClasses = new ArrayList(); + private List providers = new ArrayList(); + private boolean securityEnabled = false; + private List jndiResources = new ArrayList(); + private List resourceClasses = new ArrayList(); + private List unwrappedExceptions = new ArrayList(); + private List actualResourceClasses = new ArrayList(); + private List resourceFactories = new ArrayList(); + private List resources = new ArrayList(); + private Map mediaTypeMappings = new HashMap(); + private Map languageExtensions = new HashMap(); + private Map defaultContextObjects = new HashMap(); + private Map constructedDefaultContextObjects = new HashMap(); + private Registry registry; + private Dispatcher dispatcher; + private ResteasyProviderFactory providerFactory; + private ThreadLocalResteasyProviderFactory threadLocalProviderFactory; + private String paramMapping; public void start() { @@ -91,7 +88,7 @@ public void start() } @SuppressWarnings(value = {"unchecked", "deprecation"}) - protected void startInternal() + private void startInternal() { // it is very important that each deployment create their own provider factory // this allows each WAR to have their own set of providers @@ -250,32 +247,6 @@ protected void startInternal() } } - // Interceptor preferences should come before provider registration or builtin. - - if (interceptorPrecedences != null) - { - for (String precedence : interceptorPrecedences) - { - providerFactory.appendInterceptorPrecedence(precedence.trim()); - } - } - - if (interceptorBeforePrecedences != null) - { - for (Map.Entry ext : interceptorBeforePrecedences.entrySet()) - { - providerFactory.insertInterceptorPrecedenceBefore(ext.getKey().trim(), ext.getValue().trim()); - } - } - if (interceptorAfterPrecedences != null) - { - for (Map.Entry ext : interceptorAfterPrecedences.entrySet()) - { - providerFactory.insertInterceptorPrecedenceAfter(ext.getKey().trim(), ext.getValue().trim()); - } - } - - if (securityEnabled) { providerFactory.register(RoleBasedSecurityFeature.class); @@ -367,9 +338,6 @@ public void merge(ResteasyDeployment other) mediaTypeMappings.putAll(other.getMediaTypeMappings()); languageExtensions.putAll(other.getLanguageExtensions()); - interceptorPrecedences.addAll(other.getInterceptorPrecedences()); - interceptorBeforePrecedences.putAll(other.getInterceptorBeforePrecedences()); - interceptorAfterPrecedences.putAll(other.getInterceptorAfterPrecedences()); defaultContextObjects.putAll(other.getDefaultContextObjects()); constructedDefaultContextObjects.putAll(other.getConstructedDefaultContextObjects()); @@ -395,7 +363,7 @@ public static Application createApplication(String applicationClass, Dispatcher return app; } - public static Object createFromInjectorFactory(String classname, ResteasyProviderFactory providerFactory) + private static Object createFromInjectorFactory(String classname, ResteasyProviderFactory providerFactory) { Class clazz = null; try @@ -532,7 +500,7 @@ public void registration() registry.checkAmbiguousUri(); } - protected void registerJndiComponentResource(String resource) + private void registerJndiComponentResource(String resource) { String[] config = resource.trim().split(";"); if (config.length < 3) @@ -570,7 +538,7 @@ public void stop() * @param config application * @return whether application class registered anything. i.e. whether scanning metadata should be used or not */ - protected boolean processApplication(Application config) + private boolean processApplication(Application config) { LogMessages.LOGGER.deployingApplication(Application.class.getName(), config.getClass()); boolean registered = false; @@ -644,7 +612,7 @@ public boolean configure(FeatureContext featureContext) return registered; } - protected void registerProvider(String clazz) + private void registerProvider(String clazz) { Class provider = null; try @@ -878,36 +846,6 @@ public void setLanguageExtensions(Map languageExtensions) this.languageExtensions = languageExtensions; } - public List getInterceptorPrecedences() - { - return interceptorPrecedences; - } - - public void setInterceptorPrecedences(List interceptorPrecedences) - { - this.interceptorPrecedences = interceptorPrecedences; - } - - public Map getInterceptorBeforePrecedences() - { - return interceptorBeforePrecedences; - } - - public void setInterceptorBeforePrecedences(Map interceptorBeforePrecedences) - { - this.interceptorBeforePrecedences = interceptorBeforePrecedences; - } - - public Map getInterceptorAfterPrecedences() - { - return interceptorAfterPrecedences; - } - - public void setInterceptorAfterPrecedences(Map interceptorAfterPrecedences) - { - this.interceptorAfterPrecedences = interceptorAfterPrecedences; - } - public Registry getRegistry() { return registry; diff --git a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/spi/ResteasyProviderFactory.java b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/spi/ResteasyProviderFactory.java index 6552548cf44..767b46e2d25 100755 --- a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/spi/ResteasyProviderFactory.java +++ b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/spi/ResteasyProviderFactory.java @@ -6,7 +6,6 @@ import org.jboss.resteasy.core.interception.jaxrs.ClientResponseFilterRegistry; import org.jboss.resteasy.core.interception.jaxrs.ContainerRequestFilterRegistry; import org.jboss.resteasy.core.interception.jaxrs.ContainerResponseFilterRegistry; -import org.jboss.resteasy.core.interception.jaxrs.JaxrsInterceptorRegistry; import org.jboss.resteasy.core.interception.jaxrs.ReaderInterceptorRegistry; import org.jboss.resteasy.core.interception.jaxrs.WriterInterceptorRegistry; import org.jboss.resteasy.plugins.delegates.CacheControlDelegate; @@ -28,9 +27,6 @@ import org.jboss.resteasy.specimpl.VariantListBuilderImpl; import org.jboss.resteasy.spi.metadata.ResourceBuilder; import org.jboss.resteasy.spi.metadata.ResourceClassProcessor; -import org.jboss.resteasy.tracing.RESTEasyTracingConfig; -import org.jboss.resteasy.tracing.RESTEasyTracingLevel; -import org.jboss.resteasy.tracing.RESTEasyTracingLogger; import org.jboss.resteasy.util.FeatureContextDelegate; import org.jboss.resteasy.util.PickConstructor; import org.jboss.resteasy.util.ThreadLocalStack; @@ -71,7 +67,6 @@ import java.net.URI; import java.net.URL; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; @@ -84,18 +79,14 @@ import java.util.TreeSet; import java.util.Map.Entry; import java.util.Objects; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionStage; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArraySet; -import java.util.concurrent.atomic.AtomicReference; /** * @author Bill Burke * @version $Revision: 1 $ */ -@SuppressWarnings({"unchecked", "deprecation"}) +@SuppressWarnings("unchecked") public class ResteasyProviderFactory extends RuntimeDelegate implements Providers, HeaderValueProcessor, Configurable, Configuration { /** @@ -105,38 +96,31 @@ public class ResteasyProviderFactory extends RuntimeDelegate implements Provider * This helps out a lot when the desired media type is a wildcard and to weed out all the possible * default mappings. */ - protected static class SortedKey implements Comparable>, MediaTypeMap.Typed + private static class SortedKey implements Comparable>, MediaTypeMap.Typed { - public Class readerClass; - public T obj; - - public boolean isBuiltin = false; - - public Class template = null; - - public int priority = Priorities.USER; + private final T obj; + private final boolean isBuiltin; + private final Class template; + private final int priority; protected SortedKey(Class intf, T reader, Class readerClass, int priority, boolean isBuiltin) { - this(intf, reader, readerClass); + this.obj = reader; + // check the super class for the generic type 1st + Class t = Types.getTemplateParameterOfInterface(readerClass, intf); + template = (t != null) ? t : Object.class; this.priority = priority; this.isBuiltin = isBuiltin; } protected SortedKey(Class intf, T reader, Class readerClass, boolean isBuiltin) { - this(intf, reader, readerClass); - this.isBuiltin = isBuiltin; + this(intf, reader, readerClass, Priorities.USER, isBuiltin); } - protected SortedKey(Class intf, T reader, Class readerClass) { - this.readerClass = readerClass; - this.obj = reader; - // check the super class for the generic type 1st - template = Types.getTemplateParameterOfInterface(readerClass, intf); - if (template == null) template = Object.class; + this(intf, reader, readerClass, Priorities.USER, false); } public int compareTo(SortedKey tMessageBodyKey) @@ -172,7 +156,7 @@ public T getObj() { } } - protected static class ExtSortedKey extends SortedKey + private static class ExtSortedKey extends SortedKey { protected ExtSortedKey(Class intf, T reader, Class readerClass, int priority, boolean isBuiltin) { @@ -197,7 +181,7 @@ public int compareTo(SortedKey tMessageBodyKey) { return c; } - if (this.obj == tMessageBodyKey.obj) + if (this.getObj() == tMessageBodyKey.getObj()) { return 0; } @@ -205,63 +189,56 @@ public int compareTo(SortedKey tMessageBodyKey) } } - protected static AtomicReference pfr = new AtomicReference(); - protected static ThreadLocalStack, Object>> contextualData = new ThreadLocalStack, Object>>(); - protected static int maxForwards = 20; - protected static volatile ResteasyProviderFactory instance; - public static boolean registerBuiltinByDefault = true; - - protected MediaTypeMap> serverMessageBodyReaders; - protected MediaTypeMap> serverMessageBodyWriters; - protected MediaTypeMap> clientMessageBodyReaders; - protected MediaTypeMap> clientMessageBodyWriters; - protected Map, SortedKey> sortedExceptionMappers; - protected Map, ExceptionMapper> exceptionMappers; - protected Map, AsyncResponseProvider> asyncResponseProviders; - protected Map, AsyncClientResponseProvider> asyncClientResponseProviders; - protected Map, AsyncStreamProvider> asyncStreamProviders; - protected Map, MediaTypeMap>> contextResolvers; - protected Map contextInjectors; - protected Map asyncContextInjectors; - protected Map, StringConverter> stringConverters; - protected Set> sortedParamConverterProviders; - protected List paramConverterProviders; - protected Map, Class> stringParameterUnmarshallers; + private static final ThreadLocalStack, Object>> contextualData = new ThreadLocalStack, Object>>(); + private static final int maxForwards = 20; + private static volatile ResteasyProviderFactory instance; + private static boolean registerBuiltinByDefault = true; + + private MediaTypeMap> serverMessageBodyReaders; + private MediaTypeMap> serverMessageBodyWriters; + private MediaTypeMap> clientMessageBodyReaders; + private MediaTypeMap> clientMessageBodyWriters; + private Map, SortedKey> sortedExceptionMappers; + private Map, ExceptionMapper> exceptionMappers; + private Map, AsyncResponseProvider> asyncResponseProviders; + private Map, AsyncClientResponseProvider> asyncClientResponseProviders; + private Map, AsyncStreamProvider> asyncStreamProviders; + private Map, MediaTypeMap>> contextResolvers; + private Map contextInjectors; + private Map asyncContextInjectors; + private Set> sortedParamConverterProviders; + private Map, Class> stringParameterUnmarshallers; protected Map, Map, Integer>> classContracts; - protected Map, HeaderDelegate> headerDelegates; + private Map, HeaderDelegate> headerDelegates; + + private ReaderInterceptorRegistry serverReaderInterceptorRegistry; + private WriterInterceptorRegistry serverWriterInterceptorRegistry; + private ContainerRequestFilterRegistry containerRequestFilterRegistry; + private ContainerResponseFilterRegistry containerResponseFilterRegistry; - protected ReaderInterceptorRegistry serverReaderInterceptorRegistry; - protected WriterInterceptorRegistry serverWriterInterceptorRegistry; - protected ContainerRequestFilterRegistry containerRequestFilterRegistry; - protected ContainerResponseFilterRegistry containerResponseFilterRegistry; + private ClientRequestFilterRegistry clientRequestFilterRegistry; - protected ClientRequestFilterRegistry clientRequestFilterRegistry; + private ClientResponseFilterRegistry clientResponseFilters; + private ReaderInterceptorRegistry clientReaderInterceptorRegistry; + private WriterInterceptorRegistry clientWriterInterceptorRegistry; - @Deprecated // variable is maintained for jaxrs-leagcy code support only - protected JaxrsInterceptorRegistry clientRequestFilters; - protected ClientResponseFilterRegistry clientResponseFilters; - protected ReaderInterceptorRegistry clientReaderInterceptorRegistry; - protected WriterInterceptorRegistry clientWriterInterceptorRegistry; + private boolean builtinsRegistered = false; + private boolean registerBuiltins = true; - protected boolean builtinsRegistered = false; - protected boolean registerBuiltins = true; + private InjectorFactory injectorFactory; + private ResteasyProviderFactory parent; - protected InjectorFactory injectorFactory; - protected ResteasyProviderFactory parent; + private Set serverDynamicFeatures; + private Set clientDynamicFeatures; + private Map properties; + private Map, Class>> reactiveClasses; + + private ResourceBuilder resourceBuilder; - protected Set serverDynamicFeatures; - protected Set clientDynamicFeatures; protected Set enabledFeatures; - protected Map properties; protected Set> providerClasses; protected Set providerInstances; - protected Set> featureClasses; - protected Set featureInstances; - protected Map, Class>> reactiveClasses; - - protected ResourceBuilder resourceBuilder; - public ResteasyProviderFactory() { @@ -290,8 +267,6 @@ public ResteasyProviderFactory(ResteasyProviderFactory parent) public ResteasyProviderFactory(ResteasyProviderFactory parent, boolean local) { this.parent = parent; - featureClasses = new CopyOnWriteArraySet>(); - featureInstances = new CopyOnWriteArraySet(); providerClasses = new CopyOnWriteArraySet>(); providerInstances = new CopyOnWriteArraySet(); properties = new ConcurrentHashMap(); @@ -322,8 +297,6 @@ protected void initialize() clientDynamicFeatures = new CopyOnWriteArraySet(); enabledFeatures = new CopyOnWriteArraySet(); properties = new ConcurrentHashMap(); - featureClasses = new CopyOnWriteArraySet>(); - featureInstances = new CopyOnWriteArraySet(); providerClasses = new CopyOnWriteArraySet>(); providerInstances = new CopyOnWriteArraySet(); classContracts = new ConcurrentHashMap, Map, Integer>>(); @@ -339,7 +312,6 @@ protected void initialize() contextInjectors = new ConcurrentHashMap(); asyncContextInjectors = new ConcurrentHashMap(); sortedParamConverterProviders = Collections.synchronizedSortedSet(new TreeSet>()); - stringConverters = new ConcurrentHashMap, StringConverter>(); stringParameterUnmarshallers = new ConcurrentHashMap, Class>(); reactiveClasses = new ConcurrentHashMap, Class>>(); headerDelegates = new ConcurrentHashMap, HeaderDelegate>(); @@ -364,7 +336,7 @@ protected void initialize() addHeaderDelegate(Date.class, new DateDelegate()); } - protected void initializeRegistriesAndFilters() + private void initializeRegistriesAndFilters() { serverReaderInterceptorRegistry = new ReaderInterceptorRegistry(this); serverWriterInterceptorRegistry = new WriterInterceptorRegistry(this); @@ -372,7 +344,6 @@ protected void initializeRegistriesAndFilters() containerResponseFilterRegistry = new ContainerResponseFilterRegistry(this); clientRequestFilterRegistry = new ClientRequestFilterRegistry(this); - clientRequestFilters = new JaxrsInterceptorRegistry(this, ClientRequestFilter.class); clientResponseFilters = new ClientResponseFilterRegistry(this); clientReaderInterceptorRegistry = new ReaderInterceptorRegistry(this); clientWriterInterceptorRegistry = new WriterInterceptorRegistry(this); @@ -392,25 +363,25 @@ public Set getClientDynamicFeatures() } - protected MediaTypeMap> getServerMessageBodyReaders() + private MediaTypeMap> getServerMessageBodyReaders() { if (serverMessageBodyReaders == null && parent != null) return parent.getServerMessageBodyReaders(); return serverMessageBodyReaders; } - protected MediaTypeMap> getServerMessageBodyWriters() + private MediaTypeMap> getServerMessageBodyWriters() { if (serverMessageBodyWriters == null && parent != null) return parent.getServerMessageBodyWriters(); return serverMessageBodyWriters; } - protected MediaTypeMap> getClientMessageBodyReaders() + private MediaTypeMap> getClientMessageBodyReaders() { if (clientMessageBodyReaders == null && parent != null) return parent.getClientMessageBodyReaders(); return clientMessageBodyReaders; } - protected MediaTypeMap> getClientMessageBodyWriters() + private MediaTypeMap> getClientMessageBodyWriters() { if (clientMessageBodyWriters == null && parent != null) return parent.getClientMessageBodyWriters(); return clientMessageBodyWriters; @@ -433,7 +404,7 @@ public Map, ExceptionMapper> getExceptionMappers() return map; } - protected Map, SortedKey> getSortedExceptionMappers() + private Map, SortedKey> getSortedExceptionMappers() { if (sortedExceptionMappers == null && parent != null) return parent.getSortedExceptionMappers(); return sortedExceptionMappers; @@ -469,40 +440,19 @@ public Map getAsyncContextInjectors() return asyncContextInjectors; } - protected Map, MediaTypeMap>> getContextResolvers() + private Map, MediaTypeMap>> getContextResolvers() { if (contextResolvers == null && parent != null) return parent.getContextResolvers(); return contextResolvers; } - protected Map, StringConverter> getStringConverters() - { - if (stringConverters == null && parent != null) return parent.getStringConverters(); - return stringConverters; - } - - public List getParamConverterProviders() - { - if (paramConverterProviders != null) - { - return paramConverterProviders; - } - List list = new CopyOnWriteArrayList(); - for (SortedKey key : getSortedParamConverterProviders()) - { - list.add(key.getObj()); - } - paramConverterProviders = list; - return list; - } - - protected Set> getSortedParamConverterProviders() + private Set> getSortedParamConverterProviders() { if (sortedParamConverterProviders == null && parent != null) return parent.getSortedParamConverterProviders(); return sortedParamConverterProviders; } - protected Map, Class> getStringParameterUnmarshallers() + private Map, Class> getStringParameterUnmarshallers() { if (stringParameterUnmarshallers == null && parent != null) return parent.getStringParameterUnmarshallers(); return stringParameterUnmarshallers; @@ -536,7 +486,7 @@ public Set getProviderInstances() return set; } - public Map, Map, Integer>> getClassContracts() + private Map, Map, Integer>> getClassContracts() { if (classContracts != null) return classContracts; Map, Map, Integer>> map = new ConcurrentHashMap, Map, Integer>>(); @@ -553,43 +503,6 @@ public Map, Map, Integer>> getClassContracts() return classContracts; } - public ResteasyProviderFactory getParent() - { - return parent; - } - - /** - * Append interceptor predence. - * - * @param precedence precedence - */ - @Deprecated - public void appendInterceptorPrecedence(String precedence) - { - //NOOP, here only for backward compatibility (used in ResteasyDeployment) - } - - /** - * @param after put newPrecedence after this - * @param newPrecedence new precedence - */ - @Deprecated - public void insertInterceptorPrecedenceAfter(String after, String newPrecedence) - { - //NOOP, here only for backward compatibility (used in ResteasyDeployment) - } - - /** - * @param before put newPrecedence before this - * @param newPrecedence new precedence - */ - @Deprecated - public void insertInterceptorPrecedenceBefore(String before, String newPrecedence) - { - //NOOP, here only for backward compatibility (used in ResteasyDeployment) - } - - public static void pushContext(Class type, T data) { getContextDataMap().put(type, data); @@ -855,18 +768,6 @@ public ClientRequestFilterRegistry getClientRequestFilterRegistry() return clientRequestFilterRegistry; } - /** - * This method retained for jaxrs-legacy code. This method is deprecated and is replace - * by method, getClientRequestFilterRegistry(). - * @return interceptor registry - */ - @Deprecated - public JaxrsInterceptorRegistry getClientRequestFilters() - { - if (clientRequestFilters == null && parent != null) return parent.getClientRequestFilters(); - return clientRequestFilters; - } - public ClientResponseFilterRegistry getClientResponseFilters() { if (clientResponseFilters == null && parent != null) return parent.getClientResponseFilters(); @@ -922,7 +823,7 @@ public HeaderDelegate createHeaderDelegate(Class tClass) return createHeaderDelegateFromInterfaces(tClass.getInterfaces()); } - protected HeaderDelegate createHeaderDelegateFromInterfaces(Class[] interfaces) + private HeaderDelegate createHeaderDelegateFromInterfaces(Class[] interfaces) { HeaderDelegate delegate = null; for (int i = 0; i < interfaces.length; i++) @@ -941,7 +842,7 @@ protected HeaderDelegate createHeaderDelegateFromInterfaces(Class[] in return null; } - protected Map, HeaderDelegate> getHeaderDelegates() + private Map, HeaderDelegate> getHeaderDelegates() { if (headerDelegates == null && parent != null) return parent.getHeaderDelegates(); return headerDelegates; @@ -957,22 +858,6 @@ public void addHeaderDelegate(Class clazz, HeaderDelegate header) headerDelegates.put(clazz, header); } - protected void addMessageBodyReader(Class provider, int priority, boolean isBuiltin) - { - MessageBodyReader reader = createProviderInstance(provider); - addMessageBodyReader(reader, provider, priority, isBuiltin); - } - - protected void addMessageBodyReader(MessageBodyReader provider) - { - addMessageBodyReader(provider, Priorities.USER, false); - } - - protected void addMessageBodyReader(MessageBodyReader provider, int priority, boolean isBuiltin) - { - addMessageBodyReader(provider, provider.getClass(), priority, isBuiltin); - } - /** * Specify the provider class. This is there jsut in case the provider instance is a proxy. Proxies tend * to lose generic type information. @@ -983,7 +868,7 @@ protected void addMessageBodyReader(MessageBodyReader provider, int priority, bo * @param isBuiltin built-in */ - protected void addMessageBodyReader(MessageBodyReader provider, Class providerClass, int priority, boolean isBuiltin) + private void addMessageBodyReader(MessageBodyReader provider, Class providerClass, int priority, boolean isBuiltin) { SortedKey key = new SortedKey(MessageBodyReader.class, provider, providerClass, priority, isBuiltin); injectProperties(providerClass, provider); @@ -992,24 +877,11 @@ protected void addMessageBodyReader(MessageBodyReader provider, Class provide ConstrainedTo constrainedTo = providerClass.getAnnotation(ConstrainedTo.class); if (constrainedTo != null) type = constrainedTo.value(); - if (type == null) + if ((type == null || type == RuntimeType.CLIENT) && clientMessageBodyReaders == null) { - addClientMessageBodyReader(key, consumeMime); - addServerMessageBodyReader(key, consumeMime); - } - else if (type == RuntimeType.CLIENT) - { - addClientMessageBodyReader(key, consumeMime); - } - else - { - addServerMessageBodyReader(key, consumeMime); + clientMessageBodyReaders = parent.getClientMessageBodyReaders().clone(); } - } - - protected void addServerMessageBodyReader(SortedKey key, Consumes consumeMime) - { - if (serverMessageBodyReaders == null) + if ((type == null || type == RuntimeType.SERVER) && serverMessageBodyReaders == null) { serverMessageBodyReaders = parent.getServerMessageBodyReaders().clone(); } @@ -1017,45 +889,27 @@ protected void addServerMessageBodyReader(SortedKey key, Cons { for (String consume : consumeMime.value()) { - MediaType mime = MediaType.valueOf(consume); - serverMessageBodyReaders.add(mime, key); + if (type == null) { + clientMessageBodyReaders.add(MediaType.valueOf(consume), key); + serverMessageBodyReaders.add(MediaType.valueOf(consume), key); + } else if (type == RuntimeType.CLIENT) { + clientMessageBodyReaders.add(MediaType.valueOf(consume), key); + } else { + serverMessageBodyReaders.add(MediaType.valueOf(consume), key); + } } } else { - serverMessageBodyReaders.add(new MediaType("*", "*"), key); - } - } - - protected void addClientMessageBodyReader(SortedKey key, Consumes consumeMime) - { - if (clientMessageBodyReaders == null) - { - clientMessageBodyReaders = parent.getClientMessageBodyReaders().clone(); - } - if (consumeMime != null) - { - for (String consume : consumeMime.value()) - { - MediaType mime = MediaType.valueOf(consume); - clientMessageBodyReaders.add(mime, key); + if (type == null) { + clientMessageBodyReaders.add(new MediaType("*", "*"), key); + serverMessageBodyReaders.add(new MediaType("*", "*"), key); + } else if (type == RuntimeType.CLIENT) { + clientMessageBodyReaders.add(new MediaType("*", "*"), key); + } else { + serverMessageBodyReaders.add(new MediaType("*", "*"), key); } } - else - { - clientMessageBodyReaders.add(new MediaType("*", "*"), key); - } - } - - protected void addMessageBodyWriter(Class provider, int priority, boolean isBuiltin) - { - MessageBodyWriter writer = createProviderInstance(provider); - addMessageBodyWriter(writer, provider, priority, isBuiltin); - } - - protected void addMessageBodyWriter(MessageBodyWriter provider) - { - addMessageBodyWriter(provider, provider.getClass(), Priorities.USER, false); } /** @@ -1067,7 +921,7 @@ protected void addMessageBodyWriter(MessageBodyWriter provider) * @param priority priority * @param isBuiltin built-in */ - protected void addMessageBodyWriter(MessageBodyWriter provider, Class providerClass, int priority, boolean isBuiltin) + private void addMessageBodyWriter(MessageBodyWriter provider, Class providerClass, int priority, boolean isBuiltin) { injectProperties(providerClass, provider); Produces consumeMime = provider.getClass().getAnnotation(Produces.class); @@ -1075,26 +929,12 @@ protected void addMessageBodyWriter(MessageBodyWriter provider, Class provide RuntimeType type = null; ConstrainedTo constrainedTo = providerClass.getAnnotation(ConstrainedTo.class); if (constrainedTo != null) type = constrainedTo.value(); - if (type == null) - { - addClientMessageBodyWriter(consumeMime, key); - addServerMessageBodyWriter(consumeMime, key); - - } - else if (type == RuntimeType.CLIENT) - { - addClientMessageBodyWriter(consumeMime, key); - - } - else + + if ((type == null || type == RuntimeType.CLIENT) && clientMessageBodyWriters == null) { - addServerMessageBodyWriter(consumeMime, key); + clientMessageBodyWriters = parent.getClientMessageBodyWriters().clone(); } - } - - protected void addServerMessageBodyWriter(Produces consumeMime, SortedKey key) - { - if (serverMessageBodyWriters == null) + if ((type == null || type == RuntimeType.SERVER) && serverMessageBodyWriters == null) { serverMessageBodyWriters = parent.getServerMessageBodyWriters().clone(); } @@ -1102,44 +942,29 @@ protected void addServerMessageBodyWriter(Produces consumeMime, SortedKey>> Adding provider: " + provider.getClass().getName() + " with mime type of: " + mime); - serverMessageBodyWriters.add(mime, key); + if (type == null) { + clientMessageBodyWriters.add(MediaType.valueOf(consume), key); + serverMessageBodyWriters.add(MediaType.valueOf(consume), key); + } else if (type == RuntimeType.CLIENT) { + clientMessageBodyWriters.add(MediaType.valueOf(consume), key); + } else { + serverMessageBodyWriters.add(MediaType.valueOf(consume), key); + } } } else { //logger.info(">>> Adding provider: " + provider.getClass().getName() + " with mime type of: default */*"); - serverMessageBodyWriters.add(new MediaType("*", "*"), key); - } - } - - protected void addClientMessageBodyWriter(Produces consumeMime, SortedKey key) - { - if (clientMessageBodyWriters == null) - { - clientMessageBodyWriters = parent.getClientMessageBodyWriters().clone(); - } - if (consumeMime != null) - { - for (String consume : consumeMime.value()) - { - MediaType mime = MediaType.valueOf(consume); - //logger.info(">>> Adding provider: " + provider.getClass().getName() + " with mime type of: " + mime); - clientMessageBodyWriters.add(mime, key); + if (type == null) { + clientMessageBodyWriters.add(new MediaType("*", "*"), key); + serverMessageBodyWriters.add(new MediaType("*", "*"), key); + } else if (type == RuntimeType.CLIENT) { + clientMessageBodyWriters.add(new MediaType("*", "*"), key); + } else { + serverMessageBodyWriters.add(new MediaType("*", "*"), key); } } - else - { - //logger.info(">>> Adding provider: " + provider.getClass().getName() + " with mime type of: default */*"); - clientMessageBodyWriters.add(new MediaType("*", "*"), key); - } - } - - public MessageBodyReader getServerMessageBodyReader(Class type, Type genericType, Annotation[] annotations, MediaType mediaType) - { - MediaTypeMap> availableReaders = getServerMessageBodyReaders(); - return resolveMessageBodyReader(type, genericType, annotations, mediaType, availableReaders); } /** @@ -1174,7 +999,7 @@ public MessageBodyReader getClientMessageBodyReader(Class type, Type g return resolveMessageBodyReader(type, genericType, annotations, mediaType, availableReaders); } - protected MessageBodyReader resolveMessageBodyReader(Class type, Type genericType, Annotation[] annotations, MediaType mediaType, MediaTypeMap> availableReaders) + private MessageBodyReader resolveMessageBodyReader(Class type, Type genericType, Annotation[] annotations, MediaType mediaType, MediaTypeMap> availableReaders) { List> readers = availableReaders.getPossible(mediaType, type); @@ -1191,38 +1016,7 @@ protected MessageBodyReader resolveMessageBodyReader(Class type, Type return null; } - protected void addExceptionMapper(Class providerClass) - { - addExceptionMapper(providerClass, false); - } - - protected void addExceptionMapper(ExceptionMapper provider) - { - addExceptionMapper(provider, false); - } - - protected void addExceptionMapper(ExceptionMapper provider, Class providerClass) - { - addExceptionMapper(provider, providerClass, false); - } - - protected void addExceptionMapper(ExceptionMapper provider, Type exceptionType) - { - addExceptionMapper(provider, exceptionType, provider.getClass(), false); - } - - protected void addExceptionMapper(Class providerClass, boolean isBuiltin) - { - ExceptionMapper provider = createProviderInstance(providerClass); - addExceptionMapper(provider, providerClass, isBuiltin); - } - - protected void addExceptionMapper(ExceptionMapper provider, boolean isBuiltin) - { - addExceptionMapper(provider, provider.getClass(), isBuiltin); - } - - protected void addExceptionMapper(ExceptionMapper provider, Class providerClass, boolean isBuiltin) + private void addExceptionMapper(ExceptionMapper provider, Class providerClass, boolean isBuiltin) { // Check for weld proxy. if (providerClass.isSynthetic()) @@ -1230,16 +1024,7 @@ protected void addExceptionMapper(ExceptionMapper provider, Class providerClass, providerClass = providerClass.getSuperclass(); } Type exceptionType = Types.getActualTypeArgumentsOfAnInterface(providerClass, ExceptionMapper.class)[0]; - addExceptionMapper(provider, exceptionType, providerClass, isBuiltin); - } - - protected void addExceptionMapper(ExceptionMapper provider, Type exceptionType, Class providerClass, boolean isBuiltin) - { - // Check for weld proxy. - if (providerClass.isSynthetic()) - { - providerClass = providerClass.getSuperclass(); - } + injectProperties(providerClass, provider); Class exceptionClass = Types.getRawType(exceptionType); @@ -1263,27 +1048,10 @@ protected void addExceptionMapper(ExceptionMapper provider, Type exceptionType, exceptionMappers = null; } - protected void addAsyncResponseProvider(Class providerClass) - { - AsyncResponseProvider provider = createProviderInstance(providerClass); - addAsyncResponseProvider(provider, providerClass); - } - - protected void addAsyncResponseProvider(AsyncResponseProvider provider) - { - addAsyncResponseProvider(provider, provider.getClass()); - } - - protected void addAsyncResponseProvider(AsyncResponseProvider provider, Class providerClass) + private void addAsyncResponseProvider(AsyncResponseProvider provider, Class providerClass) { Type asyncType = Types.getActualTypeArgumentsOfAnInterface(providerClass, AsyncResponseProvider.class)[0]; - addAsyncResponseProvider(provider, asyncType); - } - - protected void addAsyncResponseProvider(AsyncResponseProvider provider, Type asyncType) - { injectProperties(provider.getClass(), provider); - Class asyncClass = Types.getRawType(asyncType); if (asyncResponseProviders == null) { @@ -1292,26 +1060,10 @@ protected void addAsyncResponseProvider(AsyncResponseProvider provider, Type asy } asyncResponseProviders.put(asyncClass, provider); } - - protected void addAsyncClientResponseProvider(Class providerClass) - { - AsyncClientResponseProvider provider = createProviderInstance(providerClass); - addAsyncClientResponseProvider(provider, providerClass); - } - - protected void addAsyncClientResponseProvider(AsyncClientResponseProvider provider) - { - addAsyncClientResponseProvider(provider, provider.getClass()); - } - - protected void addAsyncClientResponseProvider(AsyncClientResponseProvider provider, Class providerClass) + + private void addAsyncClientResponseProvider(AsyncClientResponseProvider provider, Class providerClass) { Type asyncType = Types.getActualTypeArgumentsOfAnInterface(providerClass, AsyncClientResponseProvider.class)[0]; - addAsyncClientResponseProvider(provider, asyncType); - } - - protected void addAsyncClientResponseProvider(AsyncClientResponseProvider provider, Type asyncType) - { injectProperties(provider.getClass(), provider); Class asyncClass = Types.getRawType(asyncType); @@ -1322,28 +1074,11 @@ protected void addAsyncClientResponseProvider(AsyncClientResponseProvider provid } asyncClientResponseProviders.put(asyncClass, provider); } - - protected void addAsyncStreamProvider(Class providerClass) - { - AsyncStreamProvider provider = createProviderInstance(providerClass); - addAsyncStreamProvider(provider, providerClass); - } - - protected void addAsyncStreamProvider(AsyncStreamProvider provider) - { - addAsyncStreamProvider(provider, provider.getClass()); - } - - protected void addAsyncStreamProvider(AsyncStreamProvider provider, Class providerClass) + + private void addAsyncStreamProvider(AsyncStreamProvider provider, Class providerClass) { Type asyncType = Types.getActualTypeArgumentsOfAnInterface(providerClass, AsyncStreamProvider.class)[0]; - addAsyncStreamProvider(provider, asyncType); - } - - protected void addAsyncStreamProvider(AsyncStreamProvider provider, Type asyncType) - { injectProperties(provider.getClass(), provider); - Class asyncClass = Types.getRawType(asyncType); if (asyncStreamProviders == null) { @@ -1353,25 +1088,9 @@ protected void addAsyncStreamProvider(AsyncStreamProvider provider, Type asyncTy asyncStreamProviders.put(asyncClass, provider); } - protected void addContextInjector(Class providerClass) - { - ContextInjector provider = createProviderInstance(providerClass); - addContextInjector(provider, providerClass); - } - - protected void addContextInjector(ContextInjector provider) - { - addContextInjector(provider, provider.getClass()); - } - - protected void addContextInjector(ContextInjector provider, Class providerClass) + private void addContextInjector(ContextInjector provider, Class providerClass) { Type[] typeArgs = Types.getActualTypeArgumentsOfAnInterface(providerClass, ContextInjector.class); - addContextInjector(provider, typeArgs[0], typeArgs[1]); - } - - protected void addContextInjector(ContextInjector provider, Type injectedWrappedType, Type injectedUnwrappedType) - { injectProperties(provider.getClass(), provider); if (contextInjectors == null) @@ -1379,47 +1098,26 @@ protected void addContextInjector(ContextInjector provider, Type injectedWrapped contextInjectors = new ConcurrentHashMap(); contextInjectors.putAll(parent.getContextInjectors()); } - contextInjectors.put(injectedWrappedType, provider); + contextInjectors.put(typeArgs[0], provider); - if(!Objects.equals(injectedWrappedType, injectedUnwrappedType)) + if(!Objects.equals(typeArgs[0], typeArgs[1])) { if (asyncContextInjectors == null) { asyncContextInjectors = new ConcurrentHashMap(); asyncContextInjectors.putAll(parent.getAsyncContextInjectors()); } - asyncContextInjectors.put(injectedUnwrappedType, provider); + asyncContextInjectors.put(typeArgs[1], provider); } } - protected void addContextResolver(Class resolver, boolean builtin) - { - ContextResolver writer = createProviderInstance(resolver); - addContextResolver(writer, resolver, builtin); - } - - protected void addContextResolver(ContextResolver provider) - { - addContextResolver(provider, false); - } - - protected void addContextResolver(ContextResolver provider, boolean builtin) - { - addContextResolver(provider, provider.getClass(), builtin); - } - - protected void addContextResolver(ContextResolver provider, Class providerClass, boolean builtin) + private void addContextResolver(ContextResolver provider, Class providerClass, boolean builtin) { // RESTEASY-1725 if (providerClass.getName().contains("$$Lambda$")) { throw new RuntimeException(Messages.MESSAGES.registeringContextResolverAsLambda()); } - Type parameter = Types.getActualTypeArgumentsOfAnInterface(providerClass, ContextResolver.class)[0]; - addContextResolver(provider, parameter, providerClass, builtin); - } - - protected void addContextResolver(ContextResolver provider, Type typeParameter, Class providerClass, boolean builtin) - { + Type typeParameter = Types.getActualTypeArgumentsOfAnInterface(providerClass, ContextResolver.class)[0]; injectProperties(providerClass, provider); Class parameterClass = Types.getRawType(typeParameter); if (contextResolvers == null) @@ -1453,36 +1151,7 @@ protected void addContextResolver(ContextResolver provider, Type typeParameter, } } - protected void addStringConverter(Class resolver) - { - StringConverter writer = createProviderInstance(resolver); - addStringConverter(writer, resolver); - } - - protected void addStringConverter(StringConverter provider) - { - addStringConverter(provider, provider.getClass()); - } - - protected void addStringConverter(StringConverter provider, Class providerClass) - { - Type parameter = Types.getActualTypeArgumentsOfAnInterface(providerClass, StringConverter.class)[0]; - addStringConverter(provider, parameter); - } - - protected void addStringConverter(StringConverter provider, Type typeParameter) - { - injectProperties(provider.getClass(), provider); - Class parameterClass = Types.getRawType(typeParameter); - if (stringConverters == null) - { - stringConverters = new ConcurrentHashMap, StringConverter>(); - stringConverters.putAll(parent.getStringConverters()); - } - stringConverters.put(parameterClass, provider); - } - - public void addStringParameterUnmarshaller(Class provider) + private void addStringParameterUnmarshaller(Class provider) { if (stringParameterUnmarshallers == null) { @@ -1504,12 +1173,6 @@ public void addStringParameterUnmarshaller(Class clazz) - { - if (getStringConverters().size() == 0) return null; - return getStringConverters().get(clazz); - } - public List getContextResolvers(final Class clazz, MediaType type) { MediaTypeMap> resolvers = getContextResolvers().get(clazz); @@ -1599,13 +1262,7 @@ public String toString(Object object, Class clazz, Type genericType, Annotation[ { return paramConverter.toString(object); } - StringConverter converter = getStringConverter(object - .getClass()); - if (converter != null) - return converter.toString(object); - else - return object.toString(); - + return object.toString(); } @Override @@ -1619,10 +1276,6 @@ public String toHeaderString(Object object) { return paramConverter.toString(object); } - StringConverter converter = getStringConverter(aClass); - if (converter != null) - return converter.toString(object); - HeaderDelegate delegate = getHeaderDelegate(aClass); if (delegate != null) return delegate.toString(object); @@ -1664,7 +1317,7 @@ public void registerProvider(Class provider, boolean isBuiltin) registerProvider(provider, null, isBuiltin, null); } - protected boolean isA(Class target, Class type, Map, Integer> contracts) + protected static boolean isA(Class target, Class type, Map, Integer> contracts) { if (!type.isAssignableFrom(target)) return false; if (contracts == null || contracts.size() == 0) return true; @@ -1675,12 +1328,12 @@ protected boolean isA(Class target, Class type, Map, Integer> contracts return false; } - protected boolean isA(Object target, Class type, Map, Integer> contracts) + protected static boolean isA(Object target, Class type, Map, Integer> contracts) { return isA(target.getClass(), type, contracts); } - protected int getPriority(Integer override, Map, Integer> contracts, Class type, Class component) + private static int getPriority(Integer override, Map, Integer> contracts, Class type, Class component) { if (override != null) return override; if (contracts != null) @@ -1730,7 +1383,6 @@ protected void processProviderContracts(Class provider, Integer priorityOverride } int priority = getPriority(priorityOverride, contracts, ParamConverterProvider.class, provider); sortedParamConverterProviders.add(new ExtSortedKey<>(null, paramConverterProvider, provider, priority, isBuiltin)); - paramConverterProviders = null; newContracts.put(ParamConverterProvider.class, priority); } if (isA(provider, MessageBodyReader.class, contracts)) @@ -1738,7 +1390,7 @@ protected void processProviderContracts(Class provider, Integer priorityOverride try { int priority = getPriority(priorityOverride, contracts, MessageBodyReader.class, provider); - addMessageBodyReader(provider, priority, isBuiltin); + addMessageBodyReader(createProviderInstance((Class)provider), provider, priority, isBuiltin); newContracts.put(MessageBodyReader.class, priority); } catch (Exception e) @@ -1751,7 +1403,7 @@ protected void processProviderContracts(Class provider, Integer priorityOverride try { int priority = getPriority(priorityOverride, contracts, MessageBodyWriter.class, provider); - addMessageBodyWriter(provider, priority, isBuiltin); + addMessageBodyWriter(createProviderInstance((Class)provider), provider, priority, isBuiltin); newContracts.put(MessageBodyWriter.class, priority); } catch (Exception e) @@ -1763,7 +1415,7 @@ protected void processProviderContracts(Class provider, Integer priorityOverride { try { - addExceptionMapper(provider, isBuiltin); + addExceptionMapper(createProviderInstance((Class) provider), provider, isBuiltin); newContracts.put(ExceptionMapper.class, getPriority(priorityOverride, contracts, ExceptionMapper.class, provider)); } catch (Exception e) @@ -1775,7 +1427,7 @@ protected void processProviderContracts(Class provider, Integer priorityOverride { try { - addAsyncResponseProvider(provider); + addAsyncResponseProvider(createProviderInstance((Class) provider), provider); newContracts.put(AsyncResponseProvider.class, getPriority(priorityOverride, contracts, AsyncResponseProvider.class, provider)); } catch (Exception e) @@ -1787,7 +1439,7 @@ protected void processProviderContracts(Class provider, Integer priorityOverride { try { - addAsyncClientResponseProvider(provider); + addAsyncClientResponseProvider(createProviderInstance((Class) provider), provider); newContracts.put(AsyncClientResponseProvider.class, getPriority(priorityOverride, contracts, AsyncClientResponseProvider.class, provider)); } catch (Exception e) @@ -1799,7 +1451,7 @@ protected void processProviderContracts(Class provider, Integer priorityOverride { try { - addAsyncStreamProvider(provider); + addAsyncStreamProvider(createProviderInstance((Class)provider), provider); newContracts.put(AsyncStreamProvider.class, getPriority(priorityOverride, contracts, AsyncStreamProvider.class, provider)); } catch (Exception e) @@ -1816,15 +1468,6 @@ protected void processProviderContracts(Class provider, Integer priorityOverride int priority = getPriority(priorityOverride, contracts, ClientRequestFilter.class, provider); clientRequestFilterRegistry.registerClass(provider, priority); newContracts.put(ClientRequestFilter.class, priority); - - { // code maintained for backward compatibility for jaxrs-legacy code - if (clientRequestFilters == null) - { - clientRequestFilters = parent.getClientRequestFilters().clone(this); - } - clientRequestFilters.registerClass(provider, priority); - } - } if (isA(provider, ClientResponseFilter.class, contracts)) { @@ -1930,7 +1573,7 @@ protected void processProviderContracts(Class provider, Integer priorityOverride { try { - addContextResolver(provider, isBuiltin); + addContextResolver(createProviderInstance((Class)provider), provider, isBuiltin); int priority = getPriority(priorityOverride, contracts, ContextResolver.class, provider); newContracts.put(ContextResolver.class, priority); } @@ -1943,7 +1586,7 @@ protected void processProviderContracts(Class provider, Integer priorityOverride { try { - addContextInjector(provider); + addContextInjector(createProviderInstance((Class) provider), provider); int priority = getPriority(priorityOverride, contracts, ContextInjector.class, provider); newContracts.put(ContextInjector.class, priority); } @@ -1952,12 +1595,6 @@ protected void processProviderContracts(Class provider, Integer priorityOverride throw new RuntimeException(Messages.MESSAGES.unableToInstantiateContextInjector(), e); } } - if (isA(provider, StringConverter.class, contracts)) - { - addStringConverter(provider); - int priority = getPriority(priorityOverride, contracts, StringConverter.class, provider); - newContracts.put(StringConverter.class, priority); - } if (isA(provider, StringParameterUnmarshaller.class, contracts)) { addStringParameterUnmarshaller(provider); @@ -2022,7 +1659,6 @@ protected void processProviderContracts(Class provider, Integer priorityOverride enabledFeatures.add(feature); } } - featureClasses.add(provider); newContracts.put(Feature.class, priority); } if (isA(provider, RxInvokerProvider.class, contracts)) @@ -2087,7 +1723,6 @@ protected void processProviderInstanceContracts(Object provider, Map, I } int priority = getPriority(priorityOverride, contracts, ParamConverterProvider.class, provider.getClass()); sortedParamConverterProviders.add(new ExtSortedKey<>(null, (ParamConverterProvider) provider, provider.getClass(), priority, builtIn)); - paramConverterProviders = null; newContracts.put(ParamConverterProvider.class, priority); } if (isA(provider, MessageBodyReader.class, contracts)) @@ -2095,7 +1730,7 @@ protected void processProviderInstanceContracts(Object provider, Map, I try { int priority = getPriority(priorityOverride, contracts, MessageBodyReader.class, provider.getClass()); - addMessageBodyReader((MessageBodyReader) provider, priority, builtIn); + addMessageBodyReader((MessageBodyReader) provider, provider.getClass(), priority, builtIn); newContracts.put(MessageBodyReader.class, priority); } catch (Exception e) @@ -2120,7 +1755,7 @@ protected void processProviderInstanceContracts(Object provider, Map, I { try { - addExceptionMapper((ExceptionMapper) provider, builtIn); + addExceptionMapper((ExceptionMapper) provider, provider.getClass(), builtIn); int priority = getPriority(priorityOverride, contracts, ExceptionMapper.class, provider.getClass()); newContracts.put(ExceptionMapper.class, priority); } @@ -2133,7 +1768,7 @@ protected void processProviderInstanceContracts(Object provider, Map, I { try { - addAsyncResponseProvider((AsyncResponseProvider) provider); + addAsyncResponseProvider((AsyncResponseProvider) provider, provider.getClass()); int priority = getPriority(priorityOverride, contracts, AsyncResponseProvider.class, provider.getClass()); newContracts.put(AsyncResponseProvider.class, priority); } @@ -2146,7 +1781,7 @@ protected void processProviderInstanceContracts(Object provider, Map, I { try { - addAsyncClientResponseProvider((AsyncClientResponseProvider) provider); + addAsyncClientResponseProvider((AsyncClientResponseProvider) provider, provider.getClass()); int priority = getPriority(priorityOverride, contracts, AsyncClientResponseProvider.class, provider.getClass()); newContracts.put(AsyncClientResponseProvider.class, priority); } @@ -2159,7 +1794,7 @@ protected void processProviderInstanceContracts(Object provider, Map, I { try { - addAsyncStreamProvider((AsyncStreamProvider) provider); + addAsyncStreamProvider((AsyncStreamProvider) provider, provider.getClass()); int priority = getPriority(priorityOverride, contracts, AsyncStreamProvider.class, provider.getClass()); newContracts.put(AsyncStreamProvider.class, priority); } @@ -2172,7 +1807,7 @@ protected void processProviderInstanceContracts(Object provider, Map, I { try { - addContextResolver((ContextResolver) provider); + addContextResolver((ContextResolver) provider, provider.getClass(), false); int priority = getPriority(priorityOverride, contracts, ContextResolver.class, provider.getClass()); newContracts.put(ContextResolver.class, priority); } @@ -2185,7 +1820,7 @@ protected void processProviderInstanceContracts(Object provider, Map, I { try { - addContextInjector((ContextInjector)provider); + addContextInjector((ContextInjector)provider, provider.getClass()); int priority = getPriority(priorityOverride, contracts, ContextInjector.class, provider.getClass()); newContracts.put(ContextInjector.class, priority); } @@ -2203,14 +1838,6 @@ protected void processProviderInstanceContracts(Object provider, Map, I int priority = getPriority(priorityOverride, contracts, ClientRequestFilter.class, provider.getClass()); clientRequestFilterRegistry.registerSingleton((ClientRequestFilter) provider, priority); newContracts.put(ClientRequestFilter.class, priority); - - { // code maintained for backward compatibility for jaxrs-legacy code - if (clientRequestFilters == null) - { - clientRequestFilters = parent.getClientRequestFilters().clone(this); - } - clientRequestFilters.registerSingleton((ClientRequestFilter) provider, priority); - } } if (isA(provider, ClientResponseFilter.class, contracts)) { @@ -2312,11 +1939,6 @@ protected void processProviderInstanceContracts(Object provider, Map, I } newContracts.put(WriterInterceptor.class, priority); } - if (isA(provider, StringConverter.class, contracts)) - { - addStringConverter((StringConverter) provider); - newContracts.put(StringConverter.class, 0); - } if (isA(provider, InjectorFactory.class, contracts)) { this.injectorFactory = (InjectorFactory) provider; @@ -2369,7 +1991,6 @@ protected void processProviderInstanceContracts(Object provider, Map, I } } int priority = getPriority(priorityOverride, contracts, Feature.class, provider.getClass()); - featureInstances.add(provider); newContracts.put(Feature.class, priority); } @@ -2479,12 +2100,6 @@ public Map, Class> getPossibleMessageBodyWritersMap(Clas return map; } - public MessageBodyWriter getServerMessageBodyWriter(Class type, Type genericType, Annotation[] annotations, MediaType mediaType) - { - MediaTypeMap> availableWriters = getServerMessageBodyWriters(); - return resolveMessageBodyWriter(type, genericType, annotations, mediaType, availableWriters); - } - /** * Always gets server MBW. * @@ -2516,7 +2131,7 @@ public MessageBodyWriter getClientMessageBodyWriter(Class type, Type g return resolveMessageBodyWriter(type, genericType, annotations, mediaType, availableWriters); } - protected MessageBodyWriter resolveMessageBodyWriter(Class type, Type genericType, Annotation[] annotations, MediaType mediaType, MediaTypeMap> availableWriters) + private MessageBodyWriter resolveMessageBodyWriter(Class type, Type genericType, Annotation[] annotations, MediaType mediaType, MediaTypeMap> availableWriters) { List> writers = availableWriters.getPossible(mediaType, type); /* @@ -2590,7 +2205,7 @@ public T createProviderInstance(Class clazz) return provider; } - public ConstructorInjector createConstructorInjector(Class clazz) + private ConstructorInjector createConstructorInjector(Class clazz) { Constructor constructor = PickConstructor.pickSingletonConstructor(clazz); if (constructor == null) @@ -2695,7 +2310,7 @@ public T injectedInstance(Class clazz, HttpRequest request, Htt return (T)obj; } - public void injectProperties(Class declaring, Object obj) + private void injectProperties(Class declaring, Object obj) { getInjectorFactory().createPropertyInjector(declaring, this).inject(obj, false).toCompletableFuture().getNow(null); } @@ -2704,13 +2319,12 @@ public void injectProperties(Object obj) { getInjectorFactory().createPropertyInjector(obj.getClass(), this).inject(obj, false).toCompletableFuture().getNow(null); } - + public void injectProperties(Object obj, HttpRequest request, HttpResponse response) { getInjectorFactory().createPropertyInjector(obj.getClass(), this).inject(request, response, obj, false).toCompletableFuture().getNow(null); } - // Configurable public Map getMutableProperties() @@ -2757,24 +2371,6 @@ public Collection getEnabledFeatures() return set; } - public Set> getFeatureClasses() - { - if (featureClasses == null && parent != null) return parent.getFeatureClasses(); - Set> set = new HashSet>(); - if (parent != null) set.addAll(parent.getFeatureClasses()); - set.addAll(featureClasses); - return set; - } - - public Set getFeatureInstances() - { - if (featureInstances == null && parent != null) return parent.getFeatureInstances(); - Set set = new HashSet(); - if (parent != null) set.addAll(parent.getFeatureInstances()); - set.addAll(featureInstances); - return set; - } - @Override public ResteasyProviderFactory register(Class providerClass) { @@ -3005,13 +2601,13 @@ public boolean isReactive(Class clazz) return reactiveClasses.keySet().contains(clazz); } - protected void addResourceClassProcessor(Class processorClass, int priority) + private void addResourceClassProcessor(Class processorClass, int priority) { ResourceClassProcessor processor = createProviderInstance(processorClass); addResourceClassProcessor(processor, priority); } - protected void addResourceClassProcessor(ResourceClassProcessor processor, int priority) + private void addResourceClassProcessor(ResourceClassProcessor processor, int priority) { resourceBuilder.registerResourceClassProcessor(processor, priority); } diff --git a/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/resource/basic/SpecialResourceTest.java b/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/resource/basic/SpecialResourceTest.java index 8f5e44dba53..c7c9f066e2b 100755 --- a/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/resource/basic/SpecialResourceTest.java +++ b/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/resource/basic/SpecialResourceTest.java @@ -11,11 +11,9 @@ import org.jboss.arquillian.junit.Arquillian; import org.jboss.resteasy.client.jaxrs.ResteasyClient; import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder; -import org.jboss.resteasy.plugins.providers.RegisterBuiltin; import org.jboss.resteasy.test.resource.basic.resource.SpecialResourceApiResource; import org.jboss.resteasy.test.resource.basic.resource.SpecialResourceDeleteResource; import org.jboss.resteasy.test.resource.basic.resource.SpecialResourceStreamResource; -import org.jboss.resteasy.test.resource.basic.resource.SpecialResourceSubFactory; import org.jboss.resteasy.util.HttpResponseCodes; import org.jboss.resteasy.utils.PortProviderUtil; import org.jboss.resteasy.utils.TestUtil; @@ -26,7 +24,6 @@ import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; -import org.w3c.dom.Document; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; @@ -34,7 +31,6 @@ import javax.ws.rs.core.Response; import java.io.IOException; -import static org.hamcrest.Matchers.greaterThan; import static org.jboss.resteasy.util.HttpClient4xUtils.consumeEntity; /** @@ -128,21 +124,4 @@ public void test583() throws Exception { } } - /** - * @tpTestDetails Regression test for RESTEASY-638 - * @tpSince RESTEasy 3.0.16 - */ - @Test - public void test638() throws Exception { - SpecialResourceSubFactory factory = new SpecialResourceSubFactory(); - RegisterBuiltin.register(factory); - - for (int i = 0; i < 10; i++) { - MediaType type = MediaType.valueOf("text/xml; boundary=" + i); - Assert.assertThat("Wrong count of possible providers", factory.getMBRMap().getPossible(type, Document.class).size(), greaterThan(1)); - } - - Assert.assertEquals(1, factory.getMBRMap().getClassCache().size()); - - } } diff --git a/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/resource/basic/resource/SpecialResourceSubFactory.java b/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/resource/basic/resource/SpecialResourceSubFactory.java deleted file mode 100644 index f7ee8e197a8..00000000000 --- a/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/resource/basic/resource/SpecialResourceSubFactory.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.jboss.resteasy.test.resource.basic.resource; - -import org.jboss.resteasy.core.MediaTypeMap; -import org.jboss.resteasy.spi.ResteasyProviderFactory; - -import javax.ws.rs.ext.MessageBodyReader; - -public class SpecialResourceSubFactory extends ResteasyProviderFactory { - public MediaTypeMap> getMBRMap() { - return serverMessageBodyReaders; - } -} diff --git a/testsuite/integration-tests/src/test/resources/org/jboss/resteasy/test/core/basic/ContextWeb.xml b/testsuite/integration-tests/src/test/resources/org/jboss/resteasy/test/core/basic/ContextWeb.xml index 2d14f6f28d1..5130023b69b 100644 --- a/testsuite/integration-tests/src/test/resources/org/jboss/resteasy/test/core/basic/ContextWeb.xml +++ b/testsuite/integration-tests/src/test/resources/org/jboss/resteasy/test/core/basic/ContextWeb.xml @@ -4,21 +4,6 @@ Archetype RestEasy Web Application - - - resteasy.append.interceptor.precedence - END - - - resteasy.interceptor.before.precedence - ENCODER : BEFORE_ENCODER - - - - resteasy.interceptor.after.precedence - ENCODER : AFTER_ENCODER - - resteasy.media.type.mappings xml : application/xml, diff --git a/testsuite/unit-tests/src/test/java/org/jboss/resteasy/test/providers/PriorityEqualityTest.java b/testsuite/unit-tests/src/test/java/org/jboss/resteasy/test/providers/PriorityEqualityTest.java index 9a34b0aefa2..d27b1fd0f8e 100644 --- a/testsuite/unit-tests/src/test/java/org/jboss/resteasy/test/providers/PriorityEqualityTest.java +++ b/testsuite/unit-tests/src/test/java/org/jboss/resteasy/test/providers/PriorityEqualityTest.java @@ -111,8 +111,8 @@ public void testParamConverterProvidersFromClass() throws Exception { factory.register(ParamConverterProvider1.class); factory.register(ParamConverterProvider2.class); - Assert.assertEquals(2, factory.getParamConverterProviders().size()); - + Assert.assertTrue(factory.getProviderClasses().contains(ParamConverterProvider1.class)); + Assert.assertTrue(factory.getProviderClasses().contains(ParamConverterProvider2.class)); ResteasyProviderFactory.clearInstanceIfEqual(factory); } @@ -127,9 +127,12 @@ public void testParamConverterProvidersObjects() throws Exception { RegisterBuiltin.register(factory); ResteasyProviderFactory.setInstance(factory); - factory.registerProviderInstance(new ParamConverterProvider1()); - factory.registerProviderInstance(new ParamConverterProvider2()); - Assert.assertEquals(2, factory.getParamConverterProviders().size()); + ParamConverterProvider p1 = new ParamConverterProvider1(); + ParamConverterProvider p2 = new ParamConverterProvider2(); + factory.registerProviderInstance(p1); + factory.registerProviderInstance(p2); + Assert.assertTrue(factory.getProviderInstances().contains(p1)); + Assert.assertTrue(factory.getProviderInstances().contains(p2)); ResteasyProviderFactory.clearInstanceIfEqual(factory); } @@ -159,4 +162,4 @@ public void testExceptionObjects() throws Exception { factory.registerProviderInstance(new ExceptionMapper2()); Assert.assertEquals(1, factory.getExceptionMappers().size()); } -} \ No newline at end of file +} diff --git a/testsuite/unit-tests/src/test/java/org/jboss/resteasy/test/providers/ProviderFactoryTest.java b/testsuite/unit-tests/src/test/java/org/jboss/resteasy/test/providers/ProviderFactoryTest.java index 7d199b73684..ce6f18512c1 100644 --- a/testsuite/unit-tests/src/test/java/org/jboss/resteasy/test/providers/ProviderFactoryTest.java +++ b/testsuite/unit-tests/src/test/java/org/jboss/resteasy/test/providers/ProviderFactoryTest.java @@ -1,7 +1,6 @@ package org.jboss.resteasy.test.providers; import org.jboss.resteasy.core.interception.jaxrs.JaxrsInterceptorRegistry; -import org.jboss.resteasy.plugins.interceptors.GZIPDecodingInterceptor; import org.jboss.resteasy.plugins.providers.RegisterBuiltin; import org.jboss.resteasy.spi.ResteasyDeployment; import org.jboss.resteasy.spi.ResteasyProviderFactory; @@ -52,7 +51,7 @@ public void createBean() { */ @Test public void shouldReturnStringParameterUnmarshallerAddedForType() { - factory.addStringParameterUnmarshaller(ProviderFactoryStrParamUnmarshaller.class); + factory.registerProvider(ProviderFactoryStrParamUnmarshaller.class); assertNotNull("Null StringParameterUnmarshaller object", factory.createStringParameterUnmarshaller(Date.class)); }