Inner classes couldn't extend marshallers because cannot be Serializable

This commit is contained in:
leventov
2015-11-23 19:08:36 +03:00
parent beec07f9a9
commit 61254caf8f
3 changed files with 32 additions and 20 deletions
@@ -63,10 +63,11 @@ public abstract class InstanceCreatingMarshaller<T> implements Serializable {
tClass + " by default, delegates to \n" +
this.getClass().getName() + " which assumes the type has a public no-arg\n" +
"constructor. If this is not true, you should either extend the marshaller,\n" +
"overriding createInstance() and copy() (if defined), or write and\n" +
"configure your own marshaller for " + tClass + " type from scratch, and\n" +
"configure for the Chronicle Map via keyMarshaller[s]() or\n" +
"valueMarshaller[s]() methods", e);
"overriding createInstance() and copy() (if defined), and the extending\n" +
"class shouldn't be inner, because such classes couldn't be Serializable\n" +
"that is a requirement for marshaller classes, or write and configure your\n" +
"own marshaller for " + tClass + " type from scratch, and configure for the\n" +
"Chronicle Map via keyMarshaller[s]() or valueMarshaller[s]() methods", e);
}
}
}
@@ -2638,16 +2638,10 @@ public class CHMUseCasesTest {
@Test
public void testBytesMarshallable2() throws IOException {
BytesMarshallableReader<Data> dataReader = new BytesMarshallableReader<Data>(Data.class) {
@Override
protected Data createInstance() {
return new Data();
}
};
ChronicleMapBuilder<Data, Data> builder = ChronicleMapBuilder
.of(Data.class, Data.class)
.keyReaderAndDataAccess(dataReader, new DataDataAccess())
.valueReaderAndDataAccess(dataReader, new DataDataAccess())
.keyReaderAndDataAccess(new DataReader(), new DataDataAccess())
.valueReaderAndDataAccess(new DataReader(), new DataDataAccess())
.actualChunkSize(64)
.entries(1000);
try (ChronicleMap<Data, Data> map = newInstance(builder)) {
@@ -2680,6 +2674,17 @@ public class CHMUseCasesTest {
return new DataDataAccess();
}
}
private static class DataReader extends BytesMarshallableReader<Data> {
public DataReader() {
super(Data.class);
}
@Override
protected Data createInstance() {
return new Data();
}
}
}
interface IData extends BytesMarshallable {
@@ -89,13 +89,8 @@ public class ConstantSizeBySampleTest {
public void testUnexpectedlyLongConstantExternalizableValues() throws IOException {
try ( ChronicleMap<Long, ExternalizableData> map =
ChronicleMapBuilder.of(Long.class, ExternalizableData.class)
.valueReaderAndDataAccess(new ExternalizableReader<ExternalizableData>(
ExternalizableData.class) {
@Override
protected ExternalizableData createInstance() {
return new ExternalizableData();
}
}, new ExternalizableDataDataAccess())
.valueReaderAndDataAccess(new ExternalizableDataReader(),
new ExternalizableDataDataAccess())
.constantValueSizeBySample(new ExternalizableData())
.entries(100)
.actualSegments(1)
@@ -134,7 +129,7 @@ public class ConstantSizeBySampleTest {
}
private static class ExternalizableDataDataAccess
extends ExternalizableDataAccess<ExternalizableData> {
extends ExternalizableDataAccess<ExternalizableData> implements Serializable {
public ExternalizableDataDataAccess() {
super(ExternalizableData.class);
}
@@ -149,4 +144,15 @@ public class ConstantSizeBySampleTest {
return new ExternalizableDataDataAccess();
}
}
private static class ExternalizableDataReader extends ExternalizableReader<ExternalizableData> {
public ExternalizableDataReader() {
super(ExternalizableData.class);
}
@Override
protected ExternalizableData createInstance() {
return new ExternalizableData();
}
}
}