// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.core.store;
import org.openstreetmap.osmosis.core.OsmosisRuntimeException;
/**
* Provides object writing functionality where only a single class type will be
* stored.
*
* @author Brett Henderson
*/
public class SingleClassObjectWriter extends BaseObjectWriter {
private Class<?> storeableType;
/**
* Creates a new instance.
*
* @param storeWriter
* The store writer to write all serialised data to.
* @param storeClassRegister
* The register for class to identifier mappings.
* @param storeableType
* The type of class to be stored.
*/
protected SingleClassObjectWriter(
StoreWriter storeWriter, StoreClassRegister storeClassRegister, Class<?> storeableType) {
super(storeWriter, storeClassRegister);
this.storeableType = storeableType;
}
/**
* {@inheritDoc}
*/
@Override
protected void writeClassIdentifier(StoreWriter sw, StoreClassRegister scr, Class<?> clazz) {
// We don't need to write anything, we just need to verify that the
// class is of the correct type.
if (!storeableType.equals(clazz)) {
throw new OsmosisRuntimeException(
"Received class " + clazz.getName() + ", expected class " + storeableType.getName() + ".");
}
}
}