ConverterReader.java [plain text]
package com.sleepycat.persist.impl;
import com.sleepycat.persist.evolve.Converter;
import com.sleepycat.persist.raw.RawObject;
public class ConverterReader implements Reader {
private static final long serialVersionUID = -305788321064984348L;
private Converter converter;
private transient Format oldFormat;
ConverterReader(Converter converter) {
this.converter = converter;
}
public void initializeReader(Catalog catalog,
int initVersion,
Format oldFormat) {
this.oldFormat = oldFormat;
}
public Object newInstance(EntityInput input, boolean rawAccess) {
return oldFormat.newInstance(input, true);
}
public void readPriKey(Object o, EntityInput input, boolean rawAccess) {
oldFormat.readPriKey(o, input, true);
}
public Object readObject(Object o, EntityInput input, boolean rawAccess) {
Catalog catalog = input.getCatalog();
o = oldFormat.readObject(o, input, true);
o = converter.getConversion().convert(o);
if (!rawAccess && o instanceof RawObject) {
o = catalog.convertRawObject((RawObject) o, null);
}
return o;
}
}