|
From: <di...@us...> - 2011-01-29 19:26:14
|
Revision: 13690
http://exist.svn.sourceforge.net/exist/?rev=13690&view=rev
Author: dizzzz
Date: 2011-01-29 19:26:08 +0000 (Sat, 29 Jan 2011)
Log Message:
-----------
[ignore] cleanup, repaired testcase
Modified Paths:
--------------
branches/adam/eXist-xq3/src/org/exist/xquery/TryCatchExpression.java
branches/adam/eXist-xq3/src/org/exist/xquery/functions/FunError.java
branches/adam/eXist-xq3/test/src/org/exist/xquery/functions/xquery3/TryCatchTest.java
Modified: branches/adam/eXist-xq3/src/org/exist/xquery/TryCatchExpression.java
===================================================================
--- branches/adam/eXist-xq3/src/org/exist/xquery/TryCatchExpression.java 2011-01-29 18:40:42 UTC (rev 13689)
+++ branches/adam/eXist-xq3/src/org/exist/xquery/TryCatchExpression.java 2011-01-29 19:26:08 UTC (rev 13690)
@@ -23,14 +23,13 @@
import java.util.ArrayList;
import java.util.List;
+
import org.apache.log4j.Logger;
-import org.exist.dom.DocumentSet;
-import org.exist.dom.EmptyNodeSet;
import org.exist.dom.QName;
+
import org.exist.xquery.ErrorCodes.ErrorCode;
import org.exist.xquery.util.ExpressionDumper;
-import org.exist.xquery.value.EmptySequence;
import org.exist.xquery.value.Item;
import org.exist.xquery.value.QNameValue;
import org.exist.xquery.value.Sequence;
Modified: branches/adam/eXist-xq3/src/org/exist/xquery/functions/FunError.java
===================================================================
--- branches/adam/eXist-xq3/src/org/exist/xquery/functions/FunError.java 2011-01-29 18:40:42 UTC (rev 13689)
+++ branches/adam/eXist-xq3/src/org/exist/xquery/functions/FunError.java 2011-01-29 19:26:08 UTC (rev 13690)
@@ -24,15 +24,16 @@
import org.apache.log4j.Logger;
import org.exist.dom.QName;
+
import org.exist.xquery.BasicFunction;
import org.exist.xquery.Cardinality;
import org.exist.xquery.ErrorCodes;
import org.exist.xquery.ErrorCodes.ErrorCode;
-import org.exist.xquery.ErrorCodes.W3CErrorCode;
import org.exist.xquery.Function;
import org.exist.xquery.FunctionSignature;
import org.exist.xquery.XPathException;
import org.exist.xquery.XQueryContext;
+
import org.exist.xquery.value.FunctionParameterSequenceType;
import org.exist.xquery.value.QNameValue;
import org.exist.xquery.value.Sequence;
@@ -40,8 +41,10 @@
import org.exist.xquery.value.Type;
public class FunError extends BasicFunction {
- protected static final Logger logger = Logger.getLogger(FunError.class);
- public final static FunctionSignature signature[] = {
+
+ protected static final Logger logger = Logger.getLogger(FunError.class);
+
+ public final static FunctionSignature signature[] = {
new FunctionSignature(
new QName("error", Function.BUILTIN_FUNCTION_NS),
"Indicates that an irrecoverable error has occurred. The "
@@ -76,39 +79,48 @@
},
new SequenceType(Type.EMPTY, Cardinality.ZERO)),
};
-
- public FunError(XQueryContext context, FunctionSignature signature) {
- super(context, signature);
- }
- public final static ErrorCode DEFAULT_ERROR = ErrorCodes.FOER0000;
+ public FunError(XQueryContext context, FunctionSignature signature) {
+ super(context, signature);
+ }
+ public final static ErrorCode DEFAULT_ERROR = ErrorCodes.FOER0000;
- @Override
- public int returnsType() {
- return Type.EMPTY;
- }
+ @Override
+ public int returnsType() {
+ return Type.EMPTY;
+ }
- @Override
- public Sequence eval(Sequence[] args, Sequence contextSequence) throws XPathException {
- ErrorCode errorCode = DEFAULT_ERROR;
- String errorDesc = "An error has been raised by the query";
- Sequence errorVal = Sequence.EMPTY_SEQUENCE;
- if (args.length > 0) {
- if(args.length > 1) {
- errorDesc = args[1].getStringValue();
- }
+ @Override
+ public Sequence eval(Sequence[] args, Sequence contextSequence) throws XPathException {
- if(!args[0].isEmpty()) {
- QName errorQName = ((QNameValue) args[0].itemAt(0)).getQName();
- errorCode = new ErrorCode(errorQName, errorDesc);
- }
+ // Define default values
+ ErrorCode errorCode = DEFAULT_ERROR;
+ String errorDesc = "An error has been raised by the query";
+ Sequence errorVal = Sequence.EMPTY_SEQUENCE;
- if(args.length == 3) {
- errorVal = args[2];
- }
+ // Enter if one or more parameters are supplied
+ if (args.length > 0) {
+
+ // If there are 2 arguments or more supplied
+ // use 2nd argument for error description
+ if (args.length > 1) {
+ errorDesc = args[1].getStringValue();
}
- logger.error(errorDesc + ": " + errorCode.toString());
- throw new XPathException(this, errorCode, errorDesc, errorVal);
- }
-}
\ No newline at end of file
+ // If first argument is not empty, get qname from argument
+ // and construct error code
+ if (!args[0].isEmpty()) {
+ QName errorQName = ((QNameValue) args[0].itemAt(0)).getQName();
+ errorCode = new ErrorCode(errorQName, errorDesc);
+ }
+
+ // If there is a third argument, us it.
+ if (args.length == 3) {
+ errorVal = args[2];
+ }
+ }
+
+ logger.error(errorDesc + ": " + errorCode.toString());
+ throw new XPathException(this, errorCode, errorDesc, errorVal);
+ }
+}
Modified: branches/adam/eXist-xq3/test/src/org/exist/xquery/functions/xquery3/TryCatchTest.java
===================================================================
--- branches/adam/eXist-xq3/test/src/org/exist/xquery/functions/xquery3/TryCatchTest.java 2011-01-29 18:40:42 UTC (rev 13689)
+++ branches/adam/eXist-xq3/test/src/org/exist/xquery/functions/xquery3/TryCatchTest.java 2011-01-29 19:26:08 UTC (rev 13690)
@@ -158,7 +158,7 @@
}
}
- @Test
+ @Test
public void catchFnError3() {
String query = "try {"
@@ -203,7 +203,7 @@
assertEquals("err:FOER0000", r1);
String r2 = (String) results.getResource(1).getContent();
- assertEquals("TEST", r2);
+ assertEquals("TEST", r2);
} catch (Throwable ex) {
ex.printStackTrace();
@@ -228,7 +228,7 @@
assertEquals("err:FOER0000", r1);
String r2 = (String) results.getResource(1).getContent();
- assertEquals("TEST", r2); //
+ assertEquals("TEST", r2); //
} catch (Throwable ex) {
ex.printStackTrace();
@@ -236,7 +236,7 @@
}
}
- @Test
+ @Test
public void catchFnError1() {
String query = "try {"
@@ -249,7 +249,7 @@
assertEquals(1, results.getSize());
String r1 = (String) results.getResource(0).getContent();
- assertEquals("err:FOER0000", r1);
+ assertEquals("err:FOER0000", r1);
} catch (Throwable ex) {
@@ -280,34 +280,34 @@
}
}
- @Test @Ignore("issue with 3rd parameter")
+ @Test
public void catchFullErrorCode() {
String query = "try { a + 7 } "
+ "catch * ($errcode, $errdesc, $errval) "
- + "{ $errcode, $errdesc, $errval } ";
+ + "{ $errcode, $errdesc, empty($errval) } ";
try {
ResourceSet results = executeQuery(query);
- assertEquals(3, results.getSize());
+ assertEquals(3, results.getSize());
String r1 = (String) results.getResource(0).getContent();
assertEquals(ErrorCodes.XPDY0002.getErrorQName().getStringValue(), r1);
String r2 = (String) results.getResource(1).getContent();
- assertEquals(ErrorCodes.XPDY0002.toString(), r2);
+ assertEquals(ErrorCodes.XPDY0002.getDescription(), r2);
String r3 = (String) results.getResource(2).getContent();
- assertEquals(ErrorCodes.XPDY0002.toString(), r3);
+ assertEquals("true", r3);
} catch (Throwable ex) {
ex.printStackTrace();
- fail(ex.getMessage());
+ fail(ex.getMessage());
}
}
- @Test @Ignore(" <AST>:0:0: unexpected end of subtree") // leace at the <A></A>
+ @Test @Ignore(" <AST>:0:0: unexpected end of subtree") // leave out the <A></A> for fun
public void catchDefinedNamespace() {
String query =
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|