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
Branches
Tags
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
## [Unreleased]
This is an important security update.
### Added
### Changed
......@@ -21,10 +19,10 @@ This is an important security update.
* Wrong serialization of date time values in the GRPC-API (resulting in
org.caosdb.server.datatime@12347abcd or similar).
* Missing serialization of file descriptors in the GRPC-API during retrievals.
### Security
## [v0.7.1] - 2021-12-13
(Timm Fitschen)
......
......@@ -35,6 +35,7 @@ import org.caosdb.api.entity.v1.EntityPermissionRule;
import org.caosdb.api.entity.v1.EntityPermissionRuleCapability;
import org.caosdb.api.entity.v1.EntityResponse;
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.ListDataType;
import org.caosdb.api.entity.v1.MessageCode;
......@@ -61,6 +62,7 @@ import org.caosdb.server.datatype.ReferenceValue;
import org.caosdb.server.datatype.TextDatatype;
import org.caosdb.server.datatype.Value;
import org.caosdb.server.entity.EntityInterface;
import org.caosdb.server.entity.FileProperties;
import org.caosdb.server.entity.MagicTypes;
import org.caosdb.server.entity.Message;
import org.caosdb.server.entity.Role;
......@@ -131,6 +133,9 @@ public class CaosDBToGrpcConverters {
if (from.hasParents()) {
entityBuilder.addAllParents(convert(from.getParents()));
}
if (from.hasFileProperties()) {
entityBuilder.setFileDescriptor(convert(from.getFileProperties()));
}
final EntityResponse.Builder responseBuilder = EntityResponse.newBuilder();
responseBuilder.setEntity(entityBuilder);
......@@ -140,6 +145,13 @@ public class CaosDBToGrpcConverters {
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) {
switch (role) {
case RecordType:
......
......@@ -125,7 +125,7 @@ public class GrpcToCaosDBConverters {
if (from.getParentsCount() > 0) {
entity.getParents().addAll(convertParents(from.getParentsList()));
}
if (from.hasFileDescriptor()) {
if (entity.getRole() == Role.File && from.hasFileDescriptor()) {
entity.setFileProperties(convert(from.getFileDescriptor()));
}
return entity;
......
......@@ -6,6 +6,8 @@ import static org.junit.Assert.assertNull;
import java.util.TimeZone;
import org.caosdb.datetime.DateTimeFactory2;
import org.caosdb.server.datatype.Value;
import org.caosdb.server.entity.FileProperties;
import org.caosdb.server.entity.RetrieveEntity;
import org.junit.Test;
public class CaosDBToGrpcConvertersTest {
......@@ -40,4 +42,15 @@ public class CaosDBToGrpcConvertersTest {
converters.convertScalarValue(value).toString(),
"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