/* * Copyright (C) 2013 eXo Platform SAS. * * This 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.1 of * the License, or (at your option) any later version. * * This software 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 software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.services.jcr.impl.storage.jdbc; import org.exoplatform.services.jcr.JcrAPIBaseTest; import org.exoplatform.services.jcr.config.WorkspaceEntry; import org.exoplatform.services.jcr.core.ManageableRepository; import org.exoplatform.services.jcr.core.WorkspaceContainerFacade; import org.exoplatform.services.jcr.impl.core.PropertyImpl; import org.exoplatform.services.jcr.impl.core.SessionImpl; import org.exoplatform.services.jcr.impl.dataflow.persistent.TestCleanableFileStreamValueData; import org.exoplatform.services.jcr.impl.storage.jdbc.statistics.StatisticsJDBCStorageConnection; import org.exoplatform.services.jcr.storage.WorkspaceStorageConnection; import org.exoplatform.services.jcr.util.TesterConfigurationHelper; import javax.jcr.Node; import javax.jcr.Session; import java.io.ByteArrayInputStream; import java.io.File; /** * @author <a href="mailto:nfilotto@exoplatform.com">Nicolas Filotto</a> * @version $Id$ * */ public class TestWriteOperations extends JcrAPIBaseTest { private TesterConfigurationHelper helper = TesterConfigurationHelper.getInstance(); private ManageableRepository repo; private WorkspaceEntry wsEntry; public void setUp() throws Exception { super.setUp(); WorkspaceContainerFacade wsc = repository.getWorkspaceContainer(repository.getSystemWorkspaceName()); JDBCWorkspaceDataContainer dataContainer = (JDBCWorkspaceDataContainer)wsc.getComponent(JDBCWorkspaceDataContainer.class); JDBCDataContainerConfig.DatabaseStructureType dbStructureType = dataContainer.containerConfig.dbStructureType; repo = helper.createRepository(container, dbStructureType, null); wsEntry = helper.createWorkspaceEntry(dbStructureType, null, null, false, true); helper.addWorkspace(repo, wsEntry); Session s = (SessionImpl)repo.login(credentials, wsEntry.getName()); s.getRootNode().addNode("TestWriteOperations"); s.save(); } public void tearDown() throws Exception { Session s = (SessionImpl)repo.login(credentials, wsEntry.getName()); if (s.getRootNode().hasNode("TestWriteOperations")) { s.getRootNode().getNode("TestWriteOperations").remove(); s.save(); } helper.removeRepository(container, repo.getConfiguration().getName()); super.tearDown(); } public void testCleanupSwapDirectory() throws Exception { Session s = (SessionImpl)repo.login(credentials, wsEntry.getName()); Node testNode = s.getRootNode().getNode("TestWriteOperations"); PropertyImpl property = (PropertyImpl)testNode.setProperty("name", new ByteArrayInputStream("test".getBytes())); testNode.save(); WorkspaceContainerFacade wsc = repo.getWorkspaceContainer(s.getWorkspace().getName()); JDBCWorkspaceDataContainer dataContainer = (JDBCWorkspaceDataContainer)wsc.getComponent(JDBCWorkspaceDataContainer.class); WorkspaceStorageConnection wscon = dataContainer.openConnection(); if (wscon instanceof StatisticsJDBCStorageConnection) { wscon = ((StatisticsJDBCStorageConnection)wscon).getNestedWorkspaceStorageConnection(); } JDBCStorageConnection con = (JDBCStorageConnection) wscon; File file = new File(dataContainer.containerConfig.spoolConfig.tempDirectory, con.getInternalId(property .getInternalIdentifier()) + "0.0"); con.close(); assertTrue(file.exists()); s.logout(); s = null; testNode = null; property = null; TestCleanableFileStreamValueData.assertReleasedFile(file); } }