[98779] Runtime locator fix
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat40Handler.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat40Handler.java
index 35e7c6e..d15e1b0 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat40Handler.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat40Handler.java
@@ -29,8 +29,7 @@
if (installPath == null)
return false;
- String s = installPath.lastSegment();
- if (s != null && s.startsWith("jakarta-tomcat-") && !s.startsWith("jakarta-tomcat-4.0"))
+ if (!TomcatPlugin.verifyTomcatVersionFromPath(installPath, TomcatPlugin.TOMCAT_40))
return false;
return TomcatPlugin.verifyInstallPath(installPath, TomcatPlugin.TOMCAT_40);
}
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat41Handler.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat41Handler.java
index ba87235..8d262c1 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat41Handler.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat41Handler.java
@@ -29,8 +29,7 @@
if (installPath == null)
return false;
- String s = installPath.lastSegment();
- if (s != null && s.startsWith("jakarta-tomcat-") && !s.startsWith("jakarta-tomcat-4.1"))
+ if (!TomcatPlugin.verifyTomcatVersionFromPath(installPath, TomcatPlugin.TOMCAT_41))
return false;
return TomcatPlugin.verifyInstallPath(installPath, TomcatPlugin.TOMCAT_41);
}
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat50Handler.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat50Handler.java
index 23eb661..ab030d2 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat50Handler.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat50Handler.java
@@ -29,8 +29,7 @@
if (installPath == null)
return false;
- String s = installPath.lastSegment();
- if (s != null && s.startsWith("jakarta-tomcat-") && !s.startsWith("jakarta-tomcat-5.0"))
+if (!TomcatPlugin.verifyTomcatVersionFromPath(installPath, TomcatPlugin.TOMCAT_50))
return false;
return TomcatPlugin.verifyInstallPath(installPath, TomcatPlugin.TOMCAT_50);
}
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat55Handler.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat55Handler.java
index b9fef29..d14713f 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat55Handler.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat55Handler.java
@@ -25,8 +25,7 @@
if (installPath == null)
return false;
- String s = installPath.lastSegment();
- if (s != null && s.startsWith("jakarta-tomcat-") && !s.startsWith("jakarta-tomcat-5.5"))
+ if (!TomcatPlugin.verifyTomcatVersionFromPath(installPath, TomcatPlugin.TOMCAT_55))
return false;
return TomcatPlugin.verifyInstallPath(installPath, TomcatPlugin.TOMCAT_55);
}
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatPlugin.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatPlugin.java
index 26165a5..b80cdf2 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatPlugin.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatPlugin.java
@@ -30,20 +30,20 @@
protected static TomcatPlugin singleton;
public static final String PLUGIN_ID = "org.eclipse.jst.server.tomcat.core";
-
+
public static final String TOMCAT_32 = "org.eclipse.jst.server.tomcat.32";
public static final String TOMCAT_40 = "org.eclipse.jst.server.tomcat.40";
public static final String TOMCAT_41 = "org.eclipse.jst.server.tomcat.41";
public static final String TOMCAT_50 = "org.eclipse.jst.server.tomcat.50";
public static final String TOMCAT_55 = "org.eclipse.jst.server.tomcat.55";
-
+
protected static final String VERIFY_INSTALL_FILE = "verifyInstall.properties";
protected static String[] verify32;
protected static String[] verify40;
protected static String[] verify41;
protected static String[] verify50;
protected static String[] verify55;
-
+
/**
* TomcatPlugin constructor comment.
*/
@@ -102,6 +102,12 @@
}
}
+ /**
+ * Return the Tomcat version handler.
+ *
+ * @param id
+ * @return a version handler
+ */
public static ITomcatVersionHandler getTomcatVersionHandler(String id) {
if (id.indexOf("runtime") > 0)
id = id.substring(0, 30) + id.substring(38);
@@ -203,6 +209,14 @@
}
}
+ /**
+ * Verify the Tomcat installation directory.
+ *
+ * @param installPath
+ * @param id
+ * @return <code>true</code> if the directory may be a Tomcat installation,
+ * and <code>false</code> otherwise
+ */
public static boolean verifyInstallPath(IPath installPath, String id) {
if (installPath == null)
return false;
@@ -236,6 +250,23 @@
return true;
}
+ public static boolean verifyTomcatVersionFromPath(IPath installPath, String version) {
+ if (installPath == null || version == null)
+ return false;
+ String s = installPath.lastSegment();
+ if (s.indexOf("-3.2") > 0 || s.indexOf(" 3.2") > 0)
+ return TOMCAT_32.equals(version);
+ if (s.indexOf("-4.0") > 0 || s.indexOf(" 4.0") > 0)
+ return TOMCAT_40.equals(version);
+ if (s.indexOf("-4.1") > 0 || s.indexOf(" 4.1") > 0)
+ return TOMCAT_41.equals(version);
+ if (s.indexOf("-5.0") > 0 || s.indexOf(" 5.0") > 0)
+ return TOMCAT_50.equals(version);
+ if (s.indexOf("-5.5") > 0 || s.indexOf(" 5.5") > 0)
+ return TOMCAT_55.equals(version);
+ return true;
+ }
+
/**
* Return a <code>java.io.File</code> object that corresponds to the specified
* <code>IPath</code> in the plugin directory.
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatRuntimeLocator.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatRuntimeLocator.java
index 9094bff..a2f564a 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatRuntimeLocator.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatRuntimeLocator.java
@@ -101,7 +101,7 @@
IRuntimeWorkingCopy runtime = runtimeType.createRuntime(id, monitor);
runtime.setName(dir.getName());
runtime.setLocation(new Path(absolutePath));
- ITomcatRuntimeWorkingCopy wc = (ITomcatRuntimeWorkingCopy) runtime.getAdapter(ITomcatRuntimeWorkingCopy.class);
+ ITomcatRuntimeWorkingCopy wc = (ITomcatRuntimeWorkingCopy) runtime.loadAdapter(ITomcatRuntimeWorkingCopy.class, null);
wc.setVMInstall(JavaRuntime.getDefaultVMInstall());
IStatus status = runtime.validate(monitor);
if (status == null || status.getSeverity() != IStatus.ERROR)
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Trace.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Trace.java
index dc9bf41..fae3fbc 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Trace.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Trace.java
@@ -9,6 +9,9 @@
* IBM Corporation - Initial API and implementation
**********************************************************************/
package org.eclipse.jst.server.tomcat.core.internal;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
/**
* Helper class to route trace output.
*/
@@ -18,6 +21,14 @@
public static byte SEVERE = 2;
public static byte FINEST = 3;
public static byte FINER = 4;
+
+ private static final String[] levelNames = new String[] {
+ "CONFIG ", "WARNING ", "SEVERE ", "FINER ", "FINEST "};
+ private static final String spacer = " ";
+
+ private static final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy HH:mm.ss.SSS");
+
+ protected static int pluginLength = -1;
/**
* Trace constructor comment.
@@ -47,7 +58,40 @@
if (!TomcatPlugin.getInstance().isDebugging())
return;
- System.out.println(TomcatPlugin.PLUGIN_ID + " " + s);
+ /*System.out.println(TomcatPlugin.PLUGIN_ID + " " + s);
+ if (t != null)
+ t.printStackTrace();*/
+ trace(TomcatPlugin.PLUGIN_ID, level, s, t);
+ }
+
+ /**
+ * Trace the given message and exception.
+ *
+ * @param level a trace level
+ * @param s a message
+ * @param t a throwable
+ */
+ private static void trace(String pluginId, int level, String s, Throwable t) {
+ if (pluginId == null || s == null)
+ return;
+
+ if (!TomcatPlugin.getInstance().isDebugging())
+ return;
+
+ StringBuffer sb = new StringBuffer(pluginId);
+ if (pluginId.length() > pluginLength)
+ pluginLength = pluginId.length();
+ else if (pluginId.length() < pluginLength)
+ sb.append(spacer.substring(0, pluginLength - pluginId.length()));
+ sb.append(" ");
+ sb.append(levelNames[level]);
+ sb.append(" ");
+ sb.append(sdf.format(new Date()));
+ sb.append(" ");
+ sb.append(s);
+ //Platform.getDebugOption(ServerCore.PLUGIN_ID + "/" + "resources");
+
+ System.out.println(sb.toString());
if (t != null)
t.printStackTrace();
}