package mil.nga.giat.geowave.analytic.mapreduce.kmeans;
import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.hadoop.io.serializer.Deserializer;
import org.apache.hadoop.io.serializer.Serialization;
import org.apache.hadoop.io.serializer.Serializer;
public class TestObjectSerialization implements
Serialization<TestObject>
{
@Override
public boolean accept(
final Class<?> c ) {
return TestObject.class.isAssignableFrom(c);
}
@Override
public Deserializer<TestObject> getDeserializer(
final Class<TestObject> arg0 ) {
return new TODeserializer();
}
@Override
public Serializer<TestObject> getSerializer(
final Class<TestObject> arg0 ) {
return new TOSerializer();
}
public class TODeserializer implements
Deserializer<TestObject>
{
private InputStream in;
private DataInputStream dataInput;
@Override
public void open(
final InputStream in )
throws IOException {
this.in = in;
dataInput = new DataInputStream(
in);
}
@Override
public TestObject deserialize(
final TestObject t )
throws IOException {
final TestObjectWritable fw = new TestObjectWritable();
fw.readFields(dataInput);
return (TestObject) fw.getObj();
}
@Override
public void close()
throws IOException {
in.close();
}
}
private static class TOSerializer implements
Serializer<TestObject>
{
private OutputStream out;
private DataOutput dataOutput;
@Override
public void open(
final OutputStream out )
throws IOException {
this.out = out;
dataOutput = new DataOutputStream(
out);
}
@Override
public void serialize(
final TestObject t )
throws IOException {
final TestObjectWritable fw = new TestObjectWritable(
t);
fw.write(dataOutput);
}
@Override
public void close()
throws IOException {
out.close();
}
}
}