/* * Copyright (C) 2014 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.dataflow.persistent; import org.exoplatform.services.jcr.JcrAPIBaseTest; import org.exoplatform.services.jcr.config.WorkspaceEntry; import org.exoplatform.services.jcr.core.WorkspaceContainerFacade; import org.exoplatform.services.jcr.dataflow.persistent.WorkspaceStorageCache; import org.exoplatform.services.jcr.datamodel.InternalQName; import org.exoplatform.services.jcr.datamodel.ItemData; import org.exoplatform.services.jcr.datamodel.ItemType; import org.exoplatform.services.jcr.datamodel.NodeData; import org.exoplatform.services.jcr.datamodel.PropertyData; import org.exoplatform.services.jcr.datamodel.QPathEntry; import org.exoplatform.services.jcr.impl.Constants; import org.exoplatform.services.jcr.impl.core.NodeImpl; import org.exoplatform.services.jcr.impl.core.itemfilters.PatternQPathEntry; import org.exoplatform.services.jcr.impl.core.itemfilters.PatternQPathEntryFilter; import org.exoplatform.services.jcr.impl.core.itemfilters.QPathEntryFilter; import org.exoplatform.services.jcr.impl.storage.SystemDataContainerHolder; import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer; import org.exoplatform.services.jcr.storage.WorkspaceDataContainer; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.jcr.RepositoryException; /** * Created by The eXo Platform SAS * Author : Aymen Boughzela * aymen.boughzela@exoplatform.com * 15 Avril 2014 */ public class TestUUIDWorkspaceStorageCache extends JcrAPIBaseTest { private CacheableWorkspaceDataManager cwdm; private WorkspaceDataContainer wdc; private NodeImpl testNode; private NodeImpl refNode; @Override public void setUp() throws Exception { super.setUp(); WorkspaceContainerFacade wscf = repository.getWorkspaceContainer(repository.getSystemWorkspaceName()); WorkspaceEntry wconf = (WorkspaceEntry)wscf.getComponent(WorkspaceEntry.class); wdc = (JDBCWorkspaceDataContainer)session.getContainer() .getComponentInstanceOfType(JDBCWorkspaceDataContainer.class); WorkspaceStorageCache wsc = (WorkspaceStorageCache)session.getContainer() .getComponentInstanceOfType(WorkspaceStorageCache.class); this.cwdm = new CacheableWorkspaceDataManager(wconf, wdc, wsc, new SystemDataContainerHolder(wdc)); testNode = (NodeImpl)root.addNode("testNode"); refNode = (NodeImpl)root.addNode("refNode"); String mixReferenceable = session.getNamespacePrefix("http://www.jcp.org/jcr/mix/1.0") + ":referenceable"; testNode.addMixin(mixReferenceable); testNode.addNode("node1"); testNode.addNode("node2"); testNode.addNode("node3"); refNode.setProperty("ref", testNode); session.save(); } @Override public void tearDown() throws Exception { testNode.remove(); refNode.remove(); session.save(); super.tearDown(); wdc = null; cwdm = null; } public void testUUIDGetChildNodesData() throws RepositoryException { NodeData rootData = (NodeData)cwdm.getItemData(testNode.getIdentifier()); List<NodeData> list = cwdm.getChildNodesData(rootData); checkNodeUUID(list); } public void testUUIDGetChildNodesDataByPage() throws RepositoryException { NodeData rootData = (NodeData)cwdm.getItemData(testNode.getIdentifier()); List<NodeData> childs = new ArrayList<NodeData>(); cwdm.getChildNodesDataByPage(rootData, 0, 1, 10, childs); checkNodeUUID(childs); } public void testUUIDGetChildNodesDataPatternFilters() throws RepositoryException { NodeData rootData = (NodeData)cwdm.getItemData(testNode.getIdentifier()); final List<QPathEntryFilter> nodePatterns = Collections.singletonList((QPathEntryFilter)new PatternQPathEntryFilter(new PatternQPathEntry("", "node"))); List<NodeData> list = cwdm.getChildNodesData(rootData, nodePatterns); checkNodeUUID(list); } public void testUUIDGetChildPropertiesData() throws RepositoryException { NodeData rootData = (NodeData)cwdm.getItemData(testNode.getIdentifier()); List<PropertyData> list = cwdm.getChildPropertiesData(rootData); checkPropertyUUID(list); } public void testUUIDGetChildPropertiesDataPatternFilters() throws RepositoryException { NodeData rootData = (NodeData)cwdm.getItemData(testNode.getIdentifier()); final List<QPathEntryFilter> nodePatterns = Collections.singletonList((QPathEntryFilter)new PatternQPathEntryFilter(new PatternQPathEntry("", "node"))); List<PropertyData> list = cwdm.getChildPropertiesData(rootData, nodePatterns); checkPropertyUUID(list); } public void testUUIDGetItemData() throws Exception { ItemData item = cwdm.getItemData(testNode.getIdentifier()); assertFalse(item.getIdentifier().startsWith(wdc.getName())); } public void testUUIDGetReferencesData() throws RepositoryException { List<PropertyData> list = cwdm.getReferencesData(testNode.getIdentifier(), true); checkPropertyUUID(list); } public void testUUIDListChildPropertiesData() throws RepositoryException { NodeData rootData = (NodeData)cwdm.getItemData(testNode.getIdentifier()); List<PropertyData> list = cwdm.listChildPropertiesData(rootData); checkPropertyUUID(list); } public void testUUIDGetItemData1() throws Exception { NodeData rootData = (NodeData)cwdm.getItemData(Constants.ROOT_UUID); InternalQName nodeName = InternalQName.parse("[]testNode"); ItemData item = cwdm.getItemData(rootData, new QPathEntry(nodeName, 1), ItemType.NODE); assertFalse(item.getIdentifier().startsWith(wdc.getName())); } public void testUUIDGetACLHolders() throws RepositoryException { List<ACLHolder> holders = cwdm.getACLHolders(); for (int i = 0, length = holders.size(); i < length; i++) { assertFalse(holders.get(i).getId().startsWith(wdc.getName())); } } private void checkNodeUUID(List<NodeData> list) { for (NodeData i : list) { assertFalse(i.getIdentifier().startsWith(wdc.getName())); } } private void checkPropertyUUID(List<PropertyData> list) { for (PropertyData i : list) { assertFalse(i.getIdentifier().startsWith(wdc.getName())); } } }