From 7db4b169fafe206fdfad4a5e7222f28d5584fb34 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Thu, 29 Jul 2021 17:04:09 +0200
Subject: [PATCH] WIP: error handling

---
 src/main/java/org/caosdb/server/entity/Message.java    |  8 ++++++--
 .../server/grpc/EntityTransactionServiceImpl.java      | 10 +++++++---
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/main/java/org/caosdb/server/entity/Message.java b/src/main/java/org/caosdb/server/entity/Message.java
index 91720aed..a1d9513f 100644
--- a/src/main/java/org/caosdb/server/entity/Message.java
+++ b/src/main/java/org/caosdb/server/entity/Message.java
@@ -78,7 +78,7 @@ public class Message extends Exception implements Comparable<Message>, ToElement
     this(type, code, null, null);
   }
 
-  public Message(Integer code, String description) {
+  public Message(final Integer code, final String description) {
     this(MessageType.Info, code, description);
   }
 
@@ -95,7 +95,7 @@ public class Message extends Exception implements Comparable<Message>, ToElement
     this(type, code, description, null);
   }
 
-  public Message(MessageType type, String description) {
+  public Message(final MessageType type, final String description) {
     this(type.toString(), 0, description);
   }
 
@@ -160,6 +160,10 @@ public class Message extends Exception implements Comparable<Message>, ToElement
     System.out.println(indent + "+------------------------------------------------------ ");
   }
 
+  public boolean equalsCore(final Message other) {
+    return this.code == other.code && this.description == other.description;
+  }
+
   @Override
   public int compareTo(final Message o) {
     final int tc = this.type.compareToIgnoreCase(o.type);
diff --git a/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java b/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java
index bc26f539..f3e3bd0a 100644
--- a/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java
+++ b/src/main/java/org/caosdb/server/grpc/EntityTransactionServiceImpl.java
@@ -105,12 +105,16 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
 
   private MessageCode getMessageCode(final Message m) {
     // TODO move to Message class.
-    if (m.equals(ServerMessages.ENTITY_DOES_NOT_EXIST)) {
+    if (m.equalsCore(ServerMessages.ENTITY_DOES_NOT_EXIST)) {
       return MessageCode.MESSAGE_CODE_ENTITY_DOES_NOT_EXIST;
-    } else if (m.equals(ServerMessages.ENTITY_HAS_NO_PROPERTIES)) {
+    } else if (m.equalsCore(ServerMessages.ENTITY_HAS_NO_PROPERTIES)) {
       return MessageCode.MESSAGE_CODE_ENTITY_HAS_NO_PROPERTIES;
+    } else if (m.getCode() == 0) {
+      return MessageCode.MESSAGE_CODE_UNSPECIFIED;
+    } else {
+      return MessageCode.MESSAGE_CODE_UNKNOWN;
+      // TODO(tf) throw new UnsupportedOperationException("Unkown message code: " + m.toString());
     }
-    throw new UnsupportedOperationException("Unkown message code: " + m.toString());
   }
 
   public Version convert(final org.caosdb.server.entity.Version from) {
-- 
GitLab