[139863] RuntimeBridge should default to vm version to 5.0 when ve...
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/JavaServerPlugin.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/JavaServerPlugin.java
index aa7f843..6949329 100644
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/JavaServerPlugin.java
+++ b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/JavaServerPlugin.java
@@ -11,8 +11,10 @@
package org.eclipse.jst.server.core.internal;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -50,6 +52,8 @@
// runtime listener
private static IRuntimeLifecycleListener runtimeListener;
+ private static final Set messagesLogged = new HashSet();
+
/**
* Create the JavaServerPlugin.
*/
@@ -182,6 +186,47 @@
log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "Internal error", t)); //$NON-NLS-1$
}
+ public static void log( final String msg )
+ {
+ log( new Status( IStatus.ERROR, PLUGIN_ID, IStatus.OK, msg, null ) );
+ }
+
+ public static void logError( final String msg )
+ {
+ logError( msg, false );
+ }
+
+ public static void logError( final String msg,
+ final boolean suppressDuplicates )
+ {
+ if( suppressDuplicates && messagesLogged.contains( msg ) )
+ {
+ return;
+ }
+
+ messagesLogged.add( msg );
+
+ log( new Status( IStatus.ERROR, PLUGIN_ID, IStatus.OK, msg, null ) );
+ }
+
+ public static void logWarning( final String msg )
+ {
+ logWarning( msg, false );
+ }
+
+ public static void logWarning( final String msg,
+ final boolean suppressDuplicates )
+ {
+ if( suppressDuplicates && messagesLogged.contains( msg ) )
+ {
+ return;
+ }
+
+ messagesLogged.add( msg );
+
+ log( new Status( IStatus.WARNING, PLUGIN_ID, IStatus.OK, msg, null ) );
+ }
+
/**
* Returns an array of all known runtime classpath provider instances.
* <p>
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeBridge.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeBridge.java
index 8739930..2f7edb8 100644
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeBridge.java
+++ b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeBridge.java
@@ -26,6 +26,7 @@
import org.eclipse.jdt.launching.IVMInstall2;
import org.eclipse.jdt.launching.JavaRuntime;
import org.eclipse.jst.server.core.IJavaRuntime;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeBridge;
import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentVersion;
import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager;
@@ -155,16 +156,38 @@
}
IRuntimeComponentVersion rcv;
- if (jvmver == null)
- rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("1.4");
- else if (jvmver.startsWith("1.3"))
- rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("1.3");
- else if (jvmver.startsWith("1.5") || jvmver.startsWith("5.0"))
- rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("5.0");
- else if (jvmver.startsWith("1.6") || jvmver.startsWith("6.0"))
- rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("5.0");
- else // default || jvmver.startsWith("1.4"))
- rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("1.4");
+ if (jvmver == null)
+ {
+ rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("5.0");
+
+ final String vmName
+ = vmInstall == null ? "" : vmInstall.getName();
+
+ final String msg
+ = NLS.bind( Resources.vmVersionCouldNotBeDetermined,
+ vmName );
+
+ JavaServerPlugin.logWarning( msg, true );
+ }
+ else if (jvmver.startsWith("1.3"))
+ rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("1.3");
+ else if (jvmver.startsWith("1.4"))
+ rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("1.4");
+ else if (jvmver.startsWith("1.5") || jvmver.startsWith("5.0"))
+ rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("5.0");
+ else if (jvmver.startsWith("1.6") || jvmver.startsWith("6.0"))
+ rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("5.0");
+ else
+ {
+ rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("5.0");
+
+ final String vmName = vmInstall.getName();
+
+ final String msg
+ = NLS.bind( Resources.vmVersionIsInvalid, vmName, jvmver );
+
+ JavaServerPlugin.logWarning( msg, true );
+ }
if (vmInstall != null) {
properties = new HashMap(3);
@@ -191,4 +214,20 @@
return Collections.singletonMap("id", runtime.getId());
}
}
+
+ private static final class Resources
+
+ extends NLS
+
+ {
+ public static String vmVersionCouldNotBeDetermined;
+ public static String vmVersionIsInvalid;
+
+ static
+ {
+ initializeMessages( RuntimeBridge.class.getName(),
+ Resources.class );
+ }
+ }
+
}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeBridge.properties b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeBridge.properties
new file mode 100644
index 0000000..c28142b
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeBridge.properties
@@ -0,0 +1,2 @@
+vmVersionCouldNotBeDetermined = Could not determine Java VM version of "{0}".
+vmVersionIsInvalid = Could not interpret version string "{1}" of Java VM "{0}".