From 52881f3a2787ed3746e3ab013015df6f0b49a081 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Thu, 22 Jul 2021 13:51:46 +0200
Subject: [PATCH] WIP: error handling for single entity retrieve

---
 caosdb-proto                                  |  2 +-
 pom.xml                                       |  2 +-
 .../grpc/EntityTransactionServiceImpl.java    | 29 +++++++++++++++++++
 3 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/caosdb-proto b/caosdb-proto
index 12f07226..3f867687 160000
--- a/caosdb-proto
+++ b/caosdb-proto
@@ -1 +1 @@
-Subproject commit 12f072263c05208464b80c0124bde0396b100d86
+Subproject commit 3f867687cc71e42e964051b35f856abf6b1c8f09
diff --git a/pom.xml b/pom.xml
index 92ae3ce8..0b3121bd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.caosdb</groupId>
   <artifactId>caosdb-server</artifactId>
-  <version>0.5.0-GRPC0.0.5</version>
+  <version>0.5.0-GRPC0.0.6</version>
   <packaging>jar</packaging>
   <name>CaosDB Server</name>
   <scm>
diff --git a/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java b/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java
index 3d7df68a..c45a011d 100644
--- a/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java
+++ b/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java
@@ -2,6 +2,8 @@ package org.caosdb.server.grpc;
 
 import io.grpc.stub.StreamObserver;
 import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
 import java.util.UUID;
 import org.apache.shiro.SecurityUtils;
 import org.caosdb.api.entity.v1alpha1.ByIdRequest;
@@ -14,6 +16,7 @@ import org.caosdb.api.entity.v1alpha1.RetrieveResponse;
 import org.caosdb.api.entity.v1alpha1.Version;
 import org.caosdb.server.entity.EntityInterface;
 import org.caosdb.server.entity.MagicTypes;
+import org.caosdb.server.entity.Message;
 import org.caosdb.server.entity.RetrieveEntity;
 import org.caosdb.server.entity.container.ParentContainer;
 import org.caosdb.server.entity.container.PropertyContainer;
@@ -64,7 +67,33 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
     if (from.hasParents()) {
       builder.addAllParents(convert(from.getParents()));
     }
+    if (from.hasMessage(Message.MessageType.Error.toString())) {
+      builder.addAllErrors(convert(from.getMessages(Message.MessageType.Error.toString())));
+    }
+    if (from.hasMessage(Message.MessageType.Warning.toString())) {
+      builder.addAllErrors(convert(from.getMessages(Message.MessageType.Warning.toString())));
+    }
+    if (from.hasMessage(Message.MessageType.Info.toString())) {
+      builder.addAllErrors(convert(from.getMessages(Message.MessageType.Info.toString())));
+    }
+
+    return builder.build();
+  }
+
+  private Iterable<? extends org.caosdb.api.entity.v1alpha1.Message> convert(
+      final List<Message> messages) {
+    final List<org.caosdb.api.entity.v1alpha1.Message> result = new LinkedList<>();
+    for (final Message m : messages) {
+      result.add(convert(m));
+    }
+    return result;
+  }
 
+  private org.caosdb.api.entity.v1alpha1.Message convert(final Message m) {
+    final org.caosdb.api.entity.v1alpha1.Message.Builder builder =
+        org.caosdb.api.entity.v1alpha1.Message.newBuilder();
+    builder.setCode(m.getCode());
+    builder.setDescription(m.getDescription());
     return builder.build();
   }
 
-- 
GitLab