mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merge from V3.3 to HEAD
20069 Fix for unreported issue where the Rendition Service's JavaScript API cannot be used to execute ad hoc rendition definitions. Rendition Definitions can be created and executed programmatically. This works fine via the Java Foundation API, but is broken in the JavaScript API. The rendition nodes are not correctly created for ad hoc rendition definitions created in JavaScript. Note that the built-in rendition definitions work fine in JavaScript. This fix: - ScriptRenditionDefinition now extends ScriptAction in order to reuse its parameter handling and execution code. - ScriptRenditionDefinition now mimics ScriptAction so you can call renditionDef.execute(testSourceNode); in JavaScript. - more test coverage in the test_renditionService.js to reproduce the issue. - adds debug logging in various places in the rendition service. - changes ScriptAction to be a non-final class so that it can be extended by ScriptRenditionDefinition. - fixes some fragile asserts in test code. - changes a few fields to protected visibility and provides an extension point so that the rendition service can execute its "actions" as renditions rather than simple actions. - trivial. tidied up some unused imports in ScriptNode. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@20070 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -41,7 +41,7 @@ import org.mozilla.javascript.Wrapper;
|
|||||||
*
|
*
|
||||||
* @author davidc
|
* @author davidc
|
||||||
*/
|
*/
|
||||||
public final class ScriptAction implements Serializable, Scopeable
|
public class ScriptAction implements Serializable, Scopeable
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 5794161358406531996L;
|
private static final long serialVersionUID = 5794161358406531996L;
|
||||||
|
|
||||||
@@ -52,11 +52,11 @@ public final class ScriptAction implements Serializable, Scopeable
|
|||||||
private ActionValueConverter converter;
|
private ActionValueConverter converter;
|
||||||
|
|
||||||
/** Action state */
|
/** Action state */
|
||||||
private Action action;
|
protected Action action;
|
||||||
|
|
||||||
private ActionDefinition actionDef;
|
protected ActionDefinition actionDef;
|
||||||
|
|
||||||
private ServiceRegistry services;
|
protected ServiceRegistry services;
|
||||||
private ActionService actionService;
|
private ActionService actionService;
|
||||||
private NamespaceService namespaceService;
|
private NamespaceService namespaceService;
|
||||||
private TransactionService transactionService;
|
private TransactionService transactionService;
|
||||||
@@ -145,7 +145,7 @@ public final class ScriptAction implements Serializable, Scopeable
|
|||||||
actionParams.put(name, value);
|
actionParams.put(name, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
actionService.executeAction(action, node.getNodeRef());
|
executeImpl(node);
|
||||||
|
|
||||||
// Parameters may have been updated by action execution, so reset cache
|
// Parameters may have been updated by action execution, so reset cache
|
||||||
this.parameters = null;
|
this.parameters = null;
|
||||||
@@ -153,6 +153,11 @@ public final class ScriptAction implements Serializable, Scopeable
|
|||||||
// Reset the actioned upon node
|
// Reset the actioned upon node
|
||||||
node.reset();
|
node.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void executeImpl(ScriptNode node)
|
||||||
|
{
|
||||||
|
actionService.executeAction(action, node.getNodeRef());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute action, optionally starting a new, potentially read-only transaction.
|
* Execute action, optionally starting a new, potentially read-only transaction.
|
||||||
@@ -184,7 +189,7 @@ public final class ScriptAction implements Serializable, Scopeable
|
|||||||
{
|
{
|
||||||
public Object execute() throws Throwable
|
public Object execute() throws Throwable
|
||||||
{
|
{
|
||||||
actionService.executeAction(action, node.getNodeRef());
|
executeImpl(node);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@@ -28,7 +28,6 @@ import java.text.MessageFormat;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
@@ -54,10 +53,8 @@ import org.alfresco.repo.workflow.jscript.JscriptWorkflowInstance;
|
|||||||
import org.alfresco.scripts.ScriptException;
|
import org.alfresco.scripts.ScriptException;
|
||||||
import org.alfresco.service.ServiceRegistry;
|
import org.alfresco.service.ServiceRegistry;
|
||||||
import org.alfresco.service.cmr.action.Action;
|
import org.alfresco.service.cmr.action.Action;
|
||||||
import org.alfresco.service.cmr.dictionary.ClassDefinition;
|
|
||||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||||
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
|
|
||||||
import org.alfresco.service.cmr.lock.LockStatus;
|
import org.alfresco.service.cmr.lock.LockStatus;
|
||||||
import org.alfresco.service.cmr.model.FileInfo;
|
import org.alfresco.service.cmr.model.FileInfo;
|
||||||
import org.alfresco.service.cmr.model.FileNotFoundException;
|
import org.alfresco.service.cmr.model.FileNotFoundException;
|
||||||
@@ -86,10 +83,7 @@ import org.alfresco.service.namespace.NamespacePrefixResolverProvider;
|
|||||||
import org.alfresco.service.namespace.NamespaceService;
|
import org.alfresco.service.namespace.NamespaceService;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.alfresco.service.namespace.RegexQNamePattern;
|
import org.alfresco.service.namespace.RegexQNamePattern;
|
||||||
import org.springframework.extensions.surf.util.Content;
|
|
||||||
import org.alfresco.util.GUID;
|
import org.alfresco.util.GUID;
|
||||||
import org.springframework.extensions.surf.util.ParameterCheck;
|
|
||||||
import org.springframework.extensions.surf.util.URLEncoder;
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
@@ -99,6 +93,9 @@ import org.mozilla.javascript.Scriptable;
|
|||||||
import org.mozilla.javascript.ScriptableObject;
|
import org.mozilla.javascript.ScriptableObject;
|
||||||
import org.mozilla.javascript.UniqueTag;
|
import org.mozilla.javascript.UniqueTag;
|
||||||
import org.mozilla.javascript.Wrapper;
|
import org.mozilla.javascript.Wrapper;
|
||||||
|
import org.springframework.extensions.surf.util.Content;
|
||||||
|
import org.springframework.extensions.surf.util.ParameterCheck;
|
||||||
|
import org.springframework.extensions.surf.util.URLEncoder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Script Node class implementation, specific for use by ScriptService as part of the object model.
|
* Script Node class implementation, specific for use by ScriptService as part of the object model.
|
||||||
|
@@ -162,6 +162,18 @@ public class PerformRenditionActionExecuter extends ActionExecuterAbstractBase
|
|||||||
StringBuilder msg = new StringBuilder();
|
StringBuilder msg = new StringBuilder();
|
||||||
msg.append("Rendering node ").append(actionedUponNodeRef).append(" with rendition definition ").append(
|
msg.append("Rendering node ").append(actionedUponNodeRef).append(" with rendition definition ").append(
|
||||||
renditionDefinition.getRenditionName());
|
renditionDefinition.getRenditionName());
|
||||||
|
msg.append("\n").append(" parameters:").append("\n");
|
||||||
|
if (renditionDefinition.getParameterValues().isEmpty() == false)
|
||||||
|
{
|
||||||
|
for (String paramKey : renditionDefinition.getParameterValues().keySet())
|
||||||
|
{
|
||||||
|
msg.append(" ").append(paramKey).append("=").append(renditionDefinition.getParameterValue(paramKey)).append("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msg.append(" [None]");
|
||||||
|
}
|
||||||
log.debug(msg.toString());
|
log.debug(msg.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -331,10 +343,19 @@ public class PerformRenditionActionExecuter extends ActionExecuterAbstractBase
|
|||||||
{
|
{
|
||||||
QName renditionName=renditionDefinition.getRenditionName();
|
QName renditionName=renditionDefinition.getRenditionName();
|
||||||
ChildAssociationRef renditionAssoc = renditionService.getRenditionByName(sourceNode, renditionName);
|
ChildAssociationRef renditionAssoc = renditionService.getRenditionByName(sourceNode, renditionName);
|
||||||
if(renditionAssoc ==null)
|
|
||||||
return null;
|
NodeRef result = (renditionAssoc == null) ? null : renditionAssoc.getChildRef();
|
||||||
else
|
if (log.isDebugEnabled())
|
||||||
return renditionAssoc.getChildRef();
|
{
|
||||||
|
StringBuilder msg = new StringBuilder();
|
||||||
|
msg.append("Existing rendition with name ")
|
||||||
|
.append(renditionName)
|
||||||
|
.append(": ")
|
||||||
|
.append(result);
|
||||||
|
log.debug(msg.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void manageRenditionAspects(NodeRef sourceNode, ChildAssociationRef renditionParentAssoc)
|
private void manageRenditionAspects(NodeRef sourceNode, ChildAssociationRef renditionParentAssoc)
|
||||||
|
@@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
package org.alfresco.repo.rendition;
|
package org.alfresco.repo.rendition;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
import org.alfresco.repo.action.ActionImpl;
|
import org.alfresco.repo.action.ActionImpl;
|
||||||
import org.alfresco.service.cmr.action.Action;
|
import org.alfresco.service.cmr.action.Action;
|
||||||
import org.alfresco.service.cmr.rendition.RenderCallback;
|
import org.alfresco.service.cmr.rendition.RenderCallback;
|
||||||
@@ -38,7 +40,7 @@ public class RenditionDefinitionImpl extends ActionImpl implements RenditionDefi
|
|||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 4336392868488634875L;
|
private static final long serialVersionUID = 4336392868488634875L;
|
||||||
|
|
||||||
protected static final String RENDITION_DEFINITION_NAME = "renderingActionName";
|
public static final String RENDITION_DEFINITION_NAME = "renderingActionName";
|
||||||
|
|
||||||
public NodeRef renditionParent;
|
public NodeRef renditionParent;
|
||||||
public QName renditionAssociationType;
|
public QName renditionAssociationType;
|
||||||
@@ -74,7 +76,8 @@ public class RenditionDefinitionImpl extends ActionImpl implements RenditionDefi
|
|||||||
*/
|
*/
|
||||||
public QName getRenditionName()
|
public QName getRenditionName()
|
||||||
{
|
{
|
||||||
return (QName) getParameterValue(RENDITION_DEFINITION_NAME);
|
Serializable parameterValue = getParameterValue(RENDITION_DEFINITION_NAME);
|
||||||
|
return (QName) parameterValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -120,7 +120,6 @@ public abstract class AbstractRenderingEngine extends ActionExecuterAbstractBase
|
|||||||
protected NodeService nodeService;
|
protected NodeService nodeService;
|
||||||
|
|
||||||
/* Parameter names common to all Rendering Actions */
|
/* Parameter names common to all Rendering Actions */
|
||||||
//TODO javadoc these
|
|
||||||
/**
|
/**
|
||||||
* This optional {@link String} parameter specifies the location of a
|
* This optional {@link String} parameter specifies the location of a
|
||||||
* classpath resource which can be used as a placeholder while a rendition
|
* classpath resource which can be used as a placeholder while a rendition
|
||||||
@@ -297,6 +296,15 @@ public abstract class AbstractRenderingEngine extends ActionExecuterAbstractBase
|
|||||||
@Override
|
@Override
|
||||||
protected void executeImpl(Action action, NodeRef sourceNode)
|
protected void executeImpl(Action action, NodeRef sourceNode)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
StringBuilder msg = new StringBuilder();
|
||||||
|
msg.append("Executing rendering engine; name:")
|
||||||
|
.append(this.name).append(", class:")
|
||||||
|
.append(this.getClass().getName());
|
||||||
|
logger.debug(msg.toString());
|
||||||
|
}
|
||||||
|
|
||||||
checkParameterValues(action);
|
checkParameterValues(action);
|
||||||
RenditionDefinition renditionDefinition = checkActionIsRenditionDefinition(action);
|
RenditionDefinition renditionDefinition = checkActionIsRenditionDefinition(action);
|
||||||
checkSourceNodeExists(sourceNode);
|
checkSourceNodeExists(sourceNode);
|
||||||
@@ -413,6 +421,10 @@ public abstract class AbstractRenderingEngine extends ActionExecuterAbstractBase
|
|||||||
protected Collection<ParameterDefinition> getParameterDefinitions()
|
protected Collection<ParameterDefinition> getParameterDefinitions()
|
||||||
{
|
{
|
||||||
List<ParameterDefinition> paramList = new ArrayList<ParameterDefinition>();
|
List<ParameterDefinition> paramList = new ArrayList<ParameterDefinition>();
|
||||||
|
|
||||||
|
paramList.add(new ParameterDefinitionImpl(RenditionDefinitionImpl.RENDITION_DEFINITION_NAME, DataTypeDefinition.QNAME, true,
|
||||||
|
getParamDisplayLabel(RenditionDefinitionImpl.RENDITION_DEFINITION_NAME)));
|
||||||
|
|
||||||
paramList.add(new ParameterDefinitionImpl(PARAM_RUN_AS, DataTypeDefinition.TEXT, false,
|
paramList.add(new ParameterDefinitionImpl(PARAM_RUN_AS, DataTypeDefinition.TEXT, false,
|
||||||
getParamDisplayLabel(PARAM_RUN_AS)));
|
getParamDisplayLabel(PARAM_RUN_AS)));
|
||||||
|
|
||||||
|
@@ -18,10 +18,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.repo.rendition.script;
|
package org.alfresco.repo.rendition.script;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.alfresco.repo.jscript.ScriptAction;
|
import org.alfresco.repo.jscript.ScriptAction;
|
||||||
|
import org.alfresco.repo.jscript.ScriptNode;
|
||||||
import org.alfresco.service.ServiceRegistry;
|
import org.alfresco.service.ServiceRegistry;
|
||||||
import org.alfresco.service.cmr.rendition.RenderingEngineDefinition;
|
import org.alfresco.service.cmr.rendition.RenderingEngineDefinition;
|
||||||
import org.alfresco.service.cmr.rendition.RenditionDefinition;
|
import org.alfresco.service.cmr.rendition.RenditionDefinition;
|
||||||
@@ -35,23 +33,14 @@ import org.mozilla.javascript.Scriptable;
|
|||||||
* @author Neil McErlean
|
* @author Neil McErlean
|
||||||
* @see org.alfresco.service.cmr.rendition.RenditionDefinition
|
* @see org.alfresco.service.cmr.rendition.RenditionDefinition
|
||||||
*/
|
*/
|
||||||
public final class ScriptRenditionDefinition implements Serializable
|
public final class ScriptRenditionDefinition extends ScriptAction
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 8132935577891455490L;
|
private static final long serialVersionUID = 8132935577891455490L;
|
||||||
private final RenderingEngineDefinition engineDefinition;
|
|
||||||
private final RenditionDefinition renditionDefinition;
|
|
||||||
private final ServiceRegistry serviceRegistry;
|
|
||||||
|
|
||||||
private final ScriptAction scriptAction;
|
|
||||||
|
|
||||||
public ScriptRenditionDefinition(ServiceRegistry serviceRegistry, Scriptable scope,
|
public ScriptRenditionDefinition(ServiceRegistry serviceRegistry, Scriptable scope,
|
||||||
RenderingEngineDefinition engineDefinition, RenditionDefinition renditionDefinition)
|
RenderingEngineDefinition engineDefinition, RenditionDefinition renditionDefinition)
|
||||||
{
|
{
|
||||||
this.serviceRegistry = serviceRegistry;
|
super(serviceRegistry, renditionDefinition, engineDefinition);
|
||||||
this.engineDefinition = engineDefinition;
|
|
||||||
this.renditionDefinition = renditionDefinition;
|
|
||||||
|
|
||||||
this.scriptAction = new ScriptAction(serviceRegistry, renditionDefinition, engineDefinition);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -61,18 +50,17 @@ public final class ScriptRenditionDefinition implements Serializable
|
|||||||
*/
|
*/
|
||||||
public String getRenditionName()
|
public String getRenditionName()
|
||||||
{
|
{
|
||||||
QName qname = this.renditionDefinition.getRenditionName();
|
QName qname = getRenditionDefinition().getRenditionName();
|
||||||
return qname.toPrefixString(serviceRegistry.getNamespaceService());
|
return qname.toPrefixString(services.getNamespaceService());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the name of the Rendering Engine used by this definition.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public String getRenderingEngineName()
|
public String getRenderingEngineName()
|
||||||
{
|
{
|
||||||
return this.engineDefinition.getName();
|
return getRenderingEngineDefinition().getName();
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, Serializable> getParameters()
|
|
||||||
{
|
|
||||||
return this.scriptAction.getParameters();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -87,6 +75,18 @@ public final class ScriptRenditionDefinition implements Serializable
|
|||||||
|
|
||||||
RenditionDefinition getRenditionDefinition()
|
RenditionDefinition getRenditionDefinition()
|
||||||
{
|
{
|
||||||
return this.renditionDefinition;
|
return (RenditionDefinition)action;
|
||||||
|
}
|
||||||
|
|
||||||
|
RenderingEngineDefinition getRenderingEngineDefinition()
|
||||||
|
{
|
||||||
|
return (RenderingEngineDefinition)actionDef;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void executeImpl(ScriptNode node)
|
||||||
|
{
|
||||||
|
RenditionDefinition renditionDefinition = getRenditionDefinition();
|
||||||
|
this.services.getRenditionService().render(node.getNodeRef(), renditionDefinition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -31,8 +31,6 @@ import org.alfresco.service.cmr.repository.NodeRef;
|
|||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.mozilla.javascript.Context;
|
|
||||||
import org.mozilla.javascript.Scriptable;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Script object representing the rendition service.
|
* Script object representing the rendition service.
|
||||||
@@ -78,7 +76,16 @@ public class ScriptRenditionService extends BaseScopableProcessorExtension
|
|||||||
*/
|
*/
|
||||||
public ScriptRenditionDefinition createRenditionDefinition(String renditionName, String renderingEngineName)
|
public ScriptRenditionDefinition createRenditionDefinition(String renditionName, String renderingEngineName)
|
||||||
{
|
{
|
||||||
QName renditionQName = createQName(renditionName);
|
QName renditionQName = createQName(renditionName);
|
||||||
|
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
StringBuilder msg = new StringBuilder();
|
||||||
|
msg.append("Creating ScriptRenditionDefinition [")
|
||||||
|
.append(renditionName).append(", ")
|
||||||
|
.append(renderingEngineName).append("]");
|
||||||
|
logger.debug(msg.toString());
|
||||||
|
}
|
||||||
|
|
||||||
RenderingEngineDefinition engineDefinition = renditionService.getRenderingEngineDefinition(renderingEngineName);
|
RenderingEngineDefinition engineDefinition = renditionService.getRenderingEngineDefinition(renderingEngineName);
|
||||||
RenditionDefinition rendDef = renditionService.createRenditionDefinition(renditionQName, renderingEngineName);
|
RenditionDefinition rendDef = renditionService.createRenditionDefinition(renditionQName, renderingEngineName);
|
||||||
@@ -123,9 +130,28 @@ public class ScriptRenditionService extends BaseScopableProcessorExtension
|
|||||||
|
|
||||||
public ScriptNode render(ScriptNode sourceNode, ScriptRenditionDefinition renditionDefQName)
|
public ScriptNode render(ScriptNode sourceNode, ScriptRenditionDefinition renditionDefQName)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
StringBuilder msg = new StringBuilder();
|
||||||
|
msg.append("Rendering source node '")
|
||||||
|
.append(sourceNode)
|
||||||
|
.append("' with renditionDefQName '").append(renditionDefQName)
|
||||||
|
.append("'");
|
||||||
|
logger.debug(msg.toString());
|
||||||
|
}
|
||||||
|
|
||||||
ChildAssociationRef chAssRef = this.renditionService.render(sourceNode.getNodeRef(),
|
ChildAssociationRef chAssRef = this.renditionService.render(sourceNode.getNodeRef(),
|
||||||
renditionDefQName.getRenditionDefinition());
|
renditionDefQName.getRenditionDefinition());
|
||||||
return new ScriptNode(chAssRef.getChildRef(), serviceRegistry);
|
|
||||||
|
NodeRef renditionNode = chAssRef.getChildRef();
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
StringBuilder msg = new StringBuilder();
|
||||||
|
msg.append("Rendition: ").append(renditionNode);
|
||||||
|
logger.debug(msg.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ScriptNode(renditionNode, serviceRegistry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -47,6 +47,7 @@ function testCreateRenditionDefinitionAndRender()
|
|||||||
// As long as we don't save this renditionDefinition, there should be no need to
|
// As long as we don't save this renditionDefinition, there should be no need to
|
||||||
// give it a name which is unique across multiple test executions.
|
// give it a name which is unique across multiple test executions.
|
||||||
var renditionDefName = "cm:adHocRenditionDef";
|
var renditionDefName = "cm:adHocRenditionDef";
|
||||||
|
var renditionDefNameLong = "{http://www.alfresco.org/model/content/1.0}adHocRenditionDef";
|
||||||
var renderingEngineName = "imageRenderingEngine";
|
var renderingEngineName = "imageRenderingEngine";
|
||||||
|
|
||||||
var renditionDef = renditionService.createRenditionDefinition(renditionDefName, renderingEngineName);
|
var renditionDef = renditionService.createRenditionDefinition(renditionDefName, renderingEngineName);
|
||||||
@@ -55,20 +56,42 @@ function testCreateRenditionDefinitionAndRender()
|
|||||||
test.assertEquals(renditionDefName, renditionDef.renditionName);
|
test.assertEquals(renditionDefName, renditionDef.renditionName);
|
||||||
test.assertEquals(renderingEngineName, renditionDef.renderingEngineName);
|
test.assertEquals(renderingEngineName, renditionDef.renderingEngineName);
|
||||||
|
|
||||||
|
|
||||||
// Set some parameters.
|
// Set some parameters.
|
||||||
renditionDef.parameters['rendition-nodetype'] = "cm:content";
|
renditionDef.parameters["rendition-nodetype"] = "cm:content";
|
||||||
renditionDef.parameters['xsize'] = 99;
|
renditionDef.parameters["xsize"] = 99;
|
||||||
|
|
||||||
// Read them back to check
|
// Read them back to check
|
||||||
|
test.assertNotNull(renditionDef.parameters, "renditionDef.parameters was null");
|
||||||
test.assertEquals("cm:content", renditionDef.parameters['rendition-nodetype']);
|
test.assertEquals("cm:content", renditionDef.parameters['rendition-nodetype']);
|
||||||
test.assertEquals(99, renditionDef.parameters['xsize']);
|
test.assertEquals(99, renditionDef.parameters['xsize']);
|
||||||
|
|
||||||
// Now execute this rendition definition
|
// Now execute this rendition definition
|
||||||
var rendition = renditionService.render(testSourceNode, renditionDef);
|
renditionDef.execute(testSourceNode);
|
||||||
|
|
||||||
|
// Alternate, equivalent call:
|
||||||
|
// renditionService.render(testSourceNode, renditionDef);
|
||||||
|
|
||||||
|
var children = testSourceNode.children;
|
||||||
|
|
||||||
|
// Find the child that is the ad hoc rendition
|
||||||
|
var rendition;
|
||||||
|
for (var i = 0; i < children.length; i++)
|
||||||
|
{
|
||||||
|
var nextChild = children[i];
|
||||||
|
var assocName = nextChild.primaryParentAssoc.getQName();
|
||||||
|
if (assocName == renditionDefNameLong)
|
||||||
|
{
|
||||||
|
rendition = nextChild;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
test.assertNotNull(rendition, "rendition was null.");
|
test.assertNotNull(rendition, "rendition was null.");
|
||||||
|
|
||||||
test.assertTrue(rendition.hasAspect("rn:hiddenRendition"));
|
test.assertTrue(rendition.hasAspect("rn:hiddenRendition"));
|
||||||
|
test.assertEquals("{http://www.alfresco.org/model/content/1.0}content", rendition.type);
|
||||||
|
|
||||||
|
test.assertNotNull(rendition.mimetype, "rendition mimetype was null.");
|
||||||
|
test.assertEquals("image/png", rendition.mimetype);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execute tests
|
// Execute tests
|
||||||
|
Reference in New Issue
Block a user