Dear experienced Camel users! Please tell me
*1) What is wrong in my design in general? (I am sure it is not optimal)
2) What is a correct way to use POJOs in an Exchange body?*
My Grails web-application needs to interact to a remote web-service with
some intermediate steps:
-Create request xml
-Validate this xml
-Sign xml with dsig
-Send signed xml to ths web-service
-Validate response signature
-Validate response XML
-Process response
Each step may throw an exception, which must be shown at a page. Like this:
"Error occured at step StepName, error message: Message".
So I guess my preferable pattern is "Request-Reply".
I am trying to assemble a camel route using a set of processors. Each
processor is wrapped in .doTry() like this one.
*from("direct:sendServiceCatalog")
.doTry()
.process(new Processor() {
@Override
public void process(Exchange arg0) throws Exception {
System.out.println("PROCESSING");
throw new RuntimeException("Nice try");
}
})
.to("mock:result")
.doCatch(Exception.class)
.process(
new ExceptionStageDetectorProcessor(
SendServiceCatalogStage.FORM_XML))
.to("mock:catch")
.end();*
ExceptionStageDetectorProcessor.java class is pretty simple:
*public class ExceptionStageDetectorProcessor implements Processor {
public ExceptionStageDetectorProcessor(SendServiceCatalogStage stage) {
this.stage = stage;
}
public SendServiceCatalogStage getStage() {
return stage;
}
private SendServiceCatalogStage stage;
@Override
public void process(Exchange exchange) throws Exception {
Throwable caughtException = (Throwable) exchange
.getProperty(Exchange.EXCEPTION_CAUGHT);
exchange.getOut().setBody(new ProcessError(stage, caughtException));
}
}
*
It almost worked! :)
The problem is that the new body ProcessError cannot be used, when exception
occurs returning object is an error string, not a ProcessError object. If I
try to set a simple string .setBody("FOO") returning object is "FOO"
exactly.
--
View this message in context:
http://camel.465427.n5.nabble.com/Camel-application-design-question-tp5721248.html
Sent from the Camel - Users mailing list archive at Nabble.com.