package glaze.client.wire.tasks; import static glaze.test.http.Condition.when; import static glaze.test.http.Expressions.any; import glaze.Glaze; import glaze.client.Response; import glaze.client.sync.DefaultSyncClient; import glaze.client.wire.tasks.SerializableRequest; import glaze.test.http.BaseHttpTest; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import org.apache.http.HttpEntity; import org.apache.http.HttpEntityEnclosingRequest; import org.apache.http.HttpStatus; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.entity.ContentType; import org.apache.http.util.EntityUtils; import org.testng.Assert; import org.testng.annotations.Test; public class TestSerialization extends BaseHttpTest { @Test public void serialize() throws IOException, ClassNotFoundException { server.expect(when(any()).path("/serialize").respond("{\"id\":\"abcd\"}", ContentType.APPLICATION_JSON)); HttpGet get = new HttpGet(baseUrl + "/serialize"); serdeser(get); HttpPost post = new HttpPost(baseUrl + "/serialize"); serdeser(post); DefaultSyncClient client = new DefaultSyncClient(); String data = "<xml><bla>hi</bla></xml>"; HttpUriRequest put = Glaze.Put(baseUrl + "/serialize").bean(data).as(ContentType.APPLICATION_ATOM_XML).build(); HttpRequestBase created = serdeser(put); HttpEntity entity = ((HttpEntityEnclosingRequest) created).getEntity(); Assert.assertEquals(EntityUtils.toString(entity), data); Assert.assertEquals(ContentType.get(entity).getMimeType(), ContentType.APPLICATION_ATOM_XML.getMimeType()); Assert.assertEquals(ContentType.get(entity).getCharset(), ContentType.APPLICATION_ATOM_XML.getCharset()); Response response = client.execute(created); Assert.assertEquals(response.status(), HttpStatus.SC_OK); } private HttpRequestBase serdeser(HttpUriRequest req) throws FileNotFoundException, IOException, ClassNotFoundException { SerializableRequest ser = SerializableRequest.from(req); // write String serfile = "src/test/resources/ser/bean.ser"; FileOutputStream fout = new FileOutputStream(serfile); ObjectOutputStream sout = new ObjectOutputStream(fout); sout.writeObject(ser); sout.flush(); // read FileInputStream fin = new FileInputStream(serfile); ObjectInputStream sin = new ObjectInputStream(fin); SerializableRequest deser = (SerializableRequest) sin.readObject(); return deser.materialize(); } }