[570817] Use raw classpath to find viable source folder
         Also support CXF version detection on Java 9+
diff --git a/core/bundles/org.eclipse.jst.ws/META-INF/MANIFEST.MF b/core/bundles/org.eclipse.jst.ws/META-INF/MANIFEST.MF
index f3c218e..6ac2672 100644
--- a/core/bundles/org.eclipse.jst.ws/META-INF/MANIFEST.MF
+++ b/core/bundles/org.eclipse.jst.ws/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.jst.ws
-Bundle-Version: 1.0.900.qualifier
+Bundle-Version: 1.0.1000.qualifier
 Bundle-Activator: org.eclipse.jst.ws.internal.plugin.WebServicePlugin
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
@@ -27,7 +27,7 @@
  org.eclipse.jem;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.emf.common;bundle-version="[2.2.0,3.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.17.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.jface;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.2.0,3.0.0)",
diff --git a/core/bundles/org.eclipse.jst.ws/pom.xml b/core/bundles/org.eclipse.jst.ws/pom.xml
index 6a0ae65..7994781 100644
--- a/core/bundles/org.eclipse.jst.ws/pom.xml
+++ b/core/bundles/org.eclipse.jst.ws/pom.xml
@@ -22,6 +22,6 @@
 

   <groupId>org.eclipse.webtools.webservices</groupId>

   <artifactId>org.eclipse.jst.ws</artifactId>

-  <version>1.0.900-SNAPSHOT</version>

+  <version>1.0.1000-SNAPSHOT</version>

   <packaging>eclipse-plugin</packaging>

 </project>

diff --git a/core/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/ResourceUtils.java b/core/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/ResourceUtils.java
index 884017d..78ec541 100644
--- a/core/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/ResourceUtils.java
+++ b/core/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/ResourceUtils.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2011 IBM Corporation and others.
+ * Copyright (c) 2004, 2021 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
  * which accompanies this distribution, and is available at
@@ -47,6 +47,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Plugin;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jdt.core.IClasspathEntry;
@@ -715,7 +716,21 @@
 	 * @return
 	 */
 	public static IPath[] getAllJavaSourceLocations(IProject project) {
-		Vector pathVector = new Vector();
+		try {
+			IClasspathEntry[] entries = JavaCore.create(project).getRawClasspath();
+			List<IPath> paths = new ArrayList<IPath>();
+			for (int i = 0; i < entries.length; i++) {
+				if (IClasspathEntry.CPE_SOURCE == entries[i].getEntryKind()) {
+					paths.add(entries[i].getPath());
+				}
+			}
+			return paths.toArray(new IPath[paths.size()]);
+		}
+		catch (JavaModelException e1) {
+			Platform.getLog(WebServicePlugin.getInstance().getBundle()).error(e1.getLocalizedMessage(), e1);
+		}
+
+		Vector<IPath> pathVector = new Vector<IPath>();
 		IPackageFragmentRoot[] fragmentRoots = getJavaPackageFragmentRoots(project);
 
 		for (int i = 0; i < fragmentRoots.length; i++) {
diff --git a/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/META-INF/MANIFEST.MF b/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/META-INF/MANIFEST.MF
index 1b3374b..4e168d5 100644
--- a/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/META-INF/MANIFEST.MF
+++ b/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ws.cxf.ui;singleton:=true
-Bundle-Version: 1.0.400.qualifier
+Bundle-Version: 1.0.500.qualifier
 Bundle-Activator: org.eclipse.jst.ws.internal.cxf.ui.CXFUIPlugin
 Bundle-Vendor: %pluginProvider
 Bundle-Localization: plugin
diff --git a/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/pom.xml b/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/pom.xml
index 62e4f76..dc41cb2 100644
--- a/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/pom.xml
+++ b/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/pom.xml
@@ -24,6 +24,6 @@
 
   <groupId>org.eclipse.webtools.webservices</groupId>
   <artifactId>org.eclipse.jst.ws.cxf.ui</artifactId>
-  <version>1.0.400-SNAPSHOT</version>
+  <version>1.0.500-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/preferences/CXFRuntimePreferencePage.java b/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/preferences/CXFRuntimePreferencePage.java
index f2f00f7..4fbdf2c 100644
--- a/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/preferences/CXFRuntimePreferencePage.java
+++ b/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/preferences/CXFRuntimePreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2010 IONA Technologies PLC
+ * Copyright (c) 2008, 2021 IONA Technologies PLC and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
  * which accompanies this distribution, and is available at
@@ -17,6 +17,7 @@
 import java.util.Map;
 
 import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.CheckStateChangedEvent;
 import org.eclipse.jface.viewers.CheckboxTableViewer;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
@@ -273,21 +274,7 @@
         gridData.verticalSpan = 5;
         cxfInstallations.getTable().setLayoutData(gridData);
 
-        cxfInstallations.setContentProvider(new IStructuredContentProvider() {
-
-            public Object[] getElements(Object inputElement) {
-                if (inputElement instanceof Collection<?>) {
-                    return ((Collection<?>) inputElement).toArray();
-                }
-                return new Object[] {};
-            }
-
-            public void dispose() {
-            }
-
-            public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-            }
-        });
+        cxfInstallations.setContentProvider(new ArrayContentProvider());
 
         cxfInstallations.setComparator(new ViewerComparator() {
             @Override
diff --git a/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/wizards/CXFInstallWizardPage.java b/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/wizards/CXFInstallWizardPage.java
index 34a6f37..16110aa 100644
--- a/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/wizards/CXFInstallWizardPage.java
+++ b/jaxws/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/wizards/CXFInstallWizardPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2012 Shane Clarke.
+ * Copyright (c) 2010, 2021 Shane Clarke and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
  * which accompanies this distribution, and is available at
@@ -26,6 +26,7 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jdt.core.ClasspathContainerInitializer;
 import org.eclipse.jdt.core.IJavaProject;
@@ -54,6 +55,7 @@
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.wst.common.project.facet.core.IFacetedProject;
 import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.osgi.framework.Bundle;
 import org.osgi.framework.Version;
 
 public class CXFInstallWizardPage extends WizardPage {
@@ -285,6 +287,12 @@
             cxfLib.add(cxLibFolderPath + System.getProperty("file.separator") + jarFile); //$NON-NLS-1$
         }
 
+        final String supportedPrefix = "reference:file:"; //$NON-NLS-1$
+        Bundle activation = Platform.getBundle("javax.activation");
+        if (activation != null && activation.getLocation().startsWith(supportedPrefix)) {
+            cxfLib.add(activation.getLocation().substring(supportedPrefix.length()));
+        }
+
         IStatus toolVersionStatus = LaunchUtils.launch(cxfLib.toArray(new String[cxfLib.size()]),
                 "org.apache.cxf.tools.wsdlto.WSDLToJava", new String[] { "-v" }); //$NON-NLS-1$ //$NON-NLS-2$
         return toolVersionStatus;
diff --git a/jaxws/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF b/jaxws/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF
index 9d3d86c..2ce4b1d 100644
--- a/jaxws/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF
+++ b/jaxws/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF
@@ -3,12 +3,12 @@
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ws.jaxws.core;singleton:=true
 Bundle-Vendor: %pluginProvider
-Bundle-Version: 1.0.501.qualifier
+Bundle-Version: 1.0.600.qualifier
 Bundle-ClassPath: .
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-Activator: org.eclipse.jst.ws.internal.jaxws.core.JAXWSCorePlugin
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.17.0,4.0.0)",
  org.eclipse.jdt.core;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.jdt.apt.core;bundle-version="[3.3.100,4.0.0)",
diff --git a/jaxws/bundles/org.eclipse.jst.ws.jaxws.core/pom.xml b/jaxws/bundles/org.eclipse.jst.ws.jaxws.core/pom.xml
index 19230b4..8664ff0 100644
--- a/jaxws/bundles/org.eclipse.jst.ws.jaxws.core/pom.xml
+++ b/jaxws/bundles/org.eclipse.jst.ws.jaxws.core/pom.xml
@@ -24,7 +24,7 @@
 
   <groupId>org.eclipse.webtools.webservices</groupId>
   <artifactId>org.eclipse.jst.ws.jaxws.core</artifactId>
-  <version>1.0.501-SNAPSHOT</version>
+  <version>1.0.600-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
   <build>
diff --git a/jaxws/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.java b/jaxws/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.java
index b15c929..3d8d54d 100644
--- a/jaxws/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.java
+++ b/jaxws/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2010 IONA Technologies PLC
+ * Copyright (c) 2008, 2021 IONA Technologies PLC and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
  * which accompanies this distribution, and is available at
@@ -153,6 +153,13 @@
      */
     public static IPath getJavaProjectSourceDirectoryPath(IJavaProject javaProject) {
         try {
+            IClasspathEntry[] rawClasspath = javaProject.getRawClasspath();
+            for (int i = 0; i < rawClasspath.length; i++) {
+                if (rawClasspath[i].getEntryKind() == IClasspathEntry.CPE_SOURCE) {
+                    return rawClasspath[i].getPath();
+                }
+            }
+
             IPackageFragmentRoot[] packageFragmentRoots = javaProject.getAllPackageFragmentRoots();
             IPackageFragmentRoot packageFragmentRoot = packageFragmentRoots[0];
             IResource srcDirectoryResource = packageFragmentRoot.getResource();
diff --git a/jaxws/features/org.eclipse.jst.ws.cxf.feature/feature.xml b/jaxws/features/org.eclipse.jst.ws.cxf.feature/feature.xml
index a2dd9e7..461b627 100644
--- a/jaxws/features/org.eclipse.jst.ws.cxf.feature/feature.xml
+++ b/jaxws/features/org.eclipse.jst.ws.cxf.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jst.ws.cxf.feature"
       label="%featureName"
-      version="1.1.700.qualifier"
+      version="1.1.800.qualifier"
       provider-name="%featureProvider"
       plugin="org.eclipse.jst.ws.cxf.core"
       image="eclipse_update_120.jpg"
diff --git a/jaxws/features/org.eclipse.jst.ws.cxf.feature/pom.xml b/jaxws/features/org.eclipse.jst.ws.cxf.feature/pom.xml
index 9515248..66a357a 100644
--- a/jaxws/features/org.eclipse.jst.ws.cxf.feature/pom.xml
+++ b/jaxws/features/org.eclipse.jst.ws.cxf.feature/pom.xml
@@ -24,7 +24,7 @@
 
   <groupId>org.eclipse.webtools.webservices</groupId>
   <artifactId>org.eclipse.jst.ws.cxf.feature</artifactId>
-  <version>1.1.700-SNAPSHOT</version>
+  <version>1.1.800-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 
   <build>
diff --git a/jaxws/features/org.eclipse.jst.ws.jaxws.dom.feature/feature.xml b/jaxws/features/org.eclipse.jst.ws.jaxws.dom.feature/feature.xml
index 7b65aaa..7a48a6e 100755
--- a/jaxws/features/org.eclipse.jst.ws.jaxws.dom.feature/feature.xml
+++ b/jaxws/features/org.eclipse.jst.ws.jaxws.dom.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jst.ws.jaxws.dom.feature"
       label="%featureName"
-      version="1.0.303.qualifier"
+      version="1.0.400.qualifier"
       provider-name="%featureProvider"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.license"
diff --git a/jaxws/features/org.eclipse.jst.ws.jaxws.dom.feature/pom.xml b/jaxws/features/org.eclipse.jst.ws.jaxws.dom.feature/pom.xml
index cfb17e1..d8750ec 100644
--- a/jaxws/features/org.eclipse.jst.ws.jaxws.dom.feature/pom.xml
+++ b/jaxws/features/org.eclipse.jst.ws.jaxws.dom.feature/pom.xml
@@ -24,7 +24,7 @@
 
   <groupId>org.eclipse.webtools.webservices</groupId>
   <artifactId>org.eclipse.jst.ws.jaxws.dom.feature</artifactId>
-  <version>1.0.303-SNAPSHOT</version>
+  <version>1.0.400-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 
   <build>
diff --git a/jaxws/features/org.eclipse.jst.ws.jaxws.feature/feature.xml b/jaxws/features/org.eclipse.jst.ws.jaxws.feature/feature.xml
index afef371..d406dd8 100644
--- a/jaxws/features/org.eclipse.jst.ws.jaxws.feature/feature.xml
+++ b/jaxws/features/org.eclipse.jst.ws.jaxws.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jst.ws.jaxws.feature"
       label="%featureName"
-      version="1.2.700.qualifier"
+      version="1.2.800.qualifier"
       provider-name="%featureProvider"
       plugin="org.eclipse.jst.ws.jaxws.core"
       image="eclipse_update_120.jpg"
diff --git a/jaxws/features/org.eclipse.jst.ws.jaxws.feature/pom.xml b/jaxws/features/org.eclipse.jst.ws.jaxws.feature/pom.xml
index 30007c0..fe446ad 100644
--- a/jaxws/features/org.eclipse.jst.ws.jaxws.feature/pom.xml
+++ b/jaxws/features/org.eclipse.jst.ws.jaxws.feature/pom.xml
@@ -24,7 +24,7 @@
 
   <groupId>org.eclipse.webtools.webservices</groupId>
   <artifactId>org.eclipse.jst.ws.jaxws.feature</artifactId>
-  <version>1.2.700-SNAPSHOT</version>
+  <version>1.2.800-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 
   <build>