package org.exist.xquery; import org.exist.storage.DBBroker; 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.CollectionManagementService; import org.xmldb.api.modules.XMLResource; import org.xmldb.api.modules.XQueryService; import junit.framework.TestCase; public class NamespaceUpdateTest extends TestCase { private final static String URI = "xmldb:exist://" + DBBroker.ROOT_COLLECTION; private final static String namespaces = "<test xmlns='http://www.foo.com'>" + "<section>" + "<title>Test Document</title>" + "<c:comment xmlns:c='http://www.other.com'>This is my comment</c:comment>" + "</section>" + "</test>"; private Collection testCollection; public void testUpdateAttribute() { try { XQueryService service = (XQueryService) testCollection.getService("XQueryService", "1.0"); String query = "declare namespace t='http://www.foo.com';\n" + "<test xmlns='http://www.foo.com'>\n" + "{\n" + " update insert attribute { 'ID' } { 'myid' } into /t:test\n" + "}\n" + "</test>"; service.query(query); query = "declare namespace t='http://www.foo.com';\n" + "/t:test/@ID"; ResourceSet result = service.query(query); assertEquals(1, result.getSize()); assertEquals("myid", result.getResource(0).getContent().toString()); } catch (Exception e) { fail(e.getMessage()); } } protected void setUp() { try { // initialize driver Class cl = Class.forName("org.exist.xmldb.DatabaseImpl"); Database database = (Database) cl.newInstance(); database.setProperty("create-database", "true"); DatabaseManager.registerDatabase(database); Collection root = DatabaseManager.getCollection( URI, "admin", null); CollectionManagementService service = (CollectionManagementService) root.getService( "CollectionManagementService", "1.0"); testCollection = service.createCollection("test"); assertNotNull(testCollection); XMLResource doc = (XMLResource) root.createResource("namespace-updates.xml", "XMLResource"); doc.setContent(namespaces); testCollection.storeResource(doc); } catch (ClassNotFoundException e) { } catch (InstantiationException e) { } catch (IllegalAccessException e) { } catch (XMLDBException e) { e.printStackTrace(); } } public static void main(String[] args) { junit.textui.TestRunner.run(NamespaceUpdateTest.class); } }