|
From: <di...@us...> - 2011-01-25 20:45:34
|
Revision: 13638
http://exist.svn.sourceforge.net/exist/?rev=13638&view=rev
Author: dizzzz
Date: 2011-01-25 20:45:27 +0000 (Tue, 25 Jan 2011)
Log Message:
-----------
[ignore] final fixes. one issue (testcase) left. Parser should return qname's in stead of values
Modified Paths:
--------------
branches/adam/eXist-xq3/src/org/exist/xquery/ErrorCodes.java
branches/adam/eXist-xq3/src/org/exist/xquery/TryCatchExpression.java
branches/adam/eXist-xq3/test/src/org/exist/xquery/functions/xquery3/TryCatchTest.java
Modified: branches/adam/eXist-xq3/src/org/exist/xquery/ErrorCodes.java
===================================================================
--- branches/adam/eXist-xq3/src/org/exist/xquery/ErrorCodes.java 2011-01-25 18:41:35 UTC (rev 13637)
+++ branches/adam/eXist-xq3/src/org/exist/xquery/ErrorCodes.java 2011-01-25 20:45:27 UTC (rev 13638)
@@ -211,6 +211,10 @@
public String toString() {
return "(" + errorQName.getNamespaceURI() + "#" + errorQName.getLocalName() + "):" + description;
}
+
+ public String getDescription(){
+ return description;
+ }
}
public static class W3CErrorCode extends ErrorCode {
Modified: branches/adam/eXist-xq3/src/org/exist/xquery/TryCatchExpression.java
===================================================================
--- branches/adam/eXist-xq3/src/org/exist/xquery/TryCatchExpression.java 2011-01-25 18:41:35 UTC (rev 13637)
+++ branches/adam/eXist-xq3/src/org/exist/xquery/TryCatchExpression.java 2011-01-25 20:45:27 UTC (rev 13638)
@@ -26,9 +26,11 @@
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;
@@ -152,6 +154,8 @@
// "(" CatchErrorCode ("," CatchErrorDesc ("," CatchErrorVal)?)? ")"
for (QName catchVar : catchVars) {
+ System.out.println("catchVar="+catchVar);
+
// restet qname and prefec
catchVar.setPrefix(null);
catchVar.setNamespaceURI("");
@@ -165,12 +169,10 @@
var.setSequenceType(new SequenceType(Type.QNAME, Cardinality.EXACTLY_ONE));
QNameValue qnv = new QNameValue(context, catchVar);
var.setValue( new StringValue( errorCode.getErrorQName().getStringValue()) );
- context.declareVariable(catchVar, var);
-
break;
case 2:
var.setSequenceType(new SequenceType(Type.STRING, Cardinality.ZERO_OR_ONE));
- StringValue sv = new StringValue( errorCode.toString() );
+ StringValue sv = new StringValue( errorCode.getDescription() );
var.setValue(sv);
break;
case 3:
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-25 18:41:35 UTC (rev 13637)
+++ branches/adam/eXist-xq3/test/src/org/exist/xquery/functions/xquery3/TryCatchTest.java 2011-01-25 20:45:27 UTC (rev 13638)
@@ -70,14 +70,14 @@
+ "{ $errcode, $errdesc } ";
try {
ResourceSet results = executeQuery(query);
-
+
assertEquals(2, 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);
} catch (Throwable ex) {
ex.printStackTrace();
@@ -122,7 +122,6 @@
} catch (Throwable ex) {
// expected
-
}
}
@@ -164,7 +163,129 @@
}
}
- @Test @Ignore("Third parameter needs to be improved.")
+ @Test //@Ignore("where is the third parameter")
+ public void catchFnError3() {
+
+ String query = "try {"
+ + " fn:error(fn:QName('http://www.w3.org/2005/xqt-errors', 'err:FOER0000'), 'TEST', <ab/>) "
+ + "} catch * ($errcode, $errdesc, $errval) "
+ + "{ $errcode, $errdesc, $errval }";
+ try {
+ ResourceSet results = executeQuery(query);
+
+
+ assertEquals(3, results.getSize()); // Third parameter not there
+
+ String r1 = (String) results.getResource(0).getContent();
+ assertEquals("err:FOER0000", r1);
+
+ String r2 = (String) results.getResource(1).getContent();
+ assertEquals("TEST", r2);
+
+ String r3 = (String) results.getResource(2).getContent();
+ assertEquals("<ab/>", r3);
+
+ } catch (Throwable ex) {
+ ex.printStackTrace();
+ fail(ex.getMessage());
+ }
+ }
+
+ @Test
+ public void catchFnError2() {
+
+ String query = "try {"
+ + " fn:error(fn:QName('http://www.w3.org/2005/xqt-errors', 'err:FOER0000'), 'TEST') "
+ + "} catch * ($errcode, $errdesc) "
+ + "{ $errcode, $errdesc }";
+ try {
+ ResourceSet results = executeQuery(query);
+
+
+ assertEquals(2, results.getSize());
+
+ String r1 = (String) results.getResource(0).getContent();
+ assertEquals("err:FOER0000", r1);
+
+ String r2 = (String) results.getResource(1).getContent();
+ assertEquals("TEST", r2); // <[(http://www.w3.org/2005/xqt-errors#FOER0000):]TEST>
+
+ } catch (Throwable ex) {
+ ex.printStackTrace();
+ fail(ex.getMessage());
+ }
+ }
+
+ @Test
+ public void catchFnError2a() {
+
+ String query = "try {"
+ + " fn:error(fn:QName('http://www.w3.org/2005/xqt-errors', 'err:FOER0000'), 'TEST') "
+ + "} catch * ($errcode, $errdesc, $errval) "
+ + "{ $errcode, $errdesc }";
+ try {
+ ResourceSet results = executeQuery(query);
+
+
+ assertEquals(2, results.getSize());
+
+ String r1 = (String) results.getResource(0).getContent();
+ assertEquals("err:FOER0000", r1);
+
+ String r2 = (String) results.getResource(1).getContent();
+ assertEquals("TEST", r2); // <[(http://www.w3.org/2005/xqt-errors#FOER0000):]TEST>
+
+ } catch (Throwable ex) {
+ ex.printStackTrace();
+ fail(ex.getMessage());
+ }
+ }
+
+ @Test
+ public void catchFnError1() {
+
+ String query = "try {"
+ + " fn:error( fn:QName('http://www.w3.org/2005/xqt-errors', 'err:FOER0000') ) "
+ + "} catch * ($errcode) "
+ + "{ $errcode }";
+ try {
+ ResourceSet results = executeQuery(query);
+
+ assertEquals(1, results.getSize());
+
+ String r1 = (String) results.getResource(0).getContent();
+ assertEquals("err:FOER0000", r1);
+
+
+ } catch (Throwable ex) {
+ ex.printStackTrace();
+ fail(ex.getMessage());
+ }
+ }
+
+ @Test
+ public void catchFnError1a() {
+
+ String query = "try {"
+ + " fn:error( fn:QName('http://www.w3.org/2005/xqt-errors', 'err:FOER0000') ) "
+ + "} catch * ($errcode , $errdescr, $errval) "
+ + "{ $errcode }";
+ try {
+ ResourceSet results = executeQuery(query);
+
+ assertEquals(1, results.getSize());
+
+ String r1 = (String) results.getResource(0).getContent();
+ assertEquals("err:FOER0000", r1);
+
+
+ } catch (Throwable ex) {
+ ex.printStackTrace();
+ fail(ex.getMessage());
+ }
+ }
+
+ @Test @Ignore("issue with 3rd parameter")
public void catchFullErrorCode() {
String query = "try { a + 7 } "
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|