All pastes #2069097 Raw Edit

@FormParameters as JSON

public java v1 · immutable
#2069097 ·published 2011-05-25 18:30 UTC
rendered paste body
@Service("receiverService")@Path("/receiver")public class ObjectReceiverService {    @POST    @Path("jsonTest")    @Produces("application/json")    public MyObject jsonTest(@FormParam("myPrimitive") int myPrimitive, @FormParam("myComplex") MyObject myComplex) {        return myComplex;    }        ...//}//domain class with Mapper from Jacksonpublic class MyObject {    public String foo;    public String bar;    public String baz;    public static MyObject valueOf(String s) throws Exception {        return new ObjectMapper().readValue(s, MyObject.class);    }        ...//implementation of equals() etc.}//test class with lots of manual setup using WebClientpublic class ObjectReceiverServiceTest {    @Before    public void setup() {        ProviderFactory.getSharedInstance().registerUserProvider(new JacksonJsonProvider());    }    @org.junit.Test    public void jsonTest1_recievingSameObject() throws Exception {        String url = "http://localhost:8080/";        String path = "rest/receiver/jsonTest";        MyObject myObjectToSend = new MyObject();        MyObject result = new MyObject();        myObjectToSend.foo = "foo";        myObjectToSend.bar = "bar";        myObjectToSend.baz = "baz";        WebClient client = WebClient.create(url);        client.path(path);        client.accept("application/json").type(MediaType.APPLICATION_FORM_URLENCODED_TYPE);        Response r = client.post("myPrimitive=123&myComplex=" + new ObjectMapper().writeValueAsString(myObjectToSend));        result = new ObjectMapper().readValue(new BufferedReader(new InputStreamReader((InputStream) r.getEntity())).readLine(), MyObject.class);        assertEquals(myObjectToSend, result);    }    // better, but does not work	@org.junit.Test	public void jsonTest2() throws Exception {		String url = "http://localhost:8080/rest";		ObjectReceiverService service = JAXRSClientFactory.create(url, ObjectReceiverService.class);		MyObject myObjectToSend = new MyObject();		myObjectToSend.foo = "foo2";		myObjectToSend.bar = "bar2";		myObjectToSend.baz = "baz2";		MyObject result = service.jsonTest(123,myObjectToSend);		assertEquals(myObjectToSend, result);	}}