NullPointerException with a blob key [stratio-deep version 0.2.9]
Closed this issue · 1 comments
ernestobv commented
Hello,
I'm using stratio-deep version 0.2.9.
I'm doing some tests to check how Stratio works, one of them has the column key defined as blob type. When I run the test the following NullPointerException is thrown:
Exception in thread "main" java.lang.NullPointerException
at com.stratio.deep.entity.CellValidator.<init>(CellValidator.java:292)
at com.stratio.deep.entity.CellValidator.cellValidator(CellValidator.java:212)
at com.stratio.deep.entity.Cell.getValueType(Cell.java:158)
at com.stratio.deep.entity.Cell.<init>(Cell.java:192)
at com.stratio.deep.entity.Cell.create(Cell.java:134)
at com.stratio.deep.config.GenericDeepJobConfig.initColumnDefinitionMap(GenericDeepJobConfig.java:299)
at com.stratio.deep.config.GenericDeepJobConfig.columnDefinitions(GenericDeepJobConfig.java:286)
at com.stratio.deep.config.GenericDeepJobConfig.initialize(GenericDeepJobConfig.java:449)
at com.stratio.examples.JavaExample.main(JavaExample.java:79)
To resolve the problem I have added in the class com.stratio.deep.utils.AnnotationUtils the corresponding entry in the Maps MAP_JAVA_TYPE_TO_ABSTRACT_TYPE, MAP_ABSTRACT_TYPE_CLASSNAME_TO_JAVA_TYPE and MAP_ABSTRACT_TYPE_CLASS_TO_ABSTRACT_TYPE.
public static final Map<Class, AbstractType<?>> MAP_JAVA_TYPE_TO_ABSTRACT_TYPE =
ImmutableMap.<Class, AbstractType<?>>builder()
.put(String.class, UTF8Type.instance)
.put(Integer.class, Int32Type.instance)
.put(Boolean.class, BooleanType.instance)
.put(Date.class, TimestampType.instance)
.put(BigDecimal.class, DecimalType.instance)
.put(Long.class, LongType.instance)
.put(Double.class, DoubleType.instance)
.put(Float.class, FloatType.instance)
.put(InetAddress.class, InetAddressType.instance)
.put(Inet4Address.class, InetAddressType.instance)
.put(Inet6Address.class, InetAddressType.instance)
.put(BigInteger.class, IntegerType.instance)
.put(UUID.class, UUIDType.instance)
// Begin Resolve NullPointerExeception
.put(ByteBuffer.class, BytesType.instance)
// End Resolve NullPointerExeception
.build();
/**
* Static map of associations between a cassandra marshaller fully qualified class name and the corresponding
* Java class.
*/
public static final Map<String, Class> MAP_ABSTRACT_TYPE_CLASSNAME_TO_JAVA_TYPE =
ImmutableMap.<String, Class>builder()
.put(UTF8Type.class.getCanonicalName(), String.class)
.put(Int32Type.class.getCanonicalName(), Integer.class)
.put(BooleanType.class.getCanonicalName(), Boolean.class)
.put(TimestampType.class.getCanonicalName(), Date.class)
.put(DateType.class.getCanonicalName(), Date.class)
.put(DecimalType.class.getCanonicalName(), BigDecimal.class)
.put(LongType.class.getCanonicalName(), Long.class)
.put(DoubleType.class.getCanonicalName(), Double.class)
.put(FloatType.class.getCanonicalName(), Float.class)
.put(InetAddressType.class.getCanonicalName(), InetAddress.class)
.put(IntegerType.class.getCanonicalName(), BigInteger.class)
.put(UUIDType.class.getCanonicalName(), UUID.class)
.put(TimeUUIDType.class.getCanonicalName(), UUID.class)
.put(SetType.class.getCanonicalName(), Set.class)
.put(ListType.class.getCanonicalName(), List.class)
.put(MapType.class.getCanonicalName(), Map.class)
// Begin Resolve NullPointerExeception
.put(BytesType.class.getCanonicalName(), ByteBuffer.class)
// End Resolve NullPointerExeception
.build();
/**
* Static map of associations between cassandra marshaller Class objects and their instance.
*/
public static final Map<Class<?>, AbstractType<?>> MAP_ABSTRACT_TYPE_CLASS_TO_ABSTRACT_TYPE =
ImmutableMap.<Class<?>, AbstractType<?>>builder()
.put(UTF8Type.class, UTF8Type.instance)
.put(Int32Type.class, Int32Type.instance)
.put(BooleanType.class, BooleanType.instance)
.put(TimestampType.class, TimestampType.instance)
.put(DateType.class, DateType.instance)
.put(DecimalType.class, DecimalType.instance)
.put(LongType.class, LongType.instance)
.put(DoubleType.class, DoubleType.instance)
.put(FloatType.class, FloatType.instance)
.put(InetAddressType.class, InetAddressType.instance)
.put(IntegerType.class, IntegerType.instance)
.put(UUIDType.class, UUIDType.instance)
.put(TimeUUIDType.class, TimeUUIDType.instance)
// Begin Resolve NullPointerExeception
.put(BytesType.class, BytesType.instance)
// End Resolve NullPointerExeception
.build();
With these changes, it seems to work fine.
Regards.
lucarosellini commented
Thanks a lot @ernestobv, I totally missed this. I commited your patch to develop. I'll merge it to master as soon as possible.
Luca