use of org.jboss.resteasy.spi.concurrent.ThreadContext in project resteasy by resteasy.
the class ContextualExecutors method getContexts.
@SuppressWarnings("unchecked")
private static Map<ThreadContext<Object>, Object> getContexts() {
final Map<ThreadContext<Object>, Object> contexts = new LinkedHashMap<>();
if (System.getSecurityManager() == null) {
ServiceLoader.load(ThreadContext.class).forEach(context -> contexts.put(context, context.capture()));
} else {
AccessController.doPrivileged((PrivilegedAction<Object>) () -> {
ServiceLoader.load(ThreadContext.class).forEach(context -> contexts.put(context, context.capture()));
return null;
});
}
// Load any registered providers
final ThreadContexts threadContexts = ResteasyProviderFactory.getInstance().getContextData(ThreadContexts.class);
if (threadContexts != null) {
for (ThreadContext<Object> context : threadContexts.getThreadContexts()) {
contexts.put(context, context.capture());
}
}
return contexts;
}
use of org.jboss.resteasy.spi.concurrent.ThreadContext in project resteasy by resteasy.
the class ResteasyProviderFactoryImpl method processProviderContracts.
private void processProviderContracts(Class provider, Integer priorityOverride, boolean isBuiltin, Map<Class<?>, Integer> contracts, Map<Class<?>, Integer> newContracts) {
clientHelper.processProviderContracts(provider, priorityOverride, isBuiltin, contracts, newContracts);
serverHelper.processProviderContracts(provider, priorityOverride, isBuiltin, contracts, newContracts);
if (Utils.isA(provider, ParamConverterProvider.class, contracts)) {
int priority = Utils.getPriority(priorityOverride, contracts, ParamConverterProvider.class, provider);
addParameterConverterProvider(provider, isBuiltin, priority);
newContracts.put(ParamConverterProvider.class, priority);
}
if (Utils.isA(provider, ContextResolver.class, contracts)) {
try {
int priority = Utils.getPriority(priorityOverride, contracts, ContextResolver.class, provider);
addContextResolver(provider, isBuiltin, priority);
newContracts.put(ContextResolver.class, priority);
} catch (Exception e) {
throw new RuntimeException(Messages.MESSAGES.unableToInstantiateContextResolver(), e);
}
}
if (Utils.isA(provider, ContextInjector.class, contracts)) {
try {
addContextInjector(provider);
int priority = Utils.getPriority(priorityOverride, contracts, ContextInjector.class, provider);
newContracts.put(ContextInjector.class, priority);
} catch (Exception e) {
throw new RuntimeException(Messages.MESSAGES.unableToInstantiateContextInjector(), e);
}
}
if (Utils.isA(provider, StringParameterUnmarshaller.class, contracts)) {
addStringParameterUnmarshaller(provider);
int priority = Utils.getPriority(priorityOverride, contracts, StringParameterUnmarshaller.class, provider);
newContracts.put(StringParameterUnmarshaller.class, priority);
}
if (Utils.isA(provider, InjectorFactory.class, contracts)) {
try {
addInjectorFactory(provider);
newContracts.put(InjectorFactory.class, 0);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
if (Utils.isA(provider, Feature.class, contracts)) {
ConstrainedTo constrainedTo = (ConstrainedTo) provider.getAnnotation(ConstrainedTo.class);
int priority = Utils.getPriority(priorityOverride, contracts, Feature.class, provider);
if (constrainedTo == null || constrainedTo.value() == getRuntimeType()) {
addFeature(provider);
}
newContracts.put(Feature.class, priority);
}
if (Utils.isA(provider, ResourceClassProcessor.class, contracts)) {
int priority = Utils.getPriority(priorityOverride, contracts, ResourceClassProcessor.class, provider);
addResourceClassProcessor(provider, priority);
newContracts.put(ResourceClassProcessor.class, priority);
}
if (Utils.isA(provider, HeaderDelegate.class, contracts)) {
addHeaderDelegate(provider);
}
if (Utils.isA(provider, ThreadContext.class, contracts)) {
ResteasyContext.computeIfAbsent(ThreadContexts.class, ThreadContexts::new).add(createProviderInstance((Class<? extends ThreadContext>) provider));
}
}
Aggregations