Merge branch 'ecarm002/exceptions'
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryExpressionRuntimeProvider.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryExpressionRuntimeProvider.java
index 1246141..04d15e7 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryExpressionRuntimeProvider.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/algebricks/VXQueryExpressionRuntimeProvider.java
@@ -53,7 +53,8 @@
             IOperatorSchema[] inputSchemas, JobGenContext context) throws AlgebricksException {
         switch (expr.getExpressionTag()) {
             case CONSTANT:
-                IAlgebricksConstantValue constantValue = (IAlgebricksConstantValue) ((ConstantExpression) expr).getValue();
+                IAlgebricksConstantValue constantValue = (IAlgebricksConstantValue) ((ConstantExpression) expr)
+                        .getValue();
                 if (constantValue.isFalse()) {
                     IPointable p = (BooleanPointable) BooleanPointable.FACTORY.createPointable();
                     XDMConstants.setFalse(p);
@@ -81,12 +82,7 @@
 
                 IScalarEvaluatorFactory[] argFactories = createArgumentEvaluatorFactories(env, inputSchemas, context,
                         fcExpr.getArguments());
-
-                try {
-                    return fn.createScalarEvaluatorFactory(argFactories);
-                } catch (SystemException e) {
-                    throw new AlgebricksException(e);
-                }
+                return fn.createScalarEvaluatorFactory(argFactories);
         }
         throw new UnsupportedOperationException("Cannot create runtime for " + expr.getExpressionTag());
     }
@@ -110,11 +106,7 @@
 
         IScalarEvaluatorFactory[] argFactories = createArgumentEvaluatorFactories(env, inputSchemas, context,
                 expr.getArguments());
-        try {
-            return fn.createAggregateEvaluatorFactory(argFactories);
-        } catch (SystemException e) {
-            throw new AlgebricksException(e);
-        }
+        return fn.createAggregateEvaluatorFactory(argFactories);
     }
 
     @Override
@@ -139,10 +131,6 @@
 
         IScalarEvaluatorFactory[] argFactories = createArgumentEvaluatorFactories(env, inputSchemas, context,
                 expr.getArguments());
-        try {
-            return fn.createUnnestingEvaluatorFactory(argFactories);
-        } catch (SystemException e) {
-            throw new AlgebricksException(e);
-        }
+        return fn.createUnnestingEvaluatorFactory(argFactories);
     }
 }
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/exceptions/SystemException.java b/vxquery-core/src/main/java/org/apache/vxquery/exceptions/SystemException.java
index 39b12b9..fccbc55 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/exceptions/SystemException.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/exceptions/SystemException.java
@@ -19,23 +19,13 @@
 import java.text.MessageFormat;
 import java.util.Arrays;
 
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.vxquery.util.SourceLocation;
 
-public class SystemException extends Exception {
+public class SystemException extends AlgebricksException {
     private static final long serialVersionUID = 1L;
 
-    private ErrorCode code;
-
-    private static String message(ErrorCode code, SourceLocation loc) {
-        String description = code.getDescription();
-        return code + ": " + (loc == null ? "" : loc + " ") + (description != null ? description : "");
-    }
-
-    private static String message(ErrorCode code, SourceLocation loc, Object... params) {
-        String description = code.getDescription();
-        return code + ": " + (loc == null ? "" : loc + " ")
-                + (description != null ? MessageFormat.format(description, params) : Arrays.deepToString(params));
-    }
+    private final ErrorCode code;
 
     public SystemException(ErrorCode code) {
         super(message(code, null));
@@ -65,4 +55,16 @@
     public ErrorCode getCode() {
         return code;
     }
+
+    private static String message(ErrorCode code, SourceLocation loc) {
+        String description = code.getDescription();
+        return code + ": " + (loc == null ? "" : loc + " ") + (description != null ? description : "");
+    }
+
+    private static String message(ErrorCode code, SourceLocation loc, Object... params) {
+        String description = code.getDescription();
+        return code + ": " + (loc == null ? "" : loc + " ")
+                + (description != null ? MessageFormat.format(description, params) : Arrays.deepToString(params));
+    }
+
 }
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/base/AbstractTaggedValueArgumentAggregateEvaluator.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/base/AbstractTaggedValueArgumentAggregateEvaluator.java
index 965e110..895294a 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/base/AbstractTaggedValueArgumentAggregateEvaluator.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/base/AbstractTaggedValueArgumentAggregateEvaluator.java
@@ -46,11 +46,7 @@
         for (int i = 0; i < args.length; ++i) {
             args[i].evaluate(tuple, tvps[i]);
         }
-        try {
-            step(tvps);
-        } catch (SystemException e) {
-            throw new AlgebricksException(e);
-        }
+        step(tvps);
     }
 
     protected abstract void step(TaggedValuePointable[] args) throws SystemException;
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/base/AbstractTaggedValueArgumentScalarEvaluator.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/base/AbstractTaggedValueArgumentScalarEvaluator.java
index e0229c2..d7770b0 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/base/AbstractTaggedValueArgumentScalarEvaluator.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/base/AbstractTaggedValueArgumentScalarEvaluator.java
@@ -30,7 +30,7 @@
     private final IScalarEvaluator[] args;
 
     private final TaggedValuePointable[] tvps;
-    
+
     protected final PointablePool ppool = PointablePoolFactory.INSTANCE.createPointablePool();
 
     public AbstractTaggedValueArgumentScalarEvaluator(IScalarEvaluator[] args) {
@@ -46,11 +46,7 @@
         for (int i = 0; i < args.length; ++i) {
             args[i].evaluate(tuple, tvps[i]);
         }
-        try {
-            evaluate(tvps, result);
-        } catch (SystemException e) {
-            throw new AlgebricksException(e);
-        }
+        evaluate(tvps, result);
     }
 
     protected abstract void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException;
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/base/AbstractTaggedValueArgumentUnnestingEvaluator.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/base/AbstractTaggedValueArgumentUnnestingEvaluator.java
index 4aa30d7..3db1a0e 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/base/AbstractTaggedValueArgumentUnnestingEvaluator.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/base/AbstractTaggedValueArgumentUnnestingEvaluator.java
@@ -46,11 +46,7 @@
         for (int i = 0; i < args.length; ++i) {
             args[i].evaluate(tuple, tvps[i]);
         }
-        try {
-            init(tvps);
-        } catch (SystemException e) {
-            throw new AlgebricksException(e);
-        }
+        init(tvps);
     }
 
     protected abstract void init(TaggedValuePointable[] args) throws SystemException;
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
index 8a044ea..fcc35ef 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/query/XMLQueryCompiler.java
@@ -62,8 +62,6 @@
 import org.apache.vxquery.compiler.algebricks.prettyprint.VXQueryLogicalExpressionPrettyPrintVisitor;
 import org.apache.vxquery.compiler.rewriter.RewriteRuleset;
 import org.apache.vxquery.compiler.rewriter.VXQueryOptimizationContext;
-import org.apache.vxquery.exceptions.ErrorCode;
-import org.apache.vxquery.exceptions.SystemException;
 import org.apache.vxquery.metadata.VXQueryMetadataProvider;
 import org.apache.vxquery.runtime.provider.VXQueryBinaryHashFunctionFactoryProvider;
 import org.apache.vxquery.runtime.provider.VXQueryBinaryHashFunctionFamilyProvider;
@@ -217,7 +215,7 @@
     }
 
     public void compile(String name, Reader query, CompilerControlBlock ccb, int optimizationLevel)
-            throws SystemException {
+            throws AlgebricksException {
         moduleNode = XMLQueryParser.parse(name, query);
         listener.notifyParseResult(moduleNode);
         module = new XMLQueryTranslator(ccb).translateModule(moduleNode);
@@ -229,19 +227,11 @@
         listener.notifyTranslationResult(module);
         XMLQueryTypeChecker.typeCheckModule(module);
         listener.notifyTypecheckResult(module);
-        try {
-            compiler.optimize();
-        } catch (AlgebricksException e) {
-            throw new SystemException(ErrorCode.SYSE0001, e);
-        }
+        compiler.optimize();
         listener.notifyOptimizedResult(module);
         JobSpecification jobSpec;
-        try {
-            jobSpec = compiler.createJob(null, null);
-            jobSpec.setFrameSize(frameSize);
-        } catch (AlgebricksException e) {
-            throw new SystemException(ErrorCode.SYSE0001, e);
-        }
+        jobSpec = compiler.createJob(null, null);
+        jobSpec.setFrameSize(frameSize);
         module.setHyracksJobSpecification(jobSpec);
         listener.notifyCodegenResult(module);
     }
@@ -255,7 +245,7 @@
     }
 
     private static List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> buildDefaultLogicalRewrites() {
-        List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> defaultLogicalRewrites = new ArrayList<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>>();
+        List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> defaultLogicalRewrites = new ArrayList<>();
         SequentialFixpointRuleController seqCtrlNoDfs = new SequentialFixpointRuleController(false);
         SequentialFixpointRuleController seqCtrlFullDfs = new SequentialFixpointRuleController(true);
         SequentialOnceRuleController seqOnceCtrl = new SequentialOnceRuleController(true);