From bb3f458a65601a460411f89d44c82fb7cd09957e Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Thu, 9 Jun 2011 22:40:27 +0000 Subject: [PATCH] Merged DEV/SWIFT to HEAD 27908: ALF-8706: RSOLR 023: Locale is persisted for all nodes - Part of ALF-7991: RSOLR 023: Locale support for query: Repository - Added alf_node.locale_id mandatory column - sys:localizable is now spoofed and mandatory on sys:base - sys:locale property is always available - The locale set is the I18NUtil.getLocale() (thread then server) - TODO: Upgrade scripts, so drop database to take this change 27909: ALF-8706: RSOLR 023: Locale is persisted for all nodes - Part of ALF-7991: RSOLR 023: Locale support for query: Repository - Extended locale test to ensure that sys:locale can be set using properties during create 27910: ALF-8707: RSOLR 023: Upgrade to give nodes their default locales - Part of ALF-7991:RSOLR 023: Locale support for query: Repository - Upgrade scripts for PostgreSQL and MySQL: patch.db-V4.0-Node-Locale 27912: WCM QS ML Support for creating missing intermediate directories when adding an "orphan" translation, plus tests 27913: Fixed failing JbpmEngineUnitTest. 27914: Build fix. Fixes failing test DiscussionServiceTest.testDeleteTopLevelPost 27916: WCM QS ML forms config for overrideable name, and passing the initially orphaned flag through to the behaviour 27917: Enable the WCM QS ML Manage Translations action in the folder details page, as well as the document details page as before 27919: Quick build fix. Introduction of new property sys:locale on all nodes means that FormService is seeing some off-by-one errors. 27921: WCM QS ML - Support copying parts of the section collections to the new folder when translating a section, plus tests 27925: ALF-8707: RSOLR 023: Upgrade to give nodes their default locales - Part of ALF-7991: RSOLR 023: Locale support for query: Repository - Upgrade scripts for DB2, Oracle and SQLServer 27927: Update FileFolderService list/paging (RINF 09) & CQ permission checking (RINF 11) - also added additional unit tests and update FileFolderPerformanceTester utility (for read / list testing) 27930: Corrected bean reference: "ServiceRegistry" 27931: Partially implemented EnvironmentImpl.getPublishingEvents(). This currently only supports searching on publishing event ids. 27933: Implemented PublishService.getPublishingEvent(String) method. 27934: WCM QS ML Pull over the locale resolver from Ian, and delegate much of the work to the main class 27941: ALF-7874 - Mime Type entries for detection and display for some Apple and Adobe formats 27947: ALF-2707 - Largely fix custom site properties that have multiple values, and custom site properties without a full definition, plus tests. 27964: ALF-7339:RSOLR 009: Index track and build from SOLR - complete ALF-7475: RSOLR 010: Index integrity check - check ACL info 27966: RINF 09: FileFolderService list - if skipCount > number of items then return empty list - related to ALF-7884 when using CMIS getChildren (via OpenCMIS - eg. http://localhost:8080/alfresco/cmisatom/...) 27968: ALF-7884 - getChildren() returns an error if skipCount > number of children 27970: WCM QS Fix issue in the webapp for sites where no port has been given yet 27972: WPUB: F150: Foundation API: Request that a node be removed from the live environment - Initial support for "unpublish" 27975: ALF-8790:RSOLR 033: Automated build produces SOLR artifacts - add configuration per core based on properties files 27976: ALF-8790: RSOLR 033: Automated build produces SOLR artifacts - restructure, added properties files for config, track archived store 27977: ALF-8790: RSOLR 033: Automated build produces SOLR artifacts - Solr zip included in continuous build 27978: Fixed missing policy event when sys:locale is changed. 27979: Fixed tests and checks after sys:locale became a mandatory property. 27982: ALF-8547: WPUB: F163: Foundation API: Create/update/remove a delivery channel - Code and tests for channel update and delete 28007: Implemented starting publishing workflow on schedulePublishingEvent method. Added tests for PublishingEventHelper. 28008: Updated web-publishing-context.xml to include WorkflowService and workflowEngineId for PublishingEventHelper. 28009: Added more PublishingEventHelper tests. 28012: Support for ALF-8792: RSOLR 036: SOLR APIs to support index integrity checking 28013: Fix failing Web Publishing tests. 28015: Adding a DoNotCopy CopyBehaviourCallback for the fm:commentsRollup aspect. Part of ALF-8498. 28016: Bring over the WCM QS ML RootNavInterceptor from Ian, and productise it 28019: CMIS browser: close invalid connections 28025: Update the WCM QS ML behaviour, webscript and test to handle more things having locales by default 28026: ML-WQS: - Wired up the RootNavInterceptor to detect locale based on path - Wired up the replacement locale resolver to respect the locale determined by the RootNavInterceptor - Adjusted "Manage Translations" page to render the data table correctly - Adjusted site search box to restrict search to selected site localisation - Adjusted top nav component to select menu items only from appropriate site localisation 28029: Added more tests for PublishingEventHelper and PublishingQueueImpl. Also added WebPublishingTestSuite. 28034: Support for ALF-8792: RSOLR 036: SOLR APIs to support index integrity checking - ACL and ACLTX support 28036: WCM QS ML UI tweaks for marking something as the initial translation 28038: ALF-8548: WPUB: F165: Foundation API: Cancel a scheduled publishing event - Code and initial test cases 28043: Added missing JCR mapping for property type d:locale - This property type is not new, btw. 28312: RepoBM: minor cleanup - remove hardcoded JMeter install dir - add configurable user.dir (for default import of test data) - check that default zip exists - update readme - default threadfolder should be null (in case of absolute folder paths) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28320 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../cmis/client/cmisbrowser/connect.post.js | 4 ++++ .../org/alfresco/repository/site/site.lib.ftl | 18 +++++++++++---- .../alfresco/repo/cmis/rest/CMISScript.java | 3 ++- .../web/scripts/site/SiteServiceTest.java | 23 ++++++++++++++++--- 4 files changed, 40 insertions(+), 8 deletions(-) diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/cmisbrowser/connect.post.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/cmisbrowser/connect.post.js index 692f3fcfb1..cc31e2729c 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/cmisbrowser/connect.post.js +++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/cmisbrowser/connect.post.js @@ -34,5 +34,9 @@ try { model.repoinfo = model.conn.session.repositoryInfo; model.rootFolder = model.conn.session.rootFolder; } catch (e) { + if(connection != null) { + connection.close(); + } + model.error = (e.javaException == null ? e.rhinoException.message : e.javaException.message); } \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/site/site.lib.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/site/site.lib.ftl index e0fa0b3187..49d87b510d 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/site/site.lib.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/site/site.lib.ftl @@ -16,12 +16,22 @@ "customProperties" : { <#list site.customProperties?keys as prop> + <#assign propDetails = site.customProperties[prop]> "${prop}" : { - "name" : "${prop}", - "value" : "${site.customProperties[prop].value?string}", - "type" : "${site.customProperties[prop].type}", - "title" : "${site.customProperties[prop].title}" + "name" : "${prop}", + "value" : + <#if propDetails.value?is_enumerable> + [ + <#list propDetails.value as v> + "${v?string}"<#if v_has_next>, + + ] + <#else> + "${propDetails.value?string}" + , + "type" : <#if propDetails.type??>"${propDetails.type}"<#else>null, + "title" : <#if propDetails.title??>"${propDetails.title}"<#else>null } <#if prop_has_next>, diff --git a/source/java/org/alfresco/repo/cmis/rest/CMISScript.java b/source/java/org/alfresco/repo/cmis/rest/CMISScript.java index 0aabb06d41..5aaf2ebf06 100644 --- a/source/java/org/alfresco/repo/cmis/rest/CMISScript.java +++ b/source/java/org/alfresco/repo/cmis/rest/CMISScript.java @@ -407,7 +407,8 @@ public class CMISScript extends BaseScopableProcessorExtension } Cursor cursor = paging.createCursor(children.length, page); - ScriptNode[] nodes = new ScriptNode[cursor.getRowCount()]; + int cnt = (cursor.getRowCount() < 0 ? 0 : cursor.getRowCount()); + ScriptNode[] nodes = new ScriptNode[cnt]; for (int i = cursor.getStartRow(); i <= cursor.getEndRow(); i++) { nodes[i - cursor.getStartRow()] = new ScriptNode(children[i], services, getScope()); diff --git a/source/java/org/alfresco/repo/web/scripts/site/SiteServiceTest.java b/source/java/org/alfresco/repo/web/scripts/site/SiteServiceTest.java index 5c13d4b833..87c6aafdda 100644 --- a/source/java/org/alfresco/repo/web/scripts/site/SiteServiceTest.java +++ b/source/java/org/alfresco/repo/web/scripts/site/SiteServiceTest.java @@ -20,6 +20,7 @@ package org.alfresco.repo.web.scripts.site; import java.io.Serializable; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -114,7 +115,7 @@ public class SiteServiceTest extends BaseWebScriptTest ppOne.put(ContentModel.PROP_JOBTITLE, "jobTitle"); this.personService.createPerson(ppOne); - } + } } @Override @@ -574,11 +575,15 @@ public class SiteServiceTest extends BaseWebScriptTest public void testSiteCustomProperties() throws Exception { - // Create a site with a custom property + QName custPropSingle = QName.createQName(SiteModel.SITE_CUSTOM_PROPERTY_URL, "additionalInformation"); + QName custPropMuliple = QName.createQName(SiteModel.SITE_CUSTOM_PROPERTY_URL, "siteTags"); + + // Create a site with custom properties, one single and one multiple SiteInfo siteInfo = this.siteService.createSite("testPreset", "mySiteWithCustomProperty2", "testTitle", "testDescription", SiteVisibility.PUBLIC); NodeRef siteNodeRef = siteInfo.getNodeRef(); Map properties = new HashMap(1); - properties.put(QName.createQName(SiteModel.SITE_CUSTOM_PROPERTY_URL, "additionalInformation"), "information"); + properties.put(custPropSingle, "information"); + properties.put(custPropMuliple, (Serializable)Arrays.asList(new String[]{ "tag1", "tag2", "tag333" })); this.nodeService.addAspect(siteNodeRef, QName.createQName(SiteModel.SITE_MODEL_URL, "customSiteProperties"), properties); this.createdSites.add("mySiteWithCustomProperty2"); @@ -595,6 +600,18 @@ public class SiteServiceTest extends BaseWebScriptTest assertEquals("{http://www.alfresco.org/model/dictionary/1.0}text", addInfo.get("type")); assertEquals("Additional Site Information", addInfo.get("title")); + JSONObject tags = customProperties.getJSONObject("{http://www.alfresco.org/model/sitecustomproperty/1.0}siteTags"); + assertNotNull(tags); + assertEquals("{http://www.alfresco.org/model/sitecustomproperty/1.0}siteTags", tags.get("name")); + assertEquals(JSONObject.NULL, tags.get("type")); + assertEquals(JSONObject.NULL, tags.get("title")); + // TODO Fix ALF-2707 so this works + System.err.println(response.getContentAsString()); +// JSONArray tagsA = tags.getJSONArray("value"); +// assertEquals(3, tagsA.length()); +// assertEquals("tag1", tagsA.getString(0)); +// assertEquals("tag2", tagsA.getString(1)); +// assertEquals("tag333", tagsA.getString(2)); } /**