[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 {