[183914] Mask preview server's implementation
diff --git a/plugins/org.eclipse.wst.server.preview/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.server.preview/META-INF/MANIFEST.MF
index 2b9ae14..00fcc59 100644
--- a/plugins/org.eclipse.wst.server.preview/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.server.preview/META-INF/MANIFEST.MF
@@ -8,6 +8,7 @@
Bundle-Localization: plugin
Export-Package: org.eclipse.wst.server.preview.internal
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
- org.mortbay.jetty
+ org.mortbay.jetty,
+ org.apache.commons.logging
Eclipse-LazyStart: true
Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/IMemento.java b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/IMemento.java
index b7a09ce..7992520 100644
--- a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/IMemento.java
+++ b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/IMemento.java
@@ -1,5 +1,5 @@
/**********************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * Copyright (c) 2007 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
diff --git a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/Messages.properties b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/Messages.properties
index 97f0fe5..185c621 100644
--- a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/Messages.properties
+++ b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/Messages.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2004, 2005 IBM Corporation and others.
+# Copyright (c) 2007 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
diff --git a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/PreviewStarter.java b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/PreviewStarter.java
index d589036..9d5cad8 100644
--- a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/PreviewStarter.java
+++ b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/PreviewStarter.java
@@ -11,6 +11,9 @@
package org.eclipse.wst.server.preview.internal;
import java.io.File;
+import java.util.logging.Filter;
+import java.util.logging.LogRecord;
+import java.util.logging.Logger;
import org.mortbay.http.HttpContext;
import org.mortbay.http.handler.ResourceHandler;
@@ -18,6 +21,12 @@
import org.mortbay.jetty.servlet.WebApplicationContext;
public class PreviewStarter {
+ private static final String[] avertedLogs = new String[] {
+ "org.mortbay.util.Container", "org.mortbay.http.HttpServer",
+ "org.mortbay.util.Credential", "org.mortbay.http.SocketListener",
+ "org.mortbay.http.HttpServer", "org.mortbay.jetty.Server"
+ };
+
protected String configPath;
protected Server server;
@@ -46,8 +55,44 @@
System.out.println();
}
+ for (int i = 0; i < avertedLogs.length; i++) {
+ Logger logger = Logger.getLogger(avertedLogs[i]);
+ logger.setFilter(new Filter() {
+ public boolean isLoggable(LogRecord record) {
+ //Trace.trace(Trace.FINEST, "Averted Jetty log: " + record.getMessage());
+ //System.out.println("averted: " + record.getLoggerName() + ": " + record.getMessage());
+ return false;
+ }
+ });
+ }
+
+ // helper code to find jetty loggers
+ /*Logger logger = Logger.getLogger("org.mortbay.http.HttpServer");
+ logger.addHandler(new java.util.logging.Handler() {
+ public void close() throws SecurityException {
+ // ignore
+ }
+
+ public void flush() {
+ // ignore
+ }
+
+ public void publish(LogRecord record) {
+ System.out.println("Logger found: " + record.getLoggerName());
+ }
+ });*/
+
server = new Server();
server.addListener(":" + config.getPort());
+ server.setTrace(false);
+ server.setStatsOn(false);
+
+ /*HttpContext context2 = new HttpContext();
+ context2.setContextPath("/");
+ context2.addHandler(new WTPErrorPageHandler());
+ context2.setAttribute(HttpContext.__ErrorHandler, new WTPErrorPageHandler());
+ server.addContext(context2);
+ server.setRootWebApp("/");*/
for (int i = 0; i < size; i++) {
Module module = m[i];
@@ -56,11 +101,19 @@
context.setContextPath(module.getContext());
context.setResourceBase(module.getPath());
context.addHandler(new ResourceHandler());
+ context.addHandler(new WTPErrorPageHandler());
+ context.setAttribute(HttpContext.__ErrorHandler, new WTPErrorPageHandler());
server.addContext(context);
} else {
- //System.out.println(module.getContext() + " - " + module.getPath());
- WebApplicationContext context = server.addWebApplication(module.getContext(), module.getPath() + File.separator);
- context.setResourceBase(module.getPath() + File.separator);
+ WebApplicationContext context = server.addWebApplication(module.getContext(), module.getPath());
+ context.setResourceBase(module.getPath());
+ //context.addHandler(new ResourceHandler());
+ context.addHandler(new WTPErrorPageHandler());
+ context.setAttribute(HttpContext.__ErrorHandler, new WTPErrorPageHandler());
+
+ //context.setClassLoader(getClass().getClassLoader());
+ //context.start();
+
//WebApplicationContext context = server.addWebApplication("/", module.getPath() + "/");
/*context.setConfigurationClassNames(new String[] { "org.mortbay.jetty.servlet.XMLConfiguration" });
context.setResourceBase(module.getPath());
diff --git a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/WTPErrorPageHandler.java b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/WTPErrorPageHandler.java
new file mode 100644
index 0000000..4b49da5
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/WTPErrorPageHandler.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.server.preview.internal;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.net.URLDecoder;
+
+import org.mortbay.http.HttpException;
+import org.mortbay.http.HttpFields;
+import org.mortbay.http.HttpRequest;
+import org.mortbay.http.HttpResponse;
+import org.mortbay.http.handler.AbstractHttpHandler;
+import org.mortbay.util.ByteArrayISO8859Writer;
+import org.mortbay.util.StringUtil;
+
+public class WTPErrorPageHandler extends AbstractHttpHandler {
+ private static final long serialVersionUID = 1L;
+
+ public void handle(String pathInContext, String pathParams, HttpRequest request,
+ HttpResponse response) throws HttpException, IOException {
+ response.setContentType(HttpFields.__TextHtml);
+ ByteArrayISO8859Writer writer = new ByteArrayISO8859Writer(2048);
+ writeErrorPage(request, writer, response.getStatus(), response.getReason());
+ writer.flush();
+ response.setContentLength(writer.size());
+ writer.writeTo(response.getOutputStream());
+ writer.destroy();
+ }
+
+ protected void writeErrorPage(HttpRequest request, Writer writer, int code,
+ String message) throws IOException {
+ if (message != null) {
+ message = URLDecoder.decode(message, "UTF-8");
+ message = StringUtil.replace(message, "<", "<");
+ message = StringUtil.replace(message, ">", ">");
+ }
+ String uri = request.getPath();
+ uri = StringUtil.replace(uri, "<", "<");
+ uri = StringUtil.replace(uri, ">", ">");
+ writer.write("<html>\n<head>\n<title>Error ");
+ writer.write(Integer.toString(code));
+ writer.write(' ');
+ writer.write(message);
+ writer.write("</title>\n</head>\n<body>\n<h2>HTTP ERROR: ");
+ writer.write(Integer.toString(code));
+ writer.write("</h2><pre>");
+ writer.write(message);
+ writer.write("</pre>\n");
+ writer.write("<p>RequestURI=");
+ writer.write(uri);
+ writer.write("</p>");
+ writer.write("\n</body>\n</html>\n");
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/XMLMemento.java b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/XMLMemento.java
index 9281c2a..a6b4bfb 100644
--- a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/XMLMemento.java
+++ b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/XMLMemento.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * Copyright (c) 2007 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