diff options
Diffstat (limited to 'src/main/java/com/amazon')
-rw-r--r-- | src/main/java/com/amazon/carbonado/raw/CompressedStorableCodecFactory.java | 7 | ||||
-rw-r--r-- | src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java | 12 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/main/java/com/amazon/carbonado/raw/CompressedStorableCodecFactory.java b/src/main/java/com/amazon/carbonado/raw/CompressedStorableCodecFactory.java index 0913102..27d8de4 100644 --- a/src/main/java/com/amazon/carbonado/raw/CompressedStorableCodecFactory.java +++ b/src/main/java/com/amazon/carbonado/raw/CompressedStorableCodecFactory.java @@ -66,9 +66,12 @@ public class CompressedStorableCodecFactory extends GenericStorableCodecFactory { CompressionType compType; if (options == null) { - compType = getCompressionType(type); + // No options means no compression. + compType = CompressionType.NONE; } else { - compType = CompressionType.valueOf(options.getCompressionType()); + String compTypeString = options.getCompressionType(); + compType = compTypeString == null ? CompressionType.NONE + : CompressionType.valueOf(compTypeString); } return new CompressedEncodingStrategy<S>(type, pkIndex, compType); diff --git a/src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java b/src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java index 22f36ea..bc272da 100644 --- a/src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java +++ b/src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java @@ -48,6 +48,7 @@ import com.amazon.carbonado.info.StorableIntrospector; import com.amazon.carbonado.info.StorableProperty;
import com.amazon.carbonado.layout.Layout;
+import com.amazon.carbonado.layout.LayoutOptions;
import com.amazon.carbonado.gen.CodeBuilderUtil;
import com.amazon.carbonado.gen.StorableGenerator;
@@ -745,8 +746,17 @@ public class GenericStorableCodec<S extends Storable> implements StorableCodec<S GenericEncodingStrategy<? extends Storable> altStrategy;
try {
Layout altLayout = mLayout.getGeneration(generation);
+
altStorable = altLayout.reconstruct(mStorableClass.getClassLoader());
- altStrategy = mFactory.createStrategy(altStorable, null, altLayout.getOptions());
+
+ LayoutOptions options = altLayout.getOptions();
+ if (options == null) {
+ // Explictly specify no options, to prevent the factory from
+ // trying to infer what null options means.
+ options = new LayoutOptions();
+ }
+
+ altStrategy = mFactory.createStrategy(altStorable, null, options);
} catch (RepositoryException e) {
throw new CorruptEncodingException(e);
}
|