diff --git a/src/main/java/org/caosdb/server/entity/Entity.java b/src/main/java/org/caosdb/server/entity/Entity.java index 48367508112c2c3267abd771fa84eb21ea16a534..e1acfbdc1cecf7eeb54f778be01d79ffc9b2cb53 100644 --- a/src/main/java/org/caosdb/server/entity/Entity.java +++ b/src/main/java/org/caosdb/server/entity/Entity.java @@ -609,10 +609,11 @@ public abstract class Entity extends AbstractObservable implements EntityInterfa @Override public void parseValue() throws Message { - if (!this.isParsed) { - this.isParsed = true; - setValue(getDatatype().parseValue(getValue())); + if (this.isParsed) { + return; } + this.isParsed = true; + if (getValue() != null) setValue(getDatatype().parseValue(getValue())); } @Override diff --git a/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java b/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java index 6fef590746bbf2c3ff802baec73385e4b061ec95..b4605c824eab5eb1b3b24990ebf503e8686a284b 100644 --- a/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java +++ b/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java @@ -298,6 +298,8 @@ public class CaosDBToGrpcConverters { } else if (value instanceof GenericValue) { return convertGenericValue((GenericValue) value); + } else if (value == null) { + return ScalarValue.newBuilder().setSpecialValue(SpecialValue.SPECIAL_VALUE_UNSPECIFIED); } return null; } @@ -735,8 +737,9 @@ public class CaosDBToGrpcConverters { result = getSelectedValue(s.getSubselection(), referenced_entity); } else if (v instanceof CollectionValue) { for (Value i : (CollectionValue) v) { - if (i instanceof ReferenceValue) { - EntityInterface referenced_entity = ((ReferenceValue) i).getEntity(); + Value wrapped = ((IndexedSingleValue) i).getWrapped(); + if (wrapped instanceof ReferenceValue) { + EntityInterface referenced_entity = ((ReferenceValue) wrapped).getEntity(); result = getSelectedValue(s.getSubselection(), referenced_entity); results.add(result); } else {