Custom EDI Parser snap output view not recognised by mapper snap

we developed a custom snap to parse EDI 835 data on Java. puzzle is how to map Java object on mapper snap. when we add a mapper snap next to EDI parser, Input schema on mapper is blank. But when I add a copy snap in between EDI Parser custom snap and mapper, am able to see the input schema in mapper.

Did you ever figure out the issue?
Bumping up if not since there were no comments yet.

I helped out on this one. Yes, I believe the root cause was successfully identified.

A custom object was being used directly as the Document data and hence this behavior was experienced.

To ensure compatibility, an instance of SnapLogic’s Jackson ObjectMapper can be injected and then used to create a JSON-compatible version of your custom object:

@Inject
private ObjectMapper mapper;

Instead of:

outputViews.write(documentUtility.newDocument(edi835Message));

do this:

outputViews.write(documentUtility.newDocument(mapper.convertValue(edi835Messsage, Map.class));

This ensures that the Document written to the output view contains a Map, which the Mapper will then be able to introspect and display in its input schema.

Thank you for helping us out…

Thanks @dmiller and @robin for this! I was having a similar issue with some of my custom snaps.

@robin what do you import at the top? Right now I’m importing from: org.codehaus.jackson.map.ObjectMapper

Thanks!
Andrew

import com.fasterxml.jackson.databind.ObjectMapper;

The org.codehaus.jackson-package version is from an older version of Jackson. The com.fasterxml.jackson-package version is the right one. See https://stackoverflow.com/a/30782762/277133 for more.

The implementation that is injected is SnapObjectMapper, which extends com.fasterxml.jackson.databind.ObjectMapper. It enables some Jackson serialization features by default, as well as some custom serializers for Dates/Times/DateTimes.

1 Like