CacheableWorkspaceDataManager extends WorkspacePersistentDataManager implements Suspendable, Startable,
   WorkspaceStorageCacheListener { @Override public List<PropertyData> getChildPropertiesData(NodeData nodeData) throws RepositoryException { List<PropertyData> childs = getChildPropertiesData(nodeData, false); for (PropertyData prop : childs) { fixPropertyValues(prop); } return childs; } CacheableWorkspaceDataManager(WorkspaceEntry wsConfig, WorkspaceDataContainer dataContainer,
      WorkspaceStorageCache cache, SystemDataContainerHolder systemDataContainerHolder,
      TransactionableResourceManager txResourceManager, TransactionService transactionService, RPCService rpcService);  CacheableWorkspaceDataManager(WorkspaceEntry wsConfig, WorkspaceDataContainer dataContainer,
      WorkspaceStorageCache cache, SystemDataContainerHolder systemDataContainerHolder,
      TransactionableResourceManager txResourceManager, TransactionService transactionService);  CacheableWorkspaceDataManager(WorkspaceEntry wsConfig, WorkspaceDataContainer dataContainer,
      WorkspaceStorageCache cache, SystemDataContainerHolder systemDataContainerHolder,
      TransactionableResourceManager txResourceManager, RPCService rpcService);  CacheableWorkspaceDataManager(WorkspaceEntry wsConfig, WorkspaceDataContainer dataContainer,
      WorkspaceStorageCache cache, SystemDataContainerHolder systemDataContainerHolder,
      TransactionableResourceManager txResourceManager);  CacheableWorkspaceDataManager(WorkspaceEntry wsConfig, WorkspaceDataContainer dataContainer,
      WorkspaceStorageCache cache, SystemDataContainerHolder systemDataContainerHolder); WorkspaceStorageCache getCache(); @Override int getChildNodesCount(final NodeData parent); @Override List<NodeData> getChildNodesData(NodeData nodeData); boolean getChildNodesDataByPage(final NodeData nodeData, final int fromOrderNum, final int offset, final int pageSize,
      final List<NodeData> childs); @Override List<NodeData> getChildNodesData(NodeData parentData, List<QPathEntryFilter> patternFilters); @Override List<PropertyData> getChildPropertiesData(NodeData nodeData); @Override List<PropertyData> getChildPropertiesData(NodeData nodeData, List<QPathEntryFilter> itemDataFilters); @Override ItemData getItemData(final NodeData parentData, final QPathEntry name, final ItemType itemType); ItemData getItemData(final NodeData parentData, final QPathEntry name, final ItemType itemType,
      final boolean createNullItemData); boolean hasItemData(final NodeData parentData, final QPathEntry name, final ItemType itemType); @Override ItemData getItemData(String identifier); @Override List<PropertyData> getReferencesData(String identifier, boolean skipVersionStorage); int getLastOrderNumber(final NodeData nodeData); @Override List<PropertyData> listChildPropertiesData(NodeData nodeData); void save(final ItemStateChangesLog changesLog); void suspend(); void resume(); boolean isSuspended(); List<ACLHolder> getACLHolders(); @Managed @ManagedDescription("Reloads the bloom filters used to efficiently manage the ACLs") boolean reloadFilters(); void start(); void stop(); void onCacheEntryAdded(ItemData data); void onCacheEntryUpdated(ItemData data); int getPriority();  }
@Test @PerfTest(invocations = TOTAL_THREADS, threads = TOTAL_THREADS) public void testGetChildPropertiesData() throws Exception { if (step.compareAndSet(0, 1)) { nodeData = new PersistedNodeData("getChildPropertiesData", null, null, 0, 1, null, null, null); } assertEquals(0, con.getChildPropertiesDataCalls.get()); startSignal.await(); for (int i = 0; i < TIMES; i++) { List<PropertyData> properties = cwdm.getChildPropertiesData(nodeData); assertNotNull(properties); assertFalse(properties.isEmpty()); } assertEquals(1, con.getChildPropertiesDataCalls.get()); startSignal.await(); for (int i = 0; i < TIMES; i++) { List<PropertyData> properties = cwdm.getChildPropertiesData(nodeData, true); assertNotNull(properties); assertFalse(properties.isEmpty()); } startSignal.await(); assertEquals(1 + TOTAL_TIMES, con.getChildPropertiesDataCalls.get()); }