/* * Created on 17.03.2005 - $Id: XQueryFunctionsTest.java 3080 2006-04-07 22:17:14Z dizzzz $ */ package org.exist.xquery; import org.exist.test.ExistXmldbEmbeddedServer; import org.exist.util.Configuration; import org.exist.xmldb.DatabaseInstanceManager; import org.exist.xmldb.XmldbURI; import org.junit.After; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; import org.xmldb.api.DatabaseManager; import org.xmldb.api.base.Collection; import org.xmldb.api.base.Database; import org.xmldb.api.base.ResourceSet; import org.xmldb.api.base.XMLDBException; import org.xmldb.api.modules.XPathQueryService; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; /** * Tests for various standard XQuery functions * * @author jens */ public class JavaFunctionsTest { @ClassRule public static final ExistXmldbEmbeddedServer existEmbeddedServer = new ExistXmldbEmbeddedServer(false, true); private boolean javabindingenabled = false; /** * Tests simple list functions to make sure java functions are being * called properly */ @Test public void lists() throws XPathException { try { String query = "declare namespace list='java:java.util.ArrayList'; " + "let $list := list:new() " + "let $actions := (list:add($list,'a'),list:add($list,'b'),list:add($list,'c')) " + "return list:get($list,1)"; ResourceSet result = existEmbeddedServer.executeQuery(query); String r = (String) result.getResource(0).getContent(); assertEquals("b", r); } catch (XMLDBException e) { //if exception is a java binding exception and java binding is disabled then this is a success if (e.getMessage().indexOf("Java binding is disabled in the current configuration") > -1 && !javabindingenabled) { return; } e.printStackTrace(); fail(e.getMessage()); } } @Before public void setUp() throws Exception { //Check the configuration file to see if Java binding is enabled //if it is not enabled then we expect an exception when trying to //perform Java binding. Configuration config = new Configuration(); String javabinding = (String) config.getProperty(FunctionFactory.PROPERTY_ENABLE_JAVA_BINDING); if (javabinding != null) { if (javabinding.equals("yes")) { javabindingenabled = true; } } } }