diff --git a/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeed.xml b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle10gDialect/ActivityFeed.xml similarity index 81% rename from config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeed.xml rename to config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle10gDialect/ActivityFeed.xml index 38ce384699..3ec5c15c21 100644 --- a/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeed.xml +++ b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle10gDialect/ActivityFeed.xml @@ -1,75 +1,75 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - select alf_activity_feed_seq.nextval as value from dual - - - insert into alf_activity_feed (id, activity_type, activity_summary, activity_format, feed_user_id, post_user_id, post_date, post_id, site_network, app_tool, feed_date) - values (#id#, #activityType#, #activitySummary#, #activitySummaryFormat#, #feedUserId#, #postUserId#, #postDate#, #postId#, #siteNetwork#, #appTool#, #feedDate#) - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select alf_activity_feed_seq.nextval as value from dual + + + insert into alf_activity_feed (id, activity_type, activity_summary, activity_format, feed_user_id, post_user_id, post_date, post_id, site_network, app_tool, feed_date) + values (#id#, #activityType#, #activitySummary#, #activitySummaryFormat#, #feedUserId#, #postUserId#, #postDate#, #postId#, #siteNetwork#, #appTool#, #feedDate#) + + + + + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeedControl.xml b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle10gDialect/ActivityFeedControl.xml similarity index 83% rename from config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeedControl.xml rename to config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle10gDialect/ActivityFeedControl.xml index 0b5b118272..b99e1c81a9 100644 --- a/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityFeedControl.xml +++ b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle10gDialect/ActivityFeedControl.xml @@ -1,57 +1,57 @@ - - - - - - - - - - - - - - - - - - - - - - - - select alf_activity_feed_control_seq.nextval as value from dual - - - insert into alf_activity_feed_control (id, feed_user_id, site_network, app_tool, last_modified) - values (#id#, #feedUserId#, #siteNetwork#, #appTool#, #lastModified#) - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + select alf_activity_feed_control_seq.nextval as value from dual + + + insert into alf_activity_feed_control (id, feed_user_id, site_network, app_tool, last_modified) + values (#id#, #feedUserId#, #siteNetwork#, #appTool#, #lastModified#) + + + + + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityPost.xml b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle10gDialect/ActivityPost.xml similarity index 83% rename from config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityPost.xml rename to config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle10gDialect/ActivityPost.xml index 7d90b84254..b6f0d3cb3d 100755 --- a/config/alfresco/activities/org.hibernate.dialect.Oracle9Dialect/ActivityPost.xml +++ b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle10gDialect/ActivityPost.xml @@ -1,114 +1,114 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - select alf_activity_post_seq.nextval as value from dual - - - insert into alf_activity_post (sequence_id, status, activity_data, post_user_id, post_date, activity_type, site_network, app_tool, job_task_node, last_modified) - values (#id#, #status#, #activityData#, #userId#, #postDate#, #activityType#, #siteNetwork#, #appTool#, #jobTaskNode#, #lastModified#) - - - - - - - - - update alf_activity_post set status = #status#, activity_data=#activityData#, site_network=#siteNetwork#, last_modified=#lastModified# - where sequence_id = #id# - and status != #status# - - - - update alf_activity_post set status = #status#, last_modified=#lastModified# - where sequence_id = #id# - and status != #status# - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select alf_activity_post_seq.nextval as value from dual + + + insert into alf_activity_post (sequence_id, status, activity_data, post_user_id, post_date, activity_type, site_network, app_tool, job_task_node, last_modified) + values (#id#, #status#, #activityData#, #userId#, #postDate#, #activityType#, #siteNetwork#, #appTool#, #jobTaskNode#, #lastModified#) + + + + + + + + + update alf_activity_post set status = #status#, activity_data=#activityData#, site_network=#siteNetwork#, last_modified=#lastModified# + where sequence_id = #id# + and status != #status# + + + + update alf_activity_post set status = #status#, last_modified=#lastModified# + where sequence_id = #id# + and status != #status# + + \ No newline at end of file diff --git a/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9iDialect/ActivityFeed.xml b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9iDialect/ActivityFeed.xml new file mode 100644 index 0000000000..c9ecef08ce --- /dev/null +++ b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9iDialect/ActivityFeed.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select alf_activity_feed_seq.nextval as value from dual + + + insert into alf_activity_feed (id, activity_type, activity_summary, activity_format, feed_user_id, post_user_id, post_date, post_id, site_network, app_tool, feed_date) + values (#id#, #activityType#, #activitySummary#, #activitySummaryFormat#, #feedUserId#, #postUserId#, #postDate#, #postId#, #siteNetwork#, #appTool#, #feedDate#) + + + + + + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9iDialect/ActivityFeedControl.xml b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9iDialect/ActivityFeedControl.xml new file mode 100644 index 0000000000..34b4c5dd05 --- /dev/null +++ b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9iDialect/ActivityFeedControl.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + select alf_activity_feed_control_seq.nextval as value from dual + + + insert into alf_activity_feed_control (id, feed_user_id, site_network, app_tool, last_modified) + values (#id#, #feedUserId#, #siteNetwork#, #appTool#, #lastModified#) + + + + + + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9iDialect/ActivityPost.xml b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9iDialect/ActivityPost.xml new file mode 100755 index 0000000000..d7235b7076 --- /dev/null +++ b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9iDialect/ActivityPost.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select alf_activity_post_seq.nextval as value from dual + + + insert into alf_activity_post (sequence_id, status, activity_data, post_user_id, post_date, activity_type, site_network, app_tool, job_task_node, last_modified) + values (#id#, #status#, #activityData#, #userId#, #postDate#, #activityType#, #siteNetwork#, #appTool#, #jobTaskNode#, #lastModified#) + + + + + + + + + update alf_activity_post set status = #status#, activity_data=#activityData#, site_network=#siteNetwork#, last_modified=#lastModified# + where sequence_id = #id# + and status != #status# + + + + update alf_activity_post set status = #status#, last_modified=#lastModified# + where sequence_id = #id# + and status != #status# + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoSQLServerDialect/ActivityFeed.xml b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoSQLServerDialect/ActivityFeed.xml new file mode 100644 index 0000000000..b870b643bf --- /dev/null +++ b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoSQLServerDialect/ActivityFeed.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into alf_activity_feed (activity_type, activity_summary, activity_format, feed_user_id, post_user_id, post_date, post_id, site_network, app_tool, feed_date) + values (#activityType#, #activitySummary#, #activitySummaryFormat#, #feedUserId#, #postUserId#, #postDate#, #postId#, #siteNetwork#, #appTool#, #feedDate#) + + + + select @@identity + + + + + + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoSQLServerDialect/ActivityFeedControl.xml b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoSQLServerDialect/ActivityFeedControl.xml new file mode 100644 index 0000000000..a68ad3d611 --- /dev/null +++ b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoSQLServerDialect/ActivityFeedControl.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + insert into alf_activity_feed_control (feed_user_id, site_network, app_tool, last_modified) + values (#feedUserId#, #siteNetwork#, #appTool#, #lastModified#) + + + + select @@identity + + + + + + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoSQLServerDialect/ActivityPost.xml b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoSQLServerDialect/ActivityPost.xml new file mode 100644 index 0000000000..083a8aef8a --- /dev/null +++ b/config/alfresco/activities/org.alfresco.repo.domain.hibernate.dialect.AlfrescoSQLServerDialect/ActivityPost.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into alf_activity_post (status, activity_data, post_user_id, post_date, activity_type, site_network, app_tool, job_task_node, last_modified) + values (#status#, #activityData#, #userId#, #postDate#, #activityType#, #siteNetwork#, #appTool#, #jobTaskNode#, #lastModified#) + + + select @@identity + + + + + + + + + + update alf_activity_post set status = #status#, activity_data=#activityData#, site_network=#siteNetwork#, last_modified=#lastModified# + where sequence_id = #id# + and status != #status# + + + + update alf_activity_post set status = #status#, last_modified=#lastModified# + where sequence_id = #id# + and status != #status# + + + \ No newline at end of file diff --git a/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityFeed.xml b/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityFeed.xml index b4487043da..7eead0fe56 100644 --- a/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityFeed.xml +++ b/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityFeed.xml @@ -9,16 +9,16 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityPost.xml b/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityPost.xml index 9aad898137..3f4958dc92 100755 --- a/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityPost.xml +++ b/config/alfresco/activities/org.hibernate.dialect.DerbyDialect/ActivityPost.xml @@ -9,16 +9,16 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityFeedControl.xml b/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityFeedControl.xml index e9cc83c4b5..f48b338504 100644 --- a/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityFeedControl.xml +++ b/config/alfresco/activities/org.hibernate.dialect.HSQLDialect/ActivityFeedControl.xml @@ -9,11 +9,11 @@ - - - - - + + + + + diff --git a/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityFeed.xml b/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityFeed.xml index 6648e91761..d17ac046e1 100644 --- a/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityFeed.xml +++ b/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityFeed.xml @@ -9,16 +9,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -40,7 +40,7 @@ - SELECT LAST_INSERT_ID() AS value + select LAST_INSERT_ID() AS value diff --git a/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityPost.xml b/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityPost.xml index b4a99cd4d8..57c3a18600 100755 --- a/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityPost.xml +++ b/config/alfresco/activities/org.hibernate.dialect.MySQLInnoDBDialect/ActivityPost.xml @@ -9,16 +9,16 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityFeedControl.xml b/config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityFeedControl.xml index 4ca9a86049..f039f9877e 100644 --- a/config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityFeedControl.xml +++ b/config/alfresco/activities/org.hibernate.dialect.PostgreSQLDialect/ActivityFeedControl.xml @@ -9,11 +9,11 @@ - - - - - + + + + + diff --git a/config/alfresco/bootstrap-context.xml b/config/alfresco/bootstrap-context.xml index a33de9934f..3c9e9de296 100644 --- a/config/alfresco/bootstrap-context.xml +++ b/config/alfresco/bootstrap-context.xml @@ -238,11 +238,6 @@ / alfresco/bootstrap/multilingualRoot.xml - - /${spaces.company_home.childname}/${spaces.guest_home.childname} - alfresco/bootstrap/tutorial.xml - alfresco/messages/bootstrap-tutorial - /${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.templates.childname} alfresco/templates/software_engineering_project.xml @@ -298,11 +293,6 @@ /${spaces.company_home.childname}/${spaces.dictionary.childname} alfresco/bootstrap/customWorkflowDefsSpace.acp - - - /${spaces.company_home.childname}/${spaces.dictionary.childname} - alfresco/bootstrap/formsSpace.xml - /cm:categoryRoot diff --git a/config/alfresco/bootstrap/Alfresco-Tutorial.pdf b/config/alfresco/bootstrap/Alfresco-Tutorial.pdf deleted file mode 100644 index 3b8ae12a9f..0000000000 Binary files a/config/alfresco/bootstrap/Alfresco-Tutorial.pdf and /dev/null differ diff --git a/config/alfresco/bootstrap/tutorial.xml b/config/alfresco/bootstrap/tutorial.xml deleted file mode 100644 index 6c3f83397e..0000000000 --- a/config/alfresco/bootstrap/tutorial.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - ${tutorial.document.name} - ${tutorial.document.title} - ${tutorial.document.description} - contentUrl=classpath:alfresco/bootstrap/Alfresco-Tutorial.pdf|mimetype=application/pdf|size=|encoding= - - - diff --git a/config/alfresco/cache-context.xml b/config/alfresco/cache-context.xml index 99d52afe19..37280c7332 100644 --- a/config/alfresco/cache-context.xml +++ b/config/alfresco/cache-context.xml @@ -563,7 +563,7 @@ org.alfresco.resourceBundleBaseNamesTransactionalCache - 10 + 100 @@ -595,7 +595,7 @@ org.alfresco.loadedResourceBundlesTransactionalCache - 10 + 100 @@ -627,7 +627,7 @@ org.alfresco.messagesTransactionalCache - 10 + 100 @@ -664,7 +664,7 @@ org.alfresco.uriToModelsTransactionalCache - 10 + 100 @@ -696,7 +696,7 @@ org.alfresco.compiledModelsTransactionalCache - 10 + 100 @@ -728,7 +728,7 @@ org.alfresco.urisTransactionalCache - 10 + 100 @@ -760,7 +760,7 @@ org.alfresco.prefixesTransactionalCache - 10 + 100 @@ -796,7 +796,7 @@ org.alfresco.webScriptsRegistryTransactionalCache - 10 + 100 diff --git a/source/java/org/alfresco/repo/activities/hibernate/Activities.hbm.xml b/source/java/org/alfresco/repo/activities/hibernate/Activities.hbm.xml index 64d93c9a7a..f2ed7c92de 100644 --- a/source/java/org/alfresco/repo/activities/hibernate/Activities.hbm.xml +++ b/source/java/org/alfresco/repo/activities/hibernate/Activities.hbm.xml @@ -13,19 +13,19 @@ table="alf_activity_post" > - + - - - - - - - - - + + + + + + + + + @@ -34,20 +34,20 @@ table="alf_activity_feed" > - + - - - - - - - - - - + + + + + + + + + + @@ -56,14 +56,14 @@ table="alf_activity_feed_control" > - + - - - - + + + + diff --git a/source/java/org/alfresco/repo/avm/AVMServiceTest.java b/source/java/org/alfresco/repo/avm/AVMServiceTest.java index ae65058c24..e634974791 100644 --- a/source/java/org/alfresco/repo/avm/AVMServiceTest.java +++ b/source/java/org/alfresco/repo/avm/AVMServiceTest.java @@ -1349,7 +1349,7 @@ public class AVMServiceTest extends AVMServiceTestBase StoreRef storeRef = AVMNodeConverter.ToStoreRef("main"); SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true); - ResultSet results = searchService.query(storeRef, "lucene", "TEXT:\"tutorial\""); + ResultSet results = searchService.query(storeRef, "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_NAME.toString()) + ":\"guest\""); assertEquals(0, results.length()); results.close(); @@ -1363,7 +1363,7 @@ public class AVMServiceTest extends AVMServiceTestBase fService.createSnapshot("main", null, null); searchService = fIndexerAndSearcher.getSearcher(storeRef, true); - results = searchService.query(storeRef, "lucene", "TEXT:\"tutorial\""); + results = searchService.query(storeRef, "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_NAME.toString()) + ":\"guest\""); assertEquals(1, results.length()); results.close(); diff --git a/source/java/org/alfresco/repo/avm/hibernate/AVMNodeDAOHibernate.java b/source/java/org/alfresco/repo/avm/hibernate/AVMNodeDAOHibernate.java index 517520b784..5a7eff01bc 100644 --- a/source/java/org/alfresco/repo/avm/hibernate/AVMNodeDAOHibernate.java +++ b/source/java/org/alfresco/repo/avm/hibernate/AVMNodeDAOHibernate.java @@ -162,11 +162,22 @@ class AVMNodeDAOHibernate extends HibernateDaoSupport implements public void getContentUrls(ContentUrlHandler handler) { Query query = getSession().getNamedQuery("PlainFileNode.GetContentUrls"); - ScrollableResults results = query.scroll(ScrollMode.FORWARD_ONLY); - while (results.next()) + ScrollableResults results = null; + try { - String contentUrl = results.getText(0); - handler.handle(contentUrl); + results = query.scroll(ScrollMode.FORWARD_ONLY); + while (results.next()) + { + String contentUrl = results.getText(0); + handler.handle(contentUrl); + } + } + finally + { + if (results != null) + { + results.close(); + } } } diff --git a/source/java/org/alfresco/repo/domain/hibernate/HibernateContentUrlDAOImpl.java b/source/java/org/alfresco/repo/domain/hibernate/HibernateContentUrlDAOImpl.java index fd83e28484..9036602157 100644 --- a/source/java/org/alfresco/repo/domain/hibernate/HibernateContentUrlDAOImpl.java +++ b/source/java/org/alfresco/repo/domain/hibernate/HibernateContentUrlDAOImpl.java @@ -73,11 +73,22 @@ public class HibernateContentUrlDAOImpl extends HibernateDaoSupport implements C return query.scroll(ScrollMode.FORWARD_ONLY); } }; - ScrollableResults results = (ScrollableResults) getHibernateTemplate().execute(callback); - while (results.next()) + ScrollableResults results = null; + try { - String contentUrl = results.getText(0); - handler.handle(contentUrl); + results = (ScrollableResults) getHibernateTemplate().execute(callback); + while (results.next()) + { + String contentUrl = results.getText(0); + handler.handle(contentUrl); + } + } + finally + { + if(results != null) + { + results.close(); + } } } diff --git a/source/java/org/alfresco/repo/domain/hibernate/HibernateHelper.java b/source/java/org/alfresco/repo/domain/hibernate/HibernateHelper.java index 4d9b6d15f4..2c75bfda5b 100644 --- a/source/java/org/alfresco/repo/domain/hibernate/HibernateHelper.java +++ b/source/java/org/alfresco/repo/domain/hibernate/HibernateHelper.java @@ -48,18 +48,31 @@ public class HibernateHelper */ public static int deleteDbAccessControlEntries(Session session, Query query) { - ScrollableResults entities = query.scroll(ScrollMode.FORWARD_ONLY); + ScrollableResults entities = null; int count = 0; - while (entities.next()) + try { - DbAccessControlEntry entry = (DbAccessControlEntry) entities.get(0); - entry.delete(); - if (++count % 50 == 0) + entities = query.scroll(ScrollMode.FORWARD_ONLY); + + while (entities.next()) { - session.flush(); - session.clear(); + DbAccessControlEntry entry = (DbAccessControlEntry) entities.get(0); + entry.delete(); + if (++count % 50 == 0) + { + session.flush(); + session.clear(); + } } } + finally + { + if(entities != null) + { + entities.close(); + } + } + return count; } } diff --git a/source/java/org/alfresco/repo/node/db/hibernate/HibernateNodeDaoServiceImpl.java b/source/java/org/alfresco/repo/node/db/hibernate/HibernateNodeDaoServiceImpl.java index bb7aef8f0d..183e933b97 100644 --- a/source/java/org/alfresco/repo/node/db/hibernate/HibernateNodeDaoServiceImpl.java +++ b/source/java/org/alfresco/repo/node/db/hibernate/HibernateNodeDaoServiceImpl.java @@ -1362,16 +1362,26 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements return query.scroll(ScrollMode.FORWARD_ONLY); } }; - ScrollableResults childNodeIds = (ScrollableResults) getHibernateTemplate().execute(getChildNodeIdsCallback); - while (childNodeIds.next()) + ScrollableResults childNodeIds = null; + try { - Long childNodeId = childNodeIds.getLong(0); - parentAssocsCache.remove(childNodeId); - if (isDebugParentAssocCacheEnabled) + childNodeIds = (ScrollableResults) getHibernateTemplate().execute(getChildNodeIdsCallback); + + while (childNodeIds.next()) { - loggerParentAssocsCache.debug("\n" + - "Parent associations cache - Removing entry: \n" + - " Node: " + childNodeId); + Long childNodeId = childNodeIds.getLong(0); + parentAssocsCache.remove(childNodeId); + if (isDebugParentAssocCacheEnabled) + { + loggerParentAssocsCache.debug("\n" + "Parent associations cache - Removing entry: \n" + " Node: " + childNodeId); + } + } + } + finally + { + if(childNodeIds != null) + { + childNodeIds.close(); } } HibernateCallback deleteParentAssocsCallback = new HibernateCallback() @@ -1848,16 +1858,28 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements return query.scroll(ScrollMode.FORWARD_ONLY); } }; - ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); - convertToChildAssocRefs(parentNode, queryResults, queryCallback); - - // Now recurse, if required - if (recurse) + ScrollableResults queryResults = null; + try { - for (Long childNodeId : childNodeIds) + queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); + convertToChildAssocRefs(parentNode, queryResults, queryCallback); + + // Now recurse, if required + if (recurse) { - getChildAssocs(childNodeId, resultsCallback, recurse); - } + for (Long childNodeId : childNodeIds) + { + getChildAssocs(childNodeId, resultsCallback, recurse); + } + } + // Done + } + finally + { + if (queryResults != null) + { + queryResults.close(); + } } // Done } @@ -1887,8 +1909,19 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements return query.scroll(ScrollMode.FORWARD_ONLY); } }; - ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); - convertToChildAssocRefs(parentNode, queryResults, resultsCallback); + ScrollableResults queryResults = null; + try + { + queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); + convertToChildAssocRefs(parentNode, queryResults, resultsCallback); + } + finally + { + if (queryResults != null) + { + queryResults.close(); + } + } // Done } @@ -1927,8 +1960,19 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements return query.scroll(ScrollMode.FORWARD_ONLY); } }; - ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); - convertToChildAssocRefs(parentNode, queryResults, resultsCallback); + ScrollableResults queryResults = null; + try + { + queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); + convertToChildAssocRefs(parentNode, queryResults, resultsCallback); + } + finally + { + if (queryResults != null) + { + queryResults.close(); + } + } // Done } @@ -1963,8 +2007,19 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements return query.scroll(ScrollMode.FORWARD_ONLY); } }; - ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); - convertToChildAssocRefs(parentNode, queryResults, resultsCallback); + ScrollableResults queryResults = null; + try + { + queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); + convertToChildAssocRefs(parentNode, queryResults, resultsCallback); + } + finally + { + if (queryResults != null) + { + queryResults.close(); + } + } // Done } @@ -2005,8 +2060,19 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements return query.scroll(ScrollMode.FORWARD_ONLY); } }; - ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); - convertToChildAssocRefs(parentNode, queryResults, resultsCallback); + ScrollableResults queryResults = null; + try + { + queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); + convertToChildAssocRefs(parentNode, queryResults, resultsCallback); + } + finally + { + if (queryResults != null) + { + queryResults.close(); + } + } // Done } @@ -2024,8 +2090,19 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements return query.scroll(ScrollMode.FORWARD_ONLY); } }; - ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); - convertToChildAssocRefs(parentNode, queryResults, resultsCallback); + ScrollableResults queryResults = null; + try + { + queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); + convertToChildAssocRefs(parentNode, queryResults, resultsCallback); + } + finally + { + if (queryResults != null) + { + queryResults.close(); + } + } // Done } @@ -2043,8 +2120,19 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements return query.scroll(ScrollMode.FORWARD_ONLY); } }; - ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); - convertToChildAssocRefs(parentNode, queryResults, resultsCallback); + ScrollableResults queryResults = null; + try + { + queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); + convertToChildAssocRefs(parentNode, queryResults, resultsCallback); + } + finally + { + if (queryResults != null) + { + queryResults.close(); + } + } // Done } @@ -2215,8 +2303,20 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements return query.scroll(ScrollMode.FORWARD_ONLY); } }; - ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); - processNodeResults(queryResults, resultsCallback); + ScrollableResults queryResults = null; + try + { + queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); + processNodeResults(queryResults, resultsCallback); + } + finally + { + if (queryResults != null) + { + queryResults.close(); + } + } + // Done } @@ -2234,8 +2334,20 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements return query.scroll(ScrollMode.FORWARD_ONLY); } }; - ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); - processNodeResults(queryResults, resultsCallback); + ScrollableResults queryResults = null; + try + { + queryResults = (ScrollableResults) getHibernateTemplate().execute(callback); + processNodeResults(queryResults, resultsCallback); + } + finally + { + if (queryResults != null) + { + queryResults.close(); + } + } + // Done } @@ -2695,18 +2807,29 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements return query.scroll(ScrollMode.FORWARD_ONLY); } }; - ScrollableResults results = (ScrollableResults) getHibernateTemplate().execute(callback); - // Callback with the results - Session session = getSession(); - while (results.next()) + ScrollableResults results = null; + try { - Node node = (Node) results.get(0); - NodeRef nodeRef = node.getNodeRef(); - QNameEntity nodeTypeQNameEntity = node.getTypeQName(); - QName nodeTypeQName = nodeTypeQNameEntity.getQName(); - handler.handle(nodeRef, nodeTypeQName, propertyQName, value); - // Flush if required - DirtySessionMethodInterceptor.flushSession(session); + results = (ScrollableResults) getHibernateTemplate().execute(callback); + // Callback with the results + Session session = getSession(); + while (results.next()) + { + Node node = (Node) results.get(0); + NodeRef nodeRef = node.getNodeRef(); + QNameEntity nodeTypeQNameEntity = node.getTypeQName(); + QName nodeTypeQName = nodeTypeQNameEntity.getQName(); + handler.handle(nodeRef, nodeTypeQName, propertyQName, value); + // Flush if required + DirtySessionMethodInterceptor.flushSession(session); + } + } + finally + { + if (results != null) + { + results.close(); + } } } @@ -2762,59 +2885,71 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements return query.scroll(ScrollMode.FORWARD_ONLY); } }; - ScrollableResults results = (ScrollableResults) getHibernateTemplate().execute(callback); - // Loop through, extracting content URLs - TypeConverter converter = DefaultTypeConverter.INSTANCE; - int unflushedCount = 0; - while(results.next()) + ScrollableResults results = null; + try { - Node node = (Node) results.get()[0]; - // loop through all the node properties - Map properties = node.getProperties(); - for (Map.Entry entry : properties.entrySet()) + results = (ScrollableResults) getHibernateTemplate().execute(callback); + + // Loop through, extracting content URLs + TypeConverter converter = DefaultTypeConverter.INSTANCE; + int unflushedCount = 0; + while (results.next()) { - PropertyMapKey propertyKey = entry.getKey(); - NodePropertyValue propertyValue = entry.getValue(); - // ignore nulls - if (propertyValue == null) + Node node = (Node) results.get()[0]; + // loop through all the node properties + Map properties = node.getProperties(); + for (Map.Entry entry : properties.entrySet()) { - continue; - } - Long propertyQNameId = propertyKey.getQnameId(); - // Get the actual value(s) as a collection - Collection values = propertyValue.getCollection(DataTypeDefinition.ANY); - // attempt to convert instance in the collection - for (Serializable value : values) - { - // ignore nulls (null entries in collections) - if (value == null) + PropertyMapKey propertyKey = entry.getKey(); + NodePropertyValue propertyValue = entry.getValue(); + // ignore nulls + if (propertyValue == null) { continue; } - Serializable convertedValue = null; - try + Long propertyQNameId = propertyKey.getQnameId(); + // Get the actual value(s) as a collection + Collection values = propertyValue.getCollection(DataTypeDefinition.ANY); + // attempt to convert instance in the collection + for (Serializable value : values) { - convertedValue = (Serializable) converter.convert(actualDataTypeDefinition, value); - } - catch (Throwable e) - { - // The value can't be converted - forget it - } - if (convertedValue != null) - { - NodeRef nodeRef = node.getNodeRef(); - QName nodeTypeQName = node.getTypeQName().getQName(); - QName propertyQName = qnameDAO.getQName(propertyQNameId); - handler.handle(nodeRef, nodeTypeQName, propertyQName, convertedValue); + // ignore nulls (null entries in collections) + if (value == null) + { + continue; + } + Serializable convertedValue = null; + try + { + convertedValue = (Serializable) converter.convert(actualDataTypeDefinition, value); + } + catch (Throwable e) + { + // The value can't be converted - forget it + } + if (convertedValue != null) + { + NodeRef nodeRef = node.getNodeRef(); + QName nodeTypeQName = node.getTypeQName().getQName(); + QName propertyQName = qnameDAO.getQName(propertyQNameId); + handler.handle(nodeRef, nodeTypeQName, propertyQName, convertedValue); + } } } + unflushedCount++; + if (unflushedCount >= 1000) + { + // evict all data from the session + getSession().clear(); + unflushedCount = 0; + } } - unflushedCount++; - if (unflushedCount >= 1000) + } + finally + { + if (results != null) { - // evict all data from the session - getSession().clear(); - unflushedCount = 0; + results.close(); } } } diff --git a/source/java/org/alfresco/repo/site/SiteServiceImpl.java b/source/java/org/alfresco/repo/site/SiteServiceImpl.java index d3081a701a..29335c5a95 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImpl.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImpl.java @@ -89,9 +89,6 @@ public class SiteServiceImpl implements SiteService, SiteModel private TaggingService taggingService; private AuthorityService authorityService; - /** The site root node reference */ - private NodeRef siteRootNodeRef; - /** * Set node service * @@ -351,26 +348,21 @@ public class SiteServiceImpl implements SiteService, SiteModel * @return NodeRef node reference */ private NodeRef getSiteRoot() - { - if (this.siteRootNodeRef == null) + { + // Get the root 'sites' folder + ResultSet resultSet = this.searchService.query(SITE_STORE, SearchService.LANGUAGE_LUCENE, "TYPE:\"st:sites\""); + if (resultSet.length() == 0) { - // Get the root 'sites' folder - ResultSet resultSet = this.searchService.query(SITE_STORE, SearchService.LANGUAGE_LUCENE, "TYPE:\"st:sites\""); - if (resultSet.length() == 0) - { - // No root site folder exists - throw new AlfrescoRuntimeException("No root sites folder exists"); - } - else if (resultSet.length() != 1) - { - // More than one root site folder exits - throw new AlfrescoRuntimeException("More than one root sites folder exists"); - } - - this.siteRootNodeRef = resultSet.getNodeRef(0); + // No root site folder exists + throw new AlfrescoRuntimeException("No root sites folder exists"); } - - return this.siteRootNodeRef; + else if (resultSet.length() != 1) + { + // More than one root site folder exits + throw new AlfrescoRuntimeException("More than one root sites folder exists"); + } + + return resultSet.getNodeRef(0); } /** @@ -664,7 +656,6 @@ public class SiteServiceImpl implements SiteService, SiteModel // Get the current user String currentUserName = AuthenticationUtil.getCurrentUserName(); - String currentUserRole = getMembersRole(shortName, currentUserName); // Get the user current role final String role = getMembersRole(shortName, userName); @@ -763,7 +754,6 @@ public class SiteServiceImpl implements SiteService, SiteModel // -- the member does not already have permissions // ... then we can set the permissions as system user final String currentUserName = AuthenticationUtil.getCurrentUserName(); - final String currentUserRole = getMembersRole(shortName, currentUserName); if ((permissionService.hasPermission(siteNodeRef, PermissionService.CHANGE_PERMISSIONS) == AccessStatus.ALLOWED) || (isPublic == true && diff --git a/source/java/org/alfresco/repo/tagging/RefreshTagScopeActionExecuter.java b/source/java/org/alfresco/repo/tagging/RefreshTagScopeActionExecuter.java index 889e37644f..34667712cc 100644 --- a/source/java/org/alfresco/repo/tagging/RefreshTagScopeActionExecuter.java +++ b/source/java/org/alfresco/repo/tagging/RefreshTagScopeActionExecuter.java @@ -31,6 +31,7 @@ import java.util.List; import org.alfresco.model.ContentModel; import org.alfresco.repo.action.executer.ActionExecuterAbstractBase; import org.alfresco.repo.content.MimetypeMap; +import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.service.cmr.action.Action; import org.alfresco.service.cmr.action.ParameterDefinition; import org.alfresco.service.cmr.repository.ChildAssociationRef; @@ -96,26 +97,37 @@ public class RefreshTagScopeActionExecuter extends ActionExecuterAbstractBase * @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef) */ @Override - protected void executeImpl(Action action, NodeRef actionedUponNodeRef) + protected void executeImpl(final Action action, final NodeRef actionedUponNodeRef) { if (this.nodeService.exists(actionedUponNodeRef) == true && this.nodeService.hasAspect(actionedUponNodeRef, ContentModel.ASPECT_TAGSCOPE) == true) { - // Create a new list of tag details - List tags = new ArrayList(10); + // Run the update as the system user + AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork() + { + @SuppressWarnings("unchecked") + public Object doWork() throws Exception + { + // Create a new list of tag details + List tags = new ArrayList(10); + + // Count the tags found in all the (primary) children of the node + countTags(actionedUponNodeRef, tags); + + // Order the list + Collections.sort(tags); + + // Write new content back to tag scope + String tagContent = TaggingServiceImpl.tagDetailsToString(tags); + ContentWriter contentWriter = contentService.getWriter(actionedUponNodeRef, ContentModel.PROP_TAGSCOPE_CACHE, true); + contentWriter.setEncoding("UTF-8"); + contentWriter.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN); + contentWriter.putContent(tagContent); + + return null; + } - // Count the tags found in all the (primary) children of the node - countTags(actionedUponNodeRef, tags); - - // Order the list - Collections.sort(tags); - - // Write new content back to tag scope - String tagContent = TaggingServiceImpl.tagDetailsToString(tags); - ContentWriter contentWriter = this.contentService.getWriter(actionedUponNodeRef, ContentModel.PROP_TAGSCOPE_CACHE, true); - contentWriter.setEncoding("UTF-8"); - contentWriter.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN); - contentWriter.putContent(tagContent); + }, AuthenticationUtil.getSystemUserName()); } } diff --git a/source/java/org/alfresco/repo/tagging/UpdateTagScopesActionExecuter.java b/source/java/org/alfresco/repo/tagging/UpdateTagScopesActionExecuter.java index b4d8e7ed24..d180faa32b 100644 --- a/source/java/org/alfresco/repo/tagging/UpdateTagScopesActionExecuter.java +++ b/source/java/org/alfresco/repo/tagging/UpdateTagScopesActionExecuter.java @@ -33,6 +33,7 @@ import org.alfresco.model.ContentModel; import org.alfresco.repo.action.ParameterDefinitionImpl; import org.alfresco.repo.action.executer.ActionExecuterAbstractBase; import org.alfresco.repo.content.MimetypeMap; +import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.service.cmr.action.Action; import org.alfresco.service.cmr.action.ParameterDefinition; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; @@ -101,96 +102,105 @@ public class UpdateTagScopesActionExecuter extends ActionExecuterAbstractBase * @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef) */ @Override - protected void executeImpl(Action action, NodeRef actionedUponNodeRef) + protected void executeImpl(final Action action, final NodeRef actionedUponNodeRef) { try - { - - if (this.nodeService.exists(actionedUponNodeRef) == true) - { - // Get the parameter values - Map tagUpdates = (Map)action.getParameterValue(PARAM_TAG_UPDATES); - - // Get the tag scopes for the actioned upon node - List tagScopes = this.taggingService.findAllTagScopes(actionedUponNodeRef); - - // Update each tag scope - for (TagScope tagScope : tagScopes) + { + if (this.nodeService.exists(actionedUponNodeRef) == true) { - NodeRef tagScopeNodeRef = tagScope.getNodeRef(); - List tags = null; - - // Get the current tags - ContentReader contentReader = this.contentService.getReader(tagScopeNodeRef, ContentModel.PROP_TAGSCOPE_CACHE); - if (contentReader == null) + // Run the update as the system user + AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork() { - tags = new ArrayList(1); - } - else - { - tags = TaggingServiceImpl.readTagDetails(contentReader.getContentInputStream()); - } - - for (String tagName : tagUpdates.keySet()) - { - boolean isAdd = tagUpdates.get(tagName).booleanValue(); - - TagDetails currentTag = null; - for (TagDetails tag : tags) + @SuppressWarnings("unchecked") + public Object doWork() throws Exception { - if (tag.getName().equals(tagName) == true) + // Get the parameter values + Map tagUpdates = (Map)action.getParameterValue(PARAM_TAG_UPDATES); + + // Get the tag scopes for the actioned upon node + List tagScopes = taggingService.findAllTagScopes(actionedUponNodeRef); + + // Update each tag scope + for (TagScope tagScope : tagScopes) { - currentTag = tag; - break; - } - } - - if (isAdd == true) - { - if (currentTag == null) - { - tags.add(new TagDetailsImpl(tagName, 1)); - } - else - { - ((TagDetailsImpl)currentTag).incrementCount(); - } - - } - else - { - if (currentTag != null) - { - int currentTagCount = currentTag.getCount(); - if (currentTagCount == 1) + NodeRef tagScopeNodeRef = tagScope.getNodeRef(); + List tags = null; + + // Get the current tags + ContentReader contentReader = contentService.getReader(tagScopeNodeRef, ContentModel.PROP_TAGSCOPE_CACHE); + if (contentReader == null) { - tags.remove(currentTag); + tags = new ArrayList(1); } else { - ((TagDetailsImpl)currentTag).decrementCount(); + tags = TaggingServiceImpl.readTagDetails(contentReader.getContentInputStream()); } + + for (String tagName : tagUpdates.keySet()) + { + boolean isAdd = tagUpdates.get(tagName).booleanValue(); + + TagDetails currentTag = null; + for (TagDetails tag : tags) + { + if (tag.getName().equals(tagName) == true) + { + currentTag = tag; + break; + } + } + + if (isAdd == true) + { + if (currentTag == null) + { + tags.add(new TagDetailsImpl(tagName, 1)); + } + else + { + ((TagDetailsImpl)currentTag).incrementCount(); + } + + } + else + { + if (currentTag != null) + { + int currentTagCount = currentTag.getCount(); + if (currentTagCount == 1) + { + tags.remove(currentTag); + } + else + { + ((TagDetailsImpl)currentTag).decrementCount(); + } + } + } + } + + // Order the list + Collections.sort(tags); + + // Write new content back to tag scope + String tagContent = TaggingServiceImpl.tagDetailsToString(tags); + ContentWriter contentWriter = contentService.getWriter(tagScopeNodeRef, ContentModel.PROP_TAGSCOPE_CACHE, true); + contentWriter.setEncoding("UTF-8"); + contentWriter.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN); + contentWriter.putContent(tagContent); } + + return null; } - } - - // Order the list - Collections.sort(tags); - - // Write new content back to tag scope - String tagContent = TaggingServiceImpl.tagDetailsToString(tags); - ContentWriter contentWriter = this.contentService.getWriter(tagScopeNodeRef, ContentModel.PROP_TAGSCOPE_CACHE, true); - contentWriter.setEncoding("UTF-8"); - contentWriter.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN); - contentWriter.putContent(tagContent); - } - } - + + }, AuthenticationUtil.getSystemUserName()); + } } catch (RuntimeException exception) { exception.printStackTrace(); - throw exception; + throw new RuntimeException("Unable to update the tag scopes.", exception); } } diff --git a/source/java/org/alfresco/repo/tenant/MultiTDemoTest.java b/source/java/org/alfresco/repo/tenant/MultiTDemoTest.java index 04290a5cdb..284f2f2cf3 100644 --- a/source/java/org/alfresco/repo/tenant/MultiTDemoTest.java +++ b/source/java/org/alfresco/repo/tenant/MultiTDemoTest.java @@ -85,16 +85,20 @@ public class MultiTDemoTest extends TestCase private TenantService tenantService; private AuthorityService authorityService; private CategoryService categoryService; - - public static final String TEST_TENANT_DOMAIN1 = "yyy.com"; - public static final String TEST_TENANT_DOMAIN2 = "zzz.com"; - private static List tenants; + public static int NUM_TENANTS = 11; + public static final String TEST_TENANT_DOMAIN = "my.test"; + public static final String TEST_TENANT_DOMAIN2 = TEST_TENANT_DOMAIN+"2"; + + public static List tenants; + static { - tenants = new ArrayList(2); - tenants.add(TEST_TENANT_DOMAIN1); - tenants.add(TEST_TENANT_DOMAIN2); + tenants = new ArrayList(NUM_TENANTS); + for (int i = 1; i <= NUM_TENANTS; i++) + { + tenants.add(TEST_TENANT_DOMAIN+i); + } } public static final String ROOT_DIR = "./tenantstores"; @@ -487,31 +491,33 @@ public class MultiTDemoTest extends TestCase { logger.info("Test get property"); - final String tenantDomain = TEST_TENANT_DOMAIN1; - String tenantAdminName = tenantService.getDomainUser(TenantService.ADMIN_BASENAME, tenantDomain); - - AuthenticationUtil.runAs(new RunAsWork() + for (final String tenantDomain : tenants) { - public Object doWork() throws Exception + String tenantAdminName = tenantService.getDomainUser(TenantService.ADMIN_BASENAME, tenantDomain); + + AuthenticationUtil.runAs(new RunAsWork() { - NodeRef personNodeRef = createUser(TEST_USER4, tenantDomain, "welcome"); - - // Test nodeRef property - NodeRef homeFolderNodeRef = (NodeRef)nodeService.getProperty(personNodeRef, ContentModel.PROP_HOMEFOLDER); - assertFalse(homeFolderNodeRef.toString().contains(tenantDomain)); - - Map props = (Map)nodeService.getProperties(personNodeRef); - assertFalse(props.get(ContentModel.PROP_HOMEFOLDER).toString().contains(tenantDomain)); - - // Test "store-identifier" property - String storeId = (String)nodeService.getProperty(personNodeRef, ContentModel.PROP_STORE_IDENTIFIER); - assertFalse(storeId.contains(tenantDomain)); - - assertFalse(props.get(ContentModel.PROP_STORE_IDENTIFIER).toString().contains(tenantDomain)); - - return null; - } - }, tenantAdminName); + public Object doWork() throws Exception + { + NodeRef personNodeRef = createUser(TEST_USER4, tenantDomain, "welcome"); + + // Test nodeRef property + NodeRef homeFolderNodeRef = (NodeRef)nodeService.getProperty(personNodeRef, ContentModel.PROP_HOMEFOLDER); + assertFalse(homeFolderNodeRef.toString().contains(tenantDomain)); + + Map props = (Map)nodeService.getProperties(personNodeRef); + assertFalse(props.get(ContentModel.PROP_HOMEFOLDER).toString().contains(tenantDomain)); + + // Test "store-identifier" property + String storeId = (String)nodeService.getProperty(personNodeRef, ContentModel.PROP_STORE_IDENTIFIER); + assertFalse(storeId.contains(tenantDomain)); + + assertFalse(props.get(ContentModel.PROP_STORE_IDENTIFIER).toString().contains(tenantDomain)); + + return null; + } + }, tenantAdminName); + } } private void createGroup(String shortName, String parentShortName)