@Override public Object transcode(Object content, MediaType contentType, MediaType destinationType) { try { if (destinationType.equals(APPLICATION_UNKNOWN)) { if (contentType.match(APPLICATION_UNKNOWN)) return content; return convertToByteArray(content, contentType); } if (destinationType.match(APPLICATION_OCTET_STREAM)) { return convertToOctetStream(content, contentType, destinationType); } if (destinationType.match(APPLICATION_OBJECT)) { return convertToObject(content, contentType, destinationType); } if (destinationType.match(TEXT_PLAIN)) { return convertToTextPlain(content, contentType, destinationType); } if (destinationType.match(APPLICATION_WWW_FORM_URLENCODED)) { return convertToUrlEncoded(content, contentType); } throw log.unsupportedContent(content); } catch (EncodingException | InterruptedException | IOException e) { throw log.unsupportedContent(content); } }
@BeforeClass(alwaysRun = true) public void setUp() { dataSrc = " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; transcoder = new DefaultTranscoder(); supportedMediaTypes = transcoder.getSupportedMediaTypes(); }
private Object convertToObject(Object content, MediaType contentType, MediaType destinationType) { if (contentType.match(APPLICATION_OCTET_STREAM)) { byte[] decoded = StandardConversions.decodeOctetStream(content, destinationType); return StandardConversions.convertOctetStreamToJava(decoded, destinationType, javaMarshaller); } if (contentType.match(APPLICATION_OBJECT)) { return StandardConversions.decodeObjectContent(content, contentType); } if (contentType.match(TEXT_PLAIN)) { return StandardConversions.convertTextToObject(content, contentType); } if (contentType.match(APPLICATION_WWW_FORM_URLENCODED)) { return StandardConversions.convertUrlEncodedToObject(content); } if (contentType.equals(MediaType.APPLICATION_UNKNOWN)) { if (content instanceof byte[]) { return tryDeserialize((byte[]) content); } if (content instanceof WrappedByteArray) { return tryDeserialize(((WrappedByteArray) content).getBytes()); } return content; } throw log.unsupportedContent(content); }
@BeforeClass(alwaysRun = true) public void setUp() { dataSrc = new Person("Joe"); Address address = new Address(); address.setCity("London"); dataSrc.setAddress(address); transcoder = new DefaultTranscoder(); supportedMediaTypes = transcoder.getSupportedMediaTypes(); }
public void testTranscoderLookup() { EncoderRegistry encoderRegistry = new EncoderRegistryImpl(); TestTranscoder t1 = new TestTranscoder(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OBJECT); TestTranscoder t2 = new TestTranscoder(MediaType.APPLICATION_XML, MediaType.APPLICATION_OBJECT); DefaultTranscoder t3 = new DefaultTranscoder(new GenericJBossMarshaller(), new JavaSerializationMarshaller()); encoderRegistry.registerTranscoder(t3); encoderRegistry.registerTranscoder(t2); encoderRegistry.registerTranscoder(t1); assertEquals(encoderRegistry.getTranscoder(MediaType.TEXT_PLAIN, MediaType.APPLICATION_OBJECT), t3); assertEquals(encoderRegistry.getTranscoder(MediaType.TEXT_PLAIN, MediaType.TEXT_PLAIN), t3); assertEquals(encoderRegistry.getTranscoder(MediaType.TEXT_PLAIN, MediaType.APPLICATION_OBJECT), t3); assertEquals(encoderRegistry.getTranscoder(MediaType.APPLICATION_OCTET_STREAM, MediaType.APPLICATION_OCTET_STREAM), t3); assertEquals(encoderRegistry.getTranscoder(MediaType.APPLICATION_OBJECT, MediaType.APPLICATION_OBJECT), t3); assertEquals(encoderRegistry.getTranscoder(MediaType.TEXT_PLAIN, MediaType.APPLICATION_OCTET_STREAM), t3); assertNotFound(encoderRegistry, MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML); assertNotFound(encoderRegistry, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON); assertEquals(encoderRegistry.getTranscoder(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OBJECT), t1); assertEquals(encoderRegistry.getTranscoder(MediaType.APPLICATION_OBJECT, MediaType.APPLICATION_JSON), t1); assertEquals(encoderRegistry.getTranscoder(MediaType.APPLICATION_XML, MediaType.APPLICATION_OBJECT), t2); assertEquals(encoderRegistry.getTranscoder(MediaType.APPLICATION_OBJECT, MediaType.APPLICATION_XML), t2); assertEquals(encoderRegistry.getTranscoder(MediaType.APPLICATION_WWW_FORM_URLENCODED, MediaType.APPLICATION_WWW_FORM_URLENCODED), t3); }