[260862] Clean up extension failures in .log
diff --git a/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeClasspathProviderWrapper.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeClasspathProviderWrapper.java
index e7fcd65..fb858d6 100644
--- a/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeClasspathProviderWrapper.java
+++ b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeClasspathProviderWrapper.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -19,6 +19,7 @@
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jst.server.core.RuntimeClasspathProviderDelegate;
import org.eclipse.wst.server.core.*;
+import org.eclipse.wst.server.core.internal.ServerPlugin;
/**
*
*/
@@ -129,7 +130,7 @@
delegate = (RuntimeClasspathProviderDelegate) element.createExecutableExtension("class");
delegate.initialize(getId());
} catch (Throwable t) {
- Trace.trace(Trace.SEVERE, "Could not create delegate " + toString(), t);
+ ServerPlugin.logExtensionFailure(toString(), t);
}
}
return delegate;
@@ -144,7 +145,7 @@
try {
return getDelegate().resolveClasspathContainerImpl(project, runtime);
} catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Error calling delegate " + toString(), e);
+ ServerPlugin.logExtensionFailure(toString(), e);
}
return null;
}
@@ -158,7 +159,7 @@
try {
getDelegate().requestClasspathContainerUpdate(runtime, entries);
} catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Error calling delegate " + toString(), e);
+ ServerPlugin.logExtensionFailure(toString(), e);
}
}
@@ -171,7 +172,7 @@
try {
return getDelegate().hasRuntimeClasspathChanged(runtime);
} catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Error calling delegate " + toString(), e);
+ ServerPlugin.logExtensionFailure(toString(), e);
}
return false;
}
diff --git a/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeComponentProviderWrapper.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeComponentProviderWrapper.java
index c6424d0..e47eaf1 100644
--- a/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeComponentProviderWrapper.java
+++ b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeComponentProviderWrapper.java
@@ -18,6 +18,7 @@
import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponent;
import org.eclipse.wst.server.core.IRuntime;
import org.eclipse.wst.server.core.IRuntimeType;
+import org.eclipse.wst.server.core.internal.ServerPlugin;
/**
*
*/
@@ -102,7 +103,7 @@
try {
delegate = (RuntimeComponentProviderDelegate) element.createExecutableExtension("class");
} catch (Throwable t) {
- Trace.trace(Trace.SEVERE, "Could not create delegate " + toString(), t);
+ ServerPlugin.logExtensionFailure(toString(), t);
}
}
return delegate;
@@ -117,7 +118,7 @@
try {
return getDelegate().getRuntimeComponents(runtime);
} catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Error calling delegate " + toString(), e);
+ ServerPlugin.logExtensionFailure(toString(), e);
}
return null;
}
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ResourceManager.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ResourceManager.java
index 1dd3d5a..1ca7d55 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ResourceManager.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ResourceManager.java
@@ -196,7 +196,7 @@
}
Trace.trace(Trace.EXTENSION_POINT, " Loaded startup: " + cf[i].getAttribute("id"));
} catch (Throwable t) {
- Trace.trace(Trace.SEVERE, " Could not load startup: " + cf[i].getAttribute("id"), t);
+ ServerPlugin.logExtensionFailure(cf[i].getAttribute("id"), t);
}
}
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java
index b4fc04a..118f32f 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java
@@ -449,10 +449,11 @@
try {
long time = System.currentTimeMillis();
delegate = ((ServerType) serverType).createServerDelegate();
- InternalInitializer.initializeServerDelegate(delegate, Server.this, monitor);
+ if (delegate != null)
+ InternalInitializer.initializeServerDelegate(delegate, Server.this, monitor);
Trace.trace(Trace.PERFORMANCE, "Server.getDelegate(): <" + (System.currentTimeMillis() - time) + "> " + getServerType().getId());
} catch (Throwable t) {
- Trace.trace(Trace.SEVERE, "Could not create delegate " + toString(), t);
+ ServerPlugin.logExtensionFailure(toString(), t);
}
}
}
@@ -468,13 +469,14 @@
try {
long time = System.currentTimeMillis();
behaviourDelegate = ((ServerType) serverType).createServerBehaviourDelegate();
- InternalInitializer.initializeServerBehaviourDelegate(behaviourDelegate, Server.this, monitor);
+ if (behaviourDelegate != null)
+ InternalInitializer.initializeServerBehaviourDelegate(behaviourDelegate, Server.this, monitor);
Trace.trace(Trace.PERFORMANCE, "Server.getBehaviourDelegate(): <" + (System.currentTimeMillis() - time) + "> " + getServerType().getId());
if (getServerState() == IServer.STATE_STARTED)
autoPublish();
} catch (Throwable t) {
- Trace.trace(Trace.SEVERE, "Could not create behaviour delegate " + toString(), t);
+ ServerPlugin.logExtensionFailure(toString(), t);
}
}
}
@@ -2028,7 +2030,7 @@
try {
return getDelegate(monitor).canModifyModules(add, remove);
} catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Error calling delegate canModifyModules() " + toString(), e);
+ ServerPlugin.logExtensionFailure(toString(), e);
return new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, e.getMessage(), e);
}
}
@@ -2142,7 +2144,7 @@
return null;
return children;
} catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Error calling delegate getChildModules() " + toString(), e);
+ ServerPlugin.logExtensionFailure(toString(), e);
return null;
}
}
@@ -2159,7 +2161,7 @@
//Trace.trace(Trace.FINER, "CoreException calling delegate getParentModules() " + toString(), se);
throw se;
} catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Error calling delegate getParentModules() " + toString(), e);
+ ServerPlugin.logExtensionFailure(toString(), e);
return null;
}
}
@@ -2183,7 +2185,7 @@
if (b)
return Status.OK_STATUS;
} catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Error calling delegate canRestartRuntime() " + toString(), e);
+ ServerPlugin.logExtensionFailure(toString(), e);
}
return new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, Messages.errorRestartModule, null);
}
@@ -2258,7 +2260,7 @@
try {
return getDelegate(monitor).getServerPorts();
} catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Error calling delegate getServerPorts() " + toString(), e);
+ ServerPlugin.logExtensionFailure(toString(), e);
return null;
}
}
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPlugin.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPlugin.java
index 60e638b..3b92f41 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPlugin.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPlugin.java
@@ -331,6 +331,20 @@
context.removeBundleListener(bundleListener);
}
+ /**
+ * Logs an error message caused by a missing or failed extension
+ * (server adapters, runtime, class-path provider, etc.). A single
+ * error is output to the .log (once per session) and the full
+ * exception is output to tracing.
+ *
+ * @param id the id of the missing/failed extension
+ * @param t a throwable or exception
+ */
+ public static void logExtensionFailure(String id, Throwable t) {
+ Trace.trace(Trace.SEVERE, "Missing or failed server extension: " + id + ". Enable tracing for more information");
+ Trace.trace(Trace.WARNING, "Exception in server delegate", t);
+ }
+
private static void addAll(List<Object> list, Object[] obj) {
if (obj == null)
return;