public boolean equals(Object obj) { if (!(obj instanceof ProviderInfo)) { return false; } return provider.equals(((ProviderInfo<?>)obj).getProvider()); }
public void add(Object o, Bus bus) { paramHandlers.add(new ProviderInfo<ParameterHandler<?>>((ParameterHandler<?>)o, bus)); } }
public <T> ParamConverter<T> createParameterHandler(Class<T> paramType, Type genericType, Annotation[] anns, Message m) { anns = anns != null ? anns : new Annotation[]{}; for (ProviderInfo<ParamConverterProvider> pi : paramConverters) { injectContextValues(pi, m); ParamConverter<T> converter = pi.getProvider().getConverter(paramType, genericType, anns); if (converter != null) { return converter; } pi.clearThreadLocalProxies(); } return null; }
void injectContextProxiesIntoProvider(ProviderInfo<?> pi, Application app) { if (pi.contextsAvailable()) { InjectionUtils.injectContextProxiesAndApplication(pi, pi.getProvider(), app, this); injectedProviders.add(pi); } }
public int compare(ProviderInfo<?> p1, ProviderInfo<?> p2) { if (makeDefaultWaeLeastSpecific) { if (p1.getProvider() instanceof WebApplicationExceptionMapper && !p1.isCustom()) { return 1; } else if (p2.getProvider() instanceof WebApplicationExceptionMapper && !p2.isCustom()) { return -1; } } int result = super.compare(p1, p2); if (result == 0) { result = comparePriorityStatus(p1.getProvider().getClass(), p2.getProvider().getClass()); } return result; } }
private boolean isRegistered(Collection<?> list, Class<?> cls) { Collection<ProviderInfo<?>> list2 = CastUtils.cast(list); for (ProviderInfo<?> p : list2) { Class<?> pClass = ClassHelper.getRealClass(p.getBus(), p.getProvider()); if (cls.isAssignableFrom(pClass)) { return true; } } return false; } private Integer getPriority(Collection<?> list, Class<?> cls, Class<?> filterClass) {
protected List<ProviderInfo<? extends Object>> prepareProviders(boolean custom, boolean busGlobal, Object[] providers, ProviderInfo<Application> application) { List<ProviderInfo<? extends Object>> theProviders = new ArrayList<>(providers.length); for (Object o : providers) { if (o == null) { continue; } Object provider = o; if (provider.getClass() == Class.class) { provider = ResourceUtils.createProviderInstance((Class<?>)provider); } if (provider instanceof Constructor) { Map<Class<?>, Object> values = CastUtils.cast(application == null ? null : Collections.singletonMap(Application.class, application.getProvider())); theProviders.add( createProviderFromConstructor((Constructor<?>)provider, values, getBus(), true, custom)); } else if (provider instanceof ProviderInfo) { theProviders.add((ProviderInfo<?>)provider); } else { ProviderInfo<Object> theProvider = new ProviderInfo<>(provider, getBus(), custom); theProvider.setBusGlobal(busGlobal); theProviders.add(theProvider); } } return theProviders; }
provider = new ApplicationInfo((Application)c.newInstance(), getBus()); } else { provider = new ProviderInfo<>(c.newInstance(), getBus(), false, true); provider = ProviderFactory.createProviderFromConstructor(c, values, getBus(), isApplication, true); Object instance = provider.getProvider(); injectProperties(instance, props); configureSingleton(instance);
void clearProxies(Collection<?> ...lists) { for (Collection<?> list : lists) { Collection<ProviderInfo<?>> l2 = CastUtils.cast(list); for (ProviderInfo<?> pi : l2) { pi.clearThreadLocalProxies(); } } }
private void checkParamConverterContexts() { for (ProviderInfo<ParamConverterProvider> pi : paramConverters) { if (pi.contextsAvailable()) { paramConverterContextsAvailable = true; } } } public boolean isParamConverterContextsAvailable() {
@Override public int compare(ProviderInfo<?> oLeft, ProviderInfo<?> oRight) { int parentResult = parent.compare(oLeft, oRight); if (parentResult != 0) { return parentResult; } int left = getPriority(oLeft.getResourceClass()); int right = getPriority(oRight.getResourceClass()); return left - right; }
protected static Set<String> getFilterNameBindings(ProviderInfo<?> p) { if (p instanceof FilterProviderInfo) { return ((FilterProviderInfo<?>)p).getNameBindings(); } else { return getFilterNameBindings(p.getBus(), p.getProvider()); } } protected static Set<String> getFilterNameBindings(Bus bus, Object provider) {
void injectContextProxiesIntoProvider(ProviderInfo<?> pi) { if (pi.contextsAvailable()) { InjectionUtils.injectContextProxies(pi, pi.getProvider()); synchronized (injectedProviders) { injectedProviders.add(pi); } } }
void clearProxies(Collection<?> ...lists) { for (Collection<?> list : lists) { Collection<ProviderInfo<?>> l2 = CastUtils.cast(list); synchronized (l2) { for (ProviderInfo<?> pi : l2) { pi.clearThreadLocalProxies(); } } } }
@Override public int compare(ProviderInfo<?> oLeft, ProviderInfo<?> oRight) { int parentResult = parent.compare(oLeft, oRight); if (parentResult != 0) { return parentResult; } int left = getPriority(oLeft.getResourceClass()); int right = getPriority(oRight.getResourceClass()); return left - right; }
public boolean equals(Object obj) { if (!(obj instanceof ProviderInfo)) { return false; } return provider.equals(((ProviderInfo<?>)obj).getProvider()); }
private Integer getPriority(Collection<?> list, Class<?> cls, Class<?> filterClass) { Collection<ProviderInfo<?>> list2 = CastUtils.cast(list); for (ProviderInfo<?> p : list2) { if (p instanceof FilterProviderInfo) { Class<?> pClass = ClassHelper.getRealClass(p.getBus(), p.getProvider()); if (cls.isAssignableFrom(pClass)) { return ((FilterProviderInfo<?>)p).getPriority(filterClass); } } } return Priorities.USER; } }
private void initJaxbProviders() { Object jaxbProvider = createProvider(JAXB_PROVIDER_NAME); if (jaxbProvider != null) { jaxbReaders.add(new ProviderInfo<MessageBodyReader<?>>((MessageBodyReader<?>)jaxbProvider, bus)); jaxbWriters.add(new ProviderInfo<MessageBodyWriter<?>>((MessageBodyWriter<?>)jaxbProvider, bus)); } Object jsonProvider = createProvider(JSON_PROVIDER_NAME); if (jsonProvider != null) { jaxbReaders.add(new ProviderInfo<MessageBodyReader<?>>((MessageBodyReader<?>)jsonProvider, bus)); jaxbWriters.add(new ProviderInfo<MessageBodyWriter<?>>((MessageBodyWriter<?>)jsonProvider, bus)); } injectContextProxies(jaxbReaders, jaxbWriters); }
public void clearThreadLocalProxies() { clearProxies(injectedProviders); if (application != null) { application.clearThreadLocalProxies(); } if (this != SHARED_FACTORY) { SHARED_FACTORY.clearThreadLocalProxies(); } }
public MessageBodyWriter<?> getDefaultJaxbWriter() { for (ProviderInfo<MessageBodyWriter<?>> pi : this.messageWriters) { Class<?> cls = pi.getProvider().getClass(); if (cls.getName().equals(JAXB_PROVIDER_NAME)) { return pi.getProvider(); } } return null; }