[228568] UtilityFacetPostInstallDelegate shouldn't hard code EAR facet version when Util and EAR created in same wizard
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/project/facet/UtilityFacetPostInstallDelegate.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/project/facet/UtilityFacetPostInstallDelegate.java
index aec49dd..8145285 100644
--- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/project/facet/UtilityFacetPostInstallDelegate.java
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/project/facet/UtilityFacetPostInstallDelegate.java
@@ -15,7 +15,6 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jem.util.logger.proxy.Logger;
-import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wst.common.project.facet.core.IDelegate;
 import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
@@ -32,33 +31,14 @@
 
 			final IDataModel model = (IDataModel) cfg;
 
-
 			// Associate with an EAR, if necessary.
 			if (model.getBooleanProperty(IUtilityFacetInstallDataModelProperties.ADD_TO_EAR)) {
 				final String earProjectName = model.getStringProperty(IUtilityFacetInstallDataModelProperties.EAR_PROJECT_NAME);
-				if (earProjectName != null && earProjectName != "") { //$NON-NLS-1$
-//					IProject earProject = ProjectUtilities.getProject(earProjectName);
-//					if (earProject.exists()) {
-//						IVirtualComponent earComp = ComponentCore.createComponent(earProject);
-//
-//						IDataModel dataModel = DataModelFactory.createDataModel(new AddComponentToEnterpriseApplicationDataModelProvider());
-//						dataModel.setProperty(ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT, earComp);
-//						List modList = (List) dataModel.getProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST);
-//						modList.add(c);
-//						dataModel.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST, modList);
-//						try {
-//							dataModel.getDefaultOperation().execute(null, null);
-//						} catch (ExecutionException e) {
-//							Logger.getLogger().logError(e);
-//						}
-//					}
-					
-
+				if (earProjectName != null && earProjectName != "") //$NON-NLS-1$
+				{
 					final String moduleURI = model.getStringProperty(IJ2EEModuleFacetInstallDataModelProperties.MODULE_URI);
 					
-					//final String moduleURI = project.getName() + ".jar";
-						
-					installAndAddModuletoEAR( J2EEVersionConstants.VERSION_1_4_TEXT,
+					installAndAddModuletoEAR( null,
 								earProjectName,
 								(IRuntime) model.getProperty(IJ2EEFacetInstallDataModelProperties.FACET_RUNTIME),
 								project,
@@ -66,8 +46,6 @@
 								monitor );					
 				}
 			}
-
-
 		} catch (Exception e) {
 			Logger.getLogger().logError(e);
 		} finally {
diff --git a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/facet/J2EEFacetInstallDelegate.java b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/facet/J2EEFacetInstallDelegate.java
index 293b63b..ca61d70 100644
--- a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/facet/J2EEFacetInstallDelegate.java
+++ b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/facet/J2EEFacetInstallDelegate.java
@@ -13,10 +13,8 @@
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.resources.IContainer;
@@ -34,22 +32,20 @@
 import org.eclipse.jst.j2ee.application.internal.operations.AddComponentToEnterpriseApplicationDataModelProvider;
 import org.eclipse.jst.j2ee.application.internal.operations.IAddComponentToEnterpriseApplicationDataModelProperties;
 import org.eclipse.jst.j2ee.internal.J2EEConstants;
-import org.eclipse.jst.j2ee.internal.earcreation.EarFacetInstallDataModelProvider;
 import org.eclipse.jst.j2ee.internal.project.ManifestFileCreationAction;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.datamodel.properties.ICreateReferenceComponentsDataModelProperties;
-import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetDataModelProperties;
-import org.eclipse.wst.common.componentcore.internal.operation.FacetProjectCreationOperation;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wst.common.internal.emf.resource.RendererFactory;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy;
 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.Type;
 import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
+import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponent;
 import org.eclipse.wst.project.facet.ProductManager;
+import org.eclipse.wst.web.internal.facet.RuntimePresetMappingRegistry;
 
 public abstract class J2EEFacetInstallDelegate {
 
@@ -61,41 +57,77 @@
 		jproj.setRawClasspath(updated, null);
 	}
 
-	protected void installEARFacet(String j2eeVersionText, String earProjectName, IRuntime runtime, IProgressMonitor monitor){
-
+    protected void installEARFacet( final String j2eeVersionText, 
+                                    final String earProjectName, 
+                                    final IRuntime runtime, 
+                                    final IProgressMonitor monitor )
+    {
 		IProject project = ProjectUtilities.getProject(earProjectName); 
 		if( project.exists())
 			return;
 		
-		IFacetedProject facetProj;
-		try {
-			facetProj = ProjectFacetsManager.create(earProjectName,
-					null, monitor);
-			if(null != runtime){
-				facetProj.setRuntime(runtime, monitor);
-			}
-			
-			IDataModel earFacetInstallDataModel = DataModelFactory.createDataModel(new EarFacetInstallDataModelProvider());
-			earFacetInstallDataModel.setProperty(IFacetDataModelProperties.FACET_PROJECT_NAME, earProjectName);
-			earFacetInstallDataModel.setProperty(IFacetDataModelProperties.FACET_VERSION_STR, j2eeVersionText);
-			
-			Set actions = new HashSet();
-			actions.add(new IFacetedProject.Action((Type) earFacetInstallDataModel.getProperty(IFacetDataModelProperties.FACET_TYPE),
-				(IProjectFacetVersion) earFacetInstallDataModel.getProperty(IFacetDataModelProperties.FACET_VERSION),
-				earFacetInstallDataModel));
-
-
-			facetProj.modify(actions, null);
-			facetProj.setFixedProjectFacets(Collections.singleton(EARFacetUtils.EAR_FACET));
-			
-			try {
-				FacetProjectCreationOperation.addDefaultFactets(facetProj, runtime);
-			} catch (ExecutionException e) {
-				Logger.getLogger().logError(e);
-			}			
-		} catch (CoreException e) {
-			Logger.getLogger().logError(e);
-		}		
+		final IFacetedProjectWorkingCopy fpjwc = FacetedProjectFramework.createNewProject();
+		
+		fpjwc.setProjectName( earProjectName );
+		
+		if( runtime != null )
+		{
+		    fpjwc.setTargetedRuntimes( Collections.singleton( runtime ) );
+		}
+		
+		fpjwc.setFixedProjectFacets( Collections.singleton( EARFacetUtils.EAR_FACET ) );
+		fpjwc.setSelectedPreset( FacetedProjectFramework.DEFAULT_CONFIGURATION_PRESET_ID );
+		
+		if( j2eeVersionText != null )
+		{
+		    final IProjectFacetVersion defaultEarFacetVersion
+		        = fpjwc.getProjectFacetVersion( EARFacetUtils.EAR_FACET );
+		    
+		    if( ! defaultEarFacetVersion.getVersionString().equals( j2eeVersionText ) )
+		    {
+		        String presetId = null;
+		        
+		        if( runtime != null )
+		        {
+    		        for( IRuntimeComponent rc : runtime.getRuntimeComponents() )
+    		        {
+    		            presetId = RuntimePresetMappingRegistry.INSTANCE.getPresetID
+    		            ( 
+    		                rc.getRuntimeComponentType().getId(),
+    		                rc.getRuntimeComponentVersion().getVersionString(), 
+    		                EARFacetUtils.EAR_FACET.getId(), 
+    		                j2eeVersionText 
+    		            );
+    		            
+    		            if( presetId != null )
+    		            {
+    		                break;
+    		            }
+    		        }
+		        }
+		        
+		        if( presetId != null )
+		        {
+		            fpjwc.setSelectedPreset( presetId );
+		        }
+		        else
+		        {
+		            final IProjectFacetVersion earFacetVersion
+		                = EARFacetUtils.EAR_FACET.getVersion( j2eeVersionText );
+		            
+		            fpjwc.setProjectFacets( Collections.singleton( earFacetVersion ) );
+		        }
+		    }
+		}
+		
+		try
+		{
+		    fpjwc.commitChanges( null );
+		}
+		catch( CoreException e )
+		{
+		    Logger.getLogger().logError( e );
+		}
 	}
 	
     protected void createManifest(IProject project, IContainer aFolder, IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException {