diff --git a/src/main/java/net/ivoa/xml/uws/v1/ErrorSummaryFactory.java b/src/main/java/net/ivoa/xml/uws/v1/ErrorSummaryFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..6851e32f1cc8a59a5785f73d19e82857e436906d --- /dev/null +++ b/src/main/java/net/ivoa/xml/uws/v1/ErrorSummaryFactory.java @@ -0,0 +1,58 @@ +package net.ivoa.xml.uws.v1; + +public class ErrorSummaryFactory { + + public static ErrorSummary newErrorSummary(VOSpaceFault error) + { + ErrorSummary result = new ErrorSummary(); + result.setMessage(error.getFaultRepresentation()); + result.setType(error.getType()); + // Set to false since /error endpoint is not supported yet + result.setHasDetail(false); + return result; + } + + // NFC: ErrorType usage is not covered in documentation, as far as I can see + // these are tentative default values. + public enum VOSpaceFault { + // pushto + OPERATION_NOT_SUPPORTED("OperationNotSupported", ErrorType.FATAL), + INTERNAL_FAULT("InternalFault", ErrorType.TRANSIENT), + PERMISSION_DENIED("PermissionDenied", ErrorType.FATAL), + VIEW_NOT_SUPPORTED("ViewNotSupported", ErrorType.FATAL), + PROTOCOL_NOT_SUPPORTED("ProtocolNotSupported", ErrorType.FATAL), + INVALID_ARGUMENT("InvalidArgument", ErrorType.FATAL), + NODE_BUSY("NodeBusy", ErrorType.TRANSIENT), + // additional for pullto + INVALID_URI("InvalidURI", ErrorType.FATAL), + INVALID_DATA("InvalidData", ErrorType.FATAL), + // additional for pullfrom + NODE_NOT_FOUND("NodeNotFound", ErrorType.FATAL), + // additional for pushfrom + TRANSFER_FAILED("TransferFailed", ErrorType.FATAL), + // additional for movenode/copynode + DUPLICATE_NODE("DuplicateNode", ErrorType.FATAL); + + + private final String faultRepresentation; + private final ErrorType type; + + private VOSpaceFault(String faultRepresentation, ErrorType type) + { + this.faultRepresentation = faultRepresentation; + this.type = type; + } + + public String getFaultRepresentation() + { + return this.faultRepresentation; + } + + public ErrorType getType() + { + return this.type; + } + + } + +}