Upgrades HtmlUnit and it dependencies Some major upgrades: /htmlunit /jetty /apache/commons /apache/http /xerces /tomcat/servlet-api Fixes issue 7224 Change-Id: I36cc569c2926aa59ee7375e719b917d6d3681a43 Review-Link: https://gwt-review.googlesource.com/#/c/4323/
diff --git a/dev/build.xml b/dev/build.xml index a301c4e..7c3219b 100755 --- a/dev/build.xml +++ b/dev/build.xml
@@ -60,7 +60,8 @@ <include name="eclipse/jdtCompilerAdapter-3.8.3.v20130121-145325.jar" /> <include name="guava/guava-15.0/guava-15.0-rebased.jar" /> <include name="icu4j/50.1.1/icu4j.jar" /> - <include name="jetty/jetty-6.1.11.jar" /> + <include name="jetty/jetty-8.1.12.v20130726/jetty-8.1.12.v20130726.jar" /> + <include name="jetty/jetty-8.1.12.v20130726/servlet-api-3.0-NoMetaInf.jar" /> <include name="jscomp/20131014/compiler-rebased.jar" /> <include name="jscomp/20131014/sourcemap-rebased.jar" /> <include name="jsr305/jsr305.jar" /> @@ -73,23 +74,23 @@ <!-- dependencies needed for JSP support in DevMode: END --> <include name="apache/commons/commons-collections-3.2.1.jar" /> <!-- htmlunit dependencies not already included: BEGIN --> - <include name="apache/http/httpclient-4.1.2.jar" /> - <include name="apache/http/httpcore-4.1.2.jar" /> - <include name="apache/http/httpmime-4.1.2.jar" /> + <include name="apache/http/httpclient-4.3.1.jar" /> + <include name="apache/http/httpcore-4.3.jar" /> + <include name="apache/http/httpmime-4.3.1.jar" /> <include name="apache/james/apache-mime4j-0.6.jar" /> - <include name="apache/commons/commons-codec-1.3.jar" /> - <include name="apache/commons/commons-io-1.4.jar" /> - <include name="apache/commons/commons-lang-2.6.jar" /> - <include name="apache/commons/commons-logging-1.1.1.jar" /> - <include name="cssparser/cssparser-0.9.5.jar" /> - <include name="htmlunit/htmlunit-2.9/htmlunit-v2.9.jar" /> - <include name="htmlunit/htmlunit-2.9/htmlunit-core-js-v2.9.jar" /> - <include name="nekohtml/nekohtml-1.9.15.jar" /> + <include name="apache/commons/commons-codec-1.8.jar" /> + <include name="apache/commons/commons-io-2.4.jar" /> + <include name="apache/commons/commons-lang3-3.1.jar" /> + <include name="apache/commons/commons-logging-1.1.3.jar" /> + <include name="cssparser/cssparser-0.9.11.jar" /> + <include name="htmlunit/htmlunit-2.13/htmlunit-2.13.jar" /> + <include name="htmlunit/htmlunit-2.13/htmlunit-core-js-2.13.jar" /> + <include name="nekohtml/nekohtml-1.9.19.jar" /> <include name="cup/java-cup-11a.jar" /> <include name="xalan/xalan-2.7.1-nocup.jar" /> - <include name="xerces/xerces-2_9_1/serializer.jar" /> - <include name="xerces/xerces-2_9_1/xercesImpl-NoMetaInf.jar" /> - <include name="xerces/xerces-2_9_1/xml-apis.jar" /> + <include name="xerces/xerces-2_11_0/serializer-2.7.1.jar" /> + <include name="xerces/xerces-2_11_0/xercesImpl-2.11.0.jar" /> + <include name="xerces/xerces-2_11_0/xml-apis-1.4.01.jar" /> <include name="w3c/sac/sac-1.3.jar" /> <!-- htmlunit dependencies not already included: END --> <include name="sun/swingworker/swing-worker-1.1.jar" /> @@ -110,7 +111,8 @@ <zipfileset src="${gwt.tools.lib}/eclipse/jdtCompilerAdapter-3.8.3.v20130121-145325.jar" /> <zipfileset src="${gwt.tools.lib}/guava/guava-15.0/guava-15.0-rebased.jar" /> <zipfileset src="${gwt.tools.lib}/icu4j/50.1.1/icu4j.jar" /> - <zipfileset src="${gwt.tools.lib}/jetty/jetty-6.1.11.jar" /> + <zipfileset src="${gwt.tools.lib}/jetty/jetty-8.1.12.v20130726/jetty-8.1.12.v20130726.jar" /> + <zipfileset src="${gwt.tools.lib}/jetty/jetty-8.1.12.v20130726/servlet-api-3.0-NoMetaInf.jar" /> <zipfileset src="${gwt.tools.lib}/jscomp/20131014/compiler-rebased.jar" /> <zipfileset src="${gwt.tools.lib}/jscomp/20131014/sourcemap-rebased.jar" /> <zipfileset src="${gwt.tools.lib}/jsr305/jsr305.jar" /> @@ -123,23 +125,23 @@ <!-- dependencies needed for JSP support in DevMode: END --> <zipfileset src="${gwt.tools.lib}/apache/commons/commons-collections-3.2.1.jar" /> <!-- htmlunit dependencies not already included: BEGIN --> - <zipfileset src="${gwt.tools.lib}/apache/http/httpclient-4.1.2.jar" /> - <zipfileset src="${gwt.tools.lib}/apache/http/httpcore-4.1.2.jar" /> - <zipfileset src="${gwt.tools.lib}/apache/http/httpmime-4.1.2.jar" /> + <zipfileset src="${gwt.tools.lib}/apache/http/httpclient-4.3.1.jar" /> + <zipfileset src="${gwt.tools.lib}/apache/http/httpcore-4.3.jar" /> + <zipfileset src="${gwt.tools.lib}/apache/http/httpmime-4.3.1.jar" /> <zipfileset src="${gwt.tools.lib}/apache/james/apache-mime4j-0.6.jar" /> - <zipfileset src="${gwt.tools.lib}/apache/commons/commons-codec-1.3.jar" /> - <zipfileset src="${gwt.tools.lib}/apache/commons/commons-io-1.4.jar" /> - <zipfileset src="${gwt.tools.lib}/apache/commons/commons-lang-2.6.jar" /> - <zipfileset src="${gwt.tools.lib}/apache/commons/commons-logging-1.1.1.jar" /> - <zipfileset src="${gwt.tools.lib}/cssparser/cssparser-0.9.5.jar" /> - <zipfileset src="${gwt.tools.lib}/htmlunit/htmlunit-2.9/htmlunit-2.9.jar" /> - <zipfileset src="${gwt.tools.lib}/htmlunit/htmlunit-2.9/htmlunit-core-js-2.9.jar" /> - <zipfileset src="${gwt.tools.lib}/nekohtml/nekohtml-1.9.15.jar" /> + <zipfileset src="${gwt.tools.lib}/apache/commons/commons-codec-1.8.jar" /> + <zipfileset src="${gwt.tools.lib}/apache/commons/commons-io-2.4.jar" /> + <zipfileset src="${gwt.tools.lib}/apache/commons/commons-lang3-3.1.jar" /> + <zipfileset src="${gwt.tools.lib}/apache/commons/commons-logging-1.1.3.jar" /> + <zipfileset src="${gwt.tools.lib}/cssparser/cssparser-0.9.11.jar" /> + <zipfileset src="${gwt.tools.lib}/htmlunit/htmlunit-2.13/htmlunit-2.13.jar" /> + <zipfileset src="${gwt.tools.lib}/htmlunit/htmlunit-2.13/htmlunit-core-js-2.13.jar" /> + <zipfileset src="${gwt.tools.lib}/nekohtml/nekohtml-1.9.19.jar" /> <zipfileset src="${gwt.tools.lib}/cup/java-cup-11a.jar" /> <zipfileset src="${gwt.tools.lib}/xalan/xalan-2.7.1-nocup.jar" /> - <zipfileset src="${gwt.tools.lib}/xerces/xerces-2_9_1/serializer.jar" /> - <zipfileset src="${gwt.tools.lib}/xerces/xerces-2_9_1/xercesImpl-NoMetaInf.jar" /> - <zipfileset src="${gwt.tools.lib}/xerces/xerces-2_9_1/xml-apis.jar" /> + <zipfileset src="${gwt.tools.lib}/xerces/xerces-2_11_0/serializer-2.7.1.jar" /> + <zipfileset src="${gwt.tools.lib}/xerces/xerces-2_11_0/xercesImpl-2.11.0.jar" /> + <zipfileset src="${gwt.tools.lib}/xerces/xerces-2_11_0/xml-apis-1.4.01.jar" /> <zipfileset src="${gwt.tools.lib}/w3c/sac/sac-1.3.jar" /> <!-- htmlunit dependencies not already included: END --> <zipfileset src="${gwt.tools.lib}/sun/swingworker/swing-worker-1.1.jar" />
diff --git a/dev/codeserver/build.xml b/dev/codeserver/build.xml index 52af07f..3c523e4 100755 --- a/dev/codeserver/build.xml +++ b/dev/codeserver/build.xml
@@ -22,8 +22,8 @@ <include name="**/*.java"/> </fileset> </copy> - <replace dir="${src}" token="com.google.gwt.thirdparty.org.mortbay." - value="org.mortbay."/> + <replace dir="${src}" token="com.google.gwt.thirdparty.org.eclipse.jetty." + value="org.eclipse.jetty."/> </target> <target name="compile" depends="preprocess">
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/WebServer.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/WebServer.java index d443ea9..6699312 100644 --- a/dev/codeserver/java/com/google/gwt/dev/codeserver/WebServer.java +++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/WebServer.java
@@ -20,17 +20,16 @@ import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.dev.json.JsonArray; import com.google.gwt.dev.json.JsonObject; -import com.google.gwt.thirdparty.org.mortbay.io.Buffer; -import com.google.gwt.thirdparty.org.mortbay.jetty.HttpConnection; -import com.google.gwt.thirdparty.org.mortbay.jetty.MimeTypes; -import com.google.gwt.thirdparty.org.mortbay.jetty.Request; -import com.google.gwt.thirdparty.org.mortbay.jetty.Server; -import com.google.gwt.thirdparty.org.mortbay.jetty.handler.AbstractHandler; -import com.google.gwt.thirdparty.org.mortbay.jetty.nio.SelectChannelConnector; -import com.google.gwt.thirdparty.org.mortbay.jetty.servlet.FilterHolder; -import com.google.gwt.thirdparty.org.mortbay.jetty.servlet.ServletHandler; -import com.google.gwt.thirdparty.org.mortbay.jetty.servlet.ServletHolder; -import com.google.gwt.thirdparty.org.mortbay.servlet.GzipFilter; +import com.google.gwt.thirdparty.org.eclipse.jetty.http.MimeTypes; +import com.google.gwt.thirdparty.org.eclipse.jetty.io.Buffer; +import com.google.gwt.thirdparty.org.eclipse.jetty.server.AbstractHttpConnection; +import com.google.gwt.thirdparty.org.eclipse.jetty.server.Request; +import com.google.gwt.thirdparty.org.eclipse.jetty.server.Server; +import com.google.gwt.thirdparty.org.eclipse.jetty.server.nio.SelectChannelConnector; +import com.google.gwt.thirdparty.org.eclipse.jetty.servlet.FilterHolder; +import com.google.gwt.thirdparty.org.eclipse.jetty.servlet.ServletContextHandler; +import com.google.gwt.thirdparty.org.eclipse.jetty.servlet.ServletHolder; +import com.google.gwt.thirdparty.org.eclipse.jetty.servlets.GzipFilter; import java.io.BufferedReader; import java.io.File; @@ -39,12 +38,14 @@ import java.io.InputStream; import java.io.PrintWriter; import java.util.Date; +import java.util.EnumSet; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.ServletException; +import javax.servlet.DispatcherType; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -115,17 +116,17 @@ Server server = new Server(); server.addConnector(connector); - ServletHandler servletHandler = new ServletHandler(); - servletHandler.addServletWithMapping(new ServletHolder(new HttpServlet() { + ServletContextHandler handler = new ServletContextHandler(ServletContextHandler.SESSIONS); + handler.setContextPath("/"); + handler.addServlet(new ServletHolder(new HttpServlet() { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { handleRequest(request.getPathInfo(), request, response); } }), "/*"); - servletHandler.addFilterWithMapping(new FilterHolder(GzipFilter.class), - "/*", AbstractHandler.DEFAULT); - server.addHandler(servletHandler); + handler.addFilter(GzipFilter.class, "/*", EnumSet.allOf(DispatcherType.class)); + server.setHandler(handler); try { server.start(); } catch (Exception e) { @@ -505,7 +506,7 @@ private static void setHandled(HttpServletRequest request) { Request baseRequest = (request instanceof Request) ? (Request) request : - HttpConnection.getCurrentConnection().getRequest(); + AbstractHttpConnection.getCurrentConnection().getRequest(); baseRequest.setHandled(true); } }
diff --git a/dev/core/src/com/google/gwt/dev/shell/HtmlUnitSessionHandler.java b/dev/core/src/com/google/gwt/dev/shell/HtmlUnitSessionHandler.java index 4b6942b..f391985 100644 --- a/dev/core/src/com/google/gwt/dev/shell/HtmlUnitSessionHandler.java +++ b/dev/core/src/com/google/gwt/dev/shell/HtmlUnitSessionHandler.java
@@ -32,6 +32,7 @@ import com.gargoylesoftware.htmlunit.javascript.SimpleScriptableProxy; import com.gargoylesoftware.htmlunit.javascript.host.Window; +import net.sourceforge.htmlunit.corejs.javascript.ConsString; import net.sourceforge.htmlunit.corejs.javascript.Context; import net.sourceforge.htmlunit.corejs.javascript.Function; import net.sourceforge.htmlunit.corejs.javascript.JavaScriptException; @@ -210,7 +211,7 @@ if (args.length == 1 && methodName.indexOf(REPLACE_METHOD_SIGNATURE) != -1) { // getUrl() is not visible - String currentUrl = window.jsxGet_location().toString(); + String currentUrl = window.getLocation().toString(); currentUrl = getUrlBeforeHash(currentUrl); String newUrl = getUrlBeforeHash((String) args[0].getValue()); if (!newUrl.equals(currentUrl)) { @@ -303,6 +304,9 @@ returnVal.setJsObject(new JsObjectRef(refId)); return returnVal; } + if (value instanceof ConsString) { + return new Value(value.toString()); + } if (value instanceof Number) { return new Value(convertNumberFromJsval(((Number) value))); }
diff --git a/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java b/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java index b282825..7e4e3ee 100644 --- a/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java +++ b/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java
@@ -24,20 +24,22 @@ import org.apache.tools.ant.taskdefs.Javac; import org.eclipse.jdt.core.JDTCompilerAdapter; -import org.mortbay.component.AbstractLifeCycle; -import org.mortbay.jetty.AbstractConnector; -import org.mortbay.jetty.HttpFields.Field; -import org.mortbay.jetty.Request; -import org.mortbay.jetty.RequestLog; -import org.mortbay.jetty.Response; -import org.mortbay.jetty.Server; -import org.mortbay.jetty.handler.RequestLogHandler; -import org.mortbay.jetty.nio.SelectChannelConnector; -import org.mortbay.jetty.security.SslSocketConnector; -import org.mortbay.jetty.webapp.WebAppClassLoader; -import org.mortbay.jetty.webapp.WebAppContext; -import org.mortbay.log.Log; -import org.mortbay.log.Logger; +import org.eclipse.jetty.http.HttpFields; +import org.eclipse.jetty.http.HttpFields.Field; +import org.eclipse.jetty.server.AbstractConnector; +import org.eclipse.jetty.server.AbstractHttpConnection; +import org.eclipse.jetty.server.Request; +import org.eclipse.jetty.server.RequestLog; +import org.eclipse.jetty.server.Response; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.handler.RequestLogHandler; +import org.eclipse.jetty.server.nio.SelectChannelConnector; +import org.eclipse.jetty.server.ssl.SslSocketConnector; +import org.eclipse.jetty.util.component.AbstractLifeCycle; +import org.eclipse.jetty.util.log.Log; +import org.eclipse.jetty.util.log.Logger; +import org.eclipse.jetty.webapp.WebAppClassLoader; +import org.eclipse.jetty.webapp.WebAppContext; import java.io.File; import java.io.IOException; @@ -46,7 +48,6 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; -import java.util.Iterator; import javax.imageio.ImageIO; import javax.xml.parsers.DocumentBuilderFactory; @@ -139,25 +140,21 @@ + " - " + request.getMethod() + ' ' + request.getUri() + " (" + userString + request.getRemoteHost() + ')' + bytesString); if (branch.isLoggable(logHeaders)) { - // Request headers - TreeLogger headers = branch.branch(logHeaders, "Request headers"); - Iterator<Field> headerFields = request.getConnection().getRequestFields().getFields(); - while (headerFields.hasNext()) { - Field headerField = headerFields.next(); - headers.log(logHeaders, headerField.getName() + ": " - + headerField.getValue()); - } - // Response headers - headers = branch.branch(logHeaders, "Response headers"); - headerFields = response.getHttpFields().getFields(); - while (headerFields.hasNext()) { - Field headerField = headerFields.next(); - headers.log(logHeaders, headerField.getName() + ": " - + headerField.getValue()); - } + AbstractHttpConnection connection = request.getConnection(); + logHeaders(branch.branch(logHeaders, "Request headers"), logHeaders, + connection.getRequestFields()); + logHeaders(branch.branch(logHeaders, "Response headers"), logHeaders, + connection.getResponseFields()); } } } + + private void logHeaders(TreeLogger logger, TreeLogger.Type logLevel, HttpFields fields) { + for (int i = 0; i < fields.size(); ++i) { + Field field = fields.getField(i); + logger.log(logLevel, field.getName() + ": " + field.getValue()); + } + } } /** @@ -178,9 +175,9 @@ this.logger = logger; } - public void debug(String msg, Object arg0, Object arg1) { + public void debug(String msg, Object... args) { if (logger.isLoggable(TreeLogger.SPAM)) { - logger.log(TreeLogger.SPAM, format(msg, arg0, arg1)); + logger.log(TreeLogger.SPAM, format(msg, args)); } } @@ -188,16 +185,32 @@ logger.log(TreeLogger.SPAM, msg, th); } + public void debug(Throwable th) { + logger.log(TreeLogger.SPAM, "", th); + } + public Logger getLogger(String name) { return this; } - public void info(String msg, Object arg0, Object arg1) { + public String getName() { + return ""; + } + + public void info(String msg, Object... args) { if (logger.isLoggable(TreeLogger.TRACE)) { - logger.log(TreeLogger.TRACE, format(msg, arg0, arg1)); + logger.log(TreeLogger.TRACE, format(msg, args)); } } + public void info(String msg, Throwable th) { + logger.log(TreeLogger.TRACE, msg, th); + } + + public void info(Throwable th) { + logger.log(TreeLogger.TRACE, "", th); + } + public boolean isDebugEnabled() { return logger.isLoggable(TreeLogger.SPAM); } @@ -206,9 +219,9 @@ // ignored } - public void warn(String msg, Object arg0, Object arg1) { + public void warn(String msg, Object... args) { if (logger.isLoggable(TreeLogger.WARN)) { - logger.log(TreeLogger.WARN, format(msg, arg0, arg1)); + logger.log(TreeLogger.WARN, format(msg, args)); } } @@ -216,20 +229,42 @@ logger.log(TreeLogger.WARN, msg, th); } - /** - * Copied from org.mortbay.log.StdErrLog. - */ - private String format(String msg, Object arg0, Object arg1) { - int i0 = msg.indexOf("{}"); - int i1 = i0 < 0 ? -1 : msg.indexOf("{}", i0 + 2); + public void warn(Throwable th) { + logger.log(TreeLogger.WARN, "", th); + } - if (arg1 != null && i1 >= 0) { - msg = msg.substring(0, i1) + arg1 + msg.substring(i1 + 2); + public void ignore(Throwable th) { + logger.log(TreeLogger.SPAM, "IGNORE", th); + } + + /** + * Copied from org.eclipse.log.StdErrLog. + */ + private String format(String msg, Object... args) { + if (msg == null) { + msg = ""; + for (int i = 0; i < args.length; i++) { + msg += "{} "; + } } - if (arg0 != null && i0 >= 0) { - msg = msg.substring(0, i0) + arg0 + msg.substring(i0 + 2); + String braces = "{}"; + int start = 0; + StringBuilder builder = new StringBuilder(); + for (Object arg : args) { + int bracesIndex = msg.indexOf(braces, start); + if (bracesIndex < 0) { + builder.append(msg.substring(start)); + builder.append(" "); + builder.append(arg); + start = msg.length(); + } else { + builder.append(msg.substring(start, bracesIndex)); + builder.append(String.valueOf(arg)); + start = bracesIndex + braces.length(); + } } - return msg; + builder.append(msg.substring(start)); + return builder.toString(); } } @@ -335,7 +370,7 @@ // For a system path, load from the outside world. URL found; - if (isSystemPath(checkName)) { + if (isSystemClass(checkName.replace('/', '.'))) { found = systemClassLoader.getResource(name); if (found != null) { return found; @@ -364,23 +399,10 @@ return super.findResource(name); } - /** - * Override to additionally consider the most commonly available JSP and - * XML implementation as system resources. (In fact, Jasper is in gwt-dev - * via embedded Tomcat, so we always hit this case.) - */ - @Override - public boolean isSystemPath(String name) { - name = name.replace('/', '.'); - return super.isSystemPath(name) - || name.startsWith("org.apache.jasper.") - || name.startsWith("org.apache.xerces."); - } - @Override protected Class<?> findClass(String name) throws ClassNotFoundException { // For system path, always prefer the outside world. - if (isSystemPath(name)) { + if (isSystemClass(name)) { try { return systemClassLoader.loadClass(name); } catch (ClassNotFoundException e) { @@ -391,7 +413,7 @@ return super.findClass(name); } catch (ClassNotFoundException e) { // Don't allow server classes to be loaded from the outside. - if (isServerPath(name)) { + if (isServerClass(name)) { throw e; } } @@ -464,8 +486,6 @@ */ private final ClassLoader systemClassLoader = Thread.currentThread().getContextClassLoader(); - private WebAppClassLoaderExtension classLoader; - @SuppressWarnings("unchecked") private WebAppContextWithReload(TreeLogger logger, String webApp, String contextPath) { @@ -474,16 +494,27 @@ // Prevent file locking on Windows; pick up file changes. getInitParams().put( - "org.mortbay.jetty.servlet.Default.useFileMappedBuffer", "false"); + "org.eclipse.jetty.servlet.Default.useFileMappedBuffer", "false"); // Since the parent class loader is bootstrap-only, prefer it first. setParentLoaderPriority(true); } + /** + * Override to additionally consider the most commonly available JSP and + * XML implementation as system resources. (In fact, Jasper is in gwt-dev + * via embedded Tomcat, so we always hit this case.) + */ + @Override + public boolean isSystemClass(String name) { + return super.isSystemClass(name) + || name.startsWith("org.apache.jasper.") + || name.startsWith("org.apache.xerces."); + } + @Override protected void doStart() throws Exception { - classLoader = new WebAppClassLoaderExtension(); - setClassLoader(classLoader); + setClassLoader(new WebAppClassLoaderExtension()); super.doStart(); } @@ -491,12 +522,12 @@ protected void doStop() throws Exception { super.doStop(); - Class<?> jdbcUnloader = classLoader.loadClass("com.google.gwt.dev.shell.jetty.JDBCUnloader"); + Class<?> jdbcUnloader = + getClassLoader().loadClass("com.google.gwt.dev.shell.jetty.JDBCUnloader"); java.lang.reflect.Method unload = jdbcUnloader.getMethod("unload"); unload.invoke(null); setClassLoader(null); - classLoader.destroy(); } } @@ -516,10 +547,6 @@ private static final String PROPERTY_NOWARN_WEBAPP_CLASSPATH = "gwt.nowarn.webapp.classpath"; static { - // Suppress spammy Jetty log initialization. - System.setProperty("org.mortbay.log.class", JettyNullLogger.class.getName()); - Log.getLog(); - /* * Make JDT the default Ant compiler so that JSP compilation just works * out-of-the-box. If we don't set this, it's very, very difficult to make @@ -672,7 +699,7 @@ jreLeakPrevention(logger); // Turn off XML validation. - System.setProperty("org.mortbay.xml.XmlParser.Validating", "false"); + System.setProperty("org.eclipse.jetty.xml.XmlParser.Validating", "false"); Server server = new Server(); @@ -704,7 +731,6 @@ branch.log(TreeLogger.TRACE, "Connection is null"); } } - return createServletContainer(logger, appRootDir, server, wac, connectorPort); } @@ -715,8 +741,7 @@ } protected WebAppContext createWebAppContext(TreeLogger logger, File appRootDir) { - return new WebAppContextWithReload(logger, appRootDir.getAbsolutePath(), - "/"); + return new WebAppContextWithReload(logger, appRootDir.getAbsolutePath(), "/"); } protected AbstractConnector getConnector(TreeLogger logger) {
diff --git a/dev/core/src/com/google/gwt/dev/shell/jetty/JettyNullLogger.java b/dev/core/src/com/google/gwt/dev/shell/jetty/JettyNullLogger.java deleted file mode 100644 index 81418ad..0000000 --- a/dev/core/src/com/google/gwt/dev/shell/jetty/JettyNullLogger.java +++ /dev/null
@@ -1,50 +0,0 @@ -/* - * Copyright 2009 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.google.gwt.dev.shell.jetty; - -import org.mortbay.log.Logger; - -/** - * A Jetty {@link Logger} that suppresses all output. - */ -public class JettyNullLogger implements Logger { - - public void debug(String msg, Throwable th) { - } - - public void debug(String msg, Object arg0, Object arg1) { - } - - public Logger getLogger(String name) { - return this; - } - - public void info(String msg, Object arg0, Object arg1) { - } - - public boolean isDebugEnabled() { - return false; - } - - public void setDebugEnabled(boolean enabled) { - } - - public void warn(String msg, Throwable th) { - } - - public void warn(String msg, Object arg0, Object arg1) { - } -}
diff --git a/eclipse/user/.classpath b/eclipse/user/.classpath index c857194..b168113 100644 --- a/eclipse/user/.classpath +++ b/eclipse/user/.classpath
@@ -8,25 +8,25 @@ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry exported="true" kind="var" path="GWT_TOOLS/lib/apache/tapestry-util-text-4.0.2.jar" sourcepath="/GWT_TOOLS/lib/apache/tapestry-util-text-4.0.2-src.zip"/> <classpathentry exported="true" kind="var" path="GWT_TOOLS/lib/junit/junit-4.8.2.jar" sourcepath="/GWT_TOOLS/lib/junit/junit-4.8.2-src.jar"/> - <classpathentry exported="true" kind="var" path="GWT_TOOLS/lib/tomcat/servlet-api-2.5.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/jsr305/jsr305.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/apache/http/httpclient-4.1.2.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/apache/http/httpcore-4.1.2.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/apache/http/httpmime-4.1.2.jar"/> + <classpathentry exported="true" kind="var" path="GWT_TOOLS/lib/jetty-8.1.12.v20130726/servlet-api-3.0-NoMetaInf.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/jsr305/jsr305.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/apache/http/httpclient-4.3.1.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/apache/http/httpcore-4.3.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/apache/http/httpmime-4.3.1.jar"/> <classpathentry kind="var" path="GWT_TOOLS/lib/apache/james/apache-mime4j-0.6.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/apache/commons/commons-codec-1.3.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/apache/commons/commons-codec-1.8.jar"/> <classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/commons-collections-3.1.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/apache/commons/commons-lang-2.6.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/commons-logging-1.0.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/apache/commons/commons-io-1.4.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/cssparser/cssparser-0.9.5.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/nekohtml/nekohtml-1.9.15.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/apache/commons/commons-lang3-3.1.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/apache/commons/commons-logging-1.1.1.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/apache/commons/commons-io-2.4.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/cssparser/cssparser-0.9.11.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/nekohtml/nekohtml-1.9.19.jar"/> <classpathentry kind="var" path="GWT_TOOLS/lib/selenium/selenium-java-client-driver.jar" sourcepath="/GWT_TOOLS/lib/selenium/selenium-java-client-driver-sources.jar"/> <classpathentry kind="var" path="GWT_TOOLS/lib/cup/java-cup-11a.jar"/> <classpathentry kind="var" path="GWT_TOOLS/lib/xalan/xalan-2.7.1-nocup.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/xerces/xerces-2_9_1/serializer.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/xerces/xerces-2_9_1/xercesImpl-NoMetaInf.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/xerces/xerces-2_9_1/xml-apis.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/xerces/xerces-2_11_0/serializer-2.7.1.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/xerces/xerces-2_11_0/xercesImpl-2.11.0.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/xerces/xerces-2_11_0/xml-apis-1.4.01.jar"/> <classpathentry kind="var" path="GWT_TOOLS/lib/w3c/sac/sac-1.3.jar"/> <classpathentry kind="var" path="GWT_TOOLS/lib/w3c/flute/flute-1.3-gg2.jar"/> <classpathentry kind="var" path="GWT_TOOLS/lib/cglib/cglib-2.2.jar"/> @@ -34,12 +34,12 @@ <classpathentry kind="var" path="GWT_TOOLS/lib/easymock/easymock-3.0.jar"/> <classpathentry kind="var" path="GWT_TOOLS/lib/objectweb/asm-3.1.jar"/> <classpathentry combineaccessrules="false" kind="src" path="/gwt-dev"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/htmlunit/htmlunit-2.9/htmlunit-2.9.jar" sourcepath="/GWT_TOOLS/lib/htmlunit/htmlunit-2.9/htmlunit-2.9-sources.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/htmlunit/htmlunit-2.9/htmlunit-core-js-2.9.jar" sourcepath="/GWT_TOOLS/lib/htmlunit/htmlunit-2.9/htmlunit-core-js-2.9-sources.jar"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/htmlunit/htmlunit-2.13/htmlunit-2.13.jar" /> + <classpathentry kind="var" path="GWT_TOOLS/lib/htmlunit/htmlunit-2.13/htmlunit-core-js-2.13.jar" /> <classpathentry kind="var" path="GWT_TOOLS/redist/json/r2_20080312/json-1.5.jar" sourcepath="/GWT_TOOLS/redist/json/r2_20080312/json-src.jar"/> <classpathentry exported="true" kind="var" path="GWT_TOOLS/lib/javax/validation/validation-api-1.0.0.GA.jar" sourcepath="/GWT_TOOLS/lib/javax/validation/validation-api-1.0.0.GA-sources.jar"/> <classpathentry exported="true" kind="var" path="GWT_TOOLS/lib/javax/validation/validation-api-1.0.0.GA-sources.jar"/> - <classpathentry kind="var" path="GWT_TOOLS/lib/jetty/jetty-6.1.11.jar" sourcepath="/GWT_TOOLS/lib/jetty/jetty-6.1.11-src.zip"/> + <classpathentry kind="var" path="GWT_TOOLS/lib/jetty/jetty-8.1.12.v20130726/jetty-8.1.12.v20130726.jar" /> <classpathentry kind="var" path="GWT_TOOLS/lib/hibernate/validator/hibernate-validator-4.1.0.Final-sources.jar"/> <classpathentry kind="var" path="GWT_TOOLS/lib/hibernate/validator/hibernate-validator-4.1.0.Final.jar" sourcepath="/GWT_TOOLS/lib/hibernate/validator/hibernate-validator-4.1.0.Final-sources.jar"/> <classpathentry kind="var" path="GWT_TOOLS/lib/apache/log4j/log4j-1.2.16.jar"/>
diff --git a/requestfactory/build.xml b/requestfactory/build.xml index 2da2feb..40ea109 100755 --- a/requestfactory/build.xml +++ b/requestfactory/build.xml
@@ -132,7 +132,7 @@ classname="com.google.web.bindery.requestfactory.vm.RequestFactoryJreSuite"> <jvmarg value="-Xss8m" /> <classpath> - <fileset dir="${gwt.tools.lib}" includes="tomcat/servlet-api-2.5.jar" /> + <fileset dir="${gwt.tools.lib}" includes="jetty/jetty-8.1.12.v20130726/servlet-api-3.0-NoMetaInf.jar" /> <fileset dir="${gwt.tools.lib}" includes="apache/log4j/log4j-1.2.16.jar" /> <fileset dir="${gwt.tools.lib}" includes="slf4j/slf4j-api/slf4j-api-1.6.1.jar" /> <fileset dir="${gwt.tools.lib}" includes="slf4j/slf4j-log4j12/slf4j-log4j12-1.6.1.jar" />
diff --git a/user/build.xml b/user/build.xml index 42a0758..1a77b29 100755 --- a/user/build.xml +++ b/user/build.xml
@@ -90,7 +90,7 @@ <mkdir dir="${javac.out}" /> <gwt.javac excludes="**/super/**"> <classpath> - <pathelement location="${gwt.tools.lib}/tomcat/servlet-api-2.5.jar" /> + <pathelement location="${gwt.tools.lib}/jetty/jetty-8.1.12.v20130726/servlet-api-3.0-NoMetaInf.jar" /> <pathelement location="${gwt.tools.lib}/junit/junit-4.8.2.jar" /> <pathelement location="${gwt.tools.lib}/jfreechart/jfreechart-1.0.3.jar" /> <pathelement location="${gwt.tools.lib}/selenium/selenium-java-client-driver.jar" /> @@ -210,7 +210,7 @@ <fileset dir="src" excludes="**/package.html" /> <fileset dir="super" excludes="**/package.html" /> <fileset dir="${javac.out}" /> - <zipfileset src="${gwt.tools.lib}/tomcat/servlet-api-2.5.jar" excludes="**/*.java"/> + <zipfileset src="${gwt.tools.lib}/jetty/jetty-8.1.12.v20130726/servlet-api-3.0-NoMetaInf.jar" excludes="**/*.java"/> <zipfileset src="${gwt.tools.lib}/w3c/sac/sac-1.3.jar" /> <zipfileset src="${gwt.tools.lib}/w3c/flute/flute-1.3-gg2.jar" /> <zipfileset src="${gwt.tools.lib}/streamhtmlparser/streamhtmlparser-jsilver-r10/streamhtmlparser-jsilver-r10-1.5-rebased.jar" />
diff --git a/user/src/com/google/gwt/junit/JUnitShell.java b/user/src/com/google/gwt/junit/JUnitShell.java index 5c12917..ffcfe98 100644 --- a/user/src/com/google/gwt/junit/JUnitShell.java +++ b/user/src/com/google/gwt/junit/JUnitShell.java
@@ -73,8 +73,8 @@ import junit.framework.TestCase; import junit.framework.TestResult; -import org.mortbay.jetty.Server; -import org.mortbay.jetty.webapp.WebAppContext; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.webapp.WebAppContext; import java.io.File; import java.lang.reflect.Constructor; @@ -606,7 +606,7 @@ { // Prevent file locking on Windows; pick up file changes. getInitParams().put( - "org.mortbay.jetty.servlet.Default.useFileMappedBuffer", "false"); + "org.eclipse.jetty.servlet.Default.useFileMappedBuffer", "false"); // Prefer the parent class loader so that JUnit works. setParentLoaderPriority(true); @@ -1144,10 +1144,9 @@ path = '/' + module.getName() + path; if (!servletClass.equals(loadedServletsByPath.get(path))) { try { - Class<?> clazz = wac.loadClass(servletClass); - wac.addServlet(clazz, path); + wac.addServlet(servletClass, path); loadedServletsByPath.put(path, servletClass); - } catch (ClassNotFoundException e) { + } catch (Exception e) { getTopLogger().log( TreeLogger.WARN, "Failed to load servlet class '" + servletClass
diff --git a/user/src/com/google/gwt/junit/RunStyleHtmlUnit.java b/user/src/com/google/gwt/junit/RunStyleHtmlUnit.java index 93d2dbb..e81f885c 100644 --- a/user/src/com/google/gwt/junit/RunStyleHtmlUnit.java +++ b/user/src/com/google/gwt/junit/RunStyleHtmlUnit.java
@@ -35,9 +35,6 @@ import net.sourceforge.htmlunit.corejs.javascript.ScriptableObject; -import org.w3c.css.sac.CSSParseException; -import org.w3c.css.sac.ErrorHandler; - import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; @@ -99,28 +96,9 @@ public void run() { WebClient webClient = new WebClient(browser); webClient.setAlertHandler(this); - // Adding a handler that ignores errors to work-around - // https://sourceforge.net/tracker/?func=detail&aid=3090806&group_id=47038&atid=448266 - webClient.setCssErrorHandler(new ErrorHandler() { - - public void error(CSSParseException exception) { - // ignore - } - - public void fatalError(CSSParseException exception) { - treeLogger.log(TreeLogger.WARN, - "CSS fatal error: " + exception.getURI() + " [" - + exception.getLineNumber() + ":" - + exception.getColumnNumber() + "] " + exception.getMessage()); - } - - public void warning(CSSParseException exception) { - // ignore - } - }); webClient.setIncorrectnessListener(this); - webClient.setThrowExceptionOnFailingStatusCode(false); - webClient.setThrowExceptionOnScriptError(true); + webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); + webClient.getOptions().setThrowExceptionOnScriptError(true); webClient.setOnbeforeunloadHandler(this); webClient.setJavaScriptErrorListener(new JavaScriptErrorListener() { @@ -237,8 +215,8 @@ private static Map<String, BrowserVersion> createBrowserMap() { Map<String, BrowserVersion> browserMap = new HashMap<String, BrowserVersion>(); for (BrowserVersion browser : new BrowserVersion[] { - BrowserVersion.FIREFOX_3, BrowserVersion.FIREFOX_3_6, BrowserVersion.INTERNET_EXPLORER_6, - BrowserVersion.INTERNET_EXPLORER_7}) { + BrowserVersion.FIREFOX_17, BrowserVersion.INTERNET_EXPLORER_8, + BrowserVersion.INTERNET_EXPLORER_9, BrowserVersion.CHROME}) { browserMap.put(browser.getNickname(), browser); } return Collections.unmodifiableMap(browserMap); @@ -263,8 +241,8 @@ @Override public int initialize(String args) { if (args == null || args.length() == 0) { - // If no browsers specified, default to Firefox 3. - args = "FF3"; + // If no browsers specified, default to Firefox 17. + args = "FF17"; } Set<BrowserVersion> browserSet = new HashSet<BrowserVersion>(); for (String browserName : args.split(",")) {
diff --git a/user/test/com/google/gwt/user/server/rpc/LogFilterServletContext.java b/user/test/com/google/gwt/user/server/rpc/LogFilterServletContext.java index 6ebaa39..6caa54b 100644 --- a/user/test/com/google/gwt/user/server/rpc/LogFilterServletContext.java +++ b/user/test/com/google/gwt/user/server/rpc/LogFilterServletContext.java
@@ -19,12 +19,21 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.Enumeration; +import java.util.EventListener; +import java.util.Map; import java.util.Set; +import javax.servlet.Filter; +import javax.servlet.FilterRegistration; +import javax.servlet.FilterRegistration.Dynamic; import javax.servlet.RequestDispatcher; import javax.servlet.Servlet; import javax.servlet.ServletContext; import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; +import javax.servlet.SessionCookieConfig; +import javax.servlet.SessionTrackingMode; +import javax.servlet.descriptor.JspConfigDescriptor; @SuppressWarnings(value = {"deprecation", "unchecked"}) abstract class LogFilterServletContext implements ServletContext { @@ -140,5 +149,110 @@ realContext.setAttribute(name, object); } + public Dynamic addFilter(String arg0, Class<? extends Filter> arg1) { + return realContext.addFilter(arg0, arg1); + } + + public Dynamic addFilter(String arg0, Filter arg1) { + return realContext.addFilter(arg0, arg1); + } + + public Dynamic addFilter(String arg0, String arg1) { + return realContext.addFilter(arg0, arg1); + } + + public void addListener(Class<? extends EventListener> arg0) { + realContext.addListener(arg0); + } + + public void addListener(String arg0) { + realContext.addListener(arg0); + } + + public <T extends EventListener> void addListener(T arg0) { + realContext.addListener(arg0); + } + + public javax.servlet.ServletRegistration.Dynamic addServlet( + String arg0, Class<? extends Servlet> arg1) { + return realContext.addServlet(arg0, arg1); + } + + public javax.servlet.ServletRegistration.Dynamic addServlet(String arg0, Servlet arg1) { + return realContext.addServlet(arg0, arg1); + } + + public javax.servlet.ServletRegistration.Dynamic addServlet(String arg0, String arg1) { + return realContext.addServlet(arg0, arg1); + } + + public <T extends Filter> T createFilter(Class<T> arg0) throws ServletException { + return realContext.createFilter(arg0); + } + + public <T extends EventListener> T createListener(Class<T> arg0) throws ServletException { + return realContext.createListener(arg0); + } + + public <T extends Servlet> T createServlet(Class<T> arg0) throws ServletException { + return realContext.createServlet(arg0); + } + + public void declareRoles(String... arg0) { + realContext.declareRoles(arg0); + } + + public ClassLoader getClassLoader() { + return realContext.getClassLoader(); + } + + public Set<SessionTrackingMode> getDefaultSessionTrackingModes() { + return realContext.getDefaultSessionTrackingModes(); + } + + public int getEffectiveMajorVersion() { + return realContext.getEffectiveMajorVersion(); + } + + public int getEffectiveMinorVersion() { + return realContext.getEffectiveMinorVersion(); + } + + public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() { + return realContext.getEffectiveSessionTrackingModes(); + } + + public FilterRegistration getFilterRegistration(String arg0) { + return realContext.getFilterRegistration(arg0); + } + + public Map<String, ? extends FilterRegistration> getFilterRegistrations() { + return realContext.getFilterRegistrations(); + } + + public JspConfigDescriptor getJspConfigDescriptor() { + return realContext.getJspConfigDescriptor(); + } + + public ServletRegistration getServletRegistration(String arg0) { + return realContext.getServletRegistration(arg0); + } + + public Map<String, ? extends ServletRegistration> getServletRegistrations() { + return realContext.getServletRegistrations(); + } + + public SessionCookieConfig getSessionCookieConfig() { + return realContext.getSessionCookieConfig(); + } + + public boolean setInitParameter(String arg0, String arg1) { + return realContext.setInitParameter(arg0, arg1); + } + + public void setSessionTrackingModes(Set<SessionTrackingMode> arg0) { + realContext.setSessionTrackingModes(arg0); + } + protected abstract boolean shouldLog(Throwable t, String msg); } \ No newline at end of file
diff --git a/user/test/com/google/gwt/user/server/rpc/MockHttpServletRequest.java b/user/test/com/google/gwt/user/server/rpc/MockHttpServletRequest.java index 865c48c..1772c68 100644 --- a/user/test/com/google/gwt/user/server/rpc/MockHttpServletRequest.java +++ b/user/test/com/google/gwt/user/server/rpc/MockHttpServletRequest.java
@@ -18,21 +18,38 @@ import java.io.BufferedReader; import java.io.IOException; import java.security.Principal; +import java.util.Collection; import java.util.Enumeration; import java.util.Locale; import java.util.Map; +import javax.servlet.AsyncContext; +import javax.servlet.DispatcherType; import javax.servlet.RequestDispatcher; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; import javax.servlet.ServletInputStream; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import javax.servlet.http.Part; /** * A dummy class for testing methods that require an HttpServletRequest. */ public class MockHttpServletRequest implements HttpServletRequest { + public boolean authenticate(HttpServletResponse arg0) throws IOException, ServletException { + throw new UnsupportedOperationException(); + } + + public AsyncContext getAsyncContext() { + throw new UnsupportedOperationException(); + } + public Object getAttribute(String arg0) { throw new UnsupportedOperationException(); } @@ -69,6 +86,10 @@ throw new UnsupportedOperationException(); } + public DispatcherType getDispatcherType() { + throw new UnsupportedOperationException(); + } + public String getHeader(String arg0) { throw new UnsupportedOperationException(); } @@ -129,6 +150,14 @@ throw new UnsupportedOperationException(); } + public Part getPart(String arg0) throws IOException, ServletException { + throw new UnsupportedOperationException(); + } + + public Collection<Part> getParts() throws IOException, ServletException { + throw new UnsupportedOperationException(); + } + public String getPathInfo() { throw new UnsupportedOperationException(); } @@ -197,6 +226,10 @@ throw new UnsupportedOperationException(); } + public ServletContext getServletContext() { + throw new UnsupportedOperationException(); + } + public String getServletPath() { throw new UnsupportedOperationException(); } @@ -213,6 +246,14 @@ throw new UnsupportedOperationException(); } + public boolean isAsyncStarted() { + throw new UnsupportedOperationException(); + } + + public boolean isAsyncSupported() { + throw new UnsupportedOperationException(); + } + public boolean isRequestedSessionIdFromCookie() { throw new UnsupportedOperationException(); } @@ -237,6 +278,14 @@ throw new UnsupportedOperationException(); } + public void login(String arg0, String arg1) throws ServletException { + throw new UnsupportedOperationException(); + } + + public void logout() throws ServletException { + throw new UnsupportedOperationException(); + } + public void removeAttribute(String arg0) { throw new UnsupportedOperationException(); } @@ -248,4 +297,13 @@ public void setCharacterEncoding(String arg0) { throw new UnsupportedOperationException(); } + + public AsyncContext startAsync() throws IllegalStateException { + throw new UnsupportedOperationException(); + } + + public AsyncContext startAsync(ServletRequest arg0, ServletResponse arg1) + throws IllegalStateException { + throw new UnsupportedOperationException(); + } }
diff --git a/user/test/com/google/gwt/user/server/rpc/RemoteServiceServletTest.java b/user/test/com/google/gwt/user/server/rpc/RemoteServiceServletTest.java index 6ab9605..518cc4a 100644 --- a/user/test/com/google/gwt/user/server/rpc/RemoteServiceServletTest.java +++ b/user/test/com/google/gwt/user/server/rpc/RemoteServiceServletTest.java
@@ -27,13 +27,22 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.Enumeration; +import java.util.EventListener; +import java.util.Map; import java.util.Set; +import javax.servlet.Filter; +import javax.servlet.FilterRegistration; +import javax.servlet.FilterRegistration.Dynamic; import javax.servlet.RequestDispatcher; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; +import javax.servlet.SessionCookieConfig; +import javax.servlet.SessionTrackingMode; +import javax.servlet.descriptor.JspConfigDescriptor; /** * Test some of the failure modes associated with @@ -168,7 +177,7 @@ throw new UnsupportedOperationException(); } - public Enumeration<String> getServlets() { + public Enumeration<Servlet> getServlets() { throw new UnsupportedOperationException(); } @@ -190,6 +199,111 @@ public void setAttribute(String arg0, Object arg1) { throw new UnsupportedOperationException(); } + + public Dynamic addFilter(String arg0, String arg1) { + throw new UnsupportedOperationException(); + } + + public Dynamic addFilter(String arg0, Filter arg1) { + throw new UnsupportedOperationException(); + } + + public Dynamic addFilter(String arg0, Class<? extends Filter> arg1) { + throw new UnsupportedOperationException(); + } + + public void addListener(String arg0) { + throw new UnsupportedOperationException(); + } + + public <T extends EventListener> void addListener(T arg0) { + throw new UnsupportedOperationException(); + } + + public void addListener(Class<? extends EventListener> arg0) { + throw new UnsupportedOperationException(); + } + + public javax.servlet.ServletRegistration.Dynamic addServlet(String arg0, String arg1) { + throw new UnsupportedOperationException(); + } + + public javax.servlet.ServletRegistration.Dynamic addServlet(String arg0, Servlet arg1) { + throw new UnsupportedOperationException(); + } + + public javax.servlet.ServletRegistration.Dynamic addServlet( + String arg0, Class<? extends Servlet> arg1) { + throw new UnsupportedOperationException(); + } + + public <T extends Filter> T createFilter(Class<T> arg0) throws ServletException { + throw new UnsupportedOperationException(); + } + + public <T extends EventListener> T createListener(Class<T> arg0) throws ServletException { + throw new UnsupportedOperationException(); + } + + public <T extends Servlet> T createServlet(Class<T> arg0) throws ServletException { + throw new UnsupportedOperationException(); + } + + public void declareRoles(String... arg0) { + throw new UnsupportedOperationException(); + } + + public ClassLoader getClassLoader() { + throw new UnsupportedOperationException(); + } + + public Set<SessionTrackingMode> getDefaultSessionTrackingModes() { + throw new UnsupportedOperationException(); + } + + public int getEffectiveMajorVersion() { + throw new UnsupportedOperationException(); + } + + public int getEffectiveMinorVersion() { + throw new UnsupportedOperationException(); + } + + public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() { + throw new UnsupportedOperationException(); + } + + public FilterRegistration getFilterRegistration(String arg0) { + throw new UnsupportedOperationException(); + } + + public Map<String, ? extends FilterRegistration> getFilterRegistrations() { + throw new UnsupportedOperationException(); + } + + public JspConfigDescriptor getJspConfigDescriptor() { + throw new UnsupportedOperationException(); + } + + public ServletRegistration getServletRegistration(String arg0) { + throw new UnsupportedOperationException(); + } + + public Map<String, ? extends ServletRegistration> getServletRegistrations() { + throw new UnsupportedOperationException(); + } + + public SessionCookieConfig getSessionCookieConfig() { + throw new UnsupportedOperationException(); + } + + public boolean setInitParameter(String arg0, String arg1) { + throw new UnsupportedOperationException(); + } + + public void setSessionTrackingModes(Set<SessionTrackingMode> arg0) { + throw new UnsupportedOperationException(); + } } public void testDoGetSerializationPolicy_FailToOpenMD5Resource()
diff --git a/user/test/com/google/web/bindery/requestfactory/server/RequestFactoryTestServer.java b/user/test/com/google/web/bindery/requestfactory/server/RequestFactoryTestServer.java index 3f51bd5..cf6d44b 100644 --- a/user/test/com/google/web/bindery/requestfactory/server/RequestFactoryTestServer.java +++ b/user/test/com/google/web/bindery/requestfactory/server/RequestFactoryTestServer.java
@@ -15,12 +15,15 @@ */ package com.google.web.bindery.requestfactory.server; -import org.mortbay.jetty.Handler; -import org.mortbay.jetty.Server; -import org.mortbay.jetty.bio.SocketConnector; -import org.mortbay.jetty.servlet.Context; -import org.mortbay.jetty.servlet.SessionHandler; -import org.mortbay.servlet.GzipFilter; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.bio.SocketConnector; +import org.eclipse.jetty.server.session.SessionHandler; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.servlets.GzipFilter; + +import java.util.EnumSet; + +import javax.servlet.DispatcherType; /** * A utility class for hosting an instance of {@link RequestFactoryServlet}. @@ -33,13 +36,15 @@ connector.setPort(9999); server.addConnector(connector); - Context ctx = new Context(); - ctx.addServlet(RequestFactoryServlet.class, "/gwtRequest"); - ctx.addFilter(GzipFilter.class, "*", Handler.DEFAULT); + ServletContextHandler handler = new ServletContextHandler(ServletContextHandler.SESSIONS); + handler.setContextPath("/"); + handler.addServlet(RequestFactoryServlet.class, "/gwtRequest"); + handler.addFilter(GzipFilter.class, "/*", EnumSet.allOf(DispatcherType.class)); + SessionHandler sessionHandler = new SessionHandler(); sessionHandler.getSessionManager().setMaxInactiveInterval(5); - ctx.setSessionHandler(sessionHandler); - server.addHandler(ctx); + handler.setSessionHandler(sessionHandler); + server.setHandler(handler); try { server.start();