You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by pr...@apache.org on 2014/04/09 00:16:42 UTC

[44/50] [abbrv] git commit: Updated the parser exceptions to give more details.

Updated the parser exceptions to give more details.

* Now the VXQueryCollectionOperatorDescriptor adds the file and node to the exception message.
* Re-architected the exceptions in the XMLParser to help with new exception messages.


Project: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/commit/98f95975
Tree: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/tree/98f95975
Diff: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/diff/98f95975

Branch: refs/heads/master
Commit: 98f95975adee9ab975a76ca15ba20fc89c6c40cf
Parents: 215d9e1
Author: Preston Carman <pr...@apache.org>
Authored: Mon Apr 7 16:11:47 2014 -0700
Committer: Preston Carman <pr...@apache.org>
Committed: Mon Apr 7 16:11:47 2014 -0700

----------------------------------------------------------------------
 .../VXQueryFileNotFoundException.java           | 35 ++++++++++++++++++++
 .../exceptions/VXQueryParseException.java       | 35 ++++++++++++++++++++
 .../VXQueryCollectionOperatorDescriptor.java    | 24 +++++++++++---
 .../runtime/functions/util/FunctionHelper.java  | 30 +++++------------
 .../org/apache/vxquery/xmlparser/XMLParser.java | 27 +++++++++++++--
 5 files changed, 122 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/98f95975/vxquery-core/src/main/java/org/apache/vxquery/exceptions/VXQueryFileNotFoundException.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/exceptions/VXQueryFileNotFoundException.java b/vxquery-core/src/main/java/org/apache/vxquery/exceptions/VXQueryFileNotFoundException.java
new file mode 100644
index 0000000..27a0a2e
--- /dev/null
+++ b/vxquery-core/src/main/java/org/apache/vxquery/exceptions/VXQueryFileNotFoundException.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.exceptions;
+
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+
+public class VXQueryFileNotFoundException extends HyracksDataException {
+
+    private static final long serialVersionUID = 1L;
+
+    public VXQueryFileNotFoundException() {
+        super();
+    }
+
+    public VXQueryFileNotFoundException(Exception ex) {
+        super(ex);
+    }
+
+    public VXQueryFileNotFoundException(String msg) {
+        super(msg);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/98f95975/vxquery-core/src/main/java/org/apache/vxquery/exceptions/VXQueryParseException.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/exceptions/VXQueryParseException.java b/vxquery-core/src/main/java/org/apache/vxquery/exceptions/VXQueryParseException.java
new file mode 100644
index 0000000..f1b4155
--- /dev/null
+++ b/vxquery-core/src/main/java/org/apache/vxquery/exceptions/VXQueryParseException.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.exceptions;
+
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+
+public class VXQueryParseException extends HyracksDataException {
+
+    private static final long serialVersionUID = 1L;
+
+    public VXQueryParseException() {
+        super();
+    }
+
+    public VXQueryParseException(Exception ex) {
+        super(ex);
+    }
+
+    public VXQueryParseException(String msg) {
+        super(msg);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/98f95975/vxquery-core/src/main/java/org/apache/vxquery/metadata/VXQueryCollectionOperatorDescriptor.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/metadata/VXQueryCollectionOperatorDescriptor.java b/vxquery-core/src/main/java/org/apache/vxquery/metadata/VXQueryCollectionOperatorDescriptor.java
index 5cc2276..54007c8 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/metadata/VXQueryCollectionOperatorDescriptor.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/metadata/VXQueryCollectionOperatorDescriptor.java
@@ -27,8 +27,9 @@ import org.apache.vxquery.datamodel.accessors.PointablePool;
 import org.apache.vxquery.datamodel.accessors.PointablePoolFactory;
 import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
 import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.exceptions.VXQueryFileNotFoundException;
+import org.apache.vxquery.exceptions.VXQueryParseException;
 import org.apache.vxquery.runtime.functions.step.ChildPathStepOperatorDescriptor;
-import org.apache.vxquery.runtime.functions.util.FunctionHelper;
 import org.apache.vxquery.xmlparser.ITreeNodeIdProvider;
 import org.apache.vxquery.xmlparser.TreeNodeIdProvider;
 import org.apache.vxquery.xmlparser.XMLParser;
@@ -121,9 +122,24 @@ public class VXQueryCollectionOperatorDescriptor extends AbstractSingleActivityO
                 // Now add new field.
                 abvsFileNode.reset();
                 try {
-                    FunctionHelper.readInDocFromString(file, in, abvsFileNode, parser);
-                } catch (Exception e) {
-                    throw new HyracksDataException(e);
+                    parser.parseFile(file, in, abvsFileNode);
+                } catch (VXQueryFileNotFoundException e) {
+                    String message = "The file (" + nodeId + ":" + file.getAbsolutePath() + ") can not be found.";
+                    HyracksDataException hde = new HyracksDataException(message, e.getCause());
+                    hde.setNodeId(nodeId);
+                    throw hde;
+                } catch (VXQueryParseException e) {
+                    String message = "The file (" + nodeId + ":" + file.getAbsolutePath()
+                            + ") throw a SAXException durring parsing.";
+                    HyracksDataException hde = new HyracksDataException(message, e.getCause());
+                    hde.setNodeId(nodeId);
+                    throw hde;
+                } catch (HyracksDataException e) {
+                    String message = "The file (" + nodeId + ":" + file.getAbsolutePath()
+                            + ") throw the following error during parsing: " + e.getMessage();
+                    HyracksDataException hde = new HyracksDataException(message, e.getCause());
+                    hde.setNodeId(nodeId);
+                    throw hde;
                 }
 
                 TaggedValuePointable tvp = ppool.takeOne(TaggedValuePointable.class);

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/98f95975/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/FunctionHelper.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/FunctionHelper.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/FunctionHelper.java
index a7d7186..d732145 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/FunctionHelper.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/util/FunctionHelper.java
@@ -19,13 +19,9 @@ package org.apache.vxquery.runtime.functions.util;
 import java.io.DataInputStream;
 import java.io.DataOutput;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
-import java.util.zip.GZIPInputStream;
 
 import org.apache.vxquery.context.DynamicContext;
 import org.apache.vxquery.datamodel.accessors.SequencePointable;
@@ -60,6 +56,7 @@ import org.apache.vxquery.types.BuiltinTypeRegistry;
 import org.apache.vxquery.xmlparser.XMLParser;
 import org.xml.sax.InputSource;
 
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
 import edu.uci.ics.hyracks.data.std.api.IPointable;
 import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
 import edu.uci.ics.hyracks.data.std.primitive.BytePointable;
@@ -1237,26 +1234,15 @@ public class FunctionHelper {
     }
 
     public static void readInDocFromPointable(UTF8StringPointable stringp, InputSource in, ByteBufferInputStream bbis,
-            DataInputStream di, ArrayBackedValueStorage abvs, XMLParser parser) throws SystemException {
-        String fName = getStringFromPointable(stringp, bbis, di);
-        File file = new File(fName);
-        readInDocFromString(file, in, abvs, parser);
-    }
-
-    public static void readInDocFromString(File file, InputSource in, ArrayBackedValueStorage abvs, XMLParser parser)
-            throws SystemException {
+            DataInputStream di, ArrayBackedValueStorage abvs, XMLParser parser) throws HyracksDataException {
+        String fName;
         try {
-            if (file.getName().toLowerCase().endsWith(".xml.gz")) {
-                in.setCharacterStream(new InputStreamReader(new GZIPInputStream(new FileInputStream(file))));
-            } else {
-                in.setCharacterStream(new InputStreamReader(new FileInputStream(file)));
-            }
-            parser.parseInputSource(in, abvs);
-        } catch (FileNotFoundException e) {
-            throw new RuntimeException("The file (" + file.getName() + ") does not exist.");
-        } catch (IOException e) {
-            throw new SystemException(ErrorCode.SYSE0001, e);
+            fName = getStringFromPointable(stringp, bbis, di);
+        } catch (SystemException e) {
+            throw new HyracksDataException(e);
         }
+        File file = new File(fName);
+        parser.parseFile(file, in, abvs);
     }
 
     public static boolean transformThenCompareMinMaxTaggedValues(AbstractValueComparisonOperation aOp,

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/98f95975/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java
index d73dd12..125557b 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java
@@ -14,7 +14,17 @@
  */
 package org.apache.vxquery.xmlparser;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.zip.GZIPInputStream;
+
+import org.apache.vxquery.exceptions.VXQueryFileNotFoundException;
+import org.apache.vxquery.exceptions.VXQueryParseException;
 import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 import org.xml.sax.helpers.XMLReaderFactory;
 
@@ -36,12 +46,23 @@ public class XMLParser {
         }
     }
 
-    public void parseInputSource(InputSource in, ArrayBackedValueStorage abvs) throws HyracksDataException {
+
+    public void parseFile(File file, InputSource in, ArrayBackedValueStorage abvs) throws HyracksDataException {
         try {
+            if (file.getName().toLowerCase().endsWith(".xml.gz")) {
+                in.setCharacterStream(new InputStreamReader(new GZIPInputStream(new FileInputStream(file))));
+            } else {
+                in.setCharacterStream(new InputStreamReader(new FileInputStream(file)));
+            }
             parser.parse(in);
             handler.write(abvs);
-        } catch (Exception e) {
-            throw new HyracksDataException(e.toString());
+        } catch (FileNotFoundException e) {
+            throw new VXQueryFileNotFoundException(e);
+        } catch (SAXException e) {
+            throw new VXQueryParseException(e);
+        } catch (IOException e) {
+            throw new HyracksDataException(e);
         }
     }
+
 }
\ No newline at end of file