This is an automated email from the ASF dual-hosted git repository. nmalin pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push: new bdd5673 Fixed: Clean groovy file ContentServices.groovy No functional change : * remove case syntax * use OFBiz dsl * condense map creation, entityCondition by builder * add typage to help ide and compilation bdd5673 is described below commit bdd5673fe21a578545ebfb84125d68ffa8e1915c Author: Nicolas Malin <nicolas.ma...@nereide.fr> AuthorDate: Tue Aug 17 17:45:45 2021 +0200 Fixed: Clean groovy file ContentServices.groovy No functional change : * remove case syntax * use OFBiz dsl * condense map creation, entityCondition by builder * add typage to help ide and compilation Fixed to bad engine on service createDownloadContent and updateDownloadContent after the minilang to groovy migration --- .../groovyScripts/content/ContentServices.groovy | 372 ++++++++++----------- applications/content/servicedef/services.xml | 4 +- 2 files changed, 181 insertions(+), 195 deletions(-) diff --git a/applications/content/groovyScripts/content/ContentServices.groovy b/applications/content/groovyScripts/content/ContentServices.groovy index cb53aa5..1defdf2 100644 --- a/applications/content/groovyScripts/content/ContentServices.groovy +++ b/applications/content/groovyScripts/content/ContentServices.groovy @@ -17,21 +17,22 @@ * under the License. */ -import java.sql.Timestamp +import org.apache.ofbiz.base.util.UtilProperties import org.apache.ofbiz.content.content.ContentKeywordIndex import org.apache.ofbiz.common.UrlServletHelper import org.apache.ofbiz.entity.condition.EntityCondition -import org.apache.ofbiz.entity.condition.EntityOperator +import org.apache.ofbiz.entity.condition.EntityConditionBuilder import org.apache.ofbiz.entity.GenericValue +import org.apache.ofbiz.entity.condition.EntityOperator import org.apache.ofbiz.entity.util.EntityListIterator -import org.apache.ofbiz.service.GenericServiceException; +import org.apache.ofbiz.service.GenericServiceException import org.apache.ofbiz.service.ModelService import org.apache.ofbiz.service.ServiceUtil import org.apache.ofbiz.base.util.UtilDateTime -def createTextAndUploadedContent(){ +def createTextAndUploadedContent() { Map result = success() Map serviceResult = run service: 'createContent', with: parameters @@ -39,12 +40,11 @@ def createTextAndUploadedContent(){ if (parameters.uploadedFile) { logInfo('Uploaded file found; processing sub-content') - Map uploadContext = dispatcher.getDispatchContext() - .makeValidContext('createContentFromUploadedFile', ModelService.IN_PARAM, parameters) - uploadContext.ownerContentId = parameters.parentContentId - uploadContext.contentIdFrom = parameters.parentContentId - uploadContext.contentAssocTypeId = 'SUB_CONTENT' - uploadContext.contentPurposeTypeId = 'SECTION' + Map uploadContext = [*: parameters, + ownerContentId: parentContentId, + contentIdFrom: parameters.parentContentId, + contentAssocTypeId: 'SUB_CONTENT', + contentPurposeTypeId: 'SECTION'] run service: 'createContentFromUploadedFile', with: uploadContext } @@ -59,8 +59,7 @@ def updateSingleContentPurpose() { def createEmailContent() { Map result = success() - Map createContentMap = dispatcher.getDispatchContext() - .makeValidContext('createContent', ModelService.IN_PARAM, parameters) + Map createContentMap = [*: parameters] //Create subject Map serviceResult = run service: 'createElectronicText', with: [textData: parameters.subject] @@ -94,62 +93,64 @@ def createEmailContent() { } def deactivateAllContentRoles() { - List contentRoles = from("ContentRole"). - where("contentId", parameters.contentId, "partyId", parameters.partyId, "roleTypeId", parameters.roleTypeId) - .queryList(); - if (contentRoles) { - for (GenericValue contentRole : contentRoles) { - contentRole.put("thruDate", UtilDateTime.nowTimestamp()); - contentRole.store(); - } + List contentRoles = from("ContentRole") + .where(contentId: parameters.contentId, + partyId: parameters.partyId, + roleTypeId: parameters.roleTypeId) + .queryList() + contentRoles.each { + it.thruDate = UtilDateTime.nowTimestamp() + it.store() } return success() } + def createContentAlternativeUrl() { //create Content Alternative URLs. - String contentCreated - Map serviceResult = [:] - Map serviceContext = [:] + String contentCreated = "N" defaultLocaleString = parameters.locale ?: "en" EntityListIterator contents + EntityCondition entryExprs + EntityCondition contentTypeExprs = EntityCondition.makeCondition(EntityOperator.OR, + 'contentTypeId', "DOCUMENT", + 'contentTypeId', "WEB_SITE_PUB_PT") if (parameters.contentId) { - entryExprs = EntityCondition.makeCondition([ - EntityCondition.makeCondition("contentName", EntityOperator.NOT_EQUAL, null), - EntityCondition.makeCondition("contentId", EntityOperator.EQUALS, parameters.contentId), - EntityCondition.makeCondition([ - EntityCondition.makeCondition("contentTypeId", EntityOperator.EQUALS, "DOCUMENT"), - EntityCondition.makeCondition("contentTypeId", EntityOperator.EQUALS, "WEB_SITE_PUB_PT")], EntityOperator.OR) - ], EntityOperator.AND) + entryExprs = new EntityConditionBuilder().AND(contentTypeExprs) { + NOT_EQUAL(contentName: null) + EQUALS(contentId: parameters.contentId) + } } else { - entryExprs = EntityCondition.makeCondition([ - EntityCondition.makeCondition("contentName", EntityOperator.NOT_EQUAL, null), - EntityCondition.makeCondition([ - EntityCondition.makeCondition("contentTypeId", EntityOperator.EQUALS, "DOCUMENT"), - EntityCondition.makeCondition("contentTypeId", EntityOperator.EQUALS, "WEB_SITE_PUB_PT")], EntityOperator.OR) - ], EntityOperator.AND) + entryExprs = new EntityConditionBuilder().AND(contentTypeExprs) { + NOT_EQUAL(contentName: null) + } } - contents = select("contentId", "contentName", "localeString").from("Content").where(entryExprs).queryIterator() - List contentAssocDataResources = [] - String localeString + contents = select("contentId", "contentName", "localeString") + .from("Content") + .where(entryExprs) + .queryIterator() + GenericValue content while (content = contents.next()) { - localeString = content.localeString ?: defaultLocaleString - contentAssocDataResources = select("contentIdStart", "dataResourceId", "localeString", "drObjectInfo", "caFromDate", "caThruDate").from("ContentAssocDataResourceViewTo"). - where("caContentAssocTypeId", "ALTERNATIVE_URL", "contentIdStart", content.contentId, "localeString", localeString.toString()).filterByDate("caFromDate", "caThruDate").queryList() + String localeString = content.localeString ?: defaultLocaleString + List contentAssocDataResources = select("contentIdStart", "dataResourceId", "localeString", "drObjectInfo", "caFromDate", "caThruDate") + .from("ContentAssocDataResourceViewTo") + .where(caContentAssocTypeId: "ALTERNATIVE_URL", + contentIdStart: content.contentId, + localeString: localeString.toString()) + .filterByDate("caFromDate", "caThruDate") + .queryList() if (!contentAssocDataResources) { if (content.contentName) { - uri = UrlServletHelper.invalidCharacter(content.contentName) + String uri = UrlServletHelper.invalidCharacter(content.contentName) if (uri) { - serviceContext.dataResourceId = delegator.getNextSeqId("DataResource") - serviceContext.dataResourceTypeId = "URL_RESOURCE" - serviceContext.localeString = localeString.toString() - serviceContext.objectInfo = uri + "-" + content.contentId + "-content" - serviceContext.statusId = "CTNT_IN_PROGRESS" - serviceContext.userLogin = userLogin try { - serviceResult = run service: "createDataResource", with: serviceContext + Map serviceResult = run service: "createDataResource", with: [dataResourceId: delegator.getNextSeqId("DataResource"), + dataResourceTypeId: "URL_RESOURCE", + localeString: localeString.toString(), + objectInfo: "${uri}-${content.contentId}-content", + statusId: "CTNT_IN_PROGRESS"] if (ServiceUtil.isSuccess(serviceResult)) { dataResourceId = serviceResult.dataResourceId } @@ -157,13 +158,10 @@ def createContentAlternativeUrl() { logError(e.getMessage()) } if (dataResourceId) { - serviceContext.clear() - serviceContext.dataResourceId = dataResourceId - serviceContext.statusId = "CTNT_IN_PROGRESS" - serviceContext.localeString = localeString.toString() - serviceContext.userLogin = userLogin try { - serviceResult = run service: "createContent", with: serviceContext + serviceResult = run service: "createContent", with: [dataResourceId: dataResourceId, + localeString: localeString.toString(), + statusId: "CTNT_IN_PROGRESS"] if (ServiceUtil.isSuccess(serviceResult)) { contentIdTo = serviceResult.contentId } @@ -171,13 +169,10 @@ def createContentAlternativeUrl() { logError(e.getMessage()) } if (contentIdTo) { - serviceContext.clear() - serviceContext.contentId = content.contentId - serviceContext.contentIdTo = contentIdTo - serviceContext.contentAssocTypeId = "ALTERNATIVE_URL" - serviceContext.userLogin = userLogin try { - serviceResult = run service: "createContentAssoc", with: serviceContext + serviceResult = run service: "createContentAssoc", with: [contentId: content.contentId, + contentIdTo: contentIdTo, + contentAssocTypeId: "ALTERNATIVE_URL"] if (ServiceUtil.isSuccess(serviceResult)) { contentIdTo = serviceResult.contentId } @@ -190,16 +185,14 @@ def createContentAlternativeUrl() { } } } else { - if (contentAssocDataResources && contentAssocDataResources.get(0).drObjectInfo) { - if (content.contentName) { - uri = UrlServletHelper.invalidCharacter(content.contentName) + if (contentAssocDataResources + && contentAssocDataResources[0].drObjectInfo + && content.contentName) { + String uri = UrlServletHelper.invalidCharacter(content.contentName) if (uri) { - serviceContext.clear() - serviceContext.dataResourceId = contentAssocDataResources.get(0).dataResourceId - serviceContext.objectInfo = "/" + uri + "-" + content.contentId + "-content" - serviceContext.userLogin = userLogin try { - serviceResult = run service: "updateDataResource", with: serviceContext + serviceResult = run service: "updateDataResource", with: [dataResourceId: contentAssocDataResources[0].dataResourceId, + objectInfo: "/${uri}'${content.contentId}-content"] if (ServiceUtil.isSuccess(serviceResult)) { contentIdTo = serviceResult.contentId } @@ -209,33 +202,33 @@ def createContentAlternativeUrl() { contentCreated = "Y" } } - } else { - contentCreated = "N" - } } } - map = success() - map.contentCreated = contentCreated - return map + return [*: success(), + contentCreated: contentCreated] } def updateEmailContent() { if (parameters.subjectDataResourceId) { - run service: "updateElectronicText", with: [dataResourceId: parameters.subjectDataResourceId, textData: parameters.subject] + run service: "updateElectronicText", with: [dataResourceId: parameters.subjectDataResourceId, + textData: parameters.subject] } if (parameters.plainBodyDataResourceId) { - run service: "updateElectronicText", with: [dataResourceId: parameters.plainBodyDataResourceId, textData: parameters.plainBody] + run service: "updateElectronicText", with: [dataResourceId: parameters.plainBodyDataResourceId, + textData: parameters.plainBody] } if (parameters.htmlBodyDataResourceId) { - run service: "updateElectronicText", with: [dataResourceId: parameters.htmlBodyDataResourceId, textData: parameters.htmlBody] + run service: "updateElectronicText", with: [dataResourceId: parameters.htmlBodyDataResourceId, + textData: parameters.htmlBody] } } + def createArticleContent() { // Post a new Content article Entry String origContentAssocTypeId = parameters.contentAssocTypeId String contentAssocTypeId = parameters.contentAssocTypeId String ownerContentId = parameters.threadContentId - if ("PUBLISH_LINK".equals(origContentAssocTypeId)) { + if ("PUBLISH_LINK" == origContentAssocTypeId) { ownerContentId = parameters.pubPtContentId } String contentIdFrom = parameters.contentIdFrom @@ -256,23 +249,21 @@ def createArticleContent() { subDescript = textData.substring(0, subStringLen) logInfo("subDescript: " + subDescript) } - if ("PUBLISH_LINK".equals(contentAssocTypeId)) { + if ("PUBLISH_LINK" == contentAssocTypeId) { ownerContentId = pubPtContentId } //determine of we need to create complex template structure or simple content structure if (parameters.uploadedFile && textData) { - Map createMain = [:] - createMain.dataResourceId = parameters.dataResourceId - createMain.contentAssocTypeId = parameters.contentAssocTypeId - createMain.contentName = parameters.contentName - createMain.description = subDescript - createMain.statusId = parameters.statusId - createMain.contentIdFrom = parameters.contentIdFrom - createMain.partyId = userLogin.partyId - createMain.ownerContentId = ownerContentId - - createMain.dataTemplateTypeId = "SCREEN_COMBINED" - createMain.mapKey = "MAIN" + Map createMain = [dataResourceId: parameters.dataResourceId, + contentAssocTypeId: parameters.contentAssocTypeId, + contentName: parameters.contentName, + description: subDescript, + statusId: parameters.statusId, + contentIdFrom: parameters.contentIdFrom, + partyId: userLogin.partyId, + ownerContentId: ownerContentId, + dataTemplateTypeId: "SCREEN_COMBINED", + mapKey: "MAIN"] Map serviceResult = run service: "createContent", with: createMain if (ServiceUtil.isSuccess(serviceResult)) { contentId = serviceResult.contentId @@ -283,20 +274,19 @@ def createArticleContent() { } if (parameters.uploadedFile) { // create image data - Map createImage = [:] - createImage.dataResourceTypeId = "LOCAL_FILE" - createImage.dataTemplateTypeId = "NONE" - createImage.mapKey = "IMAGE" - createImage.ownerContentId = ownerContentId - createImage.contentName = parameters.contentName - createImage.description = subDescript - createImage.statusId = parameters.statusId - createImage.contentAssocTypeId = contentAssocTypeId - createImage.contentIdFrom = contentIdFrom - createImage.partyId = userLogin.partyId - createImage.uploadedFile = parameters.uploadedFile - createImage._uploadedFile_fileName = parameters._uploadedFile_fileName - createImage._uploadedFile_contentType = parameters._uploadedFile_contentType + Map createImage = [dataResourceTypeId: "LOCAL_FILE", + dataTemplateTypeId: "NONE", + mapKey: "IMAGE", + ownerContentId: ownerContentId, + contentName: parameters.contentName, + description: subDescript, + statusId: parameters.statusId, + contentAssocTypeId: contentAssocTypeId, + contentIdFrom: contentIdFrom, + partyId: userLogin.partyId, + uploadedFile: parameters.uploadedFile, + _uploadedFile_fileName: parameters._uploadedFile_fileName, + _uploadedFile_contentType: parameters._uploadedFile_contentType] Map serviceResult = run service: "createContentFromUploadedFile", with: createImage String imageContentId = ServiceUtil.isSuccess(serviceResult)? serviceResult.contentId : null if (!contentId) { @@ -306,20 +296,17 @@ def createArticleContent() { } } if (textData) { - Map createText = [:] - createText.dataResourceTypeId = "ELECTRONIC_TEXT" - createText.dataTemplateTypeId = "NONE" - createText.mapKey = "MAIN" - createText.ownerContentId = ownerContentId - createText.contentName = parameters.contentName - createText.description = subDescript - createText.statusId = parameters.statusId - createText.contentAssocTypeId = contentAssocTypeId - createText.textData = textData - createText.contentIdFrom = contentIdFrom - createText.partyId = userLogin.partyId - logInfo("calling createTextContent with map: " + createText) - Map serviceResult = run service: "createTextContent", with: createText + Map serviceResult = run service: "createTextContent", with: [dataResourceTypeId: "ELECTRONIC_TEXT", + dataTemplateTypeId: "NONE", + mapKey: "MAIN", + ownerContentId: ownerContentId, + contentName: parameters.contentName, + description: subDescript, + statusId: parameters.statusId, + contentAssocTypeId: contentAssocTypeId, + textData: textData, + contentIdFrom: contentIdFrom, + partyId: userLogin.partyId] String textContentId = ServiceUtil.isSuccess(serviceResult)? serviceResult.contentId : null if (!contentId) { contentIdFrom = textContentId @@ -329,75 +316,78 @@ def createArticleContent() { } // we should have a primary (at least) contentId if (contentId && parameters.summaryData) { - Map createSummary = [:] - createSummary.dataResourceTypeId = "ELECTRONIC_TEXT" - createSummary.dataTemplateTypeId = "NONE" - createSummary.mapKey = "SUMMARY" - createSummary.ownerContentId = ownerContentId - createSummary.contentName = parameters.contentName - createSummary.description = parameters.description - createSummary.statusId = parameters.statusId - createSummary.contentAssocTypeId = contentAssocTypeId - createSummary.textData = parameters.summaryData - createSummary.contentIdFrom = contentIdFrom - createSummary.partyId = userLogin.partyId - run service: "createTextContent", with: createSummary + run service: "createTextContent", with: [dataResourceTypeId: "ELECTRONIC_TEXT", + dataTemplateTypeId: "NONE", + mapKey: "SUMMARY", + ownerContentId: ownerContentId, + contentName: parameters.contentName, + description: parameters.description, + statusId: parameters.statusId, + contentAssocTypeId: contentAssocTypeId, + textData: parameters.summaryData, + contentIdFrom: contentIdFrom, + partyId: userLogin.partyId] } // If a response, still link it to the publish point - if ("RESPONSE".equals(origContentAssocTypeId)) { - Map contentAssocMap = [:] - contentAssocMap.contentId = pubPtContentId - contentAssocMap.contentIdTo = contentId - contentAssocMap.contentAssocTypeId = "RESPONSE" - logInfo("contentAssocMap: " + contentAssocMap) - run service: "createContentAssoc", with: contentAssocMap + if ("RESPONSE" == origContentAssocTypeId) { + run service: "createContentAssoc", with: [contentId: pubPtContentId, + contentIdTo: contentId, + contentAssocTypeId: "RESPONSE"] } Map result = success() result.contentId = contentId return result } + def setContentStatus() { - Map resultMap = new HashMap() - content = from("Content").where("contentId", parameters.contentId).queryOne() + Map result = success() + GenericValue content = from("Content").where(parameters).queryOne() if (content) { - oldStatusId = content.statusId - resultMap.oldStatusId = oldStatusId - if (!oldStatusId.equals(parameters.statusId)) { - statusChange = from("StatusValidChange").where("statusId", oldStatusId, "statusIdTo", parameters.statusId).queryOne() + String oldStatusId = content.statusId + result.oldStatusId = oldStatusId + if (oldStatusId != parameters.statusId) { + GenericValue statusChange = from("StatusValidChange") + .where(statusId: oldStatusId, + statusIdTo: parameters.statusId) + .cache() + .queryOne() if (statusChange) { - content.put("statusId", parameters.statusId) + content.statusId = parameters.statusId content.store() } else { - resultMap.errorMessage = "Cannot change from " + oldStatusId + " to " + parameters.statusId - logError(resultMap.errorMessage) + result.errorMessage = "Cannot change from ${oldStatusId} to ${parameters.statusId}" + logError(result.errorMessage) } } } else { - return failure("No Content is not available in the system with content ID - " + parameters.contentId) + return failure("No Content is not available in the system with content ID - ${parameters.contentId}") } - return resultMap + return result } + def createDownloadContent() { Map serviceResult = success() - result = runService("createOtherDataResource", [dataResourceContent : parameters.file]) + Map result = runService("createOtherDataResource", [dataResourceContent: parameters.file]) if (ServiceUtil.isError(result)) return result Map serviceCtx = dispatcher.dispatchContext.makeValidContext("createContent", ModelService.IN_PARAM, parameters) serviceCtx.dataResourceId = result.dataResourceId result = runService("createContent", serviceCtx) if (ServiceUtil.isError(result)) return result serviceResult.contentId = result.contentId - return serviceResult; + return serviceResult } + def updateDownloadContent() { - Map result = success() - if(parameters.fileDataResourceId) { - result = runService("updateOtherDataResource", [dataResourceId: parameters.fileDataResourceId, dataResourceContent: parameters.file]) + if (parameters.fileDataResourceId) { + return runService("updateOtherDataResource", [dataResourceId: parameters.fileDataResourceId, + dataResourceContent: parameters.file]) } - return result + return success() } + def getDataResource() { Map result = success() - resultData = [:] + Map resultData = [:] GenericValue dataResource = from('DataResource').where(parameters).queryOne() if (dataResource) { @@ -412,49 +402,45 @@ def getDataResource() { result.resultData = resultData return result } + def getContentAndDataResource () { - resultMap = [:]; - resultDataContent = [:]; - content = from("Content").where("contentId", parameters.contentId).queryOne(); - resultDataContent.content = content; + Map result = success() + Map resultDataContent = [:] + GenericValue content = from("Content").where("contentId", parameters.contentId).queryOne() + resultDataContent.content = content if (content && content.dataResourceId) { - result = runService("getDataResource", ["dataResourceId": content.dataResourceId, "userLogin": userLogin]); - if (result) { - resultData = result.resultData; - resultDataContent.dataResource = resultData.dataResource; - resultDataContent.electronicText = resultData.electronicText; - resultDataContent.imageDataResource = resultData.imageDataResource; + Map serviceResult = run service: "getDataResource", with: [dataResourceId: content.dataResourceId] + if (serviceResult) { + Map resultData = serviceResult.resultData + resultDataContent.dataResource = resultData.dataResource + resultDataContent.electronicText = resultData.electronicText + resultDataContent.imageDataResource = resultData.imageDataResource } } - resultMap.resultData = resultDataContent; - return resultMap; + result.resultData = resultDataContent + return result } -/* create content from data resource */ -/*This method will create a skeleton content record from a data resource */ + +/* create content from data resource + This method will create a skeleton content record from a data resource */ def createContentFromDataResource() { - dataResource = from("DataResource").where("dataResourceId", parameters.dataResourceId).queryOne() - if (dataResource == null) { - return error(UtilProperties.getMessage("ContentUiLabels", "ContentDataResourceNotFound", UtilMisc.toMap("parameters.dataResourceId", parameters.dataResourceId), parameters.locale)) - } - Map createContentMap = dispatcher.getDispatchContext().makeValidContext('createContent', ModelService.IN_PARAM, parameters) - if (!(createContentMap.contentName)) { - createContentMap.contentName = dataResource.dataResourceName - } - if (!(createContentMap.contentTypeId)) { - createContentMap.contentTypeId = "DOCUMENT" - } - if (!(createContentMap.statusId)) { - createContentMap.statusId = "CTNT_INITIAL_DRAFT" + GenericValue dataResource = from("DataResource").where(parameters).queryOne() + if (! dataResource) { + return error(UtilProperties.getMessage("ContentUiLabels", "ContentDataResourceNotFound", + [dataResourceId: parameters.dataResourceId], parameters.locale)) } - if (!(createContentMap.mimeTypeId)) { - createContentMap.mimeTypeId = dataResource.mimeTypeId - } - Map result = run service: "createContent", with: createContentMap + parameters.contentName = parameters.contentName ?: dataResource.dataResourceName + parameters.contentTypeId = parameters.contentTypeId ?: "DOCUMENT" + parameters.statusId = parameters.statusId ?: "CTNT_INITIAL_DRAFT" + parameters.mimeTypeId = parameters.mimeTypeId ?: dataResource.mimeTypeId + Map result = run service: "createContent", with: parameters return result } def deleteContentKeywords() { - content = from('Content').where('contentId', contentId).queryOne() - content.removeRelated('ContentKeyword') + GenericValue content = from('Content').where(parameters).queryOne() + if (content) { + content.removeRelated('ContentKeyword') + } return success() } @@ -486,7 +472,7 @@ def indexContentKeywords() { // this service is meant to be called from an entity ECA for entities that include a contentId // if it is the Content entity itself triggering this action, then a [contentInstance] parameter // will be passed and we can save a few cycles looking that up - contentInstance = parameters.contentInstance + GenericValue contentInstance = parameters.contentInstance if (!contentInstance) { contentInstance = from("Content").where("contentId", parameters.contentId).queryOne() } diff --git a/applications/content/servicedef/services.xml b/applications/content/servicedef/services.xml index c56a627..994581c 100644 --- a/applications/content/servicedef/services.xml +++ b/applications/content/servicedef/services.xml @@ -143,7 +143,7 @@ <attribute name="htmlBody" type="String" mode="IN" optional="true" allow-html="any"/> </service> - <service name="createDownloadContent" engine="simple" location="component://content/groovyScripts/content/ContentServices.groovy" invoke="createDownloadContent"> + <service name="createDownloadContent" engine="groovy" location="component://content/groovyScripts/content/ContentServices.groovy" invoke="createDownloadContent"> <permission-service service-name="contentManagerPermission" main-action="CREATE"/> <auto-attributes mode="IN" entity-name="Content" optional="true"/> <attribute name="file" type="String" mode="IN" optional="false"> @@ -153,7 +153,7 @@ </attribute> <override name="contentId" mode="INOUT"/> </service> - <service name="updateDownloadContent" engine="simple" location="component://content/groovyScripts/content/ContentServices.groovy" invoke="updateDownloadContent"> + <service name="updateDownloadContent" engine="groovy" location="component://content/groovyScripts/content/ContentServices.groovy" invoke="updateDownloadContent"> <permission-service service-name="contentManagerPermission" main-action="UPDATE"/> <attribute name="fileDataResourceId" type="String" mode="IN" optional="true"/> <attribute name="file" type="String" mode="IN" optional="true"/>