/*
* eXist Open Source Native XML Database
* Copyright (C) 2001-2011 The eXist-db Project
* http://exist-db.org
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* $Id$
*/
package org.exist.xmldb;
import org.exist.TestUtils;
import org.exist.test.ExistXmldbEmbeddedServer;
import org.junit.After;
import org.junit.Before;
import org.junit.ClassRule;
import org.xmldb.api.base.Collection;
import org.xmldb.api.base.XMLDBException;
import org.xmldb.api.base.Resource;
import org.xmldb.api.modules.CollectionManagementService;
import org.xmldb.api.modules.BinaryResource;
import org.xmldb.api.modules.XMLResource;
import java.nio.file.Path;
import org.junit.Test;
import static org.junit.Assert.assertNotNull;
public class BinaryResourceUpdateTest {
@ClassRule
public static final ExistXmldbEmbeddedServer existEmbeddedServer = new ExistXmldbEmbeddedServer(false, true);
private final static String TEST_COLLECTION = "testBinaryResource";
private Collection testCollection;
private static final int REPEAT = 10;
private static final Path binFile;
private static final Path xmlFile;
static {
binFile = TestUtils.getEXistHome().get().resolve("LICENSE");
xmlFile = TestUtils.resolveSample("examples.xml");
}
@Test
public void updateBinary() throws XMLDBException {
for (int i = 0; i < REPEAT; i++) {
BinaryResource binaryResource = (BinaryResource)testCollection.createResource("test1.xml", "BinaryResource");
binaryResource.setContent(binFile.toFile());
testCollection.storeResource(binaryResource);
Resource resource = testCollection.getResource("test1.xml");
assertNotNull(resource);
XMLResource xmlResource = (XMLResource) testCollection.createResource("test2.xml", "XMLResource");
xmlResource.setContent(xmlFile.toFile());
testCollection.storeResource(xmlResource);
resource = testCollection.getResource("test2.xml");
assertNotNull(resource);
}
}
// with same docname test fails for windows
@Test
public void updateBinary_windows() throws XMLDBException {
for (int i = 0; i < REPEAT; i++) {
BinaryResource binaryResource = (BinaryResource)testCollection.createResource("test.xml", "BinaryResource");
binaryResource.setContent(binFile.toFile());
testCollection.storeResource(binaryResource);
Resource resource = testCollection.getResource("test.xml");
assertNotNull(resource);
XMLResource xmlResource = (XMLResource) testCollection.createResource("test.xml", "XMLResource");
xmlResource.setContent(xmlFile.toFile());
testCollection.storeResource(xmlResource);
resource = testCollection.getResource("test.xml");
assertNotNull(resource);
}
}
@Before
public void setUp() throws Exception {
final CollectionManagementService service = (CollectionManagementService) existEmbeddedServer.getRoot().getService("CollectionManagementService", "1.0");
testCollection = service.createCollection(TEST_COLLECTION);
assertNotNull(testCollection);
}
@After
public void tearDown() throws XMLDBException {
//delete the test collection
final CollectionManagementService service = (CollectionManagementService)testCollection.getParentCollection().getService("CollectionManagementService", "1.0");
service.removeCollection(TEST_COLLECTION);
}
}