mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
. Fix to Alfresco JavaScript to correctly convert back multi-value list properties that have not been modified
. Change to use of Wrapper interface when returning Java values from JavaScript . Addition of final 1.4 icons from Linton for Dashboard and User Options screens git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@3492 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -945,35 +945,46 @@ public final class Node implements Serializable, Scopeable
|
|||||||
|
|
||||||
if (value instanceof NativeArray)
|
if (value instanceof NativeArray)
|
||||||
{
|
{
|
||||||
// convert JavaScript array of values to a List of Serializable objects
|
// convert JavaScript array of values to a List of Serializable objects
|
||||||
Object[] propIds = values.getIds();
|
Object[] propIds = values.getIds();
|
||||||
List<Serializable> propValues = new ArrayList<Serializable>(propIds.length);
|
List<Serializable> propValues = new ArrayList<Serializable>(propIds.length);
|
||||||
for (int i=0; i<propIds.length; i++)
|
for (int i=0; i<propIds.length; i++)
|
||||||
{
|
{
|
||||||
// work on each key in turn
|
// work on each key in turn
|
||||||
Object propId = propIds[i];
|
Object propId = propIds[i];
|
||||||
|
|
||||||
// we are only interested in keys that indicate a list of values
|
// we are only interested in keys that indicate a list of values
|
||||||
if (propId instanceof Integer)
|
if (propId instanceof Integer)
|
||||||
{
|
{
|
||||||
// get the value out for the specified key
|
// get the value out for the specified key
|
||||||
Serializable val = (Serializable)values.get((Integer)propId, values);
|
Serializable val = (Serializable)values.get((Integer)propId, values);
|
||||||
// recursively call this method to convert the value
|
// recursively call this method to convert the value
|
||||||
propValues.add(convertValueForRepo(val));
|
propValues.add(convertValueForRepo(val));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
value = (Serializable)propValues;
|
value = (Serializable)propValues;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// TODO: add code here to use the dictionary and convert to correct value type
|
// TODO: add code here to use the dictionary and convert to correct value type
|
||||||
Object javaObj = Context.jsToJava(value, Date.class);
|
Object javaObj = Context.jsToJava(value, Date.class);
|
||||||
if (javaObj instanceof Date)
|
if (javaObj instanceof Serializable)
|
||||||
{
|
{
|
||||||
value = (Date)javaObj;
|
value = (Serializable)javaObj;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (value instanceof Serializable[])
|
||||||
|
{
|
||||||
|
// convert back a list of Java values
|
||||||
|
Serializable[] array = (Serializable[])value;
|
||||||
|
ArrayList<Serializable> list = new ArrayList<Serializable>(array.length);
|
||||||
|
for (int i=0; i<array.length; i++)
|
||||||
|
{
|
||||||
|
list.add(convertValueForRepo(array[i]));
|
||||||
|
}
|
||||||
|
value = list;
|
||||||
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -37,9 +37,9 @@ import org.alfresco.service.cmr.repository.TemplateImageResolver;
|
|||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.mozilla.javascript.Context;
|
import org.mozilla.javascript.Context;
|
||||||
import org.mozilla.javascript.NativeJavaObject;
|
|
||||||
import org.mozilla.javascript.Scriptable;
|
import org.mozilla.javascript.Scriptable;
|
||||||
import org.mozilla.javascript.ScriptableObject;
|
import org.mozilla.javascript.ScriptableObject;
|
||||||
|
import org.mozilla.javascript.Wrapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of the ScriptService using the Rhino JavaScript engine.
|
* Implementation of the ScriptService using the Rhino JavaScript engine.
|
||||||
@@ -250,9 +250,9 @@ public class RhinoScriptService implements ScriptService
|
|||||||
Object result = cx.evaluateReader(scope, reader, "AlfrescoScript", 1, null);
|
Object result = cx.evaluateReader(scope, reader, "AlfrescoScript", 1, null);
|
||||||
|
|
||||||
// extract java object result if wrapped by rhinoscript
|
// extract java object result if wrapped by rhinoscript
|
||||||
if (result != null && result instanceof NativeJavaObject)
|
if (result instanceof Wrapper)
|
||||||
{
|
{
|
||||||
result = Context.jsToJava(result, Object.class);
|
result = ((Wrapper)result).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
Reference in New Issue
Block a user