[115346] [UI] Improve rendering of fixed project facets
[135681] Facet icons in fragment.xml must be specified in the sa...
[136017] dispose image causes SWTException
[136897] Web app container does not react when WEB-INF/lib is cr...
[137526] Suggested rewording of the description on the facet page
[138053] Facet preset Save button has fixed width
diff --git a/plugins/org.eclipse.jst.server.core/plugin.xml b/plugins/org.eclipse.jst.server.core/plugin.xml
index b079770..f8e59fe 100644
--- a/plugins/org.eclipse.jst.server.core/plugin.xml
+++ b/plugins/org.eclipse.jst.server.core/plugin.xml
@@ -105,6 +105,9 @@
     <runtime-component-version
        type="standard.jre"
        version="5.0"/>
+    <runtime-component-version
+       type="standard.jre"
+       version="6.0"/>
 
     <adapter>
       <runtime-component id="standard.jre"/>
@@ -126,6 +129,11 @@
       <facet id="jst.java" version="5.0"/>
       <runtime-component id="standard.jre" version="[5.0"/>
     </supported>
+
+    <supported>
+      <facet id="jst.java" version="6.0"/>
+      <runtime-component id="standard.jre" version="[6.0"/>
+    </supported>
   </extension>
 
   <extension point="org.eclipse.wst.common.project.facet.core.runtimeBridges">
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 88a0911..1ed8599 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;
@@ -53,6 +55,8 @@
 	// runtime listener
 	private static IRuntimeLifecycleListener runtimeListener;
 
+    private static final Set messagesLogged = new HashSet();
+
 	/**
 	 * Create the JavaServerPlugin.
 	 */
@@ -185,6 +189,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..3afa2cc 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;
@@ -156,15 +157,36 @@
 				IRuntimeComponentVersion rcv;
 				
 				if (jvmver == null)
-					rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("1.4");
+                {
+					rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("6.0");
+                    
+                    final String vmName = 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 // default || jvmver.startsWith("1.4"))
-					rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("1.4");
+					rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("6.0");
+				else
+                {
+					rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("6.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 +213,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}".