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

WIP: error handling

parent d9afcfd6
No related branches found
No related tags found
2 merge requests!44Release 0.6,!43Merge f-GRPC-main to dev
Pipeline #11116 passed
caosdb-proto @ 4845aa8e
Subproject commit f2588df914386beeeaacca4ea566516d23dc4baa Subproject commit 4845aa8e479b85b50a130530bbc96a0cab4f8688
...@@ -10,6 +10,7 @@ import org.caosdb.api.entity.v1alpha1.ByIdRequest; ...@@ -10,6 +10,7 @@ import org.caosdb.api.entity.v1alpha1.ByIdRequest;
import org.caosdb.api.entity.v1alpha1.Entity; import org.caosdb.api.entity.v1alpha1.Entity;
import org.caosdb.api.entity.v1alpha1.Entity.Builder; import org.caosdb.api.entity.v1alpha1.Entity.Builder;
import org.caosdb.api.entity.v1alpha1.EntityTransactionServiceGrpc.EntityTransactionServiceImplBase; import org.caosdb.api.entity.v1alpha1.EntityTransactionServiceGrpc.EntityTransactionServiceImplBase;
import org.caosdb.api.entity.v1alpha1.MessageCode;
import org.caosdb.api.entity.v1alpha1.Parent; import org.caosdb.api.entity.v1alpha1.Parent;
import org.caosdb.api.entity.v1alpha1.RetrieveRequest; import org.caosdb.api.entity.v1alpha1.RetrieveRequest;
import org.caosdb.api.entity.v1alpha1.RetrieveResponse; import org.caosdb.api.entity.v1alpha1.RetrieveResponse;
...@@ -24,6 +25,7 @@ import org.caosdb.server.entity.container.RetrieveContainer; ...@@ -24,6 +25,7 @@ import org.caosdb.server.entity.container.RetrieveContainer;
import org.caosdb.server.entity.wrapper.Property; import org.caosdb.server.entity.wrapper.Property;
import org.caosdb.server.transaction.Retrieve; import org.caosdb.server.transaction.Retrieve;
import org.caosdb.server.utils.EntityStatus; import org.caosdb.server.utils.EntityStatus;
import org.caosdb.server.utils.ServerMessages;
public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBase { public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBase {
...@@ -92,11 +94,20 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa ...@@ -92,11 +94,20 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
private org.caosdb.api.entity.v1alpha1.Message convert(final Message m) { private org.caosdb.api.entity.v1alpha1.Message convert(final Message m) {
final org.caosdb.api.entity.v1alpha1.Message.Builder builder = final org.caosdb.api.entity.v1alpha1.Message.Builder builder =
org.caosdb.api.entity.v1alpha1.Message.newBuilder(); org.caosdb.api.entity.v1alpha1.Message.newBuilder();
builder.setCode(m.getCode()); final MessageCode code = getMessageCode(m);
builder.setCode(code.getNumber());
builder.setDescription(m.getDescription()); builder.setDescription(m.getDescription());
return builder.build(); return builder.build();
} }
private MessageCode getMessageCode(final Message m) {
// TODO move to Message class.
if (m.equals(ServerMessages.ENTITY_DOES_NOT_EXIST)) {
return MessageCode.MESSAGE_CODE_ENTITY_DOES_NOT_EXIST;
}
throw new UnsupportedOperationException("Unkown message code: " + m.toString());
}
public Version convert(final org.caosdb.server.entity.Version from) { public Version convert(final org.caosdb.server.entity.Version from) {
final org.caosdb.api.entity.v1alpha1.Version.Builder builder = Version.newBuilder(); final org.caosdb.api.entity.v1alpha1.Version.Builder builder = Version.newBuilder();
...@@ -184,16 +195,35 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa ...@@ -184,16 +195,35 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
return Integer.parseInt(request.getId()); return Integer.parseInt(request.getId());
} }
public Entity retrieve(final RetrieveRequest request) throws Exception { public RetrieveResponse retrieve(final RetrieveRequest request) throws Exception {
Entity responseEntity = null;
final org.caosdb.api.entity.v1alpha1.RetrieveResponse.Builder builder =
RetrieveResponse.newBuilder();
final RetrieveContainer container = final RetrieveContainer container =
new RetrieveContainer(SecurityUtils.getSubject(), getTimestamp(), getSRID(), null); new RetrieveContainer(SecurityUtils.getSubject(), getTimestamp(), getSRID(), null);
final RetrieveEntity entity = new RetrieveEntity(getId(request.getById())); try {
container.add(entity); final RetrieveEntity entity = new RetrieveEntity(getId(request.getById()));
container.add(entity);
final Retrieve transaction = new Retrieve(container);
transaction.execute();
responseEntity = convert(transaction.getContainer().get(0));
} catch (final NumberFormatException e) {
// ID wasn't an integer - the server doesn't support string id's yet, so that entity cannot
// exist.
responseEntity = entityDoesNotExist(request.getById().getId());
}
builder.setEntity(responseEntity);
return builder.build();
}
final Retrieve transaction = new Retrieve(container); private Entity entityDoesNotExist(final String id) {
transaction.execute(); return Entity.newBuilder()
return convert(transaction.getContainer().get(0)); .addErrors(convert(ServerMessages.ENTITY_DOES_NOT_EXIST))
.setId(id)
.build();
} }
private String getSRID() { private String getSRID() {
...@@ -208,8 +238,7 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa ...@@ -208,8 +238,7 @@ public class EntityTransactionServiceImpl extends EntityTransactionServiceImplBa
public void retrieve( public void retrieve(
final RetrieveRequest request, final StreamObserver<RetrieveResponse> responseObserver) { final RetrieveRequest request, final StreamObserver<RetrieveResponse> responseObserver) {
try { try {
final Entity entity = retrieve(request); final RetrieveResponse response = retrieve(request);
final RetrieveResponse response = RetrieveResponse.newBuilder().setEntity(entity).build();
responseObserver.onNext(response); responseObserver.onNext(response);
responseObserver.onCompleted(); responseObserver.onCompleted();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment