Commit 71087ac6 authored by Nicola Fulvio Calabria's avatar Nicola Fulvio Calabria
Browse files

Refactoring for error detail endpoint development

parent 84f6c57e
Loading
Loading
Loading
Loading
+15 −5
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ import net.ivoa.xml.uws.v1.ExecutionPhase;
import net.ivoa.xml.uws.v1.JobSummary;
import net.ivoa.xml.vospace.v2.Protocol;
import net.ivoa.xml.vospace.v2.Transfer;
import net.ivoa.xml.uws.v1.ErrorSummaryFactory;
import it.inaf.oats.vospace.exception.ErrorSummaryFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import it.inaf.oats.vospace.exception.VoSpaceErrorSummarizableException;
@@ -67,7 +67,12 @@ public class JobService {

        } catch (VoSpaceErrorSummarizableException e) {
            job.setPhase(ExecutionPhase.ERROR);
            job.setErrorSummary(ErrorSummaryFactory.newErrorSummary(e.getFault()));
            job.setErrorSummary(ErrorSummaryFactory.newErrorSummary(e));
            jobDAO.updateJob(job);
        } catch (Exception e) {
            job.setPhase(ExecutionPhase.ERROR);
            job.setErrorSummary(ErrorSummaryFactory.newErrorSummary(
                    new InternalFaultException(e)));
            jobDAO.updateJob(job);
        }
    }
@@ -115,7 +120,12 @@ public class JobService {
        } catch (VoSpaceErrorSummarizableException e) {
            job.setPhase(ExecutionPhase.ERROR);
            uriService.getTransfer(job).getProtocols().clear();
            job.setErrorSummary(ErrorSummaryFactory.newErrorSummary(e.getFault()));
            job.setErrorSummary(ErrorSummaryFactory.newErrorSummary(e));
        } catch (Exception e) {
            job.setPhase(ExecutionPhase.ERROR);
            uriService.getTransfer(job).getProtocols().clear();
            job.setErrorSummary(ErrorSummaryFactory.newErrorSummary(
                    new InternalFaultException(e)));          
        } finally {
            jobDAO.createJob(job);
        }
+2 −3
Original line number Diff line number Diff line
package it.inaf.oats.vospace.exception;

import net.ivoa.xml.uws.v1.ErrorSummaryFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

@@ -8,7 +7,7 @@ import org.springframework.web.bind.annotation.ResponseStatus;
public class ContainerNotFoundException extends VoSpaceErrorSummarizableException {

    public ContainerNotFoundException(String path) {
        super("Container Not Found at path: " + path, 
                ErrorSummaryFactory.VOSpaceFault.NODE_NOT_FOUND);
        super("Path: " + path, 
                VOSpaceFaultEnum.NODE_NOT_FOUND);
    }
}
+2 −3
Original line number Diff line number Diff line
package it.inaf.oats.vospace.exception;

import net.ivoa.xml.uws.v1.ErrorSummaryFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

@@ -8,7 +7,7 @@ import org.springframework.web.bind.annotation.ResponseStatus;
public class DuplicateNodeException extends VoSpaceErrorSummarizableException {

    public DuplicateNodeException(String path) {
        super("Duplicate Node at path: " + path,
                ErrorSummaryFactory.VOSpaceFault.DUPLICATE_NODE);
        super("Path: " + path,
                VOSpaceFaultEnum.DUPLICATE_NODE);
    }
}
+32 −0
Original line number Diff line number Diff line
package it.inaf.oats.vospace.exception;

import net.ivoa.xml.uws.v1.ErrorSummary;

public class ErrorSummaryFactory {    

    public static ErrorSummary newErrorSummary(VOSpaceFaultEnum error, String detailMessage) {
        ErrorSummary result = new ErrorSummary();
        result.setMessage(error.getFaultRepresentation());
        result.setType(error.getType());

        if (detailMessage == null || detailMessage.isBlank()) {
            result.setHasDetail(false);
        } else {
            result.setHasDetail(true);
            result.setDetailMessage(error.getFaultCaptionForDetails()
                    + ". "
                    + detailMessage);
        }

        return result;
    }

    public static ErrorSummary newErrorSummary(VOSpaceFaultEnum error) {
        return newErrorSummary(error, null);
    }
    
    public static ErrorSummary newErrorSummary(VoSpaceErrorSummarizableException e)
    {
        return newErrorSummary(e.getFault(), e.getDetailMessage());
    }
}
+4 −5
Original line number Diff line number Diff line
package it.inaf.oats.vospace.exception;

import net.ivoa.xml.uws.v1.ErrorSummaryFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
@@ -12,13 +11,13 @@ public class InternalFaultException extends VoSpaceErrorSummarizableException {
    private static final Logger LOG = LoggerFactory.getLogger(InternalFaultException.class);

    public InternalFaultException(String msg) {
        super("InternalFaultException: " + msg,
                ErrorSummaryFactory.VOSpaceFault.INTERNAL_FAULT);
        super("Description: " + msg,
                VOSpaceFaultEnum.INTERNAL_FAULT);
    }

    public InternalFaultException(Throwable cause) {
        super("InternalFaultException: " + getMessage(cause),
                ErrorSummaryFactory.VOSpaceFault.INTERNAL_FAULT);
        super("Description: " + getMessage(cause),
                VOSpaceFaultEnum.INTERNAL_FAULT);
    }

    private static String getMessage(Throwable cause) {
Loading