mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-06-30 18:15:39 +00:00
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
145 lines
4.2 KiB
Java
145 lines
4.2 KiB
Java
/*
|
|
* Copyright (C) 2005-2010 Alfresco Software Limited.
|
|
*
|
|
* This file is part of Alfresco
|
|
*
|
|
* Alfresco is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Alfresco is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
package org.alfresco.repo.rendition;
|
|
|
|
import java.io.Serializable;
|
|
|
|
import org.alfresco.repo.action.ActionImpl;
|
|
import org.alfresco.service.cmr.action.Action;
|
|
import org.alfresco.service.cmr.rendition.RenderCallback;
|
|
import org.alfresco.service.cmr.rendition.RenditionDefinition;
|
|
import org.alfresco.service.cmr.repository.NodeRef;
|
|
import org.alfresco.service.namespace.QName;
|
|
|
|
/**
|
|
* @author Nick Smith
|
|
* @author Neil McErlean
|
|
* @since 3.3
|
|
*/
|
|
public class RenditionDefinitionImpl extends ActionImpl implements RenditionDefinition
|
|
{
|
|
/**
|
|
* Serial version UID
|
|
*/
|
|
private static final long serialVersionUID = 4336392868488634875L;
|
|
|
|
public static final String RENDITION_DEFINITION_NAME = "renderingActionName";
|
|
|
|
public NodeRef renditionParent;
|
|
public QName renditionAssociationType;
|
|
private RenderCallback renderCallback;
|
|
|
|
/**
|
|
* @param id
|
|
* the action id
|
|
* @param renditionName
|
|
* a unique name for the rendering action.
|
|
* @param renderingEngineName
|
|
* the name of the rendering action definition
|
|
*/
|
|
public RenditionDefinitionImpl(String id, QName renditionName, String renderingEngineName)
|
|
{
|
|
super(null, id, renderingEngineName);
|
|
setParameterValue(RENDITION_DEFINITION_NAME, renditionName);
|
|
}
|
|
|
|
public RenditionDefinitionImpl(Action action)
|
|
{
|
|
super(action);
|
|
}
|
|
|
|
public RenditionDefinitionImpl(Action action, String renderingEngineName)
|
|
{
|
|
super(action, renderingEngineName);
|
|
}
|
|
|
|
/*
|
|
* @see
|
|
* org.alfresco.service.cmr.rendition.RenditionDefinition#getRenditionName()
|
|
*/
|
|
public QName getRenditionName()
|
|
{
|
|
Serializable parameterValue = getParameterValue(RENDITION_DEFINITION_NAME);
|
|
return (QName) parameterValue;
|
|
}
|
|
|
|
/*
|
|
* @see
|
|
* org.alfresco.service.cmr.rendition.RenditionDefinition#getRenditionParent
|
|
* ()
|
|
*/
|
|
public NodeRef getRenditionParent()
|
|
{
|
|
return this.renditionParent;
|
|
}
|
|
|
|
/*
|
|
* @see
|
|
* org.alfresco.service.cmr.rendition.RenditionDefinition#setRenditionParent
|
|
* (org.alfresco.service.cmr.repository.NodeRef)
|
|
*/
|
|
public void setRenditionParent(NodeRef renditionParent)
|
|
{
|
|
this.renditionParent = renditionParent;
|
|
}
|
|
|
|
/*
|
|
* @seeorg.alfresco.service.cmr.rendition.RenditionDefinition#
|
|
* getRenditionAssociationType()
|
|
*/
|
|
public QName getRenditionAssociationType()
|
|
{
|
|
return this.renditionAssociationType;
|
|
}
|
|
|
|
/*
|
|
* @seeorg.alfresco.service.cmr.rendition.RenditionDefinition#
|
|
* setRenditionAssociationType(org.alfresco.service.namespace.QName)
|
|
*/
|
|
public void setRenditionAssociationType(QName renditionAssociationType)
|
|
{
|
|
this.renditionAssociationType = renditionAssociationType;
|
|
}
|
|
|
|
/*
|
|
* (non-Javadoc)
|
|
*
|
|
* @see
|
|
* org.alfresco.service.cmr.rendition.RenditionDefinition#setCallback(org
|
|
* .alfresco.service.cmr.rendition.RenderCallback)
|
|
*/
|
|
public void setCallback(RenderCallback callback)
|
|
{
|
|
this.renderCallback = callback;
|
|
}
|
|
|
|
/*
|
|
* (non-Javadoc)
|
|
*
|
|
* @see
|
|
* org.alfresco.service.cmr.rendition.RenditionDefinition#setCallback(org
|
|
* .alfresco.service.cmr.rendition.RenderCallback)
|
|
*/
|
|
public RenderCallback getCallback()
|
|
{
|
|
return this.renderCallback;
|
|
}
|
|
}
|