[227362] FacetWorkingCopy preset issue
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/FacetProjectCreationOperation.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/FacetProjectCreationOperation.java
index 851d40c..8416f03 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/FacetProjectCreationOperation.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/FacetProjectCreationOperation.java
@@ -36,6 +36,7 @@
 import org.eclipse.wst.common.project.facet.core.IProjectFacet;
 import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
 import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action;
 import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
 
 public class FacetProjectCreationOperation extends AbstractDataModelOperation {
@@ -101,7 +102,7 @@
 			}
 			if (runtimeAdded) {
 				IRuntime runtime = (IRuntime) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME);
-				addDefaultFactets(facetProj, runtime);
+				addDefaultFacets(facetProj, runtime.getDefaultFacets(fixedFacets));
 			}
 
 		} catch (CoreException e) {
@@ -112,19 +113,22 @@
 		}
 		return OK_STATUS;
 	}
-	
-	public static void addDefaultFactets(IFacetedProject facetProj, IRuntime runtime) throws ExecutionException 
-	{
-	    try
-	    {
-    	    final IFacetedProjectWorkingCopy fpjwc = facetProj.createWorkingCopy();
-    	    fpjwc.setSelectedPreset( fpjwc.getDefaultConfiguration().getId() );
-    	    fpjwc.commitChanges( null );
-	    }
-	    catch( CoreException e )
-	    {
-	        throw new ExecutionException( e.getMessage(), e );
-	    }
+
+	private static void addDefaultFacets(IFacetedProject facetProj, Set defaultFacets) {
+		Set actions = new HashSet();
+		for (Iterator iter = defaultFacets.iterator(); iter.hasNext();) {
+			IProjectFacetVersion facetVersion = (IProjectFacetVersion) iter.next();
+			if (!facetProj.hasProjectFacet(facetVersion.getProjectFacet())) {
+				actions.add(new IFacetedProject.Action(Action.Type.INSTALL, facetVersion, null));
+			}
+		}
+
+		try {
+			if (!actions.isEmpty())
+				facetProj.modify(actions, null);
+		} catch (CoreException e) {
+			Logger.getLogger().logError(e);
+		}
 	}
 
 	public IFacetedProject createProject(IProgressMonitor monitor) throws CoreException {
@@ -146,4 +150,14 @@
 		return facetProj;
 	}
 	
+	public static void addDefaultFactets(IFacetedProject facetProj, IRuntime runtime) throws ExecutionException {
+		
+			if (runtime != null) {
+				final IFacetedProjectWorkingCopy fpjwc = facetProj.createWorkingCopy();
+				Set<IProjectFacetVersion> presetFacets = fpjwc.getDefaultConfiguration().getProjectFacets();
+				addDefaultFacets(facetProj, presetFacets);
+			}
+		
+	}
+
 }