mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Changed ScriptForm.getFieldDefinitionData return type to integer-keyed Map
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13718 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -64,6 +64,7 @@ public class ScriptFieldDefinition extends ScriptableObject
|
||||
*
|
||||
* @see org.mozilla.javascript.Scriptable#get(String, Scriptable)
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public Object get(String name, Scriptable start)
|
||||
{
|
||||
@@ -81,7 +82,6 @@ public class ScriptFieldDefinition extends ScriptableObject
|
||||
return NOT_FOUND;
|
||||
}
|
||||
|
||||
//TODO Value conversion.
|
||||
if (result instanceof List)
|
||||
{
|
||||
return ((List)result).toArray();
|
||||
@@ -92,6 +92,7 @@ public class ScriptFieldDefinition extends ScriptableObject
|
||||
/**
|
||||
* @see org.mozilla.javascript.Scriptable#getClassName()
|
||||
*/
|
||||
@Override
|
||||
public String getClassName()
|
||||
{
|
||||
return this.getClass().getSimpleName();
|
||||
@@ -100,6 +101,7 @@ public class ScriptFieldDefinition extends ScriptableObject
|
||||
/**
|
||||
* @see org.mozilla.javascript.Scriptable#has(String, Scriptable)
|
||||
*/
|
||||
@Override
|
||||
public boolean has(String name, Scriptable start)
|
||||
{
|
||||
if (super.has(name, start))
|
||||
|
@@ -28,6 +28,7 @@ import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.repo.forms.FieldDefinition;
|
||||
@@ -76,7 +77,7 @@ public class ScriptForm implements Serializable
|
||||
|
||||
public FieldDefinition[] getFieldDefinitions()
|
||||
{
|
||||
Collection<FieldDefinition> fieldDefs = form.getFieldDefinitions();
|
||||
List<FieldDefinition> fieldDefs = form.getFieldDefinitions();
|
||||
if (fieldDefs == null)
|
||||
{
|
||||
fieldDefs = Collections.emptyList();
|
||||
@@ -84,14 +85,19 @@ public class ScriptForm implements Serializable
|
||||
return fieldDefs.toArray(new FieldDefinition[fieldDefs.size()]);
|
||||
}
|
||||
|
||||
public ScriptableHashMap<String, ScriptFieldDefinition> getFieldDefinitionData()
|
||||
public ScriptableHashMap<Integer, ScriptFieldDefinition> getFieldDefinitionData()
|
||||
{
|
||||
ScriptableHashMap<String, ScriptFieldDefinition> result =
|
||||
new ScriptableHashMap<String, ScriptFieldDefinition>();
|
||||
Collection<FieldDefinition> fieldDefs = form.getFieldDefinitions();
|
||||
ScriptableHashMap<Integer, ScriptFieldDefinition> result =
|
||||
new ScriptableHashMap<Integer, ScriptFieldDefinition>();
|
||||
List<FieldDefinition> fieldDefs = form.getFieldDefinitions();
|
||||
|
||||
// An Integer-based Map is being used here as we need to allow field definitions
|
||||
// for both properties and associations. It is possible for a property and an
|
||||
// association to coexist with the same name.
|
||||
int i = 0;
|
||||
for (FieldDefinition fd : fieldDefs)
|
||||
{
|
||||
result.put(fd.getName(), new ScriptFieldDefinition(fd));
|
||||
result.put(i++, new ScriptFieldDefinition(fd));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@@ -24,17 +24,20 @@ function testGetFormForContentNode()
|
||||
|
||||
test.assertEquals(22, fieldDefs.length);
|
||||
|
||||
// This dataHash is now an integer-keyed hash of the field definition data objects.
|
||||
var fieldDefnDataHash = form.fieldDefinitionData;
|
||||
test.assertNotNull(fieldDefnDataHash, "field definition data should not be null.");
|
||||
test.assertEquals(22, fieldDefnDataHash.length);
|
||||
|
||||
var nameField = fieldDefnDataHash['cm:name'];
|
||||
var titleField = fieldDefnDataHash['cm:title'];
|
||||
var descField = fieldDefnDataHash['cm:description'];
|
||||
var originatorField = fieldDefnDataHash['cm:originator'];
|
||||
var addresseeField = fieldDefnDataHash['cm:addressee'];
|
||||
var addresseesField = fieldDefnDataHash['cm:addressees'];
|
||||
var subjectField = fieldDefnDataHash['cm:subjectline'];
|
||||
var sentDateField = fieldDefnDataHash['cm:sentdate'];
|
||||
var referencesField = fieldDefnDataHash['cm:references'];
|
||||
var nameField = getFieldDefnFromMap('cm:name', fieldDefnDataHash);
|
||||
var titleField = getFieldDefnFromMap('cm:title', fieldDefnDataHash);
|
||||
var descField = getFieldDefnFromMap('cm:description', fieldDefnDataHash);
|
||||
var originatorField = getFieldDefnFromMap('cm:originator', fieldDefnDataHash);
|
||||
var addresseeField = getFieldDefnFromMap('cm:addressee', fieldDefnDataHash);
|
||||
var addresseesField = getFieldDefnFromMap('cm:addressees', fieldDefnDataHash);
|
||||
var subjectField = getFieldDefnFromMap('cm:subjectline', fieldDefnDataHash);
|
||||
var sentDateField = getFieldDefnFromMap('cm:sentdate', fieldDefnDataHash);
|
||||
var referencesField = getFieldDefnFromMap('cm:references', fieldDefnDataHash);
|
||||
|
||||
test.assertNotNull(nameField, "Expecting to find the cm:name field");
|
||||
test.assertNotNull(titleField, "Expecting to find the cm:title field");
|
||||
@@ -120,6 +123,21 @@ function testGetFormForContentNode()
|
||||
test.assertEquals(testAssociatedDoc, targets[0]);
|
||||
}
|
||||
|
||||
function getFieldDefnFromMap(name, fieldDefnDataHash)
|
||||
{
|
||||
var result = '';
|
||||
for (var i = 0; i < fieldDefnDataHash.length; i++)
|
||||
{
|
||||
var candidateFieldDefn = fieldDefnDataHash[i];
|
||||
if (candidateFieldDefn.name == name)
|
||||
{
|
||||
result = candidateFieldDefn;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// Execute tests
|
||||
testGetFormForNonExistentContentNode();
|
||||
testGetFormForContentNode();
|
Reference in New Issue
Block a user