Improved exception management

This commit is contained in:
Luca Frosini 2024-11-08 15:27:35 +01:00
parent 84ebc54546
commit 8154011cc6
1 changed files with 42 additions and 6 deletions

View File

@ -15,6 +15,7 @@ import java.util.Set;
import java.util.UUID; import java.util.UUID;
import javax.ws.rs.ForbiddenException; import javax.ws.rs.ForbiddenException;
import javax.ws.rs.WebApplicationException;
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException; import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
import org.gcube.com.fasterxml.jackson.databind.JsonNode; import org.gcube.com.fasterxml.jackson.databind.JsonNode;
@ -690,6 +691,8 @@ public abstract class ElementManagement<El extends OElement, T extends Type> {
setAsEntryPoint(); setAsEntryPoint();
setOperation(Operation.QUERY); setOperation(Operation.QUERY);
return reallyGetAll(polymorphic); return reallyGetAll(polymorphic);
} catch (WebApplicationException e) {
throw e;
} catch(ResourceRegistryException e) { } catch(ResourceRegistryException e) {
throw e; throw e;
} catch(Exception e) { } catch(Exception e) {
@ -715,8 +718,11 @@ public abstract class ElementManagement<El extends OElement, T extends Type> {
getElement(); getElement();
return true; return true;
} catch (WebApplicationException e) {
logger.error("Unable to find {} with UUID {}", accessType.getName(), uuid, e);
throw e;
} catch(ResourceRegistryException e) { } catch(ResourceRegistryException e) {
logger.error("Unable to find {} with UUID {}", accessType.getName(), uuid); logger.error("Unable to find {} with UUID {}", accessType.getName(), uuid, e);
throw e; throw e;
} catch(Exception e) { } catch(Exception e) {
logger.error("Unable to find {} with UUID {}", accessType.getName(), uuid, e); logger.error("Unable to find {} with UUID {}", accessType.getName(), uuid, e);
@ -766,8 +772,14 @@ public abstract class ElementManagement<El extends OElement, T extends Type> {
return serializeAsJsonNode().toString(); return serializeAsJsonNode().toString();
} catch (WebApplicationException e) {
logger.error("Unable to update {} with UUID {}", accessType.getName(), uuid, e);
if(oDatabaseDocument != null) {
oDatabaseDocument.rollback();
}
throw e;
} catch(ResourceRegistryException e) { } catch(ResourceRegistryException e) {
logger.error("Unable to update {} with UUID {}", accessType.getName(), uuid); logger.error("Unable to update {} with UUID {}", accessType.getName(), uuid, e);
if(oDatabaseDocument != null) { if(oDatabaseDocument != null) {
oDatabaseDocument.rollback(); oDatabaseDocument.rollback();
} }
@ -807,8 +819,14 @@ public abstract class ElementManagement<El extends OElement, T extends Type> {
return serializeAsJsonNode().toString(); return serializeAsJsonNode().toString();
} catch (WebApplicationException e) {
logger.error("Unable to create {}", accessType.getName(), e);
if(oDatabaseDocument != null) {
oDatabaseDocument.rollback();
}
throw e;
} catch(ResourceRegistryException e) { } catch(ResourceRegistryException e) {
logger.error("Unable to create {}", accessType.getName()); logger.error("Unable to create {}", accessType.getName(), e);
if(oDatabaseDocument != null) { if(oDatabaseDocument != null) {
oDatabaseDocument.rollback(); oDatabaseDocument.rollback();
} }
@ -844,8 +862,11 @@ public abstract class ElementManagement<El extends OElement, T extends Type> {
getElement(); getElement();
return serializeAsJsonNode().toString(); return serializeAsJsonNode().toString();
} catch (WebApplicationException e) {
logger.error("Unable to read {} with UUID {}", accessType.getName(), uuid, e);
throw e;
} catch(ResourceRegistryException e) { } catch(ResourceRegistryException e) {
logger.error("Unable to read {} with UUID {}", accessType.getName(), uuid); logger.error("Unable to read {} with UUID {}", accessType.getName(), uuid, e);
throw e; throw e;
} catch(Exception e) { } catch(Exception e) {
logger.error("Unable to read {} with UUID {}", accessType.getName(), uuid, e); logger.error("Unable to read {} with UUID {}", accessType.getName(), uuid, e);
@ -880,8 +901,14 @@ public abstract class ElementManagement<El extends OElement, T extends Type> {
return serializeAsJsonNode().toString(); return serializeAsJsonNode().toString();
} catch (WebApplicationException e) {
logger.error("Unable to update {} with UUID {}", accessType.getName(), uuid, e);
if(oDatabaseDocument != null) {
oDatabaseDocument.rollback();
}
throw e;
} catch(ResourceRegistryException e) { } catch(ResourceRegistryException e) {
logger.error("Unable to update {} with UUID {}", accessType.getName(), uuid); logger.error("Unable to update {} with UUID {}", accessType.getName(), uuid, e);
if(oDatabaseDocument != null) { if(oDatabaseDocument != null) {
oDatabaseDocument.rollback(); oDatabaseDocument.rollback();
} }
@ -922,8 +949,14 @@ public abstract class ElementManagement<El extends OElement, T extends Type> {
}else { }else {
oDatabaseDocument.rollback(); oDatabaseDocument.rollback();
} }
} catch (WebApplicationException e) {
logger.error("Unable to delete {} with UUID {}", accessType.getName(), uuid, e);
if(oDatabaseDocument != null) {
oDatabaseDocument.rollback();
}
throw e;
} catch(ResourceRegistryException e) { } catch(ResourceRegistryException e) {
logger.error("Unable to delete {} with UUID {}", accessType.getName(), uuid); logger.error("Unable to delete {} with UUID {}", accessType.getName(), uuid, e);
if(oDatabaseDocument != null) { if(oDatabaseDocument != null) {
oDatabaseDocument.rollback(); oDatabaseDocument.rollback();
} }
@ -959,6 +992,9 @@ public abstract class ElementManagement<El extends OElement, T extends Type> {
Set<String> contexts = InstanceEnvironment.getContexts(getElement()); Set<String> contexts = InstanceEnvironment.getContexts(getElement());
return contexts; return contexts;
} catch (WebApplicationException e) {
logger.error("Unable to get contexts for {} with UUID {}", typeName, uuid, e);
throw e;
} catch(ResourceRegistryException e) { } catch(ResourceRegistryException e) {
logger.error("Unable to get contexts for {} with UUID {}", typeName, uuid, e); logger.error("Unable to get contexts for {} with UUID {}", typeName, uuid, e);
throw e; throw e;