[209858] Initial development of this feature.
diff --git a/bundles/org.eclipse.wst.ws.service.policy.ui/schema/servicePolicyui.exsd b/bundles/org.eclipse.wst.ws.service.policy.ui/schema/servicePolicyui.exsd
index 3826bf5..1d90aac 100644
--- a/bundles/org.eclipse.wst.ws.service.policy.ui/schema/servicePolicyui.exsd
+++ b/bundles/org.eclipse.wst.ws.service.policy.ui/schema/servicePolicyui.exsd
@@ -156,6 +156,13 @@
                </documentation>
             </annotation>
          </attribute>
+         <attribute name="defaultData" type="boolean" use="default" value="true">
+            <annotation>
+               <documentation>
+                  Indicates if this enumeration operation should store it&apos;s persistent data as the default for the service policy.  A service policy can only have one default state data.
+               </documentation>
+            </annotation>
+         </attribute>
       </complexType>
    </element>
 
@@ -173,6 +180,13 @@
                </documentation>
             </annotation>
          </attribute>
+         <attribute name="defaultData" type="boolean" use="default" value="true">
+            <annotation>
+               <documentation>
+                  Indicates if this selection operation should store it&apos;s persistent data as the default for the service policy.  A service policy can only have one default state data.  This attribute is ignored if the icon attribute is set to true, since all icon attribute operation must store their data as default service policy data.
+               </documentation>
+            </annotation>
+         </attribute>
       </complexType>
    </element>
 
@@ -231,7 +245,6 @@
             <annotation>
                <documentation>
                   The plugin id that the enclosed quick fix actions apply to.  This is the id that will match the plugin id from the IStatus of a ServicePolicy object.
-
                </documentation>
             </annotation>
          </attribute>
diff --git a/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/BaseOperationImpl.java b/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/BaseOperationImpl.java
new file mode 100644
index 0000000..f3de96d
--- /dev/null
+++ b/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/BaseOperationImpl.java
@@ -0,0 +1,231 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20071024   196997 pmoogk@ca.ibm.com - Peter Moogk, Initial coding of service policy
+ *******************************************************************************/
+package org.eclipse.wst.ws.internal.service.policy.ui;
+
+import java.util.List;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.wst.ws.service.policy.IDescriptor;
+import org.eclipse.wst.ws.service.policy.IServicePolicy;
+import org.eclipse.wst.ws.service.policy.IStateEnumerationItem;
+import org.eclipse.wst.ws.service.policy.ServicePolicyPlatform;
+import org.eclipse.wst.ws.service.policy.ui.IEnableOperation;
+import org.eclipse.wst.ws.service.policy.ui.ILaunchOperation;
+import org.eclipse.wst.ws.service.policy.ui.ServicePolicyActivatorUI;
+import org.eclipse.wst.ws.service.policy.ui.IPolicyOperation.OperationKind;
+import org.eclipse.wst.ws.service.policy.utils.RegistryUtils;
+
+public class BaseOperationImpl 
+{
+  private String                id;
+  private IDescriptor           descriptor;
+  private OperationKind         operationKind;
+  private String                policyIdPattern;
+  private boolean               multiSelect = false;
+  private ILaunchOperation      launchOperationObject;
+  private IEnableOperation      enableOperationObject;
+  private String                enumId;
+  private IConfigurationElement enabledElement;
+  private IConfigurationElement complexElement;
+  private boolean               workspaceOnly;
+  private String                defaultItem;  
+  private boolean               useDefaultData;
+  
+  public String getId()
+  {
+    return id;
+  }
+
+  public void setId(String id)
+  {
+    this.id = id;
+  }
+  public boolean isWorkspaceOnly()
+  {
+    return workspaceOnly;
+  }
+
+  public void setWorkspaceOnly( boolean workspaceOnly )
+  {
+    this.workspaceOnly = workspaceOnly;  
+  }
+  
+  public void setSelection( boolean isIcon )
+  {
+    if( isIcon )
+    {
+      operationKind = OperationKind.iconSelection;
+    }
+    else
+    {
+      operationKind = OperationKind.selection;     
+    }
+  }
+  
+  public IDescriptor getDescriptor()
+  {
+    return descriptor;
+  }
+
+  public OperationKind getOperationKind()
+  {
+    return operationKind;
+  }
+
+  public String getEnumerationId()
+  {
+    return enumId;
+  }
+
+  public void setEnumerationId( String enumId )
+  {
+    this.enumId   = enumId;  
+    operationKind = OperationKind.enumeration;
+  }
+  
+  public String getPolicyIdPattern()
+  {
+    return policyIdPattern;
+  }
+
+  public boolean isEnabled( List<IServicePolicy> selectedPolicies )
+  {
+    boolean result = true;
+    
+    // If we don't allow multi select and multiple policies have been selected
+    // then this operation is not enabled.
+    if( !multiSelect && selectedPolicies.size() > 1 )
+    {
+      result = false;
+    }
+    
+    if( result && enabledElement != null )
+    {
+      // We have an extension for this enablement code so we will call this
+      // code.
+      if( enableOperationObject == null )
+      {
+        try
+        {
+          String enabledClassName = RegistryUtils.getAttributeName( enabledElement, "enabledclass" ); //$NON-NLS-1$
+          enableOperationObject = (IEnableOperation)enabledElement.createExecutableExtension( enabledClassName );
+        }
+        catch( Exception exc )
+        {
+          ServicePolicyActivatorUI.logError( "Error loading service policy ui \"enabled\" class.", exc );           //$NON-NLS-1$
+        }
+        
+        if( enableOperationObject != null )
+        {
+          result = enableOperationObject.isEnabled( selectedPolicies );
+        }
+      }
+    }
+    
+    return result;
+  }
+
+  public void launchOperation( IServicePolicy thisPolicy, List<IServicePolicy> selectedPolicies )
+  {
+    if( launchOperationObject == null )
+    {
+      try
+      {
+        String launchClassName = RegistryUtils.getAttributeName( complexElement, "launchclass" ); //$NON-NLS-1$
+        launchOperationObject = (ILaunchOperation)complexElement.createExecutableExtension( launchClassName );
+      }
+      catch( Exception exc )
+      {
+        ServicePolicyActivatorUI.logError( "Error loading service policy ui launch class.", exc ); //$NON-NLS-1$
+      }
+    }
+    
+    if( launchOperationObject != null )
+    {
+      launchOperationObject.launch( selectedPolicies );
+    }
+  }
+
+  public boolean isMultiSelect()
+  {
+    return multiSelect;
+  }
+
+  public void setMultiSelect(boolean multiSelect)
+  {
+    this.multiSelect = multiSelect;
+  }
+
+  public void setDescriptor(IDescriptor descriptor)
+  {
+    this.descriptor = descriptor;
+  }
+
+  public void setPolicyIdPattern(String policyIdPattern)
+  {
+    this.policyIdPattern = policyIdPattern;
+  }
+
+  public void setEnabledElement(IConfigurationElement enabledElement)
+  {
+    this.enabledElement = enabledElement;
+  }
+
+  public void setComplexElement(IConfigurationElement complexElement)
+  {
+    this.complexElement = complexElement;
+    operationKind = OperationKind.complex;
+  }
+
+  public void setDefaultItem( String defaultItem )
+  {
+    this.defaultItem = defaultItem;  
+  }
+  
+  public String getDefaultItem()
+  {
+    if( defaultItem == null )
+    {
+      ServicePolicyPlatform       platform = ServicePolicyPlatform.getInstance();
+      List<IStateEnumerationItem> enumList = platform.getStateEnumeration( enumId );
+      
+      defaultItem = enumList.get(0).getId();
+      
+      // No default item has been specified so we will search the enumeration for one.
+      // If none was specified the first item in the enumeration is used.
+      for( IStateEnumerationItem item : enumList )
+      {
+        if( item.isDefault() )
+        {
+          defaultItem = item.getId();
+          break;
+        }
+      }
+      
+    }
+      
+    return defaultItem;
+  }
+
+  public boolean isUseDefaultData()
+  {
+    return useDefaultData;
+  }
+
+  public void setUseDefaultData( boolean useDefaultData )
+  {
+    this.useDefaultData = useDefaultData;
+  }  
+  
+}
diff --git a/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/PolicyOperationImpl.java b/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/PolicyOperationImpl.java
index 20346cc..9b80c5f 100644
--- a/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/PolicyOperationImpl.java
+++ b/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/PolicyOperationImpl.java
@@ -1,186 +1,111 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+/***************************************************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * yyyymmdd bug      Email and other contact information
- * -------- -------- -----------------------------------------------------------
- * 20071024   196997 pmoogk@ca.ibm.com - Peter Moogk, Initial coding of service policy
- *******************************************************************************/
+ * 
+ * Contributors: IBM Corporation - initial API and implementation
+ **************************************************************************************************/
 package org.eclipse.wst.ws.internal.service.policy.ui;
 
 import java.util.List;
 
-import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.resources.IProject;
 import org.eclipse.wst.ws.service.policy.IDescriptor;
+import org.eclipse.wst.ws.service.policy.IPolicyState;
 import org.eclipse.wst.ws.service.policy.IServicePolicy;
-import org.eclipse.wst.ws.service.policy.ui.IEnableOperation;
-import org.eclipse.wst.ws.service.policy.ui.ILaunchOperation;
 import org.eclipse.wst.ws.service.policy.ui.IPolicyOperation;
-import org.eclipse.wst.ws.service.policy.ui.ServicePolicyActivatorUI;
-import org.eclipse.wst.ws.service.policy.utils.RegistryUtils;
 
 public class PolicyOperationImpl implements IPolicyOperation
 {
-  private String                id;
-  private IDescriptor            descriptor;
-  private OperationKind         operationKind;
-  private String                policyIdPattern;
-  private boolean               multiSelect = false;
-  private ILaunchOperation      launchOperationObject;
-  private IEnableOperation      enableOperationObject;
-  private String                enumId;
-  private IConfigurationElement enabledElement;
-  private IConfigurationElement complexElement;
-  private boolean               workspaceOnly;
+  private BaseOperationImpl baseOperation;
+  private IServicePolicy    policy;
   
-  public String getId()
+  public PolicyOperationImpl( BaseOperationImpl baseOperation, IServicePolicy policy )
   {
-    return id;
+    this.baseOperation = baseOperation;
+    this.policy        = policy;
+  }
+  
+  public String getDefaultItem()
+  {
+    return baseOperation.getDefaultItem();
   }
 
-  public void setId(String id)
-  {
-    this.id = id;
-  }
-  public boolean isWorkspaceOnly()
-  {
-    return workspaceOnly;
-  }
-
-  public void setWorkspaceOnly( boolean workspaceOnly )
-  {
-    this.workspaceOnly = workspaceOnly;  
-  }
-  
-  public void setSelection( boolean isIcon )
-  {
-    if( isIcon )
-    {
-      operationKind = OperationKind.iconSelection;
-    }
-    else
-    {
-      operationKind = OperationKind.selection;     
-    }
-  }
-  
   public IDescriptor getDescriptor()
   {
-    return descriptor;
-  }
-
-  public OperationKind getOperationKind()
-  {
-    return operationKind;
+    return baseOperation.getDescriptor();
   }
 
   public String getEnumerationId()
   {
-    return enumId;
+    return baseOperation.getEnumerationId();
   }
 
-  public void setEnumerationId( String enumId )
+  public String getId()
   {
-    this.enumId   = enumId;  
-    operationKind = OperationKind.enumeration;
+    return baseOperation.getId();
   }
-  
+
+  public OperationKind getOperationKind()
+  {
+    return baseOperation.getOperationKind();
+  }
+
   public String getPolicyIdPattern()
   {
-    return policyIdPattern;
+    return baseOperation.getPolicyIdPattern();
   }
 
   public boolean isEnabled( List<IServicePolicy> selectedPolicies )
   {
-    boolean result = true;
+    return baseOperation.isEnabled( selectedPolicies );
+  }
+
+  public boolean isWorkspaceOnly()
+  {
+    return baseOperation.isWorkspaceOnly();
+  }
+
+  public void launchOperation( List<IServicePolicy> selectedPolicies)
+  {
+    baseOperation.launchOperation( policy, selectedPolicies );
+  }
+
+  public IServicePolicy getServicePolicy()
+  {
+    return policy;
+  }
+
+  public String getStateItem( IProject project )
+  {
+    IPolicyState state = getState( project );
+    String       key   = baseOperation.getId();
     
-    // If we don't allow multi select and multiple policies have been selected
-    // then this operation is not enabled.
-    if( !multiSelect && selectedPolicies.size() > 1 )
+    if( baseOperation.isUseDefaultData() )
     {
-      result = false;
+      key = IPolicyState.DefaultValueKey;
     }
     
-    if( result && enabledElement != null )
+    state.putDefaultValue( key, baseOperation.getDefaultItem() );
+    return state.getValue( key );
+  }
+
+  public void setStateItem( IProject project, String stateItem )
+  {
+    IPolicyState state = getState( project );
+    String       key   = baseOperation.getId();
+    
+    if( baseOperation.isUseDefaultData() )
     {
-      // We have an extension for this enablement code so we will call this
-      // code.
-      if( enableOperationObject == null )
-      {
-        try
-        {
-          String enabledClassName = RegistryUtils.getAttributeName( enabledElement, "enabledclass" ); //$NON-NLS-1$
-          enableOperationObject = (IEnableOperation)enabledElement.createExecutableExtension( enabledClassName );
-        }
-        catch( Exception exc )
-        {
-          ServicePolicyActivatorUI.logError( "Error loading service policy ui \"enabled\" class.", exc );           //$NON-NLS-1$
-        }
-        
-        if( enableOperationObject != null )
-        {
-          result = enableOperationObject.isEnabled( selectedPolicies );
-        }
-      }
+      key = IPolicyState.DefaultValueKey;
     }
     
-    return result;
+    state.putValue( key, stateItem );
   }
-
-  public void launchOperation( List<IServicePolicy> selectedPolicies )
+  
+  private IPolicyState getState( IProject project )
   {
-    if( launchOperationObject == null )
-    {
-      try
-      {
-        String launchClassName = RegistryUtils.getAttributeName( complexElement, "launchclass" ); //$NON-NLS-1$
-        launchOperationObject = (ILaunchOperation)complexElement.createExecutableExtension( launchClassName );
-      }
-      catch( Exception exc )
-      {
-        ServicePolicyActivatorUI.logError( "Error loading service policy ui launch class.", exc ); //$NON-NLS-1$
-      }
-    }
-    
-    if( launchOperationObject != null )
-    {
-      launchOperationObject.launch( selectedPolicies );
-    }
-  }
-
-  public boolean isMultiSelect()
-  {
-    return multiSelect;
-  }
-
-  public void setMultiSelect(boolean multiSelect)
-  {
-    this.multiSelect = multiSelect;
-  }
-
-  public void setDescriptor(IDescriptor descriptor)
-  {
-    this.descriptor = descriptor;
-  }
-
-  public void setPolicyIdPattern(String policyIdPattern)
-  {
-    this.policyIdPattern = policyIdPattern;
-  }
-
-  public void setEnabledElement(IConfigurationElement enabledElement)
-  {
-    this.enabledElement = enabledElement;
-  }
-
-  public void setComplexElement(IConfigurationElement complexElement)
-  {
-    this.complexElement = complexElement;
-    operationKind = OperationKind.complex;
+    return project == null ? policy.getPolicyState() : policy.getPolicyState( project );   
   }
 }
diff --git a/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/ServicePolicyPlatformUIImpl.java b/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/ServicePolicyPlatformUIImpl.java
index e5daf4e..061ee25 100644
--- a/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/ServicePolicyPlatformUIImpl.java
+++ b/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/ServicePolicyPlatformUIImpl.java
@@ -32,7 +32,7 @@
 
 public class ServicePolicyPlatformUIImpl
 {
-  private Map<String, PolicyOperationImpl>           operationMap;
+  private Map<String, BaseOperationImpl>             baseOperationMap;
   private Map<IServicePolicy, Set<IPolicyOperation>> policyCache;
   private Map<String,List<IQuickFixActionInfo>>      quickFixes;
   
@@ -42,25 +42,15 @@
     ServicePolicyRegistryUI registry  = new ServicePolicyRegistryUI();
     Set<String>             policyIds = platform.getAllPolicyIds();
     
-    operationMap = new HashMap<String, PolicyOperationImpl>();
-    policyCache  = new HashMap<IServicePolicy, Set<IPolicyOperation>>();
-    quickFixes   = new HashMap<String, List<IQuickFixActionInfo>>();
-    registry.load( operationMap, quickFixes );
+    baseOperationMap = new HashMap<String, BaseOperationImpl>();
+    policyCache      = new HashMap<IServicePolicy, Set<IPolicyOperation>>();
+    quickFixes       = new HashMap<String, List<IQuickFixActionInfo>>();
+    registry.load( baseOperationMap, quickFixes );
     createOperationCache( policyIds );
     
-    // Now add listeners to each node.
-    for( String policyId : policyIds )
-    {
-      IServicePolicy policy = platform.getServicePolicy( policyId );
-      policy.addPolicyChildChangeListener( new ChildListener() );
-    }
+    platform.addChildChangeListener( new ChildListener() );
   }
-  
-  public IPolicyOperation getOperation( String operationId )
-  {
-    return operationMap.get( operationId );
-  }
-  
+      
   public List<IQuickFixActionInfo> getQuickFixes( IStatus status )
   {
     String                    pluginId = status.getPlugin();
@@ -79,46 +69,42 @@
   
   public List<IPolicyOperation> getAllOperations()
   {
-    return new Vector<IPolicyOperation>( operationMap.values() );
-  }
-  
-  public Set<IPolicyOperation> getSelectedOperations( List<IServicePolicy> policiesSelected, boolean isWorkspace )
-  {
-    Set<IPolicyOperation> operations = new HashSet<IPolicyOperation>();
+    List<IPolicyOperation> operations = new Vector<IPolicyOperation>();
     
-    for( IServicePolicy policy : policiesSelected )
+    for( Set<IPolicyOperation> operationSet : policyCache.values() )
     {
-      Set<IPolicyOperation> policyOperations = policyCache.get( policy );
-      
-      if( policyOperations != null )
-      {
-        operations.addAll( policyOperations );
-      }
-    }
-    
-    if( !isWorkspace )
-    {
-      // We are getting operations for a project so we must remove the operations that are
-      // only for a workspace.
-      List<IPolicyOperation> operationsToRemove = new Vector<IPolicyOperation>();
-      
-      for( IPolicyOperation operation : operations )
-      {
-        if( operation.isWorkspaceOnly() ) operationsToRemove.add( operation );
-      }
-      
-      operations.removeAll( operationsToRemove );
+      operations.addAll( operationSet );  
     }
     
     return operations;
   }
   
+  public Set<IPolicyOperation> getOperationsForPolicy( IServicePolicy policy, boolean isWorkspace )
+  {
+    Set<IPolicyOperation> policyOperations   = policyCache.get( policy );
+    Set<IPolicyOperation> result             = new HashSet<IPolicyOperation>( policyOperations );
+    
+    if( !isWorkspace )
+    {
+      for( IPolicyOperation operation : policyOperations )
+      {
+        if( operation.isWorkspaceOnly() )
+        {
+          result.remove( operation );
+        }
+      }
+    }
+      
+    return result;
+  }
+  
+  
   private void createOperationCache( Set<String> policyIds )
   {
-    ServicePolicyPlatform           platform   = ServicePolicyPlatform.getInstance();
-    Collection<PolicyOperationImpl> operations = operationMap.values();
+    ServicePolicyPlatform         platform   = ServicePolicyPlatform.getInstance();
+    Collection<BaseOperationImpl> operations = baseOperationMap.values();
     
-    for( PolicyOperationImpl operation : operations )
+    for( BaseOperationImpl operation : operations )
     {
       String  policyPattern = operation.getPolicyIdPattern();
       Pattern pattern       = Pattern.compile( policyPattern );
@@ -138,7 +124,7 @@
             policyCache.put( policy, operationsSet );
           }
           
-          operationsSet.add( operation );
+          operationsSet.add( new PolicyOperationImpl( operation, policy ) );
         }
       }
     }    
@@ -146,18 +132,29 @@
   
   private class ChildListener implements IPolicyChildChangeListener
   {
-    public void childChange(IServicePolicy child, boolean added)
+    public void childChange(List<IServicePolicy> childList, List<Boolean> addedList)
     {
-      if( added )
+      Set<String> idSet = new HashSet<String>();
+      
+      for( int index = 0; index < childList.size(); index++ )
       {
-        Set<String> idSet = new HashSet<String>();
+        IServicePolicy policy = childList.get( index );
+        boolean        added  = addedList.get( index );
         
-        idSet.add( child.getId() );
-        createOperationCache( idSet );
+        if( added )
+        {
+        
+          idSet.add( policy.getId() );
+        }
+        else
+        {
+          policyCache.remove( policy );
+        }
       }
-      else
+      
+      if( idSet.size() > 0 )
       {
-        policyCache.remove( child );
+        createOperationCache( idSet );
       }
     }    
   }
diff --git a/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/ServicePolicyRegistryUI.java b/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/ServicePolicyRegistryUI.java
index e9c5b58..a270e0a 100644
--- a/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/ServicePolicyRegistryUI.java
+++ b/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/internal/service/policy/ui/ServicePolicyRegistryUI.java
@@ -32,7 +32,7 @@
   {
   }
   
-  public void load( Map<String, PolicyOperationImpl> operationMap, Map<String, List<IQuickFixActionInfo>> quickFixes )
+  public void load( Map<String, BaseOperationImpl> operationMap, Map<String, List<IQuickFixActionInfo>> quickFixes )
   {
     IConfigurationElement[] elements = Platform.getExtensionRegistry().getConfigurationElementsFor(SERVICE_POLICY_ID);
     
@@ -70,7 +70,7 @@
   }
    
   private void loadServicePolicyui( IConfigurationElement element,
-                                    Map<String, PolicyOperationImpl> operationMap )
+                                    Map<String, BaseOperationImpl> operationMap )
   {
     String                  id             = RegistryUtils.getAttribute( element, "id" ); //$NON-NLS-1$
     String                  policyPattern  = RegistryUtils.getAttribute( element, "policypattern" ); //$NON-NLS-1$
@@ -78,12 +78,14 @@
     IConfigurationElement[] children       = element.getChildren();
     IDescriptor             descriptor     = null;
     String                  enumId         = null;
+    String                  defaultItem    = null;
     boolean                 selection      = false;
     boolean                 icon           = false;
     boolean                 multiSelect    = false;
     IConfigurationElement   enabledElement = null;
     IConfigurationElement   launchElement  = null;
     boolean                 error          = false;
+    boolean                 useDefaultData = true;
     
     for( IConfigurationElement child : children )
     {
@@ -95,24 +97,39 @@
       }
       else if( name.equals( "enumeration" ) ) //$NON-NLS-1$
       {
+        String defaultData = RegistryUtils.getAttribute( child, "defaultdata" ); //$NON-NLS-1$
+        
         enumId = RegistryUtils.getAttribute( child, "id" ); //$NON-NLS-1$
+        defaultItem = RegistryUtils.getAttribute( child, "defaultItem" ); //$NON-NLS-1$
         
         if( enumId == null )
         {
           error( "Service policy ui enumeration element is missing id attribute." ); //$NON-NLS-1$
           error = true;
         }
+        
+        if( defaultData != null && defaultData.equalsIgnoreCase( "false" ) ) //$NON-NLS-1$
+        {
+          useDefaultData = false;
+        }        
       }
       else if( name.equals( "selection" ) ) //$NON-NLS-1$
       {
-        String iconValue = RegistryUtils.getAttribute( child, "icon" ); //$NON-NLS-1$
+        String iconValue   = RegistryUtils.getAttribute( child, "icon" ); //$NON-NLS-1$
+        String defaultData = RegistryUtils.getAttribute( child, "defaultdata" ); //$NON-NLS-1$
         
         selection = true;
         
+        if( defaultData != null && defaultData.equalsIgnoreCase( "false" ) ) //$NON-NLS-1$
+        {
+          useDefaultData = false;
+        }        
+        
         if( iconValue != null && iconValue.equalsIgnoreCase( "true" ) ) //$NON-NLS-1$
         {
           icon = true;
-        }
+          useDefaultData = true;
+        }        
       }
       else if( name.equals( "complex" ) ) //$NON-NLS-1$
       {
@@ -178,7 +195,7 @@
     
     if( ! error )
     {
-      PolicyOperationImpl operation          = new PolicyOperationImpl();
+      BaseOperationImpl operation          = new BaseOperationImpl();
       boolean             workspaceOnlyValue = workspaceOnly != null && workspaceOnly.equals( "true" ); //$NON-NLS-1$
       
       operation.setId( id );
@@ -186,7 +203,9 @@
       operation.setDescriptor( descriptor );
       operation.setMultiSelect( multiSelect );
       operation.setEnumerationId( enumId );
+      operation.setDefaultItem( defaultItem );
       operation.setWorkspaceOnly( workspaceOnlyValue );
+      operation.setUseDefaultData( useDefaultData );
       
       if( selection )
       {
diff --git a/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.java b/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.java
index ae6f3f7..b0ddad9 100644
--- a/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.java
+++ b/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/service/policy/ui/IPolicyOperation.java
@@ -15,6 +15,7 @@
 
 import java.util.List;
 
+import org.eclipse.core.resources.IProject;
 import org.eclipse.wst.ws.service.policy.IDescriptor;
 import org.eclipse.wst.ws.service.policy.IServicePolicy;
 
@@ -76,6 +77,13 @@
   public String getEnumerationId();
   
   /**
+   * 
+   * @return returns if this is an enumeration it returns the default item for this
+   * enumeration.
+   */
+  public String getDefaultItem();
+  
+  /**
    * Launches the service policy operation if this is a complex operation.
    * 
    * @param selectedPolicies the selected service policies.
@@ -97,4 +105,25 @@
    * with this operation.
    */
   public String getPolicyIdPattern();
+  
+  /**
+   * 
+   * @return returns the service policy for this operation.
+   */
+  public IServicePolicy getServicePolicy();
+  
+  /**
+   * @param project the project if this is project property page item.
+   * For the preference page context null should be specified.
+   * @return returns the current enumeration item for this operation.
+   */
+  public String getStateItem( IProject project );
+  
+  /**
+   * Sets the current enumeration item for this operation.
+   * @param project the project if this is project property page item.
+   * For the preference page context null should be specified.
+   * @param stateItem the item.
+   */
+  public void setStateItem( IProject project, String stateItem );
 }
diff --git a/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.java b/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.java
index 799fc05..66de46a 100644
--- a/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.java
+++ b/bundles/org.eclipse.wst.ws.service.policy.ui/src/org/eclipse/wst/ws/service/policy/ui/ServicePolicyPlatformUI.java
@@ -14,7 +14,7 @@
 package org.eclipse.wst.ws.service.policy.ui;
 
 import java.util.List;
-import java.util.Set;
+import java.util.Vector;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.wst.ws.internal.service.policy.ui.ServicePolicyPlatformUIImpl;
@@ -52,40 +52,43 @@
   
   /**
    * 
-   * @param operationId the operation ID
-   * @return returns the service policy operation given it ID.
-   */
-  public IPolicyOperation getOperation( String operationId )
-  {
-    return platformUI.getOperation( operationId );
-  }
-  
-  /**
-   * 
-   * @return returns all the operations that are known to the platform.
+   * @return returns all the operations for all known policies.
    */
   public List<IPolicyOperation> getAllOperations()
   {
     return platformUI.getAllOperations();
   }
   
-  /**
-   * 
-   * @param policiesSelected the selected service policies.
-   * @param isWorkspace indicates if this method is being called from the workspace
-   * preference page or from a project property page.
-   * @return returns the set of operations that are applicable to the list
-   * selected service policies.  This set is further restricted by the
-   * isWorkspace parameter.  If this parameter is false then operations that 
-   * are only associated with the workspace will be removed. 
-   */
-  public Set<IPolicyOperation> getSelectedOperations( List<IServicePolicy> policiesSelected, boolean isWorkspace )
+  public IPolicyOperation getOperation( IServicePolicy policy, String id )
   {
-    return platformUI.getSelectedOperations( policiesSelected, isWorkspace );
+    List<IPolicyOperation> operations = getOperations( policy, true );
+    IPolicyOperation       result     = null;
+    
+    for( IPolicyOperation operation : operations )
+    {
+      if( operation.getId().equals( id ) )
+      {
+        result = operation;
+        break;
+      }
+    }
+    
+    return result;
   }
   
   /**
    * 
+   * @param policy the policy
+   * @param isWorkspace true if this is a preference page context
+   * @return returns the list of operations for this policy.
+   */
+  public List<IPolicyOperation> getOperations( IServicePolicy policy, boolean isWorkspace )
+  {
+    return new Vector<IPolicyOperation>( platformUI.getOperationsForPolicy( policy, isWorkspace ) );
+  }
+    
+  /**
+   * 
    * @param status
    * @return returns a list of quick fixes for this status object.  If
    * no quick fixes are available an empty list will be returned.
diff --git a/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/internal/policy/EnumerationStateImpl.java b/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/internal/policy/EnumerationStateImpl.java
index adea503..83f8302 100644
--- a/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/internal/policy/EnumerationStateImpl.java
+++ b/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/internal/policy/EnumerationStateImpl.java
@@ -22,7 +22,7 @@
 
 public class EnumerationStateImpl implements IPolicyStateEnum
 {
-  private final String VALUE = "value";  //$NON-NLS-1$
+  private final String VALUE = IPolicyState.DefaultValueKey;  //$NON-NLS-1$
   
   private String                      enumId;
   private List<IStateEnumerationItem> enumList;
diff --git a/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/internal/policy/ServicePolicyImpl.java b/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/internal/policy/ServicePolicyImpl.java
index 6cedc57..69cb06f 100644
--- a/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/internal/policy/ServicePolicyImpl.java
+++ b/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/internal/policy/ServicePolicyImpl.java
@@ -375,7 +375,12 @@
   {
     for( IPolicyChildChangeListener listener : childChangeListeners )
     {
-      listener.childChange( policy, isAdd );     
+      List<IServicePolicy> policyList = new Vector<IServicePolicy>(1);
+      List<Boolean>        addedList  = new Vector<Boolean>(1);
+      
+      policyList.add( policy );
+      addedList.add( isAdd );
+      listener.childChange( policyList, addedList );     
     }
   }
 }
diff --git a/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/internal/policy/ServicePolicyPlatformImpl.java b/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/internal/policy/ServicePolicyPlatformImpl.java
index 1e4c35b..b1f139d 100644
--- a/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/internal/policy/ServicePolicyPlatformImpl.java
+++ b/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/internal/policy/ServicePolicyPlatformImpl.java
@@ -49,6 +49,8 @@
   private Map<IProject, ProjectEntry>              enabledProjectMap;
   private List<Expression>                         enabledList;
   private List<IPolicyChildChangeListener>         childChangeListeners;
+  private List<IServicePolicy>                     queuedChildChangePolicy;
+  private List<Boolean>                            queuedChildChangeAdded;
   
   public ServicePolicyPlatformImpl()
   {
@@ -204,11 +206,45 @@
     childChangeListeners.remove( listener );  
   }
   
+  public void queueChildChangeListeners( boolean queue )
+  {
+    if( queue && queuedChildChangeAdded == null )
+    {
+      queuedChildChangeAdded = new Vector<Boolean>();
+      queuedChildChangePolicy = new Vector<IServicePolicy>();
+    }
+    else if( !queue && queuedChildChangeAdded != null )
+    {
+      // Queuing has been turned off so we will fire all the queued events.
+      for( IPolicyChildChangeListener listener : childChangeListeners )
+      {
+        listener.childChange( queuedChildChangePolicy, queuedChildChangeAdded );
+      }
+      
+      queuedChildChangeAdded = null;
+      queuedChildChangePolicy = null;
+    }
+  }
+  
   private void fireChildChangeEvent( IServicePolicy policy, boolean isAdd )
   {
-    for( IPolicyChildChangeListener listener : childChangeListeners )
+    if( queuedChildChangeAdded == null )
     {
-      listener.childChange( policy, isAdd );     
+      List<IServicePolicy> policyList = new Vector<IServicePolicy>(1);
+      List<Boolean>        addedList  = new Vector<Boolean>(1);
+      
+      policyList.add( policy );
+      addedList.add( isAdd );
+      
+      for( IPolicyChildChangeListener listener : childChangeListeners )
+      {
+        listener.childChange( policyList, addedList );     
+      }
+    }
+    else
+    {
+      queuedChildChangeAdded.add( isAdd );
+      queuedChildChangePolicy.add( policy );
     }
   }
   
diff --git a/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/policy/IPolicyState.java b/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/policy/IPolicyState.java
index fa7b6a9..380723a 100644
--- a/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/policy/IPolicyState.java
+++ b/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/policy/IPolicyState.java
@@ -34,6 +34,8 @@
  */
 public interface IPolicyState
 {
+  public final static String DefaultValueKey = "default.value.key";
+  
   /**
    * 
    * @return returns true if the state of this policy is mutable.
diff --git a/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.java b/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.java
index 95a4b2e..f944e74 100644
--- a/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.java
+++ b/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/policy/ServicePolicyPlatform.java
@@ -223,6 +223,11 @@
     platformImpl.addChildChangeListener( listener );  
   }
   
+  public void queueChildChangeListeners( boolean queue )
+  {
+    platformImpl.queueChildChangeListeners( queue );
+  }
+  
   /**
    * Removes a child change listener from the service policy platform.
    * 
diff --git a/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/policy/listeners/IPolicyChildChangeListener.java b/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/policy/listeners/IPolicyChildChangeListener.java
index e876994..c513604 100644
--- a/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/policy/listeners/IPolicyChildChangeListener.java
+++ b/bundles/org.eclipse.wst.ws.service.policy/src/org/eclipse/wst/ws/service/policy/listeners/IPolicyChildChangeListener.java
@@ -14,9 +14,18 @@
  *******************************************************************************/
 package org.eclipse.wst.ws.service.policy.listeners;
 
+import java.util.List;
+
 import org.eclipse.wst.ws.service.policy.IServicePolicy;
 
 public interface IPolicyChildChangeListener
 {
-  public void childChange( IServicePolicy child, boolean added );
+  /**
+   * The method is called with an array of child changes.  Each child item
+   * is associated with the added item at the same index value.
+   * 
+   * @param child service policies that have changed.
+   * @param added indicates if the associate policy was added or removed.
+   */
+  public void childChange( List<IServicePolicy> child, List<Boolean> added );
 }
diff --git a/tests/org.eclipse.wst.ws.service.policy.test/src/org/eclipse/wst/ws/service/policy/test/MainTester.java b/tests/org.eclipse.wst.ws.service.policy.test/src/org/eclipse/wst/ws/service/policy/test/MainTester.java
index 87173b4..2b00891 100644
--- a/tests/org.eclipse.wst.ws.service.policy.test/src/org/eclipse/wst/ws/service/policy/test/MainTester.java
+++ b/tests/org.eclipse.wst.ws.service.policy.test/src/org/eclipse/wst/ws/service/policy/test/MainTester.java
@@ -391,10 +391,10 @@
      public boolean isAdded = false;
      public int     count = 0;;
      
-     public void childChange(IServicePolicy child, boolean added)
+     public void childChange(List<IServicePolicy> childList, List<Boolean> addedList)
      {
        childEventOccured = true;
-       isAdded = added;
+       isAdded = addedList.get(0);
        count++;
      }
    }
diff --git a/tests/org.eclipse.wst.ws.service.policy.test/src/org/eclipse/wst/ws/service/policy/test/MainUITester.java b/tests/org.eclipse.wst.ws.service.policy.test/src/org/eclipse/wst/ws/service/policy/test/MainUITester.java
index f9ea792..9af60aa 100644
--- a/tests/org.eclipse.wst.ws.service.policy.test/src/org/eclipse/wst/ws/service/policy/test/MainUITester.java
+++ b/tests/org.eclipse.wst.ws.service.policy.test/src/org/eclipse/wst/ws/service/policy/test/MainUITester.java
@@ -14,7 +14,6 @@
 package org.eclipse.wst.ws.service.policy.test;
 
 import java.util.List;
-import java.util.Set;
 import java.util.Vector;
 
 import junit.framework.TestCase;
@@ -53,57 +52,32 @@
      IServicePolicy          id2        = platform.getServicePolicy( "id2" ); //$NON-NLS-1$
      IServicePolicy          id3        = platform.getServicePolicy( "id3" ); //$NON-NLS-1$
      IServicePolicy          id4        = platform.getServicePolicy( "id4" ); //$NON-NLS-1$
-     //IServicePolicy          id_bool1   = platform.getServicePolicy( "id_boolean1" );
-//     /IServicePolicy          id_bool2   = platform.getServicePolicy( "id_boolean2" );
-     List<IServicePolicy>    list1      = new Vector<IServicePolicy>();
-     List<IServicePolicy>    list2      = new Vector<IServicePolicy>();
-     List<IServicePolicy>    list3      = new Vector<IServicePolicy>();
-     List<IServicePolicy>    list4      = new Vector<IServicePolicy>();
-     List<IServicePolicy>    list5      = new Vector<IServicePolicy>();
-     List<IServicePolicy>    list6      = new Vector<IServicePolicy>();
-     List<IServicePolicy>    list7      = new Vector<IServicePolicy>();
-     IPolicyOperation        op1        = platformUI.getOperation( "service.ui.operation1" ); //$NON-NLS-1$
-     IPolicyOperation        op2        = platformUI.getOperation( "service.ui.operation2" ); //$NON-NLS-1$
-     IPolicyOperation        op3        = platformUI.getOperation( "service.ui.operation3" ); //$NON-NLS-1$
-     IPolicyOperation        op4        = platformUI.getOperation( "service.ui.operation4" ); //$NON-NLS-1$
-  
-     list1.add( id1 );
-     list2.add( id2 );
-     list3.add( id3 );
-     list4.add( id4 );
-     list5.add( id4 );
-     list5.add( id1 );
-     list6.add( id2 );
-     list6.add( id3 );
-     list7.add( id1 );
-     list7.add( id2 );
-     list7.add( id3 );
-     list7.add( id4 );
-    
-     Set<IPolicyOperation> set1 = platformUI.getSelectedOperations( list1, true );
-     Set<IPolicyOperation> set2 = platformUI.getSelectedOperations( list2, true );
-     Set<IPolicyOperation> set3 = platformUI.getSelectedOperations( list3, true );
-     Set<IPolicyOperation> set4 = platformUI.getSelectedOperations( list4, true );
-     Set<IPolicyOperation> set5 = platformUI.getSelectedOperations( list5, true );
-     Set<IPolicyOperation> set6 = platformUI.getSelectedOperations( list6, true );
-     Set<IPolicyOperation> set7 = platformUI.getSelectedOperations( list7, true );
+     IPolicyOperation        op1_id2    = platformUI.getOperation( id2, "service.ui.operation1" ); //$NON-NLS-1$
+     IPolicyOperation        op1_id3    = platformUI.getOperation( id3, "service.ui.operation1" ); //$NON-NLS-1$
+     IPolicyOperation        op2_id1    = platformUI.getOperation( id1, "service.ui.operation2" ); //$NON-NLS-1$
+     IPolicyOperation        op2_id2    = platformUI.getOperation( id2, "service.ui.operation2" ); //$NON-NLS-1$
+     IPolicyOperation        op2_id3    = platformUI.getOperation( id3, "service.ui.operation2" ); //$NON-NLS-1$
+     IPolicyOperation        op2_id4    = platformUI.getOperation( id4, "service.ui.operation2" ); //$NON-NLS-1$
+     IPolicyOperation        op3_id4    = platformUI.getOperation( id4, "service.ui.operation3" ); //$NON-NLS-1$
+     IPolicyOperation        op4_id1    = platformUI.getOperation( id1, "service.ui.operation4" ); //$NON-NLS-1$
+     IPolicyOperation        op4_id2    = platformUI.getOperation( id2, "service.ui.operation4" ); //$NON-NLS-1$
+     IPolicyOperation        op4_id3    = platformUI.getOperation( id3, "service.ui.operation4" ); //$NON-NLS-1$
      
-     System.out.println( "\nDisplay sets" ); //$NON-NLS-1$
-     displaySet( "Set1", set1 ); //$NON-NLS-1$
-     displaySet( "Set2", set2 ); //$NON-NLS-1$
-     displaySet( "Set3", set3 ); //$NON-NLS-1$
-     displaySet( "Set4", set4 ); //$NON-NLS-1$
-     displaySet( "Set5", set5 ); //$NON-NLS-1$
-     displaySet( "Set6", set6 ); //$NON-NLS-1$
-     displaySet( "Set7", set7 ); //$NON-NLS-1$
+     List<IPolicyOperation> list1 = platformUI.getOperations( id1, true );
+     List<IPolicyOperation> list2 = platformUI.getOperations( id2, true );
+     List<IPolicyOperation> list3 = platformUI.getOperations( id3, true );
+     List<IPolicyOperation> list4 = platformUI.getOperations( id4, true );
      
-     checkContents( "Set1", set1, new IPolicyOperation[]{ op2, op4 } ); //$NON-NLS-1$
-     checkContents( "Set2", set2, new IPolicyOperation[]{ op1, op2, op4 } ); //$NON-NLS-1$
-     checkContents( "Set3", set3, new IPolicyOperation[]{ op1, op2, op4 } ); //$NON-NLS-1$
-     checkContents( "Set4", set4, new IPolicyOperation[]{ op2, op3 } ); //$NON-NLS-1$
-     checkContents( "Set5", set5, new IPolicyOperation[]{ op2, op3, op4 } ); //$NON-NLS-1$
-     checkContents( "Set6", set6, new IPolicyOperation[]{ op1, op2, op4 } ); //$NON-NLS-1$
-     checkContents( "Set7", set7, new IPolicyOperation[]{ op1, op2, op3, op4 } ); //$NON-NLS-1$
+     System.out.println( "\nDisplay lists" ); //$NON-NLS-1$
+     displayList( "List1", list1 ); //$NON-NLS-1$
+     displayList( "List2", list2 ); //$NON-NLS-1$
+     displayList( "List3", list3 ); //$NON-NLS-1$
+     displayList( "List4", list4 ); //$NON-NLS-1$
+     
+     checkContents( "List1", list1, new IPolicyOperation[]{ op2_id1, op4_id1 } ); //$NON-NLS-1$
+     checkContents( "List2", list2, new IPolicyOperation[]{ op1_id2, op2_id2, op4_id2 } ); //$NON-NLS-1$
+     checkContents( "List3", list3, new IPolicyOperation[]{ op1_id3, op2_id3, op4_id3 } ); //$NON-NLS-1$
+     checkContents( "List4", list4, new IPolicyOperation[]{ op2_id4, op3_id4 } ); //$NON-NLS-1$
    }
    
    public void testEnabledOperations()
@@ -116,7 +90,7 @@
      IServicePolicy          id4         = platform.getServicePolicy( "id4" ); //$NON-NLS-1$
      List<IServicePolicy>    policyList1 = new Vector<IServicePolicy>();
      List<IServicePolicy>    policyList2 = new Vector<IServicePolicy>();
-     IPolicyOperation        op1         = platformUI.getOperation( "service.ui.operation3" ); //$NON-NLS-1$
+     IPolicyOperation        op1         = platformUI.getOperation( id4, "service.ui.operation3" ); //$NON-NLS-1$
      
      policyList1.add( id1 );
      policyList1.add( id2 );
@@ -180,11 +154,11 @@
      }
    }
    
-   private void displaySet( String setName, Set<IPolicyOperation> operationSet )
+   private void displayList( String setName, List<IPolicyOperation> operationList )
    {
      System.out.print( setName + ": " ); //$NON-NLS-1$
      
-     for( IPolicyOperation operation : operationSet )
+     for( IPolicyOperation operation : operationList )
      {
        System.out.print( operation.getId() + "," ); //$NON-NLS-1$
      }
@@ -192,7 +166,7 @@
      System.out.println( "" ); //$NON-NLS-1$
    }
    
-   private void checkContents( String setName, Set<IPolicyOperation> operationSet, IPolicyOperation[] operationArray )
+   private void checkContents( String setName, List<IPolicyOperation> operationSet, IPolicyOperation[] operationArray )
    {
      assertTrue( "Set and array sizes don't match for " + setName + ".", operationSet.size() == operationArray.length ); //$NON-NLS-1$ //$NON-NLS-2$