Skip to content

Commit

Permalink
refs: #10676
Browse files Browse the repository at this point in the history
- basic error handling
  • Loading branch information
cp-ps committed Feb 19, 2021
1 parent 041097c commit 3f76f55
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import de.metas.common.externalreference.JsonExternalReferenceLookupResponse;
import lombok.NonNull;
import org.apache.camel.CamelContext;
import org.apache.camel.LoggingLevel;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.builder.endpoint.StaticEndpointBuilders;
import org.apache.camel.component.jackson.JacksonDataFormat;
Expand All @@ -49,6 +50,10 @@ public class GetAlbertaPatientsRouteBuilder extends RouteBuilder
@Override
public void configure()
{
errorHandler(defaultErrorHandler());
onException(Exception.class)
.to("direct:Error-Route");

//@formatter:off
// this EP's name is matching the JsonExternalSystemRequest's ExternalSystem and Command
from(StaticEndpointBuilders.direct(GET_PATIENTS_ROUTE_ID))
Expand All @@ -63,16 +68,19 @@ public void configure()
.routeId(PROCESS_PATIENT_ROUTE_ID)
.process(new CreateESRQueryProcessor())

.log(LoggingLevel.DEBUG, "Calling metasfresh-api to query ESR records: ${body}")
.to("{{" + ExternalSystemCamelConstants.MF_LOOKUP_EXTERNALREFERENCE_CAMEL_URI + "}}")

.unmarshal(setupJacksonDataFormatFor(getContext(), JsonExternalReferenceLookupResponse.class))
.process(new CreateBPartnerReqProcessor())

.log(LoggingLevel.DEBUG, "Calling metasfresh-api to upsert BPartners: ${body}")
.to("{{" + ExternalSystemCamelConstants.MF_UPSERT_BPARTNER_CAMEL_URI + "}}")

.unmarshal(setupJacksonDataFormatFor(getContext(), JsonResponseBPartnerCompositeUpsert.class))
.process(new CreateBPRelationReqProcessor())

.log(LoggingLevel.DEBUG, "Calling metasfresh-api to upsert BPRelations: ${body}")
.to("{{" + ExternalSystemCamelConstants.MF_UPSERT_BPRELATION_CAMEL_URI + "}}");
//@formatter:on
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ public void configure()
exchange.getIn().setHeader("targetRoute", request.getExternalSystemName().getName() + "-" + request.getCommand());
})
.log("routing request to route ${header.targetRoute}")
.toD("direct:${header.targetRoute}", false);
.toD("direct:${header.targetRoute}", false)
.process(exchange -> exchange.getIn().setBody("OK")); //FIXME with the TODO from line 56
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,56 @@

package de.metas.camel.externalsystems.core.to_mf;

import lombok.NonNull;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.builder.endpoint.StaticEndpointBuilders;
import org.springframework.stereotype.Component;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

@Component
public class ErrorReportRouteBuilder extends RouteBuilder
{
public final String ERROR_ROUTE_ID = "Error-Route";
private final DateTimeFormatter FILE_TIMESTAMP_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd_HHmmssSSS");

@Override
public void configure()
{
from("direct:Error-Route") //FIXME: temporary
.to("file://error_report.txt"); // TODO later: add AD_Issue creating Metasfresh-REST-EP
from(StaticEndpointBuilders.direct(ERROR_ROUTE_ID)) //FIXME: temporary
.routeId(ERROR_ROUTE_ID)
.process(this::prepareErrorFile)
.to("{{metasfresh.error-report.folder}}"); // TODO later: add AD_Issue creating Metasfresh-REST-EP
}

private void prepareErrorFile(@NonNull final Exchange exchange)
{
final StringBuilder content = new StringBuilder();

content.append(" Exchange body when error occurred: ")
.append(exchange.getIn().getBody(String.class))
.append("\n");

final Exception exception = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
if (exception == null)
{
content.append(" No info available!");
}
else
{
final StringWriter sw = new StringWriter();
final PrintWriter pw = new PrintWriter(sw);
exception.printStackTrace(pw);

content.append(" Error Message: ").append(exception.getLocalizedMessage()).append("\n");
content.append(" Error Stacktrace: ").append(sw.toString());
}

exchange.getIn().setBody(content.toString());
exchange.getIn().setHeader(Exchange.FILE_NAME, FILE_TIMESTAMP_FORMATTER.format(ZonedDateTime.now()) + "_error.txt");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,5 @@ metasfresh.create-externalreference.api.uri={{metasfresh.api.baseurl}}/externalR

metasfresh.lookup-externalreference.camel.uri=direct:metasfresh-lookup-externalreference
metasfresh.lookup-externalreference.api.uri={{metasfresh.api.baseurl}}/externalRef

metasfresh.error-report.folder=file://

0 comments on commit 3f76f55

Please sign in to comment.