@Override public boolean isWriteable(Class<?> cls, Type type, Annotation[] anns, MediaType mt) { return is31 && NioWriteEntity.class.isAssignableFrom(cls) && getContinuationProvider() != null; }
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; }
@Override public void writeTo(NioWriteEntity entity, Class<?> cls, Type t, Annotation[] anns, MediaType mt, MultivaluedMap<String, Object> headers, OutputStream os) throws IOException, WebApplicationException { Continuation cont = getContinuationProvider().getContinuation(); NioWriteListenerImpl listener = new NioWriteListenerImpl(cont, entity, os); Message m = JAXRSUtils.getCurrentMessage(); m.put(WriteListener.class, listener); // return the current thread to the pool cont.suspend(0); }