mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
- Refinements to Javascript/Freemarker Node conversions
- Removed hard-coded conversions from Web Scripts - example category search web script aligned with documentation git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5940 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
package org.alfresco.web.scripts;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.io.Writer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@@ -36,6 +37,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||
import org.alfresco.repo.content.MimetypeMap;
|
||||
import org.alfresco.repo.jscript.ScriptNode;
|
||||
import org.alfresco.repo.jscript.ScriptableHashMap;
|
||||
import org.alfresco.repo.jscript.ValueConverter;
|
||||
import org.alfresco.repo.template.TemplateNode;
|
||||
import org.alfresco.service.cmr.repository.ScriptLocation;
|
||||
import org.apache.commons.logging.Log;
|
||||
@@ -55,9 +57,13 @@ public class DeclarativeWebScript extends AbstractWebScript
|
||||
// Logger
|
||||
private static final Log logger = LogFactory.getLog(DeclarativeWebScript.class);
|
||||
|
||||
// Script Context
|
||||
private String basePath;
|
||||
private ScriptLocation executeScript;
|
||||
|
||||
// Javascript Converter
|
||||
private ValueConverter valueConverter = new ValueConverter();
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.web.scripts.AbstractWebScript#init(org.alfresco.web.scripts.WebScriptRegistry)
|
||||
@@ -199,51 +205,8 @@ public class DeclarativeWebScript extends AbstractWebScript
|
||||
{
|
||||
// retrieve script model value
|
||||
Object value = entry.getValue();
|
||||
|
||||
// convert from js to java, if required
|
||||
if (value instanceof Wrapper)
|
||||
{
|
||||
value = ((Wrapper)value).unwrap();
|
||||
}
|
||||
else if (value instanceof NativeArray)
|
||||
{
|
||||
value = Context.jsToJava(value, Object[].class);
|
||||
}
|
||||
|
||||
// convert script node to template node, if required
|
||||
if (value instanceof ScriptNode)
|
||||
{
|
||||
value = new TemplateNode(((ScriptNode)value).getNodeRef(), getServiceRegistry(), getWebScriptRegistry().getTemplateImageResolver());
|
||||
}
|
||||
else if (value instanceof Collection)
|
||||
{
|
||||
Collection coll = (Collection)value;
|
||||
Collection templateColl = new ArrayList(coll.size());
|
||||
for (Object object : coll)
|
||||
{
|
||||
if (value instanceof ScriptNode)
|
||||
{
|
||||
templateColl.add(new TemplateNode(((ScriptNode)object).getNodeRef(), getServiceRegistry(), getWebScriptRegistry().getTemplateImageResolver()));
|
||||
}
|
||||
else
|
||||
{
|
||||
templateColl.add(object);
|
||||
}
|
||||
}
|
||||
value = templateColl;
|
||||
}
|
||||
else if (value instanceof ScriptNode[])
|
||||
{
|
||||
ScriptNode[] nodes = (ScriptNode[])value;
|
||||
TemplateNode[] templateNodes = new TemplateNode[nodes.length];
|
||||
int i = 0;
|
||||
for (ScriptNode node : nodes)
|
||||
{
|
||||
templateNodes[i++] = new TemplateNode(node.getNodeRef(), getServiceRegistry(), getWebScriptRegistry().getTemplateImageResolver());
|
||||
}
|
||||
value = templateNodes;
|
||||
}
|
||||
templateModel.put(entry.getKey(), value);
|
||||
Object templateValue = (value instanceof Serializable) ? valueConverter.convertValueForRepo((Serializable)value) : value;
|
||||
templateModel.put(entry.getKey(), templateValue);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user