From 4a6b87905d2c4825fe5d1344d492f54b54b36bcf Mon Sep 17 00:00:00 2001 From: N Smith Date: Thu, 29 Jul 2010 17:50:04 +0000 Subject: [PATCH] ALF-4057 The default form returned by Task and Workflow Form Processors now excludes several properties which should not be displayed, such as the bpm:package association and the bpm:packageActionGroup property. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21495 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/forms/FormServiceImplTest.java | 2 +- .../processor/FilteredFormProcessor.java | 23 +++++++++- .../node/ContentModelFormProcessor.java | 7 +-- .../processor/node/DefaultFieldBuilder.java | 46 ++++++++++++++++--- .../processor/node/NodeFormProcessor.java | 9 ++++ .../processor/node/TypeFormProcessor.java | 10 ++++ .../AbstractWorkflowFormProcessor.java | 30 ++++++++++++ .../workflow/TaskFormProcessorTest.java | 45 ++++++++++++------ .../workflow/WorkflowFormProcessorTest.java | 39 ++++++++++------ 9 files changed, 171 insertions(+), 40 deletions(-) diff --git a/source/java/org/alfresco/repo/forms/FormServiceImplTest.java b/source/java/org/alfresco/repo/forms/FormServiceImplTest.java index a19f72f677..df5ea1df15 100644 --- a/source/java/org/alfresco/repo/forms/FormServiceImplTest.java +++ b/source/java/org/alfresco/repo/forms/FormServiceImplTest.java @@ -64,6 +64,7 @@ import org.springframework.util.StringUtils; * Form service implementation unit test. * * @author Gavin Cornwell + * @author Nick Smith */ public class FormServiceImplTest extends BaseAlfrescoSpringTest { @@ -1296,7 +1297,6 @@ public class FormServiceImplTest extends BaseAlfrescoSpringTest ArrayList fields = new ArrayList(4); fields.add(WorkflowModel.PROP_DESCRIPTION.toPrefixString(namespaceService)); fields.add(WorkflowModel.PROP_STATUS.toPrefixString(namespaceService)); - fields.add(WorkflowModel.PROP_PACKAGE_ACTION_GROUP.toPrefixString(namespaceService)); fields.add(ContentModel.PROP_OWNER.toPrefixString(namespaceService)); return fields; } diff --git a/source/java/org/alfresco/repo/forms/processor/FilteredFormProcessor.java b/source/java/org/alfresco/repo/forms/processor/FilteredFormProcessor.java index d616c4d9d8..628aeeb4ba 100644 --- a/source/java/org/alfresco/repo/forms/processor/FilteredFormProcessor.java +++ b/source/java/org/alfresco/repo/forms/processor/FilteredFormProcessor.java @@ -41,6 +41,8 @@ public abstract class FilteredFormProcessor extends Abstr { private static final Log logger = LogFactory.getLog(FilteredFormProcessor.class); + private List ignoredFields = null; + protected FilterRegistry filterRegistry; protected FieldProcessorRegistry fieldProcessorRegistry; @@ -58,6 +60,14 @@ public abstract class FilteredFormProcessor extends Abstr logger.debug("Set filter registry: " + this.filterRegistry + " for processor: " + this); } + /** + * @param ignoredFields the ignoredFields to set + */ + public void setIgnoredFields(List ignoredFields) + { + this.ignoredFields = ignoredFields; + } + /* * @see * org.alfresco.repo.forms.processor.FormProcessor#generate(org.alfresco @@ -170,17 +180,25 @@ public abstract class FilteredFormProcessor extends Abstr } else { - fieldsToAdd = generateDefaultFields(data); + fieldsToAdd = generateDefaultFields(data, getIgnoredFields()); } form.addFields(fieldsToAdd); } + private List getIgnoredFields() + { + if(ignoredFields != null) + return ignoredFields; + return getDefaultIgnoredFields(); + } + /** * Generates a list of default fields to add if no field names are specified. * @param data Used for field creation. + * @param ignoredFields TODO * @return a {@link List} of {@link Field Fields} which may be empty. */ - protected List generateDefaultFields(FormCreationData data) + protected List generateDefaultFields(FormCreationData data, List fieldsToIgnore) { return Collections.emptyList(); } @@ -266,4 +284,5 @@ public abstract class FilteredFormProcessor extends Abstr */ protected abstract PersistType internalPersist(ItemType item, FormData data); + protected abstract List getDefaultIgnoredFields(); } diff --git a/source/java/org/alfresco/repo/forms/processor/node/ContentModelFormProcessor.java b/source/java/org/alfresco/repo/forms/processor/node/ContentModelFormProcessor.java index a8cbcc0385..02a7ca80bd 100644 --- a/source/java/org/alfresco/repo/forms/processor/node/ContentModelFormProcessor.java +++ b/source/java/org/alfresco/repo/forms/processor/node/ContentModelFormProcessor.java @@ -21,9 +21,9 @@ package org.alfresco.repo.forms.processor.node; import static org.alfresco.repo.forms.processor.node.FormFieldConstants.ASSOC_DATA_ADDED_SUFFIX; import static org.alfresco.repo.forms.processor.node.FormFieldConstants.ASSOC_DATA_PREFIX; import static org.alfresco.repo.forms.processor.node.FormFieldConstants.ASSOC_DATA_REMOVED_SUFFIX; +import static org.alfresco.repo.forms.processor.node.FormFieldConstants.DEFAULT_CONTENT_MIMETYPE; import static org.alfresco.repo.forms.processor.node.FormFieldConstants.ON; import static org.alfresco.repo.forms.processor.node.FormFieldConstants.PROP_DATA_PREFIX; -import static org.alfresco.repo.forms.processor.node.FormFieldConstants.DEFAULT_CONTENT_MIMETYPE; import java.io.Serializable; import java.util.ArrayList; @@ -183,9 +183,10 @@ public abstract class ContentModelFormProcessor extends } @Override - protected List generateDefaultFields(FormCreationData data) + protected List generateDefaultFields(FormCreationData data, List fieldsToIgnore) { - DefaultFieldBuilder defaultFieldBuilder = new DefaultFieldBuilder(data, fieldProcessorRegistry); + DefaultFieldBuilder defaultFieldBuilder = + new DefaultFieldBuilder(data, fieldProcessorRegistry, namespaceService, fieldsToIgnore); return defaultFieldBuilder.buildDefaultFields(); } diff --git a/source/java/org/alfresco/repo/forms/processor/node/DefaultFieldBuilder.java b/source/java/org/alfresco/repo/forms/processor/node/DefaultFieldBuilder.java index c98e5a285e..bea6415ace 100644 --- a/source/java/org/alfresco/repo/forms/processor/node/DefaultFieldBuilder.java +++ b/source/java/org/alfresco/repo/forms/processor/node/DefaultFieldBuilder.java @@ -21,12 +21,14 @@ package org.alfresco.repo.forms.processor.node; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import org.alfresco.repo.forms.Field; import org.alfresco.repo.forms.processor.FieldProcessor; import org.alfresco.repo.forms.processor.FieldProcessorRegistry; import org.alfresco.repo.forms.processor.FormCreationData; +import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -47,25 +49,42 @@ public class DefaultFieldBuilder private final FormCreationData formData; private final ItemData ItemData; private final FieldProcessorRegistry registry; - + private final NamespaceService namespaceService; + private final List ignoredFields; + private final Log logger; public DefaultFieldBuilder(FormCreationData data, - FieldProcessorRegistry registry) + FieldProcessorRegistry registry, + NamespaceService namespaceService, + List ignoredFields) { - this(data, registry, MY_LOGGER); + this(data, registry, namespaceService, ignoredFields, MY_LOGGER); } public DefaultFieldBuilder(FormCreationData formData, FieldProcessorRegistry registry, + NamespaceService namespaceService, + List ignoredFields, Log logger) { this.logger = logger; this.formData = formData; this.registry = registry; + this.namespaceService = namespaceService; + this.ignoredFields = getNonNullList(ignoredFields ); this.ItemData = (ItemData) formData.getItemData(); } + /** + * @param ignoredTransientFields2 + * @return + */ + private List getNonNullList(List list) + { + return list == null ? Collections.emptyList() : list; + } + public List buildDefaultFields() { List assocFields = buildDefaultAssociationFields(); @@ -85,18 +104,30 @@ public class DefaultFieldBuilder List fields = new ArrayList(names.size()); for (QName name : names) { - fields.add(buildPropertyField(name)); + if(ignoreQName(name)==false) + { + fields.add(buildPropertyField(name)); + } } return fields; } + private boolean ignoreQName(QName qname) + { + String name = qname.toPrefixString(namespaceService); + return ignoredFields.contains(name); + } + public List buildDefaultAssociationFields() { Collection names = ItemData.getAllAssociationDefinitionNames(); List fields = new ArrayList(names.size()); for (QName name : names) { - fields.add(buildAssociationField(name)); + if(ignoreQName(name)==false) + { + fields.add(buildAssociationField(name)); + } } return fields; } @@ -107,7 +138,10 @@ public class DefaultFieldBuilder List fields = new ArrayList(names.size()); for (String name : names) { - fields.add(buildTransientField(name)); + if(ignoredFields.contains(name)==false) + { + fields.add(buildTransientField(name)); + } } return fields; } diff --git a/source/java/org/alfresco/repo/forms/processor/node/NodeFormProcessor.java b/source/java/org/alfresco/repo/forms/processor/node/NodeFormProcessor.java index 21a5912781..ce1566ad11 100644 --- a/source/java/org/alfresco/repo/forms/processor/node/NodeFormProcessor.java +++ b/source/java/org/alfresco/repo/forms/processor/node/NodeFormProcessor.java @@ -288,4 +288,13 @@ public class NodeFormProcessor extends ContentModelFormProcessor getDefaultIgnoredFields() + { + return null; + } } diff --git a/source/java/org/alfresco/repo/forms/processor/node/TypeFormProcessor.java b/source/java/org/alfresco/repo/forms/processor/node/TypeFormProcessor.java index aa67f33bf0..6f1b0559f1 100644 --- a/source/java/org/alfresco/repo/forms/processor/node/TypeFormProcessor.java +++ b/source/java/org/alfresco/repo/forms/processor/node/TypeFormProcessor.java @@ -21,6 +21,7 @@ package org.alfresco.repo.forms.processor.node; import java.io.Serializable; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.alfresco.model.ContentModel; @@ -280,4 +281,13 @@ public class TypeFormProcessor extends ContentModelFormProcessor getDefaultIgnoredFields() + { + return null; + } } diff --git a/source/java/org/alfresco/repo/forms/processor/workflow/AbstractWorkflowFormProcessor.java b/source/java/org/alfresco/repo/forms/processor/workflow/AbstractWorkflowFormProcessor.java index 61a8b65a8a..0022d31ddc 100644 --- a/source/java/org/alfresco/repo/forms/processor/workflow/AbstractWorkflowFormProcessor.java +++ b/source/java/org/alfresco/repo/forms/processor/workflow/AbstractWorkflowFormProcessor.java @@ -19,6 +19,7 @@ package org.alfresco.repo.forms.processor.workflow; +import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; @@ -117,6 +118,35 @@ public abstract class AbstractWorkflowFormProcessor exten return decodedId; } + /* (non-Javadoc) + * @see org.alfresco.repo.forms.processor.FilteredFormProcessor#getDefaultIgnoredFields() + */ + @Override + protected List getDefaultIgnoredFields() + { + ArrayList fields = new ArrayList(5); + fields.add("bpm:package"); + fields.add("bpm:pooledActors"); + fields.add("bpm:completedItems"); + fields.add("sys:node-dbid"); + fields.add("sys:store-identifier"); + fields.add("bpm:completionDate"); + fields.add("bpm:context"); + fields.add("sys:node-uuid"); + fields.add("bpm:hiddenTransitions"); + fields.add("cm:creator"); + fields.add("cm:modifier"); + fields.add("bpm:packageActionGroup"); + fields.add("bpm:packageItemActionGroup"); + fields.add("bpm:outcome"); + fields.add("cm:content"); + fields.add("cm:accessed"); + fields.add("bpm:startDate"); + fields.add("cm:modified"); + fields.add("cm:created"); + fields.add("sys:store-protocol"); + return fields; + } /** * Returns an implementation of {@link ContentModelFormPersister} which is * used to accumulate all the changes specified in the {@link Form} and then persist them. diff --git a/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormProcessorTest.java b/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormProcessorTest.java index fe92c05849..8c902b611b 100644 --- a/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormProcessorTest.java +++ b/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormProcessorTest.java @@ -25,6 +25,19 @@ package org.alfresco.repo.forms.processor.workflow; +import static org.alfresco.repo.forms.processor.node.FormFieldConstants.ASSOC_DATA_ADDED_SUFFIX; +import static org.alfresco.repo.forms.processor.node.FormFieldConstants.ASSOC_DATA_PREFIX; +import static org.alfresco.repo.forms.processor.node.FormFieldConstants.ASSOC_DATA_REMOVED_SUFFIX; +import static org.alfresco.repo.forms.processor.node.FormFieldConstants.PROP_DATA_PREFIX; +import static org.alfresco.repo.workflow.WorkflowModel.ASPECT_WORKFLOW_PACKAGE; +import static org.alfresco.repo.workflow.WorkflowModel.ASSOC_ASSIGNEE; +import static org.alfresco.repo.workflow.WorkflowModel.ASSOC_PACKAGE_CONTAINS; +import static org.alfresco.repo.workflow.WorkflowModel.ASSOC_POOLED_ACTORS; +import static org.alfresco.repo.workflow.WorkflowModel.PROP_DESCRIPTION; +import static org.alfresco.repo.workflow.WorkflowModel.PROP_HIDDEN_TRANSITIONS; +import static org.alfresco.repo.workflow.WorkflowModel.PROP_PACKAGE_ACTION_GROUP; +import static org.alfresco.repo.workflow.WorkflowModel.PROP_PACKAGE_ITEM_ACTION_GROUP; +import static org.alfresco.repo.workflow.WorkflowModel.PROP_STATUS; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyMap; import static org.mockito.Matchers.anyString; @@ -34,7 +47,6 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import static org.alfresco.repo.forms.processor.node.FormFieldConstants.*; import java.io.Serializable; import java.util.ArrayList; @@ -54,10 +66,8 @@ import org.alfresco.repo.forms.FormNotFoundException; import org.alfresco.repo.forms.Item; import org.alfresco.repo.forms.FormData.FieldData; import org.alfresco.repo.forms.processor.node.DefaultFieldProcessor; -import org.alfresco.repo.forms.processor.node.FormFieldConstants; import org.alfresco.repo.forms.processor.node.MockClassAttributeDefinition; import org.alfresco.repo.forms.processor.node.MockFieldProcessorRegistry; -import org.alfresco.repo.workflow.WorkflowModel; import org.alfresco.service.cmr.dictionary.AssociationDefinition; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.dictionary.DictionaryService; @@ -79,7 +89,6 @@ import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.NamespaceServiceMemoryImpl; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QNamePattern; -import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; @@ -93,11 +102,11 @@ public class TaskFormProcessorTest extends TestCase { private static final String TASK_DEF_NAME = "TaskDef"; private static final String TASK_ID = "foo$Real Id"; - private static final QName DESC_NAME = WorkflowModel.PROP_DESCRIPTION; - private static final QName STATUS_NAME = WorkflowModel.PROP_STATUS; + private static final QName DESC_NAME = PROP_DESCRIPTION; + private static final QName STATUS_NAME = PROP_STATUS; private static final QName PROP_WITH_ = QName.createQName(NamespaceService.BPM_MODEL_1_0_URI, "some_prop"); - private static final QName ACTORS_NAME = WorkflowModel.ASSOC_POOLED_ACTORS; - private static final QName ASSIGNEE_NAME = WorkflowModel.ASSOC_ASSIGNEE; + private static final QName ACTORS_NAME = ASSOC_POOLED_ACTORS; + private static final QName ASSIGNEE_NAME = ASSOC_ASSIGNEE; private static final QName ASSOC_WITH_ = QName.createQName(NamespaceService.BPM_MODEL_1_0_URI, "some_assoc"); private static final NodeRef FAKE_NODE = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakeNode"); private static final NodeRef FAKE_NODE2 = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakeNode2"); @@ -210,12 +219,18 @@ public class TaskFormProcessorTest extends TestCase Form form = processForm(); List fieldDefs = form.getFieldDefinitionNames(); assertTrue(fieldDefs.contains(ASSIGNEE_NAME.toPrefixString(namespaceService))); - assertTrue(fieldDefs.contains(ACTORS_NAME.toPrefixString(namespaceService))); + assertTrue(fieldDefs.contains(ASSOC_WITH_.toPrefixString(namespaceService))); assertTrue(fieldDefs.contains(DESC_NAME.toPrefixString(namespaceService))); assertTrue(fieldDefs.contains(STATUS_NAME.toPrefixString(namespaceService))); + assertTrue(fieldDefs.contains(PROP_WITH_.toPrefixString(namespaceService))); assertTrue(fieldDefs.contains(PackageItemsFieldProcessor.KEY)); assertTrue(fieldDefs.contains(TransitionFieldProcessor.KEY)); + // Check 'default ignored fields' are proerly removed from defaults. + assertFalse(fieldDefs.contains(ACTORS_NAME.toPrefixString(namespaceService))); + assertFalse(fieldDefs.contains(PROP_PACKAGE_ACTION_GROUP.toPrefixString(namespaceService))); + assertFalse(fieldDefs.contains(PROP_PACKAGE_ITEM_ACTION_GROUP.toPrefixString(namespaceService))); + Serializable fieldData = (Serializable) Arrays.asList(FAKE_NODE.toString()); FormData formData = form.getFormData(); assertEquals(fieldData, formData.getFieldData("assoc_bpm_assignee").getValue()); @@ -241,7 +256,7 @@ public class TaskFormProcessorTest extends TestCase // Hide transition with id3. Serializable hiddenValue = (Serializable) Collections.singletonList("id3"); - task.properties.put(WorkflowModel.PROP_HIDDEN_TRANSITIONS, hiddenValue ); + task.properties.put(PROP_HIDDEN_TRANSITIONS, hiddenValue ); form = processForm(fieldName); transitionValues = "id1|title1,id2|title2"; @@ -396,7 +411,7 @@ public class TaskFormProcessorTest extends TestCase ArrayList results = new ArrayList(children.length); for (NodeRef nodeRef : children) { - ChildAssociationRef child = new ChildAssociationRef(WorkflowModel.ASSOC_PACKAGE_CONTAINS, PCKG_NODE, null, nodeRef); + ChildAssociationRef child = new ChildAssociationRef(ASSOC_PACKAGE_CONTAINS, PCKG_NODE, null, nodeRef); results.add(child); } when(nodeService.getChildAssocs(eq(PCKG_NODE), (QNamePattern)any(), (QNamePattern)any())) @@ -417,7 +432,7 @@ public class TaskFormProcessorTest extends TestCase verify(nodeService, times(times)) .addChild(eq(PCKG_NODE), eq(child), - eq(WorkflowModel.ASSOC_PACKAGE_CONTAINS), + eq(ASSOC_PACKAGE_CONTAINS), (QName)any()); } @@ -599,13 +614,13 @@ public class TaskFormProcessorTest extends TestCase properties.put(PROP_WITH_, with_); // Add a Package Action property - QName pckgActionGroup = WorkflowModel.PROP_PACKAGE_ACTION_GROUP; + QName pckgActionGroup = PROP_PACKAGE_ACTION_GROUP; PropertyDefinition pckgAction = MockClassAttributeDefinition.mockPropertyDefinition(pckgActionGroup, textType, ""); properties.put(pckgActionGroup, pckgAction); // Add a Package Action property - QName pckgItemActionGroup = WorkflowModel.PROP_PACKAGE_ITEM_ACTION_GROUP; + QName pckgItemActionGroup = PROP_PACKAGE_ITEM_ACTION_GROUP; PropertyDefinition pckgItemAction = MockClassAttributeDefinition.mockPropertyDefinition(pckgItemActionGroup, textType, "read_package_item_actions"); properties.put(pckgItemActionGroup, pckgItemAction); @@ -694,7 +709,7 @@ public class TaskFormProcessorTest extends TestCase private NodeService makeNodeService() { NodeService service = mock(NodeService.class); - when(service.hasAspect(PCKG_NODE, WorkflowModel.ASPECT_WORKFLOW_PACKAGE)) + when(service.hasAspect(PCKG_NODE, ASPECT_WORKFLOW_PACKAGE)) .thenReturn(true); return service; } diff --git a/source/java/org/alfresco/repo/forms/processor/workflow/WorkflowFormProcessorTest.java b/source/java/org/alfresco/repo/forms/processor/workflow/WorkflowFormProcessorTest.java index 6da3509d57..2559755a1f 100644 --- a/source/java/org/alfresco/repo/forms/processor/workflow/WorkflowFormProcessorTest.java +++ b/source/java/org/alfresco/repo/forms/processor/workflow/WorkflowFormProcessorTest.java @@ -23,6 +23,16 @@ import static org.alfresco.repo.forms.processor.node.FormFieldConstants.ASSOC_DA import static org.alfresco.repo.forms.processor.node.FormFieldConstants.ASSOC_DATA_PREFIX; import static org.alfresco.repo.forms.processor.node.FormFieldConstants.ASSOC_DATA_REMOVED_SUFFIX; import static org.alfresco.repo.forms.processor.node.FormFieldConstants.PROP_DATA_PREFIX; +import static org.alfresco.repo.workflow.WorkflowModel.ASPECT_WORKFLOW_PACKAGE; +import static org.alfresco.repo.workflow.WorkflowModel.ASSOC_ASSIGNEE; +import static org.alfresco.repo.workflow.WorkflowModel.ASSOC_PACKAGE; +import static org.alfresco.repo.workflow.WorkflowModel.ASSOC_PACKAGE_CONTAINS; +import static org.alfresco.repo.workflow.WorkflowModel.ASSOC_POOLED_ACTORS; +import static org.alfresco.repo.workflow.WorkflowModel.PROP_DESCRIPTION; +import static org.alfresco.repo.workflow.WorkflowModel.PROP_PACKAGE_ACTION_GROUP; +import static org.alfresco.repo.workflow.WorkflowModel.PROP_PACKAGE_ITEM_ACTION_GROUP; +import static org.alfresco.repo.workflow.WorkflowModel.PROP_PRIORITY; +import static org.alfresco.repo.workflow.WorkflowModel.PROP_STATUS; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyMap; import static org.mockito.Matchers.eq; @@ -51,7 +61,6 @@ import org.alfresco.repo.forms.FormData.FieldData; import org.alfresco.repo.forms.processor.node.DefaultFieldProcessor; import org.alfresco.repo.forms.processor.node.MockClassAttributeDefinition; import org.alfresco.repo.forms.processor.node.MockFieldProcessorRegistry; -import org.alfresco.repo.workflow.WorkflowModel; import org.alfresco.service.cmr.dictionary.AssociationDefinition; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.dictionary.DictionaryService; @@ -84,12 +93,12 @@ public class WorkflowFormProcessorTest extends TestCase { private static final String TASK_DEF_NAME = "TaskDef"; private static final String WF_DEF_NAME = "foo$wf:bar"; - private static final QName PRIORITY_NAME = WorkflowModel.PROP_PRIORITY; - private static final QName DESC_NAME = WorkflowModel.PROP_DESCRIPTION; - private static final QName STATUS_NAME = WorkflowModel.PROP_STATUS; + private static final QName PRIORITY_NAME = PROP_PRIORITY; + private static final QName DESC_NAME = PROP_DESCRIPTION; + private static final QName STATUS_NAME = PROP_STATUS; private static final QName PROP_WITH_ = QName.createQName(NamespaceService.BPM_MODEL_1_0_URI, "some_prop"); - private static final QName ACTORS_NAME = WorkflowModel.ASSOC_POOLED_ACTORS; - private static final QName ASSIGNEE_NAME = WorkflowModel.ASSOC_ASSIGNEE; + private static final QName ACTORS_NAME = ASSOC_POOLED_ACTORS; + private static final QName ASSIGNEE_NAME = ASSOC_ASSIGNEE; private static final QName ASSOC_WITH_ = QName.createQName(NamespaceService.BPM_MODEL_1_0_URI, "some_assoc"); private static final NodeRef FAKE_NODE = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakeNode"); private static final NodeRef FAKE_NODE2 = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakeNode2"); @@ -198,11 +207,15 @@ public class WorkflowFormProcessorTest extends TestCase Form form = processForm(); List fieldDefs = form.getFieldDefinitionNames(); assertTrue(fieldDefs.contains(ASSIGNEE_NAME.toPrefixString(namespaceService))); - assertTrue(fieldDefs.contains(ACTORS_NAME.toPrefixString(namespaceService))); assertTrue(fieldDefs.contains(DESC_NAME.toPrefixString(namespaceService))); assertTrue(fieldDefs.contains(PRIORITY_NAME.toPrefixString(namespaceService))); assertTrue(fieldDefs.contains(PackageItemsFieldProcessor.KEY)); + // Check 'default ignored fields' are proerly removed from defaults. + assertFalse(fieldDefs.contains(ACTORS_NAME.toPrefixString(namespaceService))); + assertFalse(fieldDefs.contains(PROP_PACKAGE_ACTION_GROUP.toPrefixString(namespaceService))); + assertFalse(fieldDefs.contains(PROP_PACKAGE_ITEM_ACTION_GROUP.toPrefixString(namespaceService))); + Serializable fieldData = (Serializable) Collections.emptyList(); FormData formData = form.getFormData(); assertEquals(fieldData, formData.getFieldData("assoc_bpm_assignee").getValue()); @@ -230,7 +243,7 @@ public class WorkflowFormProcessorTest extends TestCase // Check adds description property and Package. assertEquals(2, actualProperties.size()); assertEquals(value, actualProperties.get(DESC_NAME)); - assertEquals(PCKG_NODE, actualProperties.get(WorkflowModel.ASSOC_PACKAGE)); + assertEquals(PCKG_NODE, actualProperties.get(ASSOC_PACKAGE)); } public void testPersistPropertyWith_() throws Exception @@ -317,7 +330,7 @@ public class WorkflowFormProcessorTest extends TestCase ArrayList results = new ArrayList(children.length); for (NodeRef nodeRef : children) { - ChildAssociationRef child = new ChildAssociationRef(WorkflowModel.ASSOC_PACKAGE_CONTAINS, PCKG_NODE, null, nodeRef); + ChildAssociationRef child = new ChildAssociationRef(ASSOC_PACKAGE_CONTAINS, PCKG_NODE, null, nodeRef); results.add(child); } when(nodeService.getChildAssocs(eq(PCKG_NODE), (QNamePattern)any(), (QNamePattern)any())) @@ -338,7 +351,7 @@ public class WorkflowFormProcessorTest extends TestCase verify(nodeService, times(times)) .addChild(eq(PCKG_NODE), eq(child), - eq(WorkflowModel.ASSOC_PACKAGE_CONTAINS), + eq(ASSOC_PACKAGE_CONTAINS), (QName)any()); } @@ -510,13 +523,13 @@ public class WorkflowFormProcessorTest extends TestCase properties.put(PROP_WITH_, with_); // Add a Package Action property - QName pckgActionGroup = WorkflowModel.PROP_PACKAGE_ACTION_GROUP; + QName pckgActionGroup = PROP_PACKAGE_ACTION_GROUP; PropertyDefinition pckgAction = MockClassAttributeDefinition.mockPropertyDefinition(pckgActionGroup, textType, "add_package_item_actions"); properties.put(pckgActionGroup, pckgAction); // Add a Package Action property - QName pckgItemActionGroup = WorkflowModel.PROP_PACKAGE_ITEM_ACTION_GROUP; + QName pckgItemActionGroup = PROP_PACKAGE_ITEM_ACTION_GROUP; PropertyDefinition pckgItemAction = MockClassAttributeDefinition.mockPropertyDefinition(pckgItemActionGroup, textType, "start_package_item_actions"); properties.put(pckgItemActionGroup, pckgItemAction); @@ -597,7 +610,7 @@ public class WorkflowFormProcessorTest extends TestCase private NodeService makeNodeService() { NodeService service = mock(NodeService.class); - when(service.hasAspect(PCKG_NODE, WorkflowModel.ASPECT_WORKFLOW_PACKAGE)) + when(service.hasAspect(PCKG_NODE, ASPECT_WORKFLOW_PACKAGE)) .thenReturn(true); return service; }