private boolean paramConverterAvailable(final Class<?> pClass) { Message m = JAXRSUtils.getCurrentMessage(); ServerProviderFactory pf = m == null ? null : ServerProviderFactory.getInstance(m); return pf != null && pf.createParameterHandler(pClass, pClass, EMPTY_ANNOTTAIONS, m) != null; }
protected void registerServletConfigProvider(ServerProviderFactory factory) { factory.setUserProviders(Arrays.asList(new ServletConfigProvider(ctxId))); }
public <T extends Throwable> ExceptionMapper<T> getExceptionMapper(Class<T> type) { return ServerProviderFactory.getInstance(m).createExceptionMapper(type, m); } private Type getGenericType(Class<?> type, Type genericType) {
public static void releaseRequestState(Message message) { releaseRequestState(ServerProviderFactory.getInstance(message), message); } public static void releaseRequestState(ServerProviderFactory factory, Message message) {
public static void clearThreadLocalProxies(Message message) { clearThreadLocalProxies(ServerProviderFactory.getInstance(message), message); } public static void clearThreadLocalProxies(ServerProviderFactory factory, Message message) {
@Override public SseEventSink createContext(Message message) { final HttpServletRequest request = (HttpServletRequest)message.get(AbstractHTTPDestination.HTTP_REQUEST); if (request == null) { throw new IllegalStateException("Unable to retrieve HTTP request from the context"); } final MessageBodyWriter<OutboundSseEvent> writer = new OutboundSseEventBodyWriter( ServerProviderFactory.getInstance(message), message.getExchange()); final AsyncResponse async = new AsyncResponseImpl(message); return new SseEventSinkImpl(writer, async, request.getAsyncContext()); } }
final ClassResourceInfo cri = ori.getClassResourceInfo(); final Message inMessage = exchange.getInMessage(); final ServerProviderFactory providerFactory = ServerProviderFactory.getInstance(inMessage); cri.injectContexts(resourceObject, ori, inMessage); ProviderInfo<Application> appProvider = providerFactory.getApplicationProvider(); if (appProvider != null) { InjectionUtils.injectContexts(appProvider.getProvider(), result = handleAsyncResponse(exchange, asyncResponse); } else { providerFactory.clearThreadLocalProxies();
? ServerProviderFactory.getInstance(m).getDefaultJaxbWriter() : null; ResourceTypes resourceTypes = ResourceUtils.getAllRequestResponseTypes(cris, useJaxbContextForQnames,
public static Object createBeanParamValue(Message m, Class<?> clazz, OperationResourceInfo ori) { BeanParamInfo bmi = ServerProviderFactory.getInstance(m).getBeanParamInfo(clazz); if (bmi == null) { // we could've started introspecting now but the fact no bean info // is available indicates that the one created at start up has been // lost and hence it is 500 LOG.warning("Bean parameter info is not available"); throw ExceptionUtils.toInternalServerErrorException(null, null); } Object instance; try { instance = clazz.newInstance(); } catch (Throwable t) { throw ExceptionUtils.toInternalServerErrorException(t, null); } JAXRSUtils.injectParameters(ori, bmi, instance, m); InjectionUtils.injectContexts(instance, bmi, m); return instance; }
private void processRequest(Message message, Exchange exchange) throws IOException { ServerProviderFactory providerFactory = ServerProviderFactory.getInstance(message); RequestPreprocessor rp = providerFactory.getRequestPreprocessor(); if (rp != null) { rp.preprocess(message, new UriInfoImpl(message, null));
ApplicationInfo appInfo = null; if (!isScan()) { appInfo = factory.getApplicationProvider(); if (appInfo == null) { Set<Class<?>> serviceClasses = new HashSet<>(); factory.setUserProviders(providers);
/** * Detects the application (if present) or creates the default application (in case the scan is disabled). */ protected Application getApplicationOrDefault( final Server server, final ServerProviderFactory factory, final JAXRSServiceFactoryBean sfb, final Bus bus) { ApplicationInfo appInfo = null; if (!isScan()) { appInfo = factory.getApplicationProvider(); if (appInfo == null) { appInfo = new ApplicationInfo( new DefaultApplication(sfb.getClassResourceInfo(), resourcePackages), bus); server.getEndpoint().put(Application.class.getName(), appInfo); } } return (appInfo == null) ? null : appInfo.getProvider(); }
public static ServerProviderFactory createInstance(Bus bus) { if (bus == null) { bus = BusFactory.getThreadDefaultBus(); } ServerProviderFactory factory = new ServerProviderFactory(bus); ProviderFactory.initFactory(factory); factory.setProviders(false, false, new WebApplicationExceptionMapper(), new NioMessageBodyWriter()); factory.setBusProviders(); return factory; }
/** * Process the entries */ private void doBatch() { for (final B importEntry : task.getEntries()) { // Override previous status importEntry.setStatus(null); importEntry.setStatusText(null); try { doBatch(importEntry, task.isQuiet()); // Success importEntry.setStatus(Boolean.TRUE); log.info("Import of {} succeed", importEntry); } catch (final Exception ne) { // The entry creation failed : entity itself of group membership log.info("Import of {} failed : {}", importEntry, ne.getMessage()); importEntry.setStatus(Boolean.FALSE); final ExceptionMapper<Throwable> mapper = jaxrsFactory.createExceptionMapper(ne.getClass(), null); importEntry .setStatusText(mapper == null ? ne.getMessage() : mapper.toResponse(ne).getEntity().toString()); } task.getStatus().setDone(task.getStatus().getDone() + 1); } }
@Override public SseEventSink createContext(Message message) { final HttpServletRequest request = (HttpServletRequest)message.get(AbstractHTTPDestination.HTTP_REQUEST); if (request == null) { throw new IllegalStateException("Unable to retrieve HTTP request from the context"); } final MessageBodyWriter<OutboundSseEvent> writer = new OutboundSseEventBodyWriter( ServerProviderFactory.getInstance(message), message.getExchange()); final AsyncResponse async = new AsyncResponseImpl(message); return new SseEventSinkImpl(writer, async, request.getAsyncContext()); } }
private void convertExceptionToResponseIfPossible(Throwable ex, Message message) { Response excResponse = JAXRSUtils.convertFaultToResponse(ex, message); if (excResponse == null) { ServerProviderFactory.getInstance(message).clearThreadLocalProxies(); message.getExchange().put(Message.PROPOGATE_EXCEPTION, ExceptionUtils.propogateException(message)); throw ex instanceof RuntimeException ? (RuntimeException)ex : ExceptionUtils.toInternalServerErrorException(ex, null); } message.getExchange().put(Response.class, excResponse); message.getExchange().put(Throwable.class, ex); }
public void handleMessage(Message message) { ServerProviderFactory providerFactory = ServerProviderFactory.getInstance(message); try { processResponse(providerFactory, message); } finally { ServerProviderFactory.releaseRequestState(providerFactory, message); } }
? ServerProviderFactory.getInstance(m).getDefaultJaxbWriter() : null; ResourceTypes resourceTypes = ResourceUtils.getAllRequestResponseTypes(cris, useJaxbContextForQnames,
/** * Detects the application (if present) or creates the default application (in case the scan is disabled). */ protected Application getApplicationOrDefault( final Server server, final ServerProviderFactory factory, final JAXRSServiceFactoryBean sfb, final Bus bus) { ApplicationInfo appInfo = null; if (!isScan()) { appInfo = factory.getApplicationProvider(); if (appInfo == null) { appInfo = new ApplicationInfo( new DefaultApplication(sfb.getClassResourceInfo(), resourcePackages), bus); server.getEndpoint().put(Application.class.getName(), appInfo); } } return (appInfo == null) ? null : appInfo.getProvider(); }
private <T> T doInitResource(Class<?> cls, T resource) { ClassResourceInfo sub = cri.getSubResource(subClass, cls, resource, true, m); sub.initBeanParamInfo(ServerProviderFactory.getInstance(m)); sub.injectContexts(resource, m.getExchange().get(OperationResourceInfo.class), m); return resource; } }