Add an ErrorHandler that throws RiotParseException with all details.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/186ee415
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/186ee415
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/186ee415

Branch: refs/heads/master
Commit: 186ee41500b1946261a8e4cfa83ae972157e2334
Parents: f3a1faa
Author: Andy Seaborne <[email protected]>
Authored: Tue May 30 12:27:48 2017 +0100
Committer: Andy Seaborne <[email protected]>
Committed: Wed May 31 13:16:59 2017 +0100

----------------------------------------------------------------------
 .../jena/riot/system/ErrorHandlerFactory.java   | 132 ++++++++++---------
 1 file changed, 71 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/186ee415/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java 
b/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java
index e65bdac..cc7d4bc 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java
@@ -20,6 +20,7 @@ package org.apache.jena.riot.system;
 
 import static org.apache.jena.riot.SysRIOT.fmtMessage ;
 import org.apache.jena.riot.RiotException ;
+import org.apache.jena.riot.RiotParseException ;
 import org.apache.jena.riot.SysRIOT ;
 import org.slf4j.Logger ;
 
@@ -40,19 +41,36 @@ public class ErrorHandlerFactory
     /** Warning error handler - logs to stdLogger - mesages for warnings and 
some errors */
     static public final ErrorHandler errorHandlerWarn         = 
errorHandlerWarning(stdLogger) ;
     
-    /** Silent error handler */
+    /** Silent error handler : ignores warnings, throws exceptions for errors 
*/ 
     static public final ErrorHandler errorHandlerNoLogging    = 
errorHandlerSimple() ;
 
     /** Silent, strict error handler */
     static public final ErrorHandler errorHandlerStrictNoLogging    = 
errorHandlerStrictSilent() ;
 
+    /** Silent, strict error handler, nologging */
     public static ErrorHandler errorHandlerStrictSilent()           { return 
new ErrorHandlerStrict(null) ; }
+
+    /** Strict error handler, with logging */
     public static ErrorHandler errorHandlerStrict(Logger log)       { return 
new ErrorHandlerStrict(log) ; }
+    
+    /** An error handler that logs messages, then throws exceptions for errors 
but not warnings */ 
     public static ErrorHandler errorHandlerStd(Logger log)          { return 
new ErrorHandlerStd(log) ; }
+    
+    /** An error handler that logs error and fatal messages, but not warnings 
*/ 
     public static ErrorHandler errorHandlerNoWarnings(Logger log)   { return 
new ErrorHandlerNoWarnings(log) ; }
+    
+    /** An error handler that logs messages for errors and warnings and 
attempts to carry on */ 
     public static ErrorHandler errorHandlerWarning(Logger log)      { return 
new ErrorHandlerWarning(log) ; }
+    
+    /** Ignores warnings, throws exceptions for errors */ 
     public static ErrorHandler errorHandlerSimple()                 { return 
new ErrorHandlerSimple() ; }
     
+    /**
+     * An error handler that throws a {@link RiotParseException}, hence it
+     * exposes the details of errors.
+     */
+    public static ErrorHandler errorHandlerDetailed()         { return new 
ErrorHandlerRiotParseException() ; }
+    
     private static ErrorHandler defaultErrorHandler = errorHandlerStd ;
     /** Get the current default error handler */ 
     public static ErrorHandler getDefaultErrorHandler() { return 
defaultErrorHandler ; }
@@ -61,40 +79,34 @@ public class ErrorHandlerFactory
     public static void setDefaultErrorHandler(ErrorHandler errorHandler) { 
defaultErrorHandler = errorHandler ; }
     
     /** Messages to a logger. This is not an ErrorHandler */ 
-    private static class ErrorLogger
-    {
+    private static class ErrorLogger {
         protected final Logger log ;
 
-        public ErrorLogger(Logger log)
-        {
+        public ErrorLogger(Logger log) {
             this.log = log ;
         }
 
         /** report a warning */
-        public void logWarning(String message, long line, long col)
-        {
+        public void logWarning(String message, long line, long col) {
             if ( log != null )
                 log.warn(fmtMessage(message, line, col)) ;
         }
-        
+
         /** report an error */
-        public void logError(String message, long line, long col)
-        {
+        public void logError(String message, long line, long col) {
             if ( log != null )
                 log.error(fmtMessage(message, line, col)) ;
         }
 
-        /** report a catastrophic error */    
-        public void logFatal(String message, long line, long col)
-        { 
+        /** report a catastrophic error */
+        public void logFatal(String message, long line, long col) {
             if ( log != null )
                 logError(message, line, col) ;
         }
     }
     
     /** Ignores warnings, throws exceptions for errors */ 
-    private static class ErrorHandlerSimple implements ErrorHandler
-    {
+    private static class ErrorHandlerSimple implements ErrorHandler {
         @Override
         public void warning(String message, long line, long col)
         {}
@@ -108,10 +120,8 @@ public class ErrorHandlerFactory
     }
     
     /** An error handler that logs message then throws exceptions for errors 
but not warnings */ 
-    private static class ErrorHandlerStd extends ErrorLogger implements 
ErrorHandler
-    {
-        public ErrorHandlerStd(Logger log)
-        {
+    private static class ErrorHandlerStd extends ErrorLogger implements 
ErrorHandler {
+        public ErrorHandlerStd(Logger log) {
             super(log) ;
         }
         
@@ -122,26 +132,22 @@ public class ErrorHandlerFactory
         
         /** report an error */
         @Override
-        public void error(String message, long line, long col)
-        { 
+        public void error(String message, long line, long col) {
             logError(message, line, col) ;
             throw new RiotException(fmtMessage(message, line, col)) ;
         }
 
         /** report a fatal error - does not return */
         @Override
-        public void fatal(String message, long line, long col)
-        {
+        public void fatal(String message, long line, long col) {
             logFatal(message, line, col) ;
             throw new RiotException(fmtMessage(message, line, col)) ;
         }
     }
     
     /** An error handler that logs message then throws exceptions for errors 
but not warnings */ 
-    private static class ErrorHandlerNoWarnings extends ErrorLogger implements 
ErrorHandler
-    {
-        public ErrorHandlerNoWarnings(Logger log)
-        {
+    private static class ErrorHandlerNoWarnings extends ErrorLogger implements 
ErrorHandler {
+        public ErrorHandlerNoWarnings(Logger log) {
             super(log) ;
         }
         
@@ -152,81 +158,71 @@ public class ErrorHandlerFactory
         
         /** report an error */
         @Override
-        public void error(String message, long line, long col)
-        { 
+        public void error(String message, long line, long col) {
             logError(message, line, col) ;
             throw new RiotException(fmtMessage(message, line, col)) ;
         }
 
         /** report a fatal error - does not return */
         @Override
-        public void fatal(String message, long line, long col)
-        {
+        public void fatal(String message, long line, long col) {
             logFatal(message, line, col) ;
             throw new RiotException(fmtMessage(message, line, col)) ;
         }
     }
 
     /** An error handler that logs message for errors and warnings and throw 
exceptions on either */ 
-    private static class ErrorHandlerStrict extends ErrorLogger implements 
ErrorHandler
-    {
-        public ErrorHandlerStrict(Logger log)
-        {
+    private static class ErrorHandlerStrict extends ErrorLogger implements 
ErrorHandler {
+        public ErrorHandlerStrict(Logger log) {
             super(log) ;
         }
-        
-        /** report a warning  - do not carry on */
+
+        /** report a warning - do not carry on */
         @Override
-        public void warning(String message, long line, long col)
-        { 
+        public void warning(String message, long line, long col) {
             logWarning(message, line, col) ;
             throw new RiotException(fmtMessage(message, line, col)) ;
         }
-        
+
         /** report an error - do not carry on */
         @Override
-        public void error(String message, long line, long col)
-        { 
+        public void error(String message, long line, long col) {
             logError(message, line, col) ;
             throw new RiotException(fmtMessage(message, line, col)) ;
         }
 
         @Override
-        public void fatal(String message, long line, long col)
-        {
+        public void fatal(String message, long line, long col) {
             logFatal(message, line, col) ;
             throw new RiotException(fmtMessage(message, line, col)) ;
         }
     }
     
-    /** An error handler that throw exceptions on warnings and errors but does 
not log */ 
-    private static class ErrorHandlerStrictSilent implements ErrorHandler
-    {
-        /** report a warning  - do not carry on */
+    /**
+     * An error handler that throw exceptions on warnings and errors but does
+     * not log
+     */
+    private static class ErrorHandlerStrictSilent implements ErrorHandler {
+        /** report a warning - do not carry on */
         @Override
-        public void warning(String message, long line, long col)
-        { 
+        public void warning(String message, long line, long col) {
             throw new RiotException(fmtMessage(message, line, col)) ;
         }
-        
+
         /** report an error - do not carry on */
         @Override
-        public void error(String message, long line, long col)
-        { 
+        public void error(String message, long line, long col) {
             throw new RiotException(fmtMessage(message, line, col)) ;
         }
 
         @Override
-        public void fatal(String message, long line, long col)
-        {
+        public void fatal(String message, long line, long col) {
             throw new RiotException(fmtMessage(message, line, col)) ;
         }
     }
-
     
     /** An error handler that logs messages for errors and warnings and 
attempt to carry on */ 
-    private static class ErrorHandlerWarning extends ErrorLogger implements 
ErrorHandler
-    {
+    private static class ErrorHandlerWarning extends ErrorLogger implements 
ErrorHandler {
         public ErrorHandlerWarning(Logger log)
         { super(log) ; }
         
@@ -240,10 +236,24 @@ public class ErrorHandlerFactory
         { logError(message, line, col) ; }
 
         @Override
-        public void fatal(String message, long line, long col)
-        { 
+        public void fatal(String message, long line, long col) {
             logFatal(message, line, col) ;
-            throw new RiotException(SysRIOT.fmtMessage(message, line, col)) ; 
+            throw new RiotException(SysRIOT.fmtMessage(message, line, col)) ;
+        }
+    }
+    
+    /** An error handler that throws a RiotParseException, hence it exposes 
the details of errors. */ 
+    private static class ErrorHandlerRiotParseException implements 
ErrorHandler {
+        public ErrorHandlerRiotParseException() {}
+        @Override public void warning(String message, long line, long col) { } 
+        
+        @Override public void error(String message, long line, long col) { 
+            throw new RiotParseException(message, line, col);
+        }
+
+        @Override public void fatal(String message, long line, long col) {
+            throw new RiotParseException(message, line, col); 
         }
     }
+
 }

Reply via email to