[266418] runtime not assigned during web lib selection of non-faceted java project
diff --git a/features/org.eclipse.jst.enterprise_ui.feature.patch/buildnotes_org.eclipse.jst.enterprise_ui.feature.patch.html b/features/org.eclipse.jst.enterprise_ui.feature.patch/buildnotes_org.eclipse.jst.enterprise_ui.feature.patch.html index 3da43c3..7f7b62d 100644 --- a/features/org.eclipse.jst.enterprise_ui.feature.patch/buildnotes_org.eclipse.jst.enterprise_ui.feature.patch.html +++ b/features/org.eclipse.jst.enterprise_ui.feature.patch/buildnotes_org.eclipse.jst.enterprise_ui.feature.patch.html
@@ -12,6 +12,8 @@ <h1>WTP 3.0.4 Patches</h1> <p>Bug <a href='https://bugs.eclipse.org/265862'>265862</a>. ClassCastExceptions for EAR with 5.0 facet and 1.4 DD </p> +<p>Bug <a href='https://bugs.eclipse.org/266411'>266411</a>. Export War wizard suggests using "Overwrite existing file" which DNE</p> +<p>Bug <a href='https://bugs.eclipse.org/266418'>266418</a>. runtime not assigned during web lib selection of non-faceted java project</p> </body> </html> \ No newline at end of file
diff --git a/features/org.eclipse.jst.enterprise_ui.feature.patch/feature.properties b/features/org.eclipse.jst.enterprise_ui.feature.patch/feature.properties index 7bd62c5..bd76090 100644 --- a/features/org.eclipse.jst.enterprise_ui.feature.patch/feature.properties +++ b/features/org.eclipse.jst.enterprise_ui.feature.patch/feature.properties
@@ -28,7 +28,9 @@ \n\ The fixes are described in the following bugzilla entries:\n\ \n\ -Bug https://bugs.eclipse.org/265862 ClassCastExceptions for EAR with 5.0 facet and 1.4 DD\n\ +Bug https://bugs.eclipse.org/265862 ClassCastExceptions for EAR with 5.0 facet and 1.4 DD\n\ +Bug https://bugs.eclipse.org/266411 Export War wizard suggests using "Overwrite existing file" which DNE\n\ +Bug https://bugs.eclipse.org/266418 runtime not assigned during web lib selection of non-faceted java project\n\ \n\ # "copyright" property - text of the "Feature Update Copyright"
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/WebLibDependencyPropertiesPage.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/WebLibDependencyPropertiesPage.java index d5045bc..df5b6c3 100644 --- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/WebLibDependencyPropertiesPage.java +++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/WebLibDependencyPropertiesPage.java
@@ -12,10 +12,17 @@ package org.eclipse.jst.j2ee.internal; import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.emf.common.util.URI; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.ui.wizards.BuildPathDialogAccess; @@ -25,6 +32,7 @@ import org.eclipse.jst.j2ee.application.internal.operations.ClasspathElement; import org.eclipse.jst.j2ee.internal.common.ClasspathModel; import org.eclipse.jst.j2ee.internal.common.ClasspathModelListener; +import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin; import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; @@ -36,9 +44,14 @@ import org.eclipse.wst.common.componentcore.ComponentCore; import org.eclipse.wst.common.componentcore.internal.impl.ModuleURIUtil; import org.eclipse.wst.common.componentcore.internal.resources.VirtualArchiveComponent; +import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants; import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; import org.eclipse.wst.common.componentcore.resources.IVirtualReference; import org.eclipse.wst.common.frameworks.internal.ui.WorkspaceModifyComposedOperation; +import org.eclipse.wst.common.project.facet.core.IFacetedProject; +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.runtime.IRuntime; public class WebLibDependencyPropertiesPage extends JARDependencyPropertiesPage implements IClasspathTableOwner, Listener, ClasspathModelListener { @@ -118,6 +131,15 @@ } return true; } + private boolean equals(final Object obj1, final Object obj2) { + if (obj1 == obj2) { + return true; + } else if (obj1 == null || obj2 == null) { + return false; + } else { + return obj1.equals(obj2); + } + } protected void setEnablement() { if (tableManager.availableJARsViewer.getTable().getItems().length == 0) { @@ -128,6 +150,9 @@ tableManager.deselectAllButton.setEnabled(true); } } + private IProgressMonitor submon(final IProgressMonitor parent, final int ticks) { + return (parent == null ? null : new SubProgressMonitor(parent, ticks)); + } private void handleWLPSupport() { availableDependentJars.setText(ManifestUIResourceHandler.WEB_LIB_LIST_DESCRIPTION); @@ -149,9 +174,12 @@ return true; } try { + IProject[] javaProjects = getJavaProjectsWithoutFacets(); boolean createdFlexProjects = runWLPOp(createFlexProjectOperations()); + boolean createdComponentDependency = false; if (createdFlexProjects) { + addTargetRuntimesToNewJavaProjects(javaProjects,new NullProgressMonitor()); createdComponentDependency = runWLPOp(createComponentDependencyOperations()); isDirty = false; } @@ -165,6 +193,23 @@ } } + private IProject[] getJavaProjectsWithoutFacets() { + List projectsList = new ArrayList(); + Object[] elements = tableManager.availableJARsViewer.getCheckedElements(); + for (int i = 0; i < elements.length; i++) { + ClasspathElement element = (ClasspathElement) elements[i]; + IProject elementProject = element.getProject(); + try { + if (elementProject != null && !elementProject.hasNature(IModuleConstants.MODULE_NATURE_ID)) + projectsList.add(elementProject); + } catch (CoreException e) { + // TODO Auto-generated catch block + J2EEPlugin.getDefault().logError(e); + } + } + return (IProject[])projectsList.toArray(new IProject[projectsList.size()]); + } + private boolean runWLPOp(WorkspaceModifyComposedOperation composed) { try { if (composed != null) @@ -188,6 +233,51 @@ return true; } + private void addTargetRuntimesToNewJavaProjects(IProject[] javaProjects, final IProgressMonitor monitor ) + + { + if (monitor != null) { + monitor.beginTask("", 1); + } + IProject targetProject = project; + for (int i = 0; i < javaProjects.length; i++) { + IProject moduleProject = javaProjects[i]; + + try { + final IFacetedProject targetFacetedProject = ProjectFacetsManager.create(targetProject); + + final IRuntime targetRuntime = targetFacetedProject.getRuntime(); + + final IFacetedProject moduleFacetedProject = ProjectFacetsManager.create(moduleProject); + + if (moduleFacetedProject != null && !equals(targetRuntime, moduleFacetedProject.getRuntime())) { + boolean supports = true; + + if (targetRuntime != null) { + for (Iterator itr = moduleFacetedProject.getProjectFacets().iterator(); itr.hasNext();) { + final IProjectFacetVersion fver = (IProjectFacetVersion) itr.next(); + + if (!targetRuntime.supports(fver)) { + supports = false; + break; + } + } + } + + if (supports) { + moduleFacetedProject.setRuntime(targetRuntime, submon(monitor, 1)); + } + } + } catch(CoreException ex) { + J2EEPlugin.getDefault().logError(ex); + } finally { + if (monitor != null) { + monitor.done(); + } + } + } + } + private void createRef(String aComponentName){ IVirtualComponent archive = ComponentCore.createArchiveComponent(model.getComponent().getProject(), aComponentName);