javax.ws.rs.ext.Provider#javax.ws.rs.ext.MessageBodyWriter源码实例Demo

下面列出了javax.ws.rs.ext.Provider#javax.ws.rs.ext.MessageBodyWriter 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: cxf   文件: ProviderFactoryTest.java
@Test
public void testSortEntityProviders() throws Exception {
    ProviderFactory pf = ServerProviderFactory.getInstance();
    pf.registerUserProvider(new TestStringProvider());
    pf.registerUserProvider(new PrimitiveTextProvider<Object>());

    List<ProviderInfo<MessageBodyReader<?>>> readers = pf.getMessageReaders();

    assertTrue(indexOf(readers, TestStringProvider.class)
               < indexOf(readers, PrimitiveTextProvider.class));

    List<ProviderInfo<MessageBodyWriter<?>>> writers = pf.getMessageWriters();

    assertTrue(indexOf(writers, TestStringProvider.class)
               < indexOf(writers, PrimitiveTextProvider.class));

}
 
源代码2 项目: everrest   文件: ProviderBinderTest.java
@SuppressWarnings("unchecked")
@Test
public void retrievesAcceptableWriterMediaTypes() throws Exception {
    ObjectFactory<ProviderDescriptor> writerFactory = mock(ObjectFactory.class);
    ProviderDescriptor providerDescriptor = mock(ProviderDescriptor.class);
    when(providerDescriptor.produces()).thenReturn(newArrayList(new MediaType("text", "*"), new MediaType("text", "plain")));
    when(providerDescriptor.getObjectClass()).thenReturn((Class)StringEntityProvider.class);
    when(writerFactory.getObjectModel()).thenReturn(providerDescriptor);
    MessageBodyWriter<String> writer = mock(MessageBodyWriter.class);
    when(writer.isWriteable(eq(String.class), isNull(), any(), eq(WILDCARD_TYPE))).thenReturn(true);
    when(writerFactory.getInstance(context)).thenReturn(writer);

    providers.addMessageBodyWriter(writerFactory);

    assertEquals(newArrayList(new MediaType("text", "plain"), new MediaType("text", "*")),
                 providers.getAcceptableWriterMediaTypes(String.class, null, null));
}
 
@Test
public void shouldRegisterAMultiTypedProviderClassWithPriorities() {
    Map<Class<?>, Integer> priorities = new HashMap<>();
    priorities.put(ClientRequestFilter.class, 500);
    priorities.put(ClientResponseFilter.class, 501);
    priorities.put(MessageBodyReader.class, 502);
    priorities.put(MessageBodyWriter.class, 503);
    priorities.put(ReaderInterceptor.class, 504);
    priorities.put(WriterInterceptor.class, 505);
    priorities.put(ResponseExceptionMapper.class, 506);
    priorities.put(ParamConverterProvider.class, 507);
    RestClientBuilder builder = RestClientBuilder.newBuilder().register(MultiTypedProvider.class, priorities);
    Configuration configuration = builder.getConfiguration();
    assertTrue(configuration.isRegistered(MultiTypedProvider.class), MultiTypedProvider.class + " should be registered");
    Map<Class<?>, Integer> contracts = configuration.getContracts(MultiTypedProvider.class);
    assertEquals(contracts.size(), priorities.size(),
        "There should be "+priorities.size()+" provider types registered");
    for(Map.Entry<Class<?>, Integer> priority : priorities.entrySet()) {
        Integer contractPriority = contracts.get(priority.getKey());
        assertEquals(contractPriority, priority.getValue(), "The priority for "+priority.getKey()+" should be "+priority.getValue());
    }
}
 
源代码4 项目: dremio-oss   文件: AWSRequest.java
@Override
public InputStream getContent() {
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  final Object entity = clientRequestContext.getEntity();
  if (entity == null) {
    return null;
  } else {
    MessageBodyWriter messageBodyWriter = workers.getMessageBodyWriter(entity.getClass(), entity.getClass(),
      new Annotation[]{}, clientRequestContext.getMediaType());
    try {
      // use the MBW to serialize entity into baos
      messageBodyWriter.writeTo(entity,
        entity.getClass(), entity.getClass(), new Annotation[] {},
        clientRequestContext.getMediaType(), new MultivaluedHashMap<String, Object>(),
        baos);
    } catch (IOException e) {
      throw new RuntimeException(
        "Error while serializing entity.", e);
    }
    return new ByteArrayInputStream(baos.toByteArray());
  }
}
 
源代码5 项目: everrest   文件: ContainerResponseTest.java
private Answer<Void> writeEntity() {
    return invocation -> {
        MessageBodyWriter messageBodyWriter = (MessageBodyWriter)invocation.getArguments()[1];
        Object entity = containerResponse.getEntity();
        if (entity != null) {
            messageBodyWriter.writeTo(entity,
                                      entity.getClass(),
                                      containerResponse.getEntityType(),
                                      null,
                                      containerResponse.getContentType(),
                                      containerResponse.getHttpHeaders(),
                                      entityStream);
        }
        return null;
    };
}
 
源代码6 项目: everrest   文件: ProviderBinderTest.java
@Test
@UseDataProvider("messageBodyWriterByTypeAndMediaType")
public void retrievesMessageBodyWriterByTypeAndMediaType(boolean singletonOrPerRequest,
                                                         Class<?> writeObjectType,
                                                         Type writeObjectGenericType,
                                                         MediaType mediaType,
                                                         Object expectedMessageBodyWriterClassOrInstance) throws Exception {
    if (singletonOrPerRequest == SINGLETON) {
        registerSingletonMessageBodyWriters();
    } else {
        registerPerRequestMessageBodyWriters();
    }

    MessageBodyWriter messageBodyWriter = providers.getMessageBodyWriter(writeObjectType, writeObjectGenericType, null, mediaType);
    if (singletonOrPerRequest == SINGLETON) {
        assertSame(expectedMessageBodyWriterClassOrInstance, messageBodyWriter);
    } else {
        if (expectedMessageBodyWriterClassOrInstance == null) {
            assertNull(messageBodyWriter);
        } else {
            assertNotNull(messageBodyWriter);
            assertEquals(expectedMessageBodyWriterClassOrInstance, messageBodyWriter.getClass());
        }
    }
}
 
源代码7 项目: cxf   文件: OutboundSseEventBodyWriter.java
@SuppressWarnings("unchecked")
private<T> void writePayloadTo(Class<T> cls, Type type, Annotation[] anns, MediaType mt,
        MultivaluedMap<String, Object> headers, Object data, OutputStream os)
            throws IOException, WebApplicationException {

    MessageBodyWriter<T> writer = null;
    if (message != null && factory != null) {
        writer = factory.createMessageBodyWriter(cls, type, anns, mt, message);
    }

    if (writer == null) {
        throw new InternalServerErrorException("No suitable message body writer for class: " + cls.getName());
    }

    writer.writeTo((T)data, cls, type, anns, mt, headers, os);
}
 
源代码8 项目: ameba   文件: ErrorPageGenerator.java
/**
 * <p>writeViewable.</p>
 *
 * @param viewable     a {@link org.glassfish.jersey.server.mvc.Viewable} object.
 * @param mediaType    a {@link javax.ws.rs.core.MediaType} object.
 * @param httpHeaders  a {@link javax.ws.rs.core.MultivaluedMap} object.
 * @param entityStream a {@link java.io.OutputStream} object.
 * @throws java.io.IOException if any.
 */
protected void writeViewable(Viewable viewable,
                             MediaType mediaType,
                             MultivaluedMap<String, Object> httpHeaders,
                             OutputStream entityStream) throws IOException {
    MessageBodyWriter<Viewable> writer = workers.get().getMessageBodyWriter(Viewable.class, null,
            new Annotation[]{}, null);
    if (writer != null) {
        writer.writeTo(viewable,
                Viewable.class,
                Viewable.class,
                new Annotation[0],
                mediaType,
                httpHeaders,
                entityStream);
    }
}
 
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public void writeTo(Optional<?> entity,
                    Class<?> type,
                    Type genericType,
                    Annotation[] annotations,
                    MediaType mediaType,
                    MultivaluedMap<String, Object> httpHeaders,
                    OutputStream entityStream)
        throws IOException {
    if (!entity.isPresent()) {
        throw new NotFoundException();
    }

    final Type innerGenericType = (genericType instanceof ParameterizedType) ?
        ((ParameterizedType) genericType).getActualTypeArguments()[0] : entity.get().getClass();

    MessageBodyWriter writer = mbw.get().getMessageBodyWriter(entity.get().getClass(),
        innerGenericType, annotations, mediaType);
    writer.writeTo(entity.get(), entity.get().getClass(),
        innerGenericType, annotations, mediaType, httpHeaders, entityStream);
}
 
public boolean configure(final FeatureContext context) {
	final Configuration config = context.getConfiguration();
	final String jsonFeature = CommonProperties.getValue(config.getProperties(), config.getRuntimeType(), InternalProperties.JSON_FEATURE, JSON_FEATURE,
			String.class);
	// Other JSON providers registered.
	if (!JSON_FEATURE.equalsIgnoreCase(jsonFeature)) {
		return false;
	}
	// Disable other JSON providers.
	context.property(PropertiesHelper.getPropertyNameForRuntime(InternalProperties.JSON_FEATURE, config.getRuntimeType()), JSON_FEATURE);
	// Register FastJson.
	if (!config.isRegistered(FastJsonProvider.class)) {
		context.register(FastJsonProvider.class, MessageBodyReader.class, MessageBodyWriter.class);
	}
	return true;
}
 
源代码11 项目: cxf   文件: BookServer.java
@SuppressWarnings("unchecked")
@Override
public <T> ParamConverter<T> getConverter(Class<T> rawType, Type genericType,
                                          Annotation[] annotations) {
    if (rawType == Book.class) {

        MessageBodyReader<Book> mbr = providers.getMessageBodyReader(Book.class,
                                                                     Book.class,
                                                                     annotations,
                                                                     MediaType.APPLICATION_XML_TYPE);
        MessageBodyWriter<Book> mbw = providers.getMessageBodyWriter(Book.class,
                                                                     Book.class,
                                                                     annotations,
                                                                     MediaType.APPLICATION_XML_TYPE);
        return (ParamConverter<T>)new XmlParamConverter(mbr, mbw);
    } else if (rawType == byte.class) {
        return (ParamConverter<T>)new ByteConverter();
    } else {
        return null;
    }

}
 
源代码12 项目: cxf   文件: JAXRSOutInterceptor.java
private MediaType checkFinalContentType(MediaType mt, List<WriterInterceptor> writers, boolean checkWriters) {
    if (checkWriters) {
        int mbwIndex = writers.size() == 1 ? 0 : writers.size() - 1;
        MessageBodyWriter<Object> writer = ((WriterInterceptorMBW)writers.get(mbwIndex)).getMBW();
        Produces pm = writer.getClass().getAnnotation(Produces.class);
        if (pm != null) {
            List<MediaType> sorted =
                JAXRSUtils.sortMediaTypes(JAXRSUtils.getMediaTypes(pm.value()), JAXRSUtils.MEDIA_TYPE_QS_PARAM);
            mt = JAXRSUtils.intersectMimeTypes(sorted, mt).get(0);
        }
    }
    if (mt.isWildcardType() || mt.isWildcardSubtype()) {
        if ("application".equals(mt.getType()) || mt.isWildcardType()) {
            mt = MediaType.APPLICATION_OCTET_STREAM_TYPE;
        } else {
            throw ExceptionUtils.toNotAcceptableException(null,  null);
        }
    }
    return mt;
}
 
源代码13 项目: cxf   文件: PrimitiveTextProviderTest.java
@Test
public void testWriteStringISO() throws Exception {
    MessageBodyWriter<String> p = new PrimitiveTextProvider<>();
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    MultivaluedMap<String, Object> headers = new MetadataMap<>();

    String eWithAcute = "\u00E9";
    String helloStringUTF16 = "Hello, my name is F" + eWithAcute + "lix Agn" + eWithAcute + "s";

    p.writeTo(helloStringUTF16,
              String.class, String.class, null, MediaType.valueOf("text/plain;charset=ISO-8859-1"),
              headers, os);

    byte[] iso88591bytes = helloStringUTF16.getBytes("ISO-8859-1");
    String helloStringISO88591 = new String(iso88591bytes, "ISO-8859-1");

    assertEquals(helloStringISO88591, os.toString("ISO-8859-1"));
}
 
源代码14 项目: cxf   文件: SimpleTypeJsonProvider.java
@Override
public void writeTo(T t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType,
                    MultivaluedMap<String, Object> headers, OutputStream os)
    throws IOException, WebApplicationException {
    if (!supportSimpleTypesOnly && !InjectionUtils.isPrimitive(type)) {
        @SuppressWarnings("unchecked")
        MessageBodyWriter<T> next =
            (MessageBodyWriter<T>)providers.getMessageBodyWriter(type, genericType, annotations, mediaType);
        JAXRSUtils.getCurrentMessage().put(ProviderFactory.ACTIVE_JAXRS_PROVIDER_KEY, this);
        try {
            next.writeTo(t, type, genericType, annotations, mediaType, headers, os);
        } finally {
            JAXRSUtils.getCurrentMessage().put(ProviderFactory.ACTIVE_JAXRS_PROVIDER_KEY, null);
        }
    } else {
        os.write(StringUtils.toBytesASCII("{\"" + type.getSimpleName().toLowerCase() + "\":"));
        writeQuote(os, type);
        primitiveHelper.writeTo(t, type, genericType, annotations, mediaType, headers, os);
        writeQuote(os, type);
        os.write(StringUtils.toBytesASCII("}"));
    }
}
 
源代码15 项目: cxf   文件: ProviderFactory.java
public int compare(ProviderInfo<MessageBodyWriter<?>> p1,
                   ProviderInfo<MessageBodyWriter<?>> p2) {
    MessageBodyWriter<?> e1 = p1.getProvider();
    MessageBodyWriter<?> e2 = p2.getProvider();

    int result = compareClasses(e1, e2);
    if (result != 0) {
        return result;
    }
    List<MediaType> types1 =
        JAXRSUtils.sortMediaTypes(JAXRSUtils.getProviderProduceTypes(e1), JAXRSUtils.MEDIA_TYPE_QS_PARAM);
    List<MediaType> types2 =
        JAXRSUtils.sortMediaTypes(JAXRSUtils.getProviderProduceTypes(e2), JAXRSUtils.MEDIA_TYPE_QS_PARAM);

    result = JAXRSUtils.compareSortedMediaTypes(types1, types2, JAXRSUtils.MEDIA_TYPE_QS_PARAM);
    if (result != 0) {
        return result;
    }
    result = compareCustomStatus(p1, p2);
    if (result != 0) {
        return result;
    }

    return comparePriorityStatus(p1.getProvider().getClass(), p2.getProvider().getClass());
}
 
源代码16 项目: cxf   文件: BinaryDataProviderTest.java
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test
public void testWriteTo() throws Exception {
    MessageBodyWriter p = new BinaryDataProvider();
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    p.writeTo(new byte[]{'h', 'i'}, null, null, null, null, null, os);
    assertArrayEquals(new String("hi").getBytes(), os.toByteArray());
    ByteArrayInputStream is = new ByteArrayInputStream("hi".getBytes());
    os = new ByteArrayOutputStream();
    p.writeTo(is, null, null, null, null, null, os);
    assertArrayEquals(os.toByteArray(), new String("hi").getBytes());

    Reader r = new StringReader("hi");
    os = new ByteArrayOutputStream();
    p.writeTo(r, null, null, null, MediaType.valueOf("text/xml"), null, os);
    assertArrayEquals(os.toByteArray(), new String("hi").getBytes());

    os = new ByteArrayOutputStream();
    p.writeTo(new StreamingOutputImpl(), null, null, null,
              MediaType.valueOf("text/xml"), null, os);
    assertArrayEquals(os.toByteArray(), new String("hi").getBytes());
}
 
源代码17 项目: cxf   文件: ProviderFactoryTest.java
@Test
public void testRegisterMbrMbwProviderAsMbrOnly() {
    ServerProviderFactory pf = ServerProviderFactory.getInstance();
    JAXBElementProvider<Book> customProvider = new JAXBElementProvider<>();
    pf.registerUserProvider((Feature) context -> {
        context.register(customProvider, MessageBodyReader.class);
        return true;
    });
    MessageBodyReader<Book> reader = pf.createMessageBodyReader(Book.class, null, null,
                                                                MediaType.TEXT_XML_TYPE, new MessageImpl());
    assertSame(reader, customProvider);

    MessageBodyWriter<Book> writer = pf.createMessageBodyWriter(Book.class, null, null,
                                                                MediaType.TEXT_XML_TYPE, new MessageImpl());
    assertTrue(writer instanceof JAXBElementProvider);
    assertNotSame(writer, customProvider);
}
 
源代码18 项目: uavstack   文件: FastJsonFeature.java
@Override
public boolean configure(final FeatureContext context) {
    try {
        final Configuration config = context.getConfiguration();

        final String jsonFeature = CommonProperties.getValue(
                config.getProperties()
                , config.getRuntimeType()
                , InternalProperties.JSON_FEATURE, JSON_FEATURE,
                String.class
        );

        // Other JSON providers registered.
        if (!JSON_FEATURE.equalsIgnoreCase(jsonFeature)) {
            return false;
        }

        // Disable other JSON providers.
        context.property(
                PropertiesHelper.getPropertyNameForRuntime(InternalProperties.JSON_FEATURE, config.getRuntimeType())
                , JSON_FEATURE);

        // Register FastJson.
        if (!config.isRegistered(FastJsonProvider.class)) {
            context.register(FastJsonProvider.class, MessageBodyReader.class, MessageBodyWriter.class);
        }
    } catch (NoSuchMethodError e) {
        // skip
    }

    return true;
}
 
源代码19 项目: everrest   文件: ContainerResponseTest.java
@Before
public void setUp() throws Exception {
    providers = mock(ProviderBinder.class);
    containerRequest = mock(ContainerRequest.class);
    ApplicationContext applicationContext = mock(ApplicationContext.class);
    when(applicationContext.getProviders()).thenReturn(providers);
    when(applicationContext.getContainerRequest()).thenReturn(containerRequest);
    when(applicationContext.getQueryParameters()).thenReturn(new MultivaluedHashMap<>());
    ApplicationContext.setCurrent(applicationContext);

    entityStream = new ByteArrayOutputStream();
    containerResponseWriter = mock(ContainerResponseWriter.class);
    containerResponse = new ContainerResponse(containerResponseWriter);
    doAnswer(writeEntity()).when(containerResponseWriter).writeBody(same(containerResponse), any(MessageBodyWriter.class));
}
 
@Test
public void shouldRegisterAMultiTypedProviderClass() {
    Class<?>[] providerTypes = {ClientRequestFilter.class, ClientResponseFilter.class,
        MessageBodyReader.class, MessageBodyWriter.class, ReaderInterceptor.class, WriterInterceptor.class,
        ResponseExceptionMapper.class, ParamConverterProvider.class};
    RestClientBuilder builder = RestClientBuilder.newBuilder().register(MultiTypedProvider.class, providerTypes);
    Configuration configuration = builder.getConfiguration();
    assertTrue(configuration.isRegistered(MultiTypedProvider.class), MultiTypedProvider.class + " should be registered");
    assertEquals(configuration.getContracts(MultiTypedProvider.class).size(), providerTypes.length,
        "There should be "+providerTypes.length+" provider types registered");
}
 
源代码21 项目: everrest   文件: ContainerResponseTest.java
@Test
public void neverCreatesNOT_ACCEPTABLEResponseForHEADRequestEvenWhenNotFoundAnyWriterForEntity() throws Exception {
    when(containerRequest.getMethod()).thenReturn("HEAD");
    when(containerRequest.getAcceptableMediaTypes()).thenReturn(newArrayList(WILDCARD_TYPE));

    MultivaluedMap<String, Object> headers = new MultivaluedHashMap<>();
    Response response = mockResponse(200, headers, "foo");
    containerResponse.setResponse(response);

    containerResponse.writeResponse();

    assertEquals(200, containerResponse.getStatus());
    verify(containerResponseWriter).writeHeaders(containerResponse);
    verify(containerResponseWriter, never()).writeBody(same(containerResponse), any(MessageBodyWriter.class));
}
 
源代码22 项目: enkan   文件: SerDesMiddleware.java
@SuppressWarnings("unchecked")
protected InputStream serialize(Object obj, MediaType mediaType) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    MultivaluedMap<String, Object> headers = new MultivaluedHashMap<>();

    if (obj == null) {
        return new ByteArrayInputStream(new byte[0]);
    }

    return bodyWriters.stream()
            .sorted((writer1, writer2) ->
                    Boolean.compare(
                            writer1.isWriteable(obj.getClass(), obj.getClass(), null, mediaType),
                            writer2.isWriteable(obj.getClass(), obj.getClass(), null, mediaType)))
            .map(writer -> {
                try {
                    MessageBodyWriter.class.cast(writer).writeTo(obj, obj.getClass(), obj.getClass(), null, mediaType, headers, baos);
                    return baos.toByteArray();
                } catch (IOException e) {
                    return null;
                }
            })
            .filter(Objects::nonNull)
            .map(ByteArrayInputStream::new)
            .findFirst()
            .orElse(null);
}
 
源代码23 项目: everrest   文件: ApplicationProviderBinder.java
@Override
public <T> MessageBodyWriter<T> getMessageBodyWriter(Class<T> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
    MessageBodyWriter<T> writer = doGetMessageBodyWriter(type, genericType, annotations, mediaType);
    if (writer == null) {
        writer = getDefaults().getMessageBodyWriter(type, genericType, annotations, mediaType);
    }
    return writer;
}
 
源代码24 项目: rx-jersey   文件: RxGenericBodyWriter.java
@Override
public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
    if (genericType instanceof ParameterizedType) {
        Class<?> rawType = raw(genericType);

        final Type actualTypeArgument = actual(genericType);
        final MessageBodyWriter<?> messageBodyWriter
                = workers.get().getMessageBodyWriter(raw(actualTypeArgument), actualTypeArgument, annotations, mediaType);

        return allowedTypes.contains(rawType) && messageBodyWriter != null;
    }
    return allowedTypes.contains(genericType);
}
 
源代码25 项目: cxf   文件: ProviderFactoryTest.java
private void verifyProvider(ProviderFactory pf, Class<?> type, Class<?> provider, String mediaType)
    throws Exception {

    if (pf == null) {
        pf = ServerProviderFactory.getInstance();
    }

    MediaType mType = MediaType.valueOf(mediaType);

    MessageBodyReader<?> reader = pf.createMessageBodyReader(type, type, null, mType, new MessageImpl());
    assertSame("Unexpected provider found", provider, reader.getClass());

    MessageBodyWriter<?> writer = pf.createMessageBodyWriter(type, type, null, mType, new MessageImpl());
    assertTrue("Unexpected provider found", provider == writer.getClass());
}
 
@Test
public void testVerbatimOccurrenceXML() throws IOException{
  MessageBodyWriter<VerbatimOccurrence> occurrenceDwcXMLBodyWriter = new OccurrenceVerbatimDwcXMLBodyWriter();
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  VerbatimOccurrence occ = new VerbatimOccurrence();

  occ.setVerbatimField(DwcTerm.verbatimLocality, "mad");
  Term customTerm = TermFactory.instance().findTerm("MyTerm");
  occ.setVerbatimField(customTerm, "MyTerm value");

  occurrenceDwcXMLBodyWriter.writeTo(occ, null, null, null, null, null, baos);

  String expectedContent = IOUtils.toString(new FileInputStream(FileUtils.getClasspathFile("dwc_xml/verbatim_occurrence.xml")));
  assertEquals(CharMatcher.WHITESPACE.removeFrom(expectedContent), CharMatcher.WHITESPACE.removeFrom(baos.toString()));
}
 
源代码27 项目: openhab-core   文件: MediaTypeExtension.java
@Override
public void writeTo(final T object, final Class<?> type, final Type genericType, final Annotation[] annotations,
        final MediaType mediaType, final MultivaluedMap<String, Object> httpHeaders,
        final OutputStream entityStream) throws IOException, WebApplicationException {
    final MessageBodyWriter<T> writer = writers.get(mediaTypeWithoutParams(mediaType));
    if (writer != null) {
        writer.writeTo(object, type, genericType, annotations, mediaType, httpHeaders, entityStream);
    } else {
        throw new InternalServerErrorException("unsupported media type");
    }
}
 
源代码28 项目: cxf   文件: ProviderFactoryAllTest.java
private void verifyProvider(ProviderFactory pf, Class<?> type, Class<?> provider, String mediaType)
    throws Exception {

    if (pf == null) {
        pf = ServerProviderFactory.getInstance();
    }

    MediaType mType = MediaType.valueOf(mediaType);

    MessageBodyReader<?> reader = pf.createMessageBodyReader(type, type, null, mType, new MessageImpl());
    assertSame("Unexpected provider found", provider, reader.getClass());

    MessageBodyWriter<?> writer = pf.createMessageBodyWriter(type, type, null, mType, new MessageImpl());
    assertTrue("Unexpected provider found", provider == writer.getClass());
}
 
源代码29 项目: everrest   文件: EverrestResponseWriter.java
@Override
@SuppressWarnings({"unchecked"})
public void writeBody(GenericContainerResponse response, MessageBodyWriter entityWriter) throws IOException {
    if (committed) {
        return;
    }
    final ByteArrayOutputStream out = new ByteArrayOutputStream();
    final Object entity = response.getEntity();
    if (entity != null) {
        entityWriter.writeTo(entity, entity.getClass(), response.getEntityType(), null, response.getContentType(),
                             response.getHttpHeaders(), out);
        byte[] body = out.toByteArray();
        output.setBody(new String(body));
    }
}
 
源代码30 项目: everrest   文件: ContainerResponseTest.java
@Test
public void createsNOT_ACCEPTABLEResponseWhenNotFoundAnyWriterForEntity() throws Exception {
    when(containerRequest.getMethod()).thenReturn("GET");
    when(containerRequest.getAcceptableMediaTypes()).thenReturn(newArrayList(WILDCARD_TYPE));

    MultivaluedMap<String, Object> headers = new MultivaluedHashMap<>();
    Response response = mockResponse(200, headers, "foo");
    containerResponse.setResponse(response);

    containerResponse.writeResponse();

    assertEquals(406, containerResponse.getStatus());
    verify(containerResponseWriter).writeHeaders(containerResponse);
    verify(containerResponseWriter).writeBody(same(containerResponse), any(MessageBodyWriter.class));
}