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;
|
package org.alfresco.web.scripts;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.Serializable;
|
||||||
import java.io.Writer;
|
import java.io.Writer;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -36,6 +37,7 @@ import javax.servlet.http.HttpServletResponse;
|
|||||||
import org.alfresco.repo.content.MimetypeMap;
|
import org.alfresco.repo.content.MimetypeMap;
|
||||||
import org.alfresco.repo.jscript.ScriptNode;
|
import org.alfresco.repo.jscript.ScriptNode;
|
||||||
import org.alfresco.repo.jscript.ScriptableHashMap;
|
import org.alfresco.repo.jscript.ScriptableHashMap;
|
||||||
|
import org.alfresco.repo.jscript.ValueConverter;
|
||||||
import org.alfresco.repo.template.TemplateNode;
|
import org.alfresco.repo.template.TemplateNode;
|
||||||
import org.alfresco.service.cmr.repository.ScriptLocation;
|
import org.alfresco.service.cmr.repository.ScriptLocation;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
@@ -55,9 +57,13 @@ public class DeclarativeWebScript extends AbstractWebScript
|
|||||||
// Logger
|
// Logger
|
||||||
private static final Log logger = LogFactory.getLog(DeclarativeWebScript.class);
|
private static final Log logger = LogFactory.getLog(DeclarativeWebScript.class);
|
||||||
|
|
||||||
|
// Script Context
|
||||||
private String basePath;
|
private String basePath;
|
||||||
private ScriptLocation executeScript;
|
private ScriptLocation executeScript;
|
||||||
|
|
||||||
|
// Javascript Converter
|
||||||
|
private ValueConverter valueConverter = new ValueConverter();
|
||||||
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.alfresco.web.scripts.AbstractWebScript#init(org.alfresco.web.scripts.WebScriptRegistry)
|
* @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
|
// retrieve script model value
|
||||||
Object value = entry.getValue();
|
Object value = entry.getValue();
|
||||||
|
Object templateValue = (value instanceof Serializable) ? valueConverter.convertValueForRepo((Serializable)value) : value;
|
||||||
// convert from js to java, if required
|
templateModel.put(entry.getKey(), templateValue);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user