properties = Collections.singletonMap(ContentModel.PROP_NAME, (Serializable) getName());
+ NodeRef parentRef = nodeService.createNode(
+ rootNodeRef,
+ ASSOC_TYPE_QNAME_TEST_CHILDREN,
+ QName.createQName("parent_child"),
+ ContentModel.TYPE_CONTAINER).getChildRef();
+ ChildAssociationRef pathARef = nodeService.createNode(
+ parentRef,
+ ASSOC_TYPE_QNAME_TEST_CHILDREN,
+ QName.createQName("pathA"),
+ ContentModel.TYPE_CONTENT,
+ properties);
+ ChildAssociationRef pathBRef = nodeService.createNode(
+ parentRef,
+ ASSOC_TYPE_QNAME_TEST_CHILDREN,
+ QName.createQName("pathB"),
+ ContentModel.TYPE_CONTENT,
+ properties);
+ }
+
/**
* Checks that the unique constraint doesn't break delete and create within the same
* transaction.
diff --git a/source/java/org/alfresco/repo/node/FFCLoadsOfFiles.java b/source/java/org/alfresco/repo/node/FFCLoadsOfFiles.java
new file mode 100644
index 0000000000..197a8f82c0
--- /dev/null
+++ b/source/java/org/alfresco/repo/node/FFCLoadsOfFiles.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2005-2008 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU 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 General Public License for more details.
+
+ * You should have received a copy of the GNU 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.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.node;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.alfresco.error.AlfrescoRuntimeException;
+import org.alfresco.model.ContentModel;
+import org.alfresco.repo.content.MimetypeMap;
+import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
+import org.alfresco.service.ServiceRegistry;
+import org.alfresco.service.cmr.repository.ChildAssociationRef;
+import org.alfresco.service.cmr.repository.ContentService;
+import org.alfresco.service.cmr.repository.ContentWriter;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.NodeService;
+import org.alfresco.service.cmr.repository.StoreRef;
+import org.alfresco.service.cmr.search.SearchService;
+import org.alfresco.service.cmr.security.AuthenticationService;
+import org.alfresco.service.namespace.NamespaceService;
+import org.alfresco.service.namespace.QName;
+import org.alfresco.service.transaction.TransactionService;
+import org.alfresco.util.ApplicationContextHelper;
+import org.springframework.context.ApplicationContext;
+
+/**
+ * Perform document loads and fetches of child associations in increasing numbers.
+ *
+ * {@link https://issues.alfresco.com/jira/browse/ETWOTWO-744}
+ *
+ * @author Derek Hulley
+ * @author CACEIS
+ * @since 2.2SP2
+ */
+public class FFCLoadsOfFiles
+{
+ private static int totalNumDocs = 6000;
+ private static int docsPerTx = 2000;
+ private static int currentDoc = 0;
+
+ public static void main(String[] args)
+ {
+
+ // initialise app content
+ ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
+ // get registry of services
+ final ServiceRegistry serviceRegistry = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY);
+
+ // authenticate
+ AuthenticationService authenticationService = serviceRegistry.getAuthenticationService();
+ authenticationService.authenticate("admin", "admin".toCharArray());
+
+
+ // use TransactionWork to wrap service calls in a user transaction
+ TransactionService transactionService = serviceRegistry.getTransactionService();
+ RetryingTransactionCallback