diff --git a/src/main/java/org/caosdb/server/entity/Message.java b/src/main/java/org/caosdb/server/entity/Message.java index c65af964c12e60f409b908e3621e78dbc712fff4..bd52fa966d12cd91b1db10b064e60a81d29bc7b8 100644 --- a/src/main/java/org/caosdb/server/entity/Message.java +++ b/src/main/java/org/caosdb/server/entity/Message.java @@ -35,21 +35,23 @@ public class Message extends Exception implements Comparable<Message>, ToElement private final String description; private final String body; - @Deprecated private static final Map<Message, String> legacy_codes_mapping = new HashMap<>(); - - static { - legacy_codes_mapping.put(ServerMessages.ENTITY_HAS_BEEN_DELETED_SUCCESSFULLY, "10"); - legacy_codes_mapping.put(ServerMessages.ATOMICITY_ERROR, "12"); - legacy_codes_mapping.put(ServerMessages.ENTITY_DOES_NOT_EXIST, "101"); - legacy_codes_mapping.put(ServerMessages.PROPERTY_HAS_NO_DATATYPE, "110"); - legacy_codes_mapping.put(ServerMessages.ENTITY_HAS_UNQUALIFIED_PROPERTIES, "114"); - legacy_codes_mapping.put(ServerMessages.ENTITY_HAS_UNQUALIFIED_PARENTS, "116"); - legacy_codes_mapping.put(ServerMessages.WARNING_OCCURED, "128"); - legacy_codes_mapping.put(ServerMessages.ENTITY_NAME_IS_NOT_UNIQUE, "152"); - legacy_codes_mapping.put(ServerMessages.REQUIRED_BY_UNQUALIFIED, "192"); - legacy_codes_mapping.put(ServerMessages.REFERENCED_ENTITY_DOES_NOT_EXIST, "235"); - legacy_codes_mapping.put(ServerMessages.AUTHORIZATION_ERROR, "403"); - legacy_codes_mapping.put(ServerMessages.ROLE_DOES_NOT_EXIST, "1104"); + @Deprecated private static final Map<String, String> legacy_codes_mapping = new HashMap<>(); + + static void init() { + legacy_codes_mapping.put( + ServerMessages.ENTITY_HAS_BEEN_DELETED_SUCCESSFULLY.coreToString(), "10"); + legacy_codes_mapping.put(ServerMessages.ATOMICITY_ERROR.coreToString(), "12"); + legacy_codes_mapping.put(ServerMessages.ENTITY_DOES_NOT_EXIST.coreToString(), "101"); + legacy_codes_mapping.put(ServerMessages.PROPERTY_HAS_NO_DATATYPE.coreToString(), "110"); + legacy_codes_mapping.put( + ServerMessages.ENTITY_HAS_UNQUALIFIED_PROPERTIES.coreToString(), "114"); + legacy_codes_mapping.put(ServerMessages.ENTITY_HAS_UNQUALIFIED_PARENTS.coreToString(), "116"); + legacy_codes_mapping.put(ServerMessages.WARNING_OCCURED.coreToString(), "128"); + legacy_codes_mapping.put(ServerMessages.ENTITY_NAME_IS_NOT_UNIQUE.coreToString(), "152"); + legacy_codes_mapping.put(ServerMessages.REQUIRED_BY_UNQUALIFIED.coreToString(), "192"); + legacy_codes_mapping.put(ServerMessages.REFERENCED_ENTITY_DOES_NOT_EXIST.coreToString(), "235"); + legacy_codes_mapping.put(ServerMessages.AUTHORIZATION_ERROR.coreToString(), "403"); + legacy_codes_mapping.put(ServerMessages.ROLE_DOES_NOT_EXIST.coreToString(), "1104"); } private static final long serialVersionUID = 1837110172902899264L; @@ -65,15 +67,18 @@ public class Message extends Exception implements Comparable<Message>, ToElement return toString().hashCode(); } - @Override - public String toString() { - return this.type.toString() - + " (" + private String coreToString() { + return " (" + (this.code != null ? this.code.toString() : "0") + ") - " + (this.description != null ? this.description : ""); } + @Override + public String toString() { + return this.type.toString() + coreToString(); + } + @Override public boolean equals(final Object obj) { return obj.toString().equals(toString()); @@ -137,7 +142,7 @@ public class Message extends Exception implements Comparable<Message>, ToElement } public Message(final String string) { - this.code = null; + this.code = MessageCode.MESSAGE_CODE_UNKNOWN; this.description = string; this.body = null; this.type = MessageType.Info.toString(); @@ -148,10 +153,13 @@ public class Message extends Exception implements Comparable<Message>, ToElement } public Element toElement() { + if (legacy_codes_mapping.isEmpty()) { + init(); + } final Element e = new Element(this.type); if (this.code != null) { - if (legacy_codes_mapping.containsKey(this)) { - e.setAttribute("code", legacy_codes_mapping.get(this)); + if (legacy_codes_mapping.containsKey(this.coreToString())) { + e.setAttribute("code", legacy_codes_mapping.get(this.coreToString())); } else if (this.code == MessageCode.MESSAGE_CODE_UNKNOWN) { e.setAttribute("code", "0"); } else { diff --git a/src/main/java/org/caosdb/server/grpc/GRPCServer.java b/src/main/java/org/caosdb/server/grpc/GRPCServer.java index 51c061fa56671100fbc6ec460476ecc16c5a2ce4..70aeabe0d5dea418f426e406abaecb8d6f0b1979 100644 --- a/src/main/java/org/caosdb/server/grpc/GRPCServer.java +++ b/src/main/java/org/caosdb/server/grpc/GRPCServer.java @@ -64,6 +64,7 @@ public class GRPCServer { private static final Logger logger = LoggerFactory.getLogger(GRPCServer.class.getName()); private final AuthInterceptor authInterceptor = new AuthInterceptor(); + private final LoggingInterceptor loggingInterceptor = new LoggingInterceptor(); /** * Create an ssl context. @@ -115,14 +116,14 @@ public class GRPCServer { final List<ServerServiceDefinition> services = new LinkedList<>(); final GeneralInfoServiceImpl generalInfoService = new GeneralInfoServiceImpl(); - services.add(ServerInterceptors.intercept(generalInfoService, authInterceptor)); + services.add(ServerInterceptors.intercept(generalInfoService, loggingInterceptor, authInterceptor)); final FileTransmissionServiceImpl fileTransmissionService = new FileTransmissionServiceImpl(); - services.add(ServerInterceptors.intercept(fileTransmissionService, authInterceptor)); + services.add(ServerInterceptors.intercept(fileTransmissionService, loggingInterceptor, authInterceptor)); final EntityTransactionServiceImpl entityTransactionService = new EntityTransactionServiceImpl(fileTransmissionService); - services.add(ServerInterceptors.intercept(entityTransactionService, authInterceptor)); + services.add(ServerInterceptors.intercept(entityTransactionService, loggingInterceptor, authInterceptor)); return services; } diff --git a/src/main/java/org/caosdb/server/grpc/LoggingInterceptor.java b/src/main/java/org/caosdb/server/grpc/LoggingInterceptor.java new file mode 100644 index 0000000000000000000000000000000000000000..1eb59bb01445d419536b1fcdb6da80aabaddcc1e --- /dev/null +++ b/src/main/java/org/caosdb/server/grpc/LoggingInterceptor.java @@ -0,0 +1,24 @@ +package org.caosdb.server.grpc; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import io.grpc.Context; +import io.grpc.Contexts; +import io.grpc.Metadata; +import io.grpc.ServerCall; +import io.grpc.ServerCall.Listener; +import io.grpc.ServerCallHandler; +import io.grpc.ServerInterceptor; + +public class LoggingInterceptor implements ServerInterceptor { + + private static final Logger logger = LoggerFactory.getLogger(LoggingInterceptor.class.getName()); + + @Override + public <ReqT, RespT> Listener<ReqT> interceptCall( + ServerCall<ReqT, RespT> call, Metadata headers, ServerCallHandler<ReqT, RespT> next) { + + logger.info(call.getMethodDescriptor().getFullMethodName() + " - " + call.getAttributes()); + return Contexts.interceptCall(Context.current(), call, headers, next); + } +} diff --git a/src/main/java/org/caosdb/server/transaction/FileStorageConsistencyCheck.java b/src/main/java/org/caosdb/server/transaction/FileStorageConsistencyCheck.java index bbd1bbd56c57612f62c427676e2bef692ea6ac5c..e066feb3028eb6dcb9bf645070cadefa9cc45047 100644 --- a/src/main/java/org/caosdb/server/transaction/FileStorageConsistencyCheck.java +++ b/src/main/java/org/caosdb/server/transaction/FileStorageConsistencyCheck.java @@ -214,7 +214,7 @@ public class FileStorageConsistencyCheck extends Thread ret.add( new Message( "Error", - MessageCode.MESSAGE_CODE_FILE_NOT_FOUND, + MessageCode.MESSAGE_CODE_UNKNOWN, r.getKey() + ": File does not exist.")); break; case FileConsistencyCheck.FILE_MODIFIED: