[101284] Error in Tomcat editor when module can't be found
diff --git a/plugins/org.eclipse.jst.server.tomcat.ui/tomcatui/org/eclipse/jst/server/tomcat/ui/internal/Messages.java b/plugins/org.eclipse.jst.server.tomcat.ui/tomcatui/org/eclipse/jst/server/tomcat/ui/internal/Messages.java
index 4a58043..06957d3 100644
--- a/plugins/org.eclipse.jst.server.tomcat.ui/tomcatui/org/eclipse/jst/server/tomcat/ui/internal/Messages.java
+++ b/plugins/org.eclipse.jst.server.tomcat.ui/tomcatui/org/eclipse/jst/server/tomcat/ui/internal/Messages.java
@@ -27,6 +27,7 @@
 	public static String editorAdd;
 	public static String editorEdit;
 	public static String editorRemove;
+	public static String errorMissingWebModule;
 	public static String configurationEditorMimeMappingsSection;
 	public static String configurationEditorMimeMappingsDescription;
 	public static String configurationEditorPortsSection;
diff --git a/plugins/org.eclipse.jst.server.tomcat.ui/tomcatui/org/eclipse/jst/server/tomcat/ui/internal/Messages.properties b/plugins/org.eclipse.jst.server.tomcat.ui/tomcatui/org/eclipse/jst/server/tomcat/ui/internal/Messages.properties
index 0c5dd61..6fff7fa 100644
--- a/plugins/org.eclipse.jst.server.tomcat.ui/tomcatui/org/eclipse/jst/server/tomcat/ui/internal/Messages.properties
+++ b/plugins/org.eclipse.jst.server.tomcat.ui/tomcatui/org/eclipse/jst/server/tomcat/ui/internal/Messages.properties
@@ -66,6 +66,7 @@
 configurationEditorWebModuleDialogDocumentBase=&Document base:
 configurationEditorWebModuleDialogReloadEnabled=Auto &reloading enabled
 configurationEditorWebModuleDialogSelectDirectory=Select the Web module directory.
+errorMissingWebModule=The Web module at the following location cannot be found: {0}.
 
 # --- Server Editor ---
 serverEditorGeneralSection=Server
diff --git a/plugins/org.eclipse.jst.server.tomcat.ui/tomcatui/org/eclipse/jst/server/tomcat/ui/internal/editor/ConfigurationWebModuleEditorPart.java b/plugins/org.eclipse.jst.server.tomcat.ui/tomcatui/org/eclipse/jst/server/tomcat/ui/internal/editor/ConfigurationWebModuleEditorPart.java
index 538aa01..74970ea 100644
--- a/plugins/org.eclipse.jst.server.tomcat.ui/tomcatui/org/eclipse/jst/server/tomcat/ui/internal/editor/ConfigurationWebModuleEditorPart.java
+++ b/plugins/org.eclipse.jst.server.tomcat.ui/tomcatui/org/eclipse/jst/server/tomcat/ui/internal/editor/ConfigurationWebModuleEditorPart.java
@@ -12,6 +12,7 @@
 
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
+import java.io.File;
 import java.util.Iterator;
 import java.util.List;
 
@@ -302,6 +303,7 @@
 			return;
 
 		webAppTable.removeAll();
+		setErrorMessage(null);
 	
 		List list = configuration.getWebModules();
 		Iterator iterator = list.iterator();
@@ -329,6 +331,11 @@
 			item.setImage(0, TomcatUIPlugin.getImage(TomcatUIPlugin.IMG_WEB_MODULE));
 			if (projectImage != null)
 				item.setImage(2, projectImage);
+			
+			if (!isDocumentBaseValid(module.getDocumentBase())) {
+				item.setImage(1, TomcatUIPlugin.getImage(TomcatUIPlugin.IMG_PROJECT_MISSING));
+				setErrorMessage(NLS.bind(Messages.errorMissingWebModule, module.getDocumentBase()));
+			}
 		}
 		
 		if (readOnly) {
@@ -360,6 +367,25 @@
 		}
 	}
 	
+	protected boolean isDocumentBaseValid(String s) {
+		if (s == null || s.length() < 2)
+			return true;
+		
+		File f = new File(s);
+		if (f.exists())
+			return true;
+		
+		try {
+			f = server.getRuntime().getLocation().append(s).toFile();
+			if (f.exists())
+				return true;
+		} catch (Exception e) {
+			// bad path
+		}
+		
+		return false;
+	}
+	
 	/*
 	 * @see IWorkbenchPart#setFocus()
 	 */