package folioxml.core; import folioxml.folio.FolioToken; import folioxml.slx.SlxToken; import java.io.PrintWriter; import java.io.StringWriter; public class InvalidMarkupException extends Exception { public InvalidMarkupException(String message) { super(message); } public InvalidMarkupException(String message, Object token) { super(message); setToken(token); } @Override public String getMessage() { String s = super.getMessage(); if (token != null && token instanceof SlxToken) { try { s += "\n" + ((SlxToken) token); } catch (Exception e) { StringWriter sw = new StringWriter(); e.printStackTrace(new PrintWriter(sw)); s += "\n[SlxToken.getText() failed: " + e.getMessage() + "\n" + sw.toString() + "]"; } } if (tokenInfo != null) { if (tokenInfo.text != null) s += "\n" + tokenInfo.text; s += "\n" + tokenInfo.toString(); } return s; } protected Object token = null; public TokenInfo tokenInfo = null; public Object getToken() { return token; } public void setToken(Object token) { this.token = token; if (token != null) { if (token instanceof TokenInfo) tokenInfo = (TokenInfo) token; if (token instanceof FolioToken) tokenInfo = ((FolioToken) token).info; if (token instanceof SlxToken && ((SlxToken) token).sourceToken != null) tokenInfo = ((SlxToken) token).sourceToken.info; } } public InvalidMarkupException() { } }