[189968] [2.0] FacetedProject.modify() method validates action configs too early
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.java
index 97055c1..26a645c 100644
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.java
+++ b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.java
@@ -307,26 +307,19 @@
final List<Action> copy = new ArrayList<Action>( actions );
ProjectFacetsManager.sort( this.facets, copy );
- // Update and check the action configs.
+ // Execute the actions.
- for( int i = 0, n = copy.size(); i < n; i++ )
+ for( Action action : copy )
{
- Action action = copy.get( i );
- final IProjectFacetVersion fv = action.getProjectFacetVersion();
+ final Action.Type type = action.getType();
+ final ProjectFacetVersion fv = (ProjectFacetVersion) action.getProjectFacetVersion();
+ final IActionDefinition def = fv.getActionDefinition( this.facets, type );
+
Object config = action.getConfig();
if( config == null )
{
- final IActionDefinition def
- = fv.getActionDefinition( this.facets, action.getType() );
-
config = def.createConfigObject( fv, this.project.getName() );
-
- if( config != null )
- {
- action = new Action( action.getType(), fv, config );
- copy.set( i, action );
- }
}
if( config != null )
@@ -356,18 +349,6 @@
}
}
}
- }
-
- // Execute the actions.
-
- for( Action action : copy )
- {
- final Action.Type type = action.getType();
-
- final ProjectFacetVersion fv
- = (ProjectFacetVersion) action.getProjectFacetVersion();
-
- final IActionDefinition def = fv.getActionDefinition( this.facets, type );
if( monitor != null )
{
@@ -397,14 +378,12 @@
}
final IFacetedProjectEvent preEvent
- = new ProjectFacetActionEvent( this, getPreEventType( type ), fv,
- action.getConfig() );
+ = new ProjectFacetActionEvent( this, getPreEventType( type ), fv, config );
notifyListeners( preEvent );
worked( monitor, 10 );
- final IDelegate delegate
- = ( (ActionDefinition) def ).getDelegate();
+ final IDelegate delegate = ( (ActionDefinition) def ).getDelegate();
if( delegate == null )
{
@@ -412,8 +391,7 @@
}
else
{
- callDelegate( fv, delegate, action.getConfig(), type,
- submon( monitor, 80 ) );
+ callDelegate( fv, delegate, config, type, submon( monitor, 80 ) );
}
synchronized( this.lock )
@@ -424,8 +402,7 @@
save();
final IFacetedProjectEvent postEvent
- = new ProjectFacetActionEvent( this, getPostEventType( type ), fv,
- action.getConfig() );
+ = new ProjectFacetActionEvent( this, getPostEventType( type ), fv, config );
notifyListeners( postEvent );
worked( monitor, 10 );