
import java.io.*;
import java.net.*;

import com.caucho.hessian.io.*;

public class Test {
	public static void main(String[] args) throws Exception {
		// Serialise
		final URI src = URI.create("http://www.example.com");

		byte[] serialised = serialise(src);
		URI res = deserialise(serialised);

		System.out.printf("  toString() %s => %s\n", src.toString(), res.toString());
		System.out.printf(" getScheme() %s => %s\n", src.getScheme(), res.getScheme());
		System.out.printf("   getHost() %s => %s\n", src.getHost(), res.getHost());
		System.out.printf("isAbsolute() %s => %s\n", src.isAbsolute(), res.isAbsolute());
		System.out.printf("    equals() %s\n", src.equals(res));

	}


	private static byte[] serialise(URI src) throws Exception {
		final ByteArrayOutputStream os = new ByteArrayOutputStream();
		final Hessian2Output out = new Hessian2Output(os);

		out.writeObject(src);
		out.close();

		return os.toByteArray();
	}


	private static URI deserialise(byte[] data) throws Exception {
		final ByteArrayInputStream is = new ByteArrayInputStream(data);
		final Hessian2Input in = new Hessian2Input(is);

		final URI res = (URI) in.readObject();

		in.close();

		return res;
	}
}

