Bug #283170: Multiple CXF installations
diff --git a/bundles/org.eclipse.jst.ws.cxf.core/src/org/eclipse/jst/ws/internal/cxf/core/utils/LaunchUtils.java b/bundles/org.eclipse.jst.ws.cxf.core/src/org/eclipse/jst/ws/internal/cxf/core/utils/LaunchUtils.java
index 968dfc4..8f34451 100644
--- a/bundles/org.eclipse.jst.ws.cxf.core/src/org/eclipse/jst/ws/internal/cxf/core/utils/LaunchUtils.java
+++ b/bundles/org.eclipse.jst.ws.cxf.core/src/org/eclipse/jst/ws/internal/cxf/core/utils/LaunchUtils.java
@@ -27,7 +27,7 @@
import org.eclipse.jdt.launching.JavaRuntime;
import org.eclipse.jdt.launching.VMRunnerConfiguration;
import org.eclipse.jst.ws.internal.cxf.core.CXFCorePlugin;
-import org.eclipse.jst.ws.internal.cxf.core.model.CXFContext;
+import org.eclipse.jst.ws.internal.cxf.core.model.CXFInstall;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
@@ -78,13 +78,15 @@
return status;
}
- public static void launch(IJavaProject javaProject, String className, String[] programArgs)
- throws CoreException {
+ public static void launch(IJavaProject javaProject, String className, String[] programArgs) throws CoreException {
IVMInstall vmInstall = JavaRuntime.getVMInstall(javaProject);
if (vmInstall == null) {
vmInstall = JavaRuntime.getDefaultVMInstall();
}
+ String installedVersion = CXFCorePlugin.getDefault().getCXFRuntimeVersion(javaProject.getProject());
+ CXFInstall cxfInstall = CXFCorePlugin.getDefault().getJava2WSContext().getInstallations().get(installedVersion);
+
IVMRunner vmRunner = vmInstall.getVMRunner(ILaunchManager.RUN_MODE);
String[] runtimeClasspath = JavaRuntime.computeDefaultRuntimeClassPath(javaProject);
VMRunnerConfiguration vmRunnerConfiguration = new VMRunnerConfiguration(className, runtimeClasspath);
@@ -95,7 +97,7 @@
IVMInstall2 install2 = (IVMInstall2) vmInstall;
if (install2.getJavaVersion().compareTo(JavaCore.VERSION_1_6) > 0) {
vmRunnerConfiguration.setVMArguments(new String[] { "-Djava.endorsed.dirs=" //$NON-NLS-1$
- + CXFCorePlugin.getDefault().getJava2WSContext().getDefaultRuntimeLocation() });
+ + cxfInstall.getLocation() });
}
}
@@ -113,19 +115,19 @@
IProcess[] processes = launch.getProcesses();
String outputStream = processes[0].getStreamsProxy().getOutputStreamMonitor().getContents();
- logStream(outputStream);
+ logStream(outputStream, cxfInstall);
String errorStream = processes[0].getStreamsProxy().getErrorStreamMonitor().getContents();
- logStream(errorStream);
+ logStream(errorStream, cxfInstall);
logErrorStreamContents(errorStream, className);
}
- private static void logStream(String outputStream) {
+ private static void logStream(String outputStream, CXFInstall cxfInstall) {
if (!PlatformUI.isWorkbenchRunning()) {
return;
}
try {
- MessageConsole cxfConsole = getCXFConsole();
+ MessageConsole cxfConsole = getCXFConsole(cxfInstall);
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
if (workbenchWindow != null) {
@@ -144,19 +146,18 @@
}
}
- private static MessageConsole getCXFConsole() {
+ private static MessageConsole getCXFConsole(CXFInstall cxfInstall) {
ConsolePlugin consolePlugin = ConsolePlugin.getDefault();
IConsoleManager consoleManager = consolePlugin.getConsoleManager();
IConsole[] existingConsoles = consoleManager.getConsoles();
- CXFContext context = CXFCorePlugin.getDefault().getJava2WSContext();
for (int i = 0; i < existingConsoles.length; i++) {
- if (existingConsoles[i].getName().equals(context.getDefaultRuntimeType() + " "
- + context.getDefaultRuntimeVersion())) {
+ if (existingConsoles[i].getName().equals(cxfInstall.getType() + " "
+ + cxfInstall.getVersion())) {
return (MessageConsole) existingConsoles[i];
}
}
- MessageConsole cxfConsole = new MessageConsole(context.getDefaultRuntimeType() + " "
- + context.getDefaultRuntimeVersion(),
+ MessageConsole cxfConsole = new MessageConsole(cxfInstall.getType() + " "
+ + cxfInstall.getVersion(),
CXFCorePlugin.imageDescriptorFromPlugin(CXFCorePlugin.PLUGIN_ID,
"icons/view16/console_view.gif")); //$NON-NLS-1$
consoleManager.addConsoles(new IConsole[]{cxfConsole});
diff --git a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUIMessages.java b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUIMessages.java
index 7bde138..9a1e548 100644
--- a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUIMessages.java
+++ b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUIMessages.java
@@ -28,7 +28,10 @@
public static String CXF_RUNTIME_PREFERENCE_PAGE_DESCRIPTION_LABEL;
public static String CXF_RUNTIME_PREFERENCE_PAGE_VERSION_COLUMN_NAME;
public static String CXF_RUNTIME_PREFERENCE_PAGE_LOCATION_COLUMN_NAME;
- public static String CXF_RUNTIME_PREFERENCE_PAGE_LOCATION_TYPE_NAME;
+ public static String CXF_RUNTIME_PREFERENCE_PAGE_TYPE_COLUMN_NAME;
+
+ public static String CXF_RUNTIME_PREFERENCE_PAGE_ENTER_TYPE_NAME;
+ public static String CXF_RUNTIME_PREFERENCE_PAGE_INVALID_TYPE_NAME;
public static String CXF_PROPERTY_PAGE_RUNTIME_LABEL;
public static String CXF_CONFIGURE_INSTALLED_RUNTIMES_LABEL;
diff --git a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUImessages.properties b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUImessages.properties
index beeeee8..bf95fc3 100644
--- a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUImessages.properties
+++ b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUImessages.properties
@@ -24,8 +24,9 @@
CXF_RUNTIME_PREFERENCE_PAGE_DESCRIPTION_LABEL=Add, remove or edit CXF runtimes. By default, the checked CXF runtime is added to the build path of a project when installing the CXF facet.
CXF_RUNTIME_PREFERENCE_PAGE_VERSION_COLUMN_NAME=Version
CXF_RUNTIME_PREFERENCE_PAGE_LOCATION_COLUMN_NAME=Location
-CXF_RUNTIME_PREFERENCE_PAGE_LOCATION_TYPE_NAME=Type
-
+CXF_RUNTIME_PREFERENCE_PAGE_TYPE_COLUMN_NAME=Type
+CXF_RUNTIME_PREFERENCE_PAGE_ENTER_TYPE_NAME=Enter type name
+CXF_RUNTIME_PREFERENCE_PAGE_INVALID_TYPE_NAME=Invalid type name: {0}
CXF_PROPERTY_PAGE_RUNTIME_LABEL=CXF runtime:
CXF_CONFIGURE_INSTALLED_RUNTIMES_LABEL=<A>Configure installed runtimes</A>
diff --git a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/preferences/CXFRuntimePreferencePage.java b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/preferences/CXFRuntimePreferencePage.java
index bd8a9be..c38f3c5 100644
--- a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/preferences/CXFRuntimePreferencePage.java
+++ b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/preferences/CXFRuntimePreferencePage.java
@@ -260,7 +260,7 @@
});
TableColumn typeColumn = typeViewerColumn.getColumn();
- typeColumn.setText(CXFUIMessages.CXF_RUNTIME_PREFERENCE_PAGE_LOCATION_TYPE_NAME);
+ typeColumn.setText(CXFUIMessages.CXF_RUNTIME_PREFERENCE_PAGE_TYPE_COLUMN_NAME);
typeColumn.pack();
columnWeightData = new ColumnWeightData(50, 100, true);
diff --git a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/wizards/CXFFacetInstallWizardPage.java b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/wizards/CXFFacetInstallWizardPage.java
index 7725dd6..10d266e 100644
--- a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/wizards/CXFFacetInstallWizardPage.java
+++ b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/wizards/CXFFacetInstallWizardPage.java
@@ -56,9 +56,11 @@
public void transferStateToConfig() {
StructuredSelection structuredSelection = (StructuredSelection) installationsComboViewer.getSelection();
CXFInstall selectedInstall = (CXFInstall) structuredSelection.getFirstElement();
- dataModel.setDefaultRuntimeVersion(selectedInstall.getVersion());
- dataModel.setDefaultRuntimeLocation(selectedInstall.getLocation());
- dataModel.setDefaultRuntimeType(selectedInstall.getType());
+ if (selectedInstall != null) {
+ dataModel.setDefaultRuntimeVersion(selectedInstall.getVersion());
+ dataModel.setDefaultRuntimeLocation(selectedInstall.getLocation());
+ dataModel.setDefaultRuntimeType(selectedInstall.getType());
+ }
}
public void createControl(Composite parent) {
@@ -134,6 +136,9 @@
CXFInstall defaultInstall = cxfContext.getInstallations().get(intalledVersion);
if (defaultInstall != null) {
installationsComboViewer.setSelection(new StructuredSelection(defaultInstall), true);
+ setPageComplete(true);
+ } else {
+ setPageComplete(false);
}
}
}
diff --git a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/wizards/CXFInstallWizardPage.java b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/wizards/CXFInstallWizardPage.java
index 644ba9c..3c78ddd 100644
--- a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/wizards/CXFInstallWizardPage.java
+++ b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/wizards/CXFInstallWizardPage.java
@@ -20,9 +20,6 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
@@ -234,20 +231,16 @@
private IStatus validateTypeName(String typeName) {
if (typeName.trim().length() == 0) {
- CXF_TYPE_STATUS = new Status(Status.ERROR, CXFUIPlugin.PLUGIN_ID, "Enter Type Name");
+ CXF_TYPE_STATUS = new Status(Status.ERROR, CXFUIPlugin.PLUGIN_ID, CXFUIMessages.CXF_RUNTIME_PREFERENCE_PAGE_ENTER_TYPE_NAME);
} else {
CXF_TYPE_STATUS = OK_STATUS;
}
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- IStatus result = workspace.validateName(typeName, IResource.FOLDER);
- if (!result.isOK()) {
- return result;
+ if (!typeName.matches("[a-zA-Z0-9_\\-\\s]+")) {
+ CXF_TYPE_STATUS = new Status(Status.ERROR, CXFUIPlugin.PLUGIN_ID,
+ CXFUIMessages.bind(CXFUIMessages.CXF_RUNTIME_PREFERENCE_PAGE_INVALID_TYPE_NAME, typeName));
+ } else {
+ CXF_TYPE_STATUS = OK_STATUS;
}
- // if (!typeName.matches("[a-zA-Z0-9_\\-\\s]")) {
- // CXF_TYPE_STATUS = new Status(Status.ERROR, CXFUIPlugin.PLUGIN_ID, "Invalid type name");
- // } else {
- // CXF_TYPE_STATUS = OK_STATUS;
- // }
return CXF_TYPE_STATUS;
}
@@ -323,9 +316,9 @@
CXFPersistentContext context = CXFCorePlugin.getDefault().getJava2WSContext();
Map<String, CXFInstall> installs = context.getInstallations();
CXFInstall install = CXFFactory.eINSTANCE.createCXFInstall();
- install.setVersion(cxfVersionText.getText());
- install.setLocation(cxfHomeDirText.getText());
- install.setType(cxfTypeText.getText());
+ install.setVersion(cxfVersionText.getText().trim());
+ install.setLocation(cxfHomeDirText.getText().trim());
+ install.setType(cxfTypeText.getText().trim());
installs.put(cxfRuntimeVersion, install);
context.setInstallations(installs);
if (isUpdateRequired(install)) {