AsynchronousProcessListWriter implements MessageBodyWriter<Iterable<AsynchronousProcess>> { @Override public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { if (Iterable.class.isAssignableFrom(type) && (genericType instanceof ParameterizedType)) { Type[] types = ((ParameterizedType)genericType).getActualTypeArguments(); return types.length == 1 && types[0] == AsynchronousProcess.class; } return false; }  @Override boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType); @Override long getSize(Iterable<AsynchronousProcess> asynchronousProcesses,
                        Class<?> type,
                        Type genericType,
                        Annotation[] annotations,
                        MediaType mediaType); @Override void writeTo(Iterable<AsynchronousProcess> asynchronousProcesses,
                        Class<?> type, Type genericType,
                        Annotation[] annotations,
                        MediaType mediaType,
                        MultivaluedMap<String, Object> httpHeaders,
                        OutputStream entityStream);  }
@Test public void testIsWritable() throws Exception { assertTrue(processListWriter.isWriteable(List.class, newParameterizedType(List.class, AsynchronousProcess.class), new Annotation[0], MediaType.TEXT_PLAIN_TYPE)); }