package org.geoserver.web.data.store; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.List; import org.apache.wicket.model.IModel; import org.geoserver.catalog.DataStoreInfo; import org.geoserver.catalog.StoreInfo; import org.geoserver.data.test.MockData; import org.geoserver.web.GeoServerWicketTestSupport; import org.geoserver.web.data.workspace.WorkspaceDetachableModel; public class StoreModelTest extends GeoServerWicketTestSupport { public void testStoreModel() throws Exception { DataStoreInfo s = getFeatureTypeInfo(MockData.PRIMITIVEGEOFEATURE).getStore(); StoreModel<DataStoreInfo> model = new StoreModel<DataStoreInfo>(s); model = serializeDeserialize(model); assertEquals(s, model.getObject()); model.detach(); assertEquals(s, model.getObject()); } public void testStoresModel() throws Exception { WorkspaceDetachableModel ws = new WorkspaceDetachableModel(getCatalog().getWorkspaceByName("sf")); StoresModel model = new StoresModel(ws); List<StoreInfo> stores = getCatalog().getStoresByWorkspace("ws", StoreInfo.class); for (StoreInfo s : stores) { assertTrue(model.getObject().contains(s)); } model.detach(); for (StoreInfo s : stores) { assertTrue(model.getObject().contains(s)); } model = serializeDeserialize(model); for (StoreInfo s : stores) { assertTrue(model.getObject().contains(s)); } } <T extends IModel> T serializeDeserialize(T model) throws Exception { ByteArrayOutputStream bout = new ByteArrayOutputStream(); ObjectOutputStream objout = new ObjectOutputStream(bout); objout.writeObject(model); objout.flush(); objout.close(); ObjectInputStream objin = new ObjectInputStream(new ByteArrayInputStream(bout.toByteArray())); return (T) objin.readObject(); } }