Skip to content
Snippets Groups Projects
Verified Commit 60af9682 authored by Timm Fitschen's avatar Timm Fitschen
Browse files

FIX: missing file descriptor serialization in GRPC API

parent 72dc4fd1
No related branches found
No related tags found
3 merge requests!58REL: prepare release 0.7.2,!53FIX: missing file descriptor serialization in GRPC API,!45F grpc f acm
Pipeline #18583 passed
...@@ -7,8 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ...@@ -7,8 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
This is an important security update.
### Added ### Added
### Changed ### Changed
...@@ -21,10 +19,10 @@ This is an important security update. ...@@ -21,10 +19,10 @@ This is an important security update.
* Wrong serialization of date time values in the GRPC-API (resulting in * Wrong serialization of date time values in the GRPC-API (resulting in
org.caosdb.server.datatime@12347abcd or similar). org.caosdb.server.datatime@12347abcd or similar).
* Missing serialization of file descriptors in the GRPC-API during retrievals.
### Security ### Security
## [v0.7.1] - 2021-12-13 ## [v0.7.1] - 2021-12-13
(Timm Fitschen) (Timm Fitschen)
......
...@@ -35,6 +35,7 @@ import org.caosdb.api.entity.v1.EntityPermissionRule; ...@@ -35,6 +35,7 @@ import org.caosdb.api.entity.v1.EntityPermissionRule;
import org.caosdb.api.entity.v1.EntityPermissionRuleCapability; import org.caosdb.api.entity.v1.EntityPermissionRuleCapability;
import org.caosdb.api.entity.v1.EntityResponse; import org.caosdb.api.entity.v1.EntityResponse;
import org.caosdb.api.entity.v1.EntityRole; import org.caosdb.api.entity.v1.EntityRole;
import org.caosdb.api.entity.v1.FileDescriptor;
import org.caosdb.api.entity.v1.Importance; import org.caosdb.api.entity.v1.Importance;
import org.caosdb.api.entity.v1.ListDataType; import org.caosdb.api.entity.v1.ListDataType;
import org.caosdb.api.entity.v1.MessageCode; import org.caosdb.api.entity.v1.MessageCode;
...@@ -61,6 +62,7 @@ import org.caosdb.server.datatype.ReferenceValue; ...@@ -61,6 +62,7 @@ import org.caosdb.server.datatype.ReferenceValue;
import org.caosdb.server.datatype.TextDatatype; import org.caosdb.server.datatype.TextDatatype;
import org.caosdb.server.datatype.Value; import org.caosdb.server.datatype.Value;
import org.caosdb.server.entity.EntityInterface; import org.caosdb.server.entity.EntityInterface;
import org.caosdb.server.entity.FileProperties;
import org.caosdb.server.entity.MagicTypes; import org.caosdb.server.entity.MagicTypes;
import org.caosdb.server.entity.Message; import org.caosdb.server.entity.Message;
import org.caosdb.server.entity.Role; import org.caosdb.server.entity.Role;
...@@ -131,6 +133,9 @@ public class CaosDBToGrpcConverters { ...@@ -131,6 +133,9 @@ public class CaosDBToGrpcConverters {
if (from.hasParents()) { if (from.hasParents()) {
entityBuilder.addAllParents(convert(from.getParents())); entityBuilder.addAllParents(convert(from.getParents()));
} }
if (from.hasFileProperties()) {
entityBuilder.setFileDescriptor(convert(from.getFileProperties()));
}
final EntityResponse.Builder responseBuilder = EntityResponse.newBuilder(); final EntityResponse.Builder responseBuilder = EntityResponse.newBuilder();
responseBuilder.setEntity(entityBuilder); responseBuilder.setEntity(entityBuilder);
...@@ -140,6 +145,13 @@ public class CaosDBToGrpcConverters { ...@@ -140,6 +145,13 @@ public class CaosDBToGrpcConverters {
return responseBuilder; return responseBuilder;
} }
private FileDescriptor.Builder convert(FileProperties fileProperties) {
FileDescriptor.Builder result = FileDescriptor.newBuilder();
result.setPath(fileProperties.getPath());
result.setSize(fileProperties.getSize());
return result;
}
private EntityRole convert(final Role role) { private EntityRole convert(final Role role) {
switch (role) { switch (role) {
case RecordType: case RecordType:
......
...@@ -125,7 +125,7 @@ public class GrpcToCaosDBConverters { ...@@ -125,7 +125,7 @@ public class GrpcToCaosDBConverters {
if (from.getParentsCount() > 0) { if (from.getParentsCount() > 0) {
entity.getParents().addAll(convertParents(from.getParentsList())); entity.getParents().addAll(convertParents(from.getParentsList()));
} }
if (from.hasFileDescriptor()) { if (entity.getRole() == Role.File && from.hasFileDescriptor()) {
entity.setFileProperties(convert(from.getFileDescriptor())); entity.setFileProperties(convert(from.getFileDescriptor()));
} }
return entity; return entity;
......
...@@ -6,6 +6,8 @@ import static org.junit.Assert.assertNull; ...@@ -6,6 +6,8 @@ import static org.junit.Assert.assertNull;
import java.util.TimeZone; import java.util.TimeZone;
import org.caosdb.datetime.DateTimeFactory2; import org.caosdb.datetime.DateTimeFactory2;
import org.caosdb.server.datatype.Value; import org.caosdb.server.datatype.Value;
import org.caosdb.server.entity.FileProperties;
import org.caosdb.server.entity.RetrieveEntity;
import org.junit.Test; import org.junit.Test;
public class CaosDBToGrpcConvertersTest { public class CaosDBToGrpcConvertersTest {
...@@ -40,4 +42,15 @@ public class CaosDBToGrpcConvertersTest { ...@@ -40,4 +42,15 @@ public class CaosDBToGrpcConvertersTest {
converters.convertScalarValue(value).toString(), converters.convertScalarValue(value).toString(),
"string_value: \"2022-12-24T16:15:00.999999+0000\"\n"); "string_value: \"2022-12-24T16:15:00.999999+0000\"\n");
} }
@Test
public void testConvertEntity_FileDescriptor() {
RetrieveEntity entity = new RetrieveEntity(null);
CaosDBToGrpcConverters converters = new CaosDBToGrpcConverters(null);
assertEquals(converters.convert(entity).toString(), "entity {\n}\n");
entity.setFileProperties(new FileProperties("checksum1234", "the/path", 1024L));
assertEquals(
converters.convert(entity).toString(),
"entity {\n file_descriptor {\n path: \"the/path\"\n size: 1024\n }\n}\n");
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment