Added ErrorProcessor when XML returned is invalid - does not contain the record element
This commit is contained in:
parent
50cb62af1e
commit
ee55fd2b99
|
@ -1,18 +0,0 @@
|
|||
package eu.dnetlib.validatorapi.exceptions;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.context.request.WebRequest;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
|
||||
|
||||
@ControllerAdvice
|
||||
public class ExceptionHandler extends ResponseEntityExceptionHandler {
|
||||
|
||||
@ResponseBody
|
||||
@org.springframework.web.bind.annotation.ExceptionHandler(value = {ValidationException.class})
|
||||
protected ResponseEntity<ErrorMessage> handleValidationError(RuntimeException exception, WebRequest request) {
|
||||
return new ResponseEntity(new ErrorMessage(exception.getMessage()), HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package eu.dnetlib.validatorapi.processors;
|
||||
|
||||
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
||||
import org.apache.camel.Exchange;
|
||||
import org.apache.camel.Processor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class ErrorProcessor implements Processor {
|
||||
|
||||
ValidationJob validationJob;
|
||||
|
||||
public ErrorProcessor(ValidationJob validationJob) {
|
||||
this.validationJob = validationJob;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(Exchange exchange) {
|
||||
validationJob.exceptionMessage = "OAI-PMH Response is not valid. XML does not contain <record> element: " +
|
||||
exchange.getIn().getBody(String.class);
|
||||
|
||||
validationJob.progress = "STOPPED";
|
||||
validationJob.endDate = new Date();
|
||||
|
||||
exchange.getIn().setBody(validationJob, ValidationJob.class);
|
||||
}
|
||||
|
||||
}
|
|
@ -6,6 +6,7 @@ import eu.dnetlib.validatorapi.entities.ValidationIssue;
|
|||
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
||||
import eu.dnetlib.validatorapi.entities.ValidationRuleResult;
|
||||
import eu.dnetlib.validatorapi.processors.DataBaseProcessor;
|
||||
import eu.dnetlib.validatorapi.processors.ErrorProcessor;
|
||||
import eu.dnetlib.validatorapi.processors.ExceptionProcessor;
|
||||
import eu.dnetlib.validatorapi.processors.XmlProcessor;
|
||||
import org.apache.camel.Exchange;
|
||||
|
@ -61,34 +62,39 @@ public class FairOaiPmhRoute2 extends RouteBuilder {
|
|||
.end();
|
||||
|
||||
from(oaiEndpoint)
|
||||
.multicast().parallelProcessing()
|
||||
.to("direct:guidelinesProcessor")
|
||||
.to("direct:fairProcessor")
|
||||
.choice()
|
||||
.when(xpath("//*[local-name()='record']"))
|
||||
.multicast().parallelProcessing()
|
||||
.to("direct:guidelinesProcessor")
|
||||
.to("direct:fairProcessor")
|
||||
.endChoice()
|
||||
.otherwise()
|
||||
.process(new ErrorProcessor(validationJob))
|
||||
.to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true")
|
||||
.end();
|
||||
|
||||
from("direct:guidelinesProcessor")
|
||||
.routeId(routeid)
|
||||
.split(xpath("//*[local-name()='record']"))
|
||||
.process(new XmlProcessor(profile, validationJob, maxNumberOfRecords))
|
||||
.choice()
|
||||
.when(simple("${body[results]} && ${header.MyHeader} != 'stop'"))
|
||||
.split(simple("${body[results]}"))
|
||||
.to("jpa:" + ValidationRuleResult.class.getName() + "?usePersist=true")
|
||||
.endChoice()
|
||||
.end()
|
||||
.choice()
|
||||
.when(simple("${body[issues]} && ${header.MyHeader} != 'stop'"))
|
||||
.split(simple("${body[issues]}"))
|
||||
.to("jpa:"+ ValidationIssue.class.getName()+ "?usePersist=true")
|
||||
.endChoice()
|
||||
.end()
|
||||
.choice()
|
||||
.when(header("MyHeader").isEqualTo("stop"))
|
||||
.process(new DataBaseProcessor())
|
||||
.to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true")//;.to("direct:saveToDatabase")
|
||||
.to("controlbus:route?routeId="+routeid+"&action=stop")
|
||||
.endChoice()
|
||||
.end();
|
||||
.process(new XmlProcessor(profile, validationJob, maxNumberOfRecords))
|
||||
.choice()
|
||||
.when(simple("${body[results]} && ${header.MyHeader} != 'stop'"))
|
||||
.split(simple("${body[results]}"))
|
||||
.to("jpa:" + ValidationRuleResult.class.getName() + "?usePersist=true")
|
||||
.endChoice()
|
||||
.end()
|
||||
.choice()
|
||||
.when(simple("${body[issues]} && ${header.MyHeader} != 'stop'"))
|
||||
.split(simple("${body[issues]}"))
|
||||
.to("jpa:"+ ValidationIssue.class.getName()+ "?usePersist=true")
|
||||
.endChoice()
|
||||
.end()
|
||||
.choice()
|
||||
.when(header("MyHeader").isEqualTo("stop"))
|
||||
.process(new DataBaseProcessor())
|
||||
.to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true")//;.to("direct:saveToDatabase")
|
||||
.to("controlbus:route?routeId="+routeid+"&action=stop")
|
||||
.endChoice()
|
||||
.end();
|
||||
|
||||
from("direct:fairProcessor")
|
||||
.routeId(routeid2)
|
||||
|
|
|
@ -5,6 +5,7 @@ import eu.dnetlib.validatorapi.entities.ValidationIssue;
|
|||
import eu.dnetlib.validatorapi.entities.ValidationJob;
|
||||
import eu.dnetlib.validatorapi.entities.ValidationRuleResult;
|
||||
import eu.dnetlib.validatorapi.processors.DataBaseProcessor;
|
||||
import eu.dnetlib.validatorapi.processors.ErrorProcessor;
|
||||
import eu.dnetlib.validatorapi.processors.ExceptionProcessor;
|
||||
import eu.dnetlib.validatorapi.processors.XmlProcessor;
|
||||
import org.apache.camel.Exchange;
|
||||
|
@ -56,16 +57,20 @@ public class SimpleOaiPmhRoute extends RouteBuilder {
|
|||
.handled(true)
|
||||
.end();
|
||||
|
||||
/*
|
||||
.process(new TypeConversionExceptionProcessor(validationJob)).log("\n\n\n\n HERE 2")
|
||||
.process(new DataBaseProcessor())//.maximumRedeliveries(0)
|
||||
.to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true").log("\n\n\n\nHEREEEEEE")
|
||||
.stop();
|
||||
*/
|
||||
from(oaiEndpoint)
|
||||
.routeId(routeid)
|
||||
.choice()
|
||||
.when(xpath("//*[local-name()='record']"))
|
||||
.multicast().parallelProcessing()
|
||||
.to("direct:oaipmhProcessor")
|
||||
.endChoice()
|
||||
.otherwise()
|
||||
.process(new ErrorProcessor(validationJob))
|
||||
.to("jpa:" + ValidationJob.class.getName() + "?useExecuteUpdate=true")
|
||||
.end();
|
||||
|
||||
from("direct:oaiPmhProcessor")
|
||||
.split(xpath("//*[local-name()='record']"))
|
||||
.doTry()
|
||||
.process(new XmlProcessor(profile, validationJob, maxNumberOfRecords))
|
||||
.choice()
|
||||
.when(simple("${body[results]} && ${header.MyHeader} != 'stop'"))
|
||||
|
|
Loading…
Reference in New Issue