blob: a310ad9de508b5fd2b05f60deb7e8b5262a07e8f [file] [log] [blame]
package org.codehaus.jackson.jaxrs;
import java.util.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.StreamingOutput;
/**
* Unit tests for verifying that certain JDK base types will be
* ignored by default Jackson JAX-RS conversion provider.
*
* @since 1.5
*/
public class TestUntouchables
extends main.BaseTest
{
/**
* Test type added for [JACKSON-460]... just to ensure that "isJsonType"
* remains overridable.
*/
public static class MyJacksonJsonProvider extends JacksonJsonProvider {
// ensure isJsonType remains "protected" � this is a compile-time check.
// Some users of JacksonJsonProvider override this method;
// changing to "private" would regress them.
@Override
protected boolean isJsonType(MediaType mediaType) { return super.isJsonType(mediaType); }
}
/*
/**********************************************************
/* Unit tests
/**********************************************************
*/
public void testDefaultUntouchables() throws Exception
{
JacksonJsonProvider prov = new JacksonJsonProvider();
// By default, no reason to exclude, say, this test class...
assertTrue(prov.isReadable(getClass(), getClass(), null, null));
assertTrue(prov.isWriteable(getClass(), getClass(), null, null));
// but some types should be ignored (set of ignorable may change over time tho!)
assertFalse(prov.isReadable(String.class, getClass(), null, null));
assertFalse(prov.isWriteable(StreamingOutput.class, StreamingOutput.class, null, null));
}
public void testCustomUntouchables() throws Exception
{
JacksonJsonProvider prov = new JacksonJsonProvider();
// can mark this as ignorable...
prov.addUntouchable(getClass());
// and then it shouldn't be processable
assertFalse(prov.isReadable(getClass(), getClass(), null, null));
assertFalse(prov.isWriteable(getClass(), getClass(), null, null));
// Same for interfaces, like:
prov.addUntouchable(Collection.class);
assertFalse(prov.isReadable(ArrayList.class, ArrayList.class, null, null));
assertFalse(prov.isWriteable(HashSet.class, HashSet.class, null, null));
}
}