[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}".