package mil.nga.giat.geowave.analytic; import static org.junit.Assert.assertNotNull; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import mil.nga.giat.geowave.adapter.vector.FeatureDataAdapter; import mil.nga.giat.geowave.analytic.clustering.ClusteringUtils; import mil.nga.giat.geowave.core.index.ByteArrayId; import mil.nga.giat.geowave.core.store.adapter.DataAdapter; import mil.nga.giat.geowave.core.store.memory.MemoryAdapterStore; import org.geotools.feature.type.BasicFeatureTypes; import org.junit.Test; import org.opengis.feature.simple.SimpleFeatureType; public class SerializableAdapterStoreTest { @Test public void testSerialization() throws ClassNotFoundException, IOException { final SimpleFeatureType ftype = AnalyticFeature.createGeometryFeatureAdapter( "centroid", new String[] { "extra1" }, BasicFeatureTypes.DEFAULT_NAMESPACE, ClusteringUtils.CLUSTERING_CRS).getFeatureType(); final SerializableAdapterStore store = new SerializableAdapterStore( new MemoryAdapterStore( new DataAdapter<?>[] { new FeatureDataAdapter( ftype) })); final ByteArrayId id = new ByteArrayId( "centroid"); assertNotNull(checkSerialization( store).getAdapter( id)); } private SerializableAdapterStore checkSerialization( final SerializableAdapterStore store ) throws IOException, ClassNotFoundException { final ByteArrayOutputStream bos = new ByteArrayOutputStream(); try (ObjectOutputStream os = new ObjectOutputStream( bos)) { os.writeObject(store); os.flush(); } final ByteArrayInputStream bis = new ByteArrayInputStream( bos.toByteArray()); try (ObjectInputStream is = new ObjectInputStream( bis)) { return (SerializableAdapterStore) is.readObject(); } } }