Skip to content

Commit

Permalink
Improve location of exception in EDIStreamException message
Browse files Browse the repository at this point in the history
  • Loading branch information
MikeEdgar committed May 13, 2020
1 parent 4862d4e commit 0b1f822
Showing 1 changed file with 30 additions and 6 deletions.
36 changes: 30 additions & 6 deletions src/main/java/io/xlate/edi/stream/EDIStreamException.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,34 @@ public EDIStreamException(Throwable cause) {
}

private static String displayLocation(Location location) {
return location.getSegmentPosition() + " : " + location.getElementPosition();
StringBuilder display = new StringBuilder();

display.append("segment ");

if (location.getSegmentTag() != null) {
display.append(location.getSegmentTag());
}

display.append(" at position ");
display.append(String.valueOf(location.getSegmentPosition()));

if (location.getElementPosition() > -1) {
display.append(", element ");
display.append(String.valueOf(location.getElementPosition()));

if (location.getElementOccurrence() > -1) {
display.append("(occurrence ");
display.append(String.valueOf(location.getElementOccurrence()));
display.append(')');
}
}

if (location.getComponentPosition() > -1) {
display.append(", component ");
display.append(String.valueOf(location.getComponentPosition()));
}

return display.toString();
}

/**
Expand All @@ -59,9 +86,7 @@ private static String displayLocation(Location location) {
* a nested error / exception
*/
public EDIStreamException(String message, Location location, Throwable cause) {
super("EDIStreamException at [seg,ele]:[" + displayLocation(location) + "]\n" + "Message: "
+ message,
cause);
super(message + " in " + displayLocation(location), cause);
this.location = location;
}

Expand All @@ -75,8 +100,7 @@ public EDIStreamException(String message, Location location, Throwable cause) {
* the location of the error
*/
public EDIStreamException(String message, Location location) {
super("EDIStreamException at [seg,ele]:[" + displayLocation(location) + "]\n" + "Message: "
+ message);
super(message + " in " + displayLocation(location));
this.location = location;
}

Expand Down

0 comments on commit 0b1f822

Please sign in to comment.