[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);