buildbot success in ASF Buildbot on tomcat-trunk
The Buildbot has detected a restored build on builder tomcat-trunk while building ASF Buildbot. Full details are available at: http://ci.apache.org/builders/tomcat-trunk/builds/507 Buildbot URL: http://ci.apache.org/ Buildslave for this Build: bb-vm_ubuntu Build Reason: scheduler Build Source Stamp: [branch tomcat/trunk] 1628850 Blamelist: kkolinko Build succeeded! sincerely, -The Buildbot - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1628603 - in /tomcat/maven-plugin/branches/tc8.x: ./ common-tomcat-maven-plugin/ tomcat-maven-archetype/ tomcat-maven-plugin-it/ tomcat6-maven-plugin/ tomcat7-maven-plugin/ tomcat7-wa
oh my bad it was just for testing purpose as I have some issues with the jsp classloader with the tomcat8 integration. (I will revert that) As I have limited time currently, I will appreciate any help :-) The problem is: SEVERE: Servlet.service() for servlet [jsp] in context with path [/multi-config] threw exception [java.lang.LinkageError: loader constraint violation: when resolving method "org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(Ljavax/servlet/ServletConfig;)Lorg/apache/tomcat/InstanceManager;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/index_jsp, and the class loader (instance of org/codehaus/plexus/classworlds/realm/ClassRealm) for resolved class, org/apache/jasper/runtime/InstanceManagerFactory, have different Class objects for the type .getInstanceManager(Ljavax/servlet/ServletConfig;)Lorg/apache/tomcat/InstanceManager; used in the signature] with root cause java.lang.LinkageError: loader constraint violation: when resolving method "org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(Ljavax/servlet/ServletConfig;)Lorg/apache/tomcat/InstanceManager;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/index_jsp, and the class loader (instance of org/codehaus/plexus/classworlds/realm/ClassRealm) for resolved class, org/apache/jasper/runtime/InstanceManagerFactory, have different Class objects for the type .getInstanceManager(Ljavax/servlet/ServletConfig;)Lorg/apache/tomcat/InstanceManager; used in the signature at org.apache.jsp.index_jsp._jspInit(index_jsp.java:47) at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49) at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:180) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:335) at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:534) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) To reproduce: git clone https://github.com/apache/tomcat-maven-plugin.git cd tomcat-maven-plugin git checkout tc8.x (or get the branch from svn) mvn clean install -pl :tomcat8-maven-plugin -am -Prun-its less tomcat8-maven-plugin/target/test-classes/tomcat-run-multi-config/foo.log On 1 October 2014 21:53, Konstantin Kolinko wrote: > 2014-10-01 9:31 GMT+04:00 : >> Author: olamy >> Date: Wed Oct 1 05:31:10 2014 >> New Revision: 1628603 >> >> URL: http://svn.apache.org/r1628603 >> Log: >> bump version to 3.0-SNAPSHOT >> >> Modified: >> tomcat/maven-plugin/branches/tc8.x/common-tomcat-maven-plugin/pom.xml >> tomcat/maven-plugin/branches/tc8.x/pom.xml >> tomcat/maven-plugin/branches/tc8.x/tomcat-maven-archetype/pom.xml >> tomcat/maven-plugin/branches/tc8.x/tomcat-maven-plugin-it/pom.xml >> tomcat/maven-plugin/branches/tc8.x/tomcat6-maven-plugin/pom.xml >> tomcat/maven-plugin/branches/tc8.x/tomcat7-maven-plugin/pom.xml >> tomcat/maven-plugin/branches/tc8.x/tomcat7-war-runner/pom.xml >> tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/pom.xml >> >> tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java
svn commit: r1628865 - /tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java
Author: olamy Date: Wed Oct 1 23:43:18 2014 New Revision: 1628865 URL: http://svn.apache.org/r1628865 Log: partially revert bad commit r1628603 Modified: tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java Modified: tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java URL: http://svn.apache.org/viewvc/tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java?rev=1628865&r1=1628864&r2=1628865&view=diff == --- tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java (original) +++ tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java Wed Oct 1 23:43:18 2014 @@ -340,8 +340,7 @@ public class RunMojo getLog().debug( "classLoaderEntriesCalculator urls: " + urls ); -final URLClassLoader urlClassLoader = new URLClassLoader( urls.toArray( new URL[urls.size()] ), // - Thread.currentThread().getContextClassLoader() ); +final URLClassLoader urlClassLoader = new URLClassLoader( urls.toArray( new URL[urls.size()] ) ); final ClassRealm pluginRealm = getTomcatClassLoader(); @@ -356,12 +355,6 @@ public class RunMojo public WebResource getClassLoaderResource( String path ) { -if (previous.getState().isAvailable()) -{ -WebResource webResource = previous.getClassLoaderResource( path ); -log.debug( "foo" ); -} - log.debug( "RunMojo#getClassLoaderResource: " + path ); URL url = urlClassLoader.getResource( StringUtils.removeStart( path, "/" ) ); // search in parent (plugin) classloader @@ -370,7 +363,7 @@ public class RunMojo url = pluginRealm.getResource( StringUtils.removeStart( path, "/" ) ); } -if (url == null) +if ( url == null ) { // try in reactors List webResources = findResourcesInDirectories( path, // - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1628866 - /tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java
Author: olamy Date: Wed Oct 1 23:43:25 2014 New Revision: 1628866 URL: http://svn.apache.org/r1628866 Log: revert use of cast method Modified: tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java Modified: tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java URL: http://svn.apache.org/viewvc/tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java?rev=1628866&r1=1628865&r2=1628866&view=diff == --- tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java (original) +++ tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java Wed Oct 1 23:43:25 2014 @@ -734,7 +734,7 @@ public abstract class AbstractRunMojo // normally this one only but just in case ... if ( jarScanner instanceof StandardJarScanner ) { -( StandardJarScanner.class.cast( jarScanner ) ).setScanAllDirectories( jarScanAllDirectories ); +( (StandardJarScanner) jarScanner ).setScanAllDirectories( jarScanAllDirectories ); } return context; - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1628864 - in /tomcat/maven-plugin/branches/tc8.x: pom.xml tomcat-maven-plugin-it/src/main/java/org/apache/tomcat/maven/it/AbstractWarProjectIT.java
Author: olamy Date: Wed Oct 1 23:43:11 2014 New Revision: 1628864 URL: http://svn.apache.org/r1628864 Log: use last tomcat8 version Modified: tomcat/maven-plugin/branches/tc8.x/pom.xml tomcat/maven-plugin/branches/tc8.x/tomcat-maven-plugin-it/src/main/java/org/apache/tomcat/maven/it/AbstractWarProjectIT.java Modified: tomcat/maven-plugin/branches/tc8.x/pom.xml URL: http://svn.apache.org/viewvc/tomcat/maven-plugin/branches/tc8.x/pom.xml?rev=1628864&r1=1628863&r2=1628864&view=diff == --- tomcat/maven-plugin/branches/tc8.x/pom.xml (original) +++ tomcat/maven-plugin/branches/tc8.x/pom.xml Wed Oct 1 23:43:11 2014 @@ -74,7 +74,7 @@ 2008 7.0.54 -8.0.12 +8.0.14 Modified: tomcat/maven-plugin/branches/tc8.x/tomcat-maven-plugin-it/src/main/java/org/apache/tomcat/maven/it/AbstractWarProjectIT.java URL: http://svn.apache.org/viewvc/tomcat/maven-plugin/branches/tc8.x/tomcat-maven-plugin-it/src/main/java/org/apache/tomcat/maven/it/AbstractWarProjectIT.java?rev=1628864&r1=1628863&r2=1628864&view=diff == --- tomcat/maven-plugin/branches/tc8.x/tomcat-maven-plugin-it/src/main/java/org/apache/tomcat/maven/it/AbstractWarProjectIT.java (original) +++ tomcat/maven-plugin/branches/tc8.x/tomcat-maven-plugin-it/src/main/java/org/apache/tomcat/maven/it/AbstractWarProjectIT.java Wed Oct 1 23:43:11 2014 @@ -195,8 +195,10 @@ public abstract class AbstractWarProject throws IOException { HttpGet httpGet = new HttpGet( getWebappUrl() ); -httpGet.setConfig( -RequestConfig.custom().setSocketTimeout( getTimeout() ).setConnectTimeout( getTimeout() ).build() ); +httpGet.setConfig( RequestConfig.custom() // + .setSocketTimeout( getTimeout() ) // + .setConnectTimeout( getTimeout() ) // + .build() ); ResponseHandler responseHandler = new BasicResponseHandler(); return httpClient.execute( httpGet, responseHandler ); } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1628592 - in /tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run: AbstractRunMojo.java RunMojo.java
On 1 October 2014 22:02, Konstantin Kolinko wrote: > 2014-10-01 8:02 GMT+04:00 : >> Author: olamy >> Date: Wed Oct 1 04:02:59 2014 >> New Revision: 1628592 >> >> URL: http://svn.apache.org/r1628592 >> Log: >> minot formatting >> >> Modified: >> >> tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java >> >> tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java >> >> Modified: >> tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java >> URL: >> http://svn.apache.org/viewvc/tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java?rev=1628592&r1=1628591&r2=1628592&view=diff >> == >> --- >> tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java >> (original) >> +++ >> tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java >> Wed Oct 1 04:02:59 2014 >> @@ -734,7 +734,7 @@ public abstract class AbstractRunMojo >> // normally this one only but just in case ... >> if ( jarScanner instanceof StandardJarScanner ) >> { >> -( (StandardJarScanner) jarScanner ).setScanAllDirectories( >> jarScanAllDirectories ); >> +( StandardJarScanner.class.cast( jarScanner ) >> ).setScanAllDirectories( jarScanAllDirectories ); >> } > > > Is there any profit in changing > > ( (StandardJarScanner) jarScanner ) > > to > > StandardJarScanner.class.cast( jarScanner ) > ? > > 1) The former is an operation, the latter is a method call. I think an > operation executes more efficiently. > > 2) The latter is longer text. I found that more readable (but that's really subjective :-) ) > > 3) I have seen compilers to spot errors in class-cast operations (such > as "unnecessary class-cast" and "illegal class-cast" errors). > > I suspect that it would be harder to them to spot such errors in > method calls, though I do not have experience here. Make sense I will revert that. > > > Best regards, > Konstantin Kolinko > > - > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org > -- Olivier Lamy http://twitter.com/olamy | http://linkedin.com/in/olamy - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1628712 - /tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java
2014-10-01 18:24 GMT+04:00 : > Author: markt > Date: Wed Oct 1 14:24:49 2014 > New Revision: 1628712 > > URL: http://svn.apache.org/r1628712 > Log: > boolean[] -> BitSet Officially, javadoc for BitSet says that the class is not thread-safe [1] though the actual implementation of get() method as far as I see is a safe one. This saves memory for the array from 512 bytes to 16 bytes, but adds some computations. Given that we have a copy of this array (or bit set) in each web application, I agree that such memory save is worth it. [1] http://docs.oracle.com/javase/8/docs/api/java/util/BitSet.html By the way, there exists java.math.BigInteger class with its setBit(), clearBit() and testBit() methods. > Modified: > tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java > > Modified: > tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java > URL: > http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java?rev=1628712&r1=1628711&r2=1628712&view=diff > == > --- tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java > (original) > +++ tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java > Wed Oct 1 14:24:49 2014 > @@ -18,6 +18,7 @@ package org.apache.tomcat.util.http; > > import java.nio.charset.Charset; > import java.nio.charset.StandardCharsets; > +import java.util.BitSet; > > import org.apache.juli.logging.Log; > import org.apache.juli.logging.LogFactory; > @@ -45,7 +46,7 @@ public final class LegacyCookieProcessor > StringManager.getManager("org.apache.tomcat.util.http"); > > private static final char[] V0_SEPARATORS = {',', ';', ' ', '\t'}; > -private static final boolean[] V0_SEPARATOR_FLAGS = new boolean[128]; > +private static final BitSet V0_SEPARATOR_FLAGS = new BitSet(128); > > // Excludes '/' since configuration controls whether or not to treat '/' > as > // a separator > @@ -55,7 +56,7 @@ public final class LegacyCookieProcessor > > static { > for (char c : V0_SEPARATORS) { > -V0_SEPARATOR_FLAGS[c] = true; > +V0_SEPARATOR_FLAGS.set(c); > } > } > > @@ -73,18 +74,20 @@ public final class LegacyCookieProcessor > // when deprecated code is removed > private boolean presserveCookieHeader = > CookieSupport.PRESERVE_COOKIE_HEADER; > > -private boolean[] httpSeparatorFlags = new boolean[128]; > +private BitSet httpSeparatorFlags = new BitSet(128); > > > public LegacyCookieProcessor() { > -// Array elements will default to false > +// BitSet elements will default to false > for (char c : HTTP_SEPARATORS) { > -httpSeparatorFlags[c] = true; > +httpSeparatorFlags.set(c); > } > @SuppressWarnings("deprecation") // Default to > STRICT_SERVLET_COMPLIANCE > // when deprecated code is removed > boolean b = CookieSupport.FWD_SLASH_IS_SEPARATOR; > -httpSeparatorFlags['/'] = b; > +if (b) { > +httpSeparatorFlags.set('/'); > +} > } > > > @@ -129,12 +132,16 @@ public final class LegacyCookieProcessor > > > public boolean getForwardSlashIsSeparator() { > -return httpSeparatorFlags['/']; > +return httpSeparatorFlags.get('/'); > } > > > public void setForwardSlashIsSeparator(boolean forwardSlashIsSeparator) { > -httpSeparatorFlags['/'] = forwardSlashIsSeparator; > +if (forwardSlashIsSeparator) { > +httpSeparatorFlags.set('/'); > +} else { > +httpSeparatorFlags.clear('/'); > +} > } > > > @@ -478,7 +485,7 @@ public final class LegacyCookieProcessor > } > } > > -return httpSeparatorFlags[c]; > +return httpSeparatorFlags.get(c); > } > > > @@ -494,7 +501,7 @@ public final class LegacyCookieProcessor > } > } > > -return V0_SEPARATOR_FLAGS[c]; > +return V0_SEPARATOR_FLAGS.get(c); > } > > > > > > - > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org > - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1628850 - /tomcat/trunk/java/org/apache/catalina/startup/Catalina.java
Author: kkolinko Date: Wed Oct 1 22:05:24 2014 New Revision: 1628850 URL: http://svn.apache.org/r1628850 Log: Fix typo (Forward-port of r1628803 from Tomcat 7) Modified: tomcat/trunk/java/org/apache/catalina/startup/Catalina.java Modified: tomcat/trunk/java/org/apache/catalina/startup/Catalina.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/Catalina.java?rev=1628850&r1=1628849&r2=1628850&view=diff == --- tomcat/trunk/java/org/apache/catalina/startup/Catalina.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/Catalina.java Wed Oct 1 22:05:24 2014 @@ -768,7 +768,7 @@ public class Catalina { (javax.naming.Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory"); } else { -log.debug( "INITIAL_CONTEXT_FACTORY alread set " + value ); +log.debug( "INITIAL_CONTEXT_FACTORY already set " + value ); } } } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: Improving the documentation
2014-10-01 17:28 GMT+04:00 Mark Thomas : > I've had improving the documentation at the back of my mind for some > time. One of the things that bugs me is the duplication - particularly > between the configuration documentation and the Javadoc. With this in > mind I have been mulling over the follow idea. Feedback welcome. > > Remove the bulk of the configuration section of the JavaDoc, replacing > it with a graphical overview of Tomcat's internal structure linked to > the relevant JavaDoc for each component. > > The general description of a component would move to the interface > Javadoc as would the information on the common attributes. > > Implementation specific information would move to the implementation > Javadoc. > > There are some special cases. The ones that come immediately to mind are: > - className attribute. Never appears in Javadoc. Document it and other > information about standard implementations etc. in the appropriate > class level Javadoc The "className" attribute is just a details on how Digester works for this specific format of configuration files. It is not needed if you configure embedded Tomcat. There is no need for it to appear in Javadoc. > - attributes set by reflection and setProperty. Document them, with > links to the Javadoc for where they are really set in the appropriate > class level Javadoc You wanna take a bite at documenting Connector / Protocol / Endpoint attributes and their aliases? > I am sure there are others. I am confident suitable approaches can be > found for each. > > I'd also like to review the various How To documents and move as much as > possible to Javadoc - probably as package level documentation. > > > A major issue is that we don't install Javadoc buy default. My proposal > for this is to leave the links as local links but write a Servlet (or > maybe a JSP) to handle all requests for local Javadoc as follows: > - if local Javadoc is installed, use it > - if local Javadoc is not installed and the user has not previously > given permission to redirect to the Tomcat website request permission > to redirect the request to the Javadoc hosted on the Tomcat web site > - if local Javadoc is not installed and the user has previously > expressed a preference regarding redirection in that session, abide > by that preference > > Thoughts? I do not like the idea. 1. Many Tomcat administrators are not programmers. They will not be happy digging into Tomcat internals. (I have read such concerns many times with regards to Tomcat logging configuration). 2. Javadoc is many megabytes and many small documents. It takes much disk space. It is also unrealistic to expect one to review and read most of them. (E.g., when I install Apache Ant by unzipping their bin.zip file, I usually delete their Javadoc. An installed version of Ant. with manuals included but without "manual/api" directory, is just 6Mb. (On example of version 1.9.3) The Javadocs part of the manual is 32 Mb.) 3. I think that Javadoc is mostly for our self-reference. It is not the best place to document configuration options. It may be of some use to people using embedded Tomcat. 4. Javadoc is not integrated with Apache Comments system. 5. It takes more than a minute to run "ant javadoc" for Tomcat 8. It takes seconds to rebuild documentation webapp. 6. Most of classes are considered our internal API, with any changes being allowed between releases. If we refactor the code (e.g. move the classes or extract a super class), documentation links to javadoc might break. 7. Technically, if we install Javadoc in addition to the main documentation web application, my proposal would be to install it as an unpacked war, "docs#api.war" with unpackWAR=false in its META-INF/context.xml file. A drawback is that Tomcat will refuse to starts that web application if SecurityManager is enabled (as it refuses to start applications that have a context.xml file). Best regards, Konstantin Kolinko - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1628817 - /tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java
Author: markt Date: Wed Oct 1 19:22:47 2014 New Revision: 1628817 URL: http://svn.apache.org/r1628817 Log: Correct a default Modified: tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java Modified: tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java?rev=1628817&r1=1628816&r2=1628817&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java Wed Oct 1 19:22:47 2014 @@ -98,7 +98,7 @@ public final class LegacyCookieProcessor // when deprecated code is removed private boolean presserveCookieHeader = CookieSupport.PRESERVE_COOKIE_HEADER; -@SuppressWarnings("deprecation") // Default to STRICT_SERVLET_COMPLIANCE +@SuppressWarnings("deprecation") // Default to !STRICT_SERVLET_COMPLIANCE // when deprecated code is removed private boolean alwaysAddExpires = SetCookieSupport.ALWAYS_ADD_EXPIRES; - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1628803 - /tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/Catalina.java
Author: markt Date: Wed Oct 1 18:33:24 2014 New Revision: 1628803 URL: http://svn.apache.org/r1628803 Log: Fix typo Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/Catalina.java Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/Catalina.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/Catalina.java?rev=1628803&r1=1628802&r2=1628803&view=diff == --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/Catalina.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/Catalina.java Wed Oct 1 18:33:24 2014 @@ -877,7 +877,7 @@ public class Catalina { (javax.naming.Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory"); } else { -log.debug( "INITIAL_CONTEXT_FACTORY alread set " + value ); +log.debug( "INITIAL_CONTEXT_FACTORY already set " + value ); } } } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1628730 - in /tomcat/trunk: java/org/apache/tomcat/util/http/ test/org/apache/tomcat/util/http/
Author: markt Date: Wed Oct 1 15:13:54 2014 New Revision: 1628730 URL: http://svn.apache.org/r1628730 Log: Deprecate SetCookieSupport, moving the code into LegacyCookieProcessor and refactoring for per Context configuration as necessary. Removed: tomcat/trunk/test/org/apache/tomcat/util/http/TestSetCookieSupportSeparatorsAllowed.java Modified: tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java tomcat/trunk/java/org/apache/tomcat/util/http/SetCookieSupport.java tomcat/trunk/test/org/apache/tomcat/util/http/TestCookieProcessorGeneration.java Modified: tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java?rev=1628730&r1=1628729&r2=1628730&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java Wed Oct 1 15:13:54 2014 @@ -18,7 +18,15 @@ package org.apache.tomcat.util.http; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +import java.text.DateFormat; +import java.text.FieldPosition; +import java.text.SimpleDateFormat; import java.util.BitSet; +import java.util.Date; +import java.util.Locale; +import java.util.TimeZone; + +import javax.servlet.http.Cookie; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -54,10 +62,26 @@ public final class LegacyCookieProcessor '\t', ' ', '\"', '(', ')', ',', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '{', '}' }; +private static final String COOKIE_DATE_PATTERN = "EEE, dd-MMM- HH:mm:ss z"; +private static final ThreadLocal COOKIE_DATE_FORMAT = +new ThreadLocal() { +@Override +protected DateFormat initialValue() { +DateFormat df = +new SimpleDateFormat(COOKIE_DATE_PATTERN, Locale.US); +df.setTimeZone(TimeZone.getTimeZone("GMT")); +return df; +} +}; + +private static final String ANCIENT_DATE; + static { for (char c : V0_SEPARATORS) { V0_SEPARATOR_FLAGS.set(c); } + +ANCIENT_DATE = COOKIE_DATE_FORMAT.get().format(new Date(1)); } @@ -74,7 +98,13 @@ public final class LegacyCookieProcessor // when deprecated code is removed private boolean presserveCookieHeader = CookieSupport.PRESERVE_COOKIE_HEADER; -private BitSet httpSeparatorFlags = new BitSet(128); +@SuppressWarnings("deprecation") // Default to STRICT_SERVLET_COMPLIANCE + // when deprecated code is removed +private boolean alwaysAddExpires = SetCookieSupport.ALWAYS_ADD_EXPIRES; + +private final BitSet httpSeparatorFlags = new BitSet(128); + +private final BitSet allowedWithoutQuotes = new BitSet(128); public LegacyCookieProcessor() { @@ -88,6 +118,34 @@ public final class LegacyCookieProcessor if (b) { httpSeparatorFlags.set('/'); } + +String separators; +if (getAllowHttpSepsInV0()) { +// comma, semi-colon and space as defined by netscape +separators = ",; "; +} else { +// separators as defined by RFC2616 +separators = "()<>@,;:\\\"/[]?={} \t"; +} + +// all CHARs except CTLs or separators are allowed without quoting +allowedWithoutQuotes.set(0x20, 0x7f); +for (char ch : separators.toCharArray()) { +allowedWithoutQuotes.clear(ch); +} + +/** + * Some browsers (e.g. IE6 and IE7) do not handle quoted Path values even + * when Version is set to 1. To allow for this, we support a property + * FWD_SLASH_IS_SEPARATOR which, when false, means a '/' character will not + * be treated as a separator, potentially avoiding quoting and the ensuing + * side effect of having the cookie upgraded to version 1. + * + * For now, we apply this rule globally rather than just to the Path attribute. + */ +if (!getAllowHttpSepsInV0() && !getForwardSlashIsSeparator()) { +allowedWithoutQuotes.set('/'); +} } @@ -118,6 +176,22 @@ public final class LegacyCookieProcessor public void setAllowHttpSepsInV0(boolean allowHttpSepsInV0) { this.allowHttpSepsInV0 = allowHttpSepsInV0; +// HTTP separators less comma, semicolon and space since the Netscape +// spec defines those as separators too. +// '/' is also treated as a special case +char[] seps = "()<>@:\\\"[]?={}\t".toCharArray(); +for (char sep : seps) { +if (allowHttpSepsInV0) { +allowedWithoutQuotes.set(sep); +} e
svn commit: r1628712 - /tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java
Author: markt Date: Wed Oct 1 14:24:49 2014 New Revision: 1628712 URL: http://svn.apache.org/r1628712 Log: boolean[] -> BitSet Modified: tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java Modified: tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java?rev=1628712&r1=1628711&r2=1628712&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java Wed Oct 1 14:24:49 2014 @@ -18,6 +18,7 @@ package org.apache.tomcat.util.http; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +import java.util.BitSet; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -45,7 +46,7 @@ public final class LegacyCookieProcessor StringManager.getManager("org.apache.tomcat.util.http"); private static final char[] V0_SEPARATORS = {',', ';', ' ', '\t'}; -private static final boolean[] V0_SEPARATOR_FLAGS = new boolean[128]; +private static final BitSet V0_SEPARATOR_FLAGS = new BitSet(128); // Excludes '/' since configuration controls whether or not to treat '/' as // a separator @@ -55,7 +56,7 @@ public final class LegacyCookieProcessor static { for (char c : V0_SEPARATORS) { -V0_SEPARATOR_FLAGS[c] = true; +V0_SEPARATOR_FLAGS.set(c); } } @@ -73,18 +74,20 @@ public final class LegacyCookieProcessor // when deprecated code is removed private boolean presserveCookieHeader = CookieSupport.PRESERVE_COOKIE_HEADER; -private boolean[] httpSeparatorFlags = new boolean[128]; +private BitSet httpSeparatorFlags = new BitSet(128); public LegacyCookieProcessor() { -// Array elements will default to false +// BitSet elements will default to false for (char c : HTTP_SEPARATORS) { -httpSeparatorFlags[c] = true; +httpSeparatorFlags.set(c); } @SuppressWarnings("deprecation") // Default to STRICT_SERVLET_COMPLIANCE // when deprecated code is removed boolean b = CookieSupport.FWD_SLASH_IS_SEPARATOR; -httpSeparatorFlags['/'] = b; +if (b) { +httpSeparatorFlags.set('/'); +} } @@ -129,12 +132,16 @@ public final class LegacyCookieProcessor public boolean getForwardSlashIsSeparator() { -return httpSeparatorFlags['/']; +return httpSeparatorFlags.get('/'); } public void setForwardSlashIsSeparator(boolean forwardSlashIsSeparator) { -httpSeparatorFlags['/'] = forwardSlashIsSeparator; +if (forwardSlashIsSeparator) { +httpSeparatorFlags.set('/'); +} else { +httpSeparatorFlags.clear('/'); +} } @@ -478,7 +485,7 @@ public final class LegacyCookieProcessor } } -return httpSeparatorFlags[c]; +return httpSeparatorFlags.get(c); } @@ -494,7 +501,7 @@ public final class LegacyCookieProcessor } } -return V0_SEPARATOR_FLAGS[c]; +return V0_SEPARATOR_FLAGS.get(c); } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 56397] Establish parallel Maven-based build process
https://issues.apache.org/bugzilla/show_bug.cgi?id=56397 --- Comment #23 from Pierre Viret --- I have seen that the update takes some time but it is difficult for me to say if this is really an issue or not, as the external definitions are not committed yet. On one hand the update is slower, on the other hand there are advantages with this approach: - The file system is correct, we really have the files where they belong to --> all shell commands working on the source files (find / grep and so on) can be used without problem. - we don't need to care about IDE filters and configurations - we use the standard maven layout and no special configuration regarding sources is needed: this is a big advantage and could avoid problems with some plugins. - later, if we decide to move from ant to maven then we don't need to change the maven configurations and processing anymore. Let's not forget that this is just an experiment and that if, later, the maven layout is estimated to be a good thing then it would make sense to move the sources to the corresponding modules and the svn:externals would not be needed anymore. OMHO it makes sense to experiment using this approach as it is cleaner from a maven point of vue and it seems easyier to implement the build on the maven side. So my proposal is to go one with this approach. If the feedback we get from the community is that the svn update is too slow, then we can always optimize this in a second step, but at the moment I think it is more important to get a maven build running. As soon as the svn:externals definitions are committed I will be able to test the svn updates and maybe I quickly come to your point of vue that this is too slow ;-) -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
buildbot failure in ASF Buildbot on tomcat-trunk
The Buildbot has detected a new failure on builder tomcat-trunk while building ASF Buildbot. Full details are available at: http://ci.apache.org/builders/tomcat-trunk/builds/503 Buildbot URL: http://ci.apache.org/ Buildslave for this Build: bb-vm_ubuntu Build Reason: scheduler Build Source Stamp: [branch tomcat/trunk] 1628670 Blamelist: markt BUILD FAILED: failed compile_1 sincerely, -The Buildbot - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1628700 - in /tomcat/trunk/test/org/apache/tomcat/util/http: TestCookieProcessorGeneration.java TestSetCookieSupport.java
Author: markt Date: Wed Oct 1 13:34:44 2014 New Revision: 1628700 URL: http://svn.apache.org/r1628700 Log: Refactor version 1 cookie generation tests to test both CookieProcessor implementations. Removed: tomcat/trunk/test/org/apache/tomcat/util/http/TestSetCookieSupport.java Modified: tomcat/trunk/test/org/apache/tomcat/util/http/TestCookieProcessorGeneration.java Modified: tomcat/trunk/test/org/apache/tomcat/util/http/TestCookieProcessorGeneration.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/http/TestCookieProcessorGeneration.java?rev=1628700&r1=1628699&r2=1628700&view=diff == --- tomcat/trunk/test/org/apache/tomcat/util/http/TestCookieProcessorGeneration.java (original) +++ tomcat/trunk/test/org/apache/tomcat/util/http/TestCookieProcessorGeneration.java Wed Oct 1 13:34:44 2014 @@ -84,7 +84,84 @@ public class TestCookieProcessorGenerati doTest(new Cookie("foo", "a\"b\\c"), "foo=\"a\\\"bc\"; Version=1", null); } +@Test +public void v1simpleCookie() { +Cookie cookie = new Cookie("foo", "bar"); +cookie.setVersion(1); +doTest(cookie, "foo=bar; Version=1", "foo=bar"); +} + +@Test +public void v1NullValue() { +Cookie cookie = new Cookie("foo", null); +cookie.setVersion(1); +// should this throw an IAE? +doTest(cookie, "foo=\"\"; Version=1", "foo="); +} + +@Test +public void v1QuotedValue() { +Cookie cookie = new Cookie("foo", "\"bar\""); +cookie.setVersion(1); +doTest(cookie, "foo=\"bar\"; Version=1", "foo=\"bar\""); +} + +@Test +public void v1ValueContainsSemicolon() { +Cookie cookie = new Cookie("foo", "a;b"); +cookie.setVersion(1); +doTest(cookie, "foo=\"a;b\"; Version=1", null); +} + +@Test +public void v1ValueContainsComma() { +Cookie cookie = new Cookie("foo", "a,b"); +cookie.setVersion(1); +doTest(cookie, "foo=\"a,b\"; Version=1", null); +} + +@Test +public void v1ValueContainsSpace() { +Cookie cookie = new Cookie("foo", "a b"); +cookie.setVersion(1); +doTest(cookie, "foo=\"a b\"; Version=1", null); +} +@Test +public void v1ValueContainsEquals() { +Cookie cookie = new Cookie("foo", "a=b"); +cookie.setVersion(1); +doTest(cookie, "foo=\"a=b\"; Version=1", "foo=a=b"); +} + +@Test +public void v1ValueContainsQuote() { +Cookie cookie = new Cookie("foo", "a\"b"); +cookie.setVersion(1); +doTest(cookie, "foo=\"a\\\"b\"; Version=1", null); +} + +@Test +public void v1ValueContainsNonV0Separator() { +Cookie cookie = new Cookie("foo", "a()<>@,;:\\\"/[]?={}b"); +cookie.setVersion(1); +doTest(cookie, "foo=\"a()<>@,;:\\\"/[]?={}b\"; Version=1", null); +} + +@Test +public void v1ValueContainsBackslash() { +Cookie cookie = new Cookie("foo", "a\\b"); +cookie.setVersion(1); +doTest(cookie, "foo=\"ab\"; Version=1", null); +} + + +@Test +public void v1ValueContainsBackslashAndQuote() { +Cookie cookie = new Cookie("foo", "a\"b\\c"); +cookie.setVersion(1); +doTest(cookie, "foo=\"a\\\"bc\"; Version=1", null); +} private void doTest(Cookie cookie, String expected) { doTest(cookie, expected, expected); - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Improving the documentation
I've had improving the documentation at the back of my mind for some time. One of the things that bugs me is the duplication - particularly between the configuration documentation and the Javadoc. With this in mind I have been mulling over the follow idea. Feedback welcome. Remove the bulk of the configuration section of the JavaDoc, replacing it with a graphical overview of Tomcat's internal structure linked to the relevant JavaDoc for each component. The general description of a component would move to the interface Javadoc as would the information on the common attributes. Implementation specific information would move to the implementation Javadoc. There are some special cases. The ones that come immediately to mind are: - className attribute. Never appears in Javadoc. Document it and other information about standard implementations etc. in the appropriate class level Javadoc - attributes set by reflection and setProperty. Document them, with links to the Javadoc for where they are really set in the appropriate class level Javadoc I am sure there are others. I am confident suitable approaches can be found for each. I'd also like to review the various How To documents and move as much as possible to Javadoc - probably as package level documentation. A major issue is that we don't install Javadoc buy default. My proposal for this is to leave the links as local links but write a Servlet (or maybe a JSP) to handle all requests for local Javadoc as follows: - if local Javadoc is installed, use it - if local Javadoc is not installed and the user has not previously given permission to redirect to the Tomcat website request permission to redirect the request to the Javadoc hosted on the Tomcat web site - if local Javadoc is not installed and the user has previously expressed a preference regarding redirection in that session, abide by that preference Thoughts? Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1628694 - in /tomcat/trunk/test/org/apache/tomcat/util/http: TestCookieProcessorGeneration.java TestSetCookieSupport.java
Author: markt Date: Wed Oct 1 12:59:00 2014 New Revision: 1628694 URL: http://svn.apache.org/r1628694 Log: Refactor version 0 cookie generation tests to test both CookieProcessor implementations. Added: tomcat/trunk/test/org/apache/tomcat/util/http/TestCookieProcessorGeneration.java (with props) Modified: tomcat/trunk/test/org/apache/tomcat/util/http/TestSetCookieSupport.java Added: tomcat/trunk/test/org/apache/tomcat/util/http/TestCookieProcessorGeneration.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/http/TestCookieProcessorGeneration.java?rev=1628694&view=auto == --- tomcat/trunk/test/org/apache/tomcat/util/http/TestCookieProcessorGeneration.java (added) +++ tomcat/trunk/test/org/apache/tomcat/util/http/TestCookieProcessorGeneration.java Wed Oct 1 12:59:00 2014 @@ -0,0 +1,135 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.tomcat.util.http; + +import javax.servlet.http.Cookie; + +import org.junit.Assert; +import org.junit.Test; + +public class TestCookieProcessorGeneration { + +@Test +public void v0SimpleCookie() { +doTest(new Cookie("foo", "bar"), "foo=bar"); +} + +@Test +public void v0NullValue() { +doTest(new Cookie("foo", null), "foo=\"\"", "foo="); +} + +@Test +public void v0QuotedValue() { +doTest(new Cookie("foo", "\"bar\""), "foo=\"bar\""); +} + +@Test +public void v0ValueContainsSemicolon() { +doTest(new Cookie("foo", "a;b"), "foo=\"a;b\"; Version=1", null); +} + +@Test +public void v0ValueContainsComma() { +doTest(new Cookie("foo", "a,b"), "foo=\"a,b\"; Version=1", null); +} + +@Test +public void v0ValueContainsSpace() { +doTest(new Cookie("foo", "a b"), "foo=\"a b\"; Version=1", null); +} + +@Test +public void v0ValueContainsEquals() { +doTest(new Cookie("foo", "a=b"),"foo=\"a=b\"; Version=1", "foo=a=b"); +} + +@Test +public void v0ValueContainsQuote() { +doTest(new Cookie("foo", "a\"b"),"foo=\"a\\\"b\"; Version=1", null); +} + +@Test +public void v0ValueContainsNonV0Separator() { +doTest(new Cookie("foo", "a()<>@:\\\"/[]?={}b"), +"foo=\"a()<>@:\\\"/[]?={}b\"; Version=1", null); +} + +@Test +public void v0ValueContainsBackslash() { +doTest(new Cookie("foo", "a\\b"), "foo=\"ab\"; Version=1", null); +} + +@Test +public void v0ValueContainsBackslashAtEnd() { +doTest(new Cookie("foo", "a\\"), "foo=\"a\"; Version=1", null); +} + +@Test +public void v0ValueContainsBackslashAndQuote() { +doTest(new Cookie("foo", "a\"b\\c"), "foo=\"a\\\"bc\"; Version=1", null); +} + + + +private void doTest(Cookie cookie, String expected) { +doTest(cookie, expected, expected); +} + + +private void doTest(Cookie cookie, +String expectedLegacy, String expectedRfc6265) { +doTestDefaults(cookie, expectedLegacy, expectedRfc6265); +doTestAllowSeparators(cookie, expectedLegacy, expectedRfc6265); +} + + +private void doTestDefaults(Cookie cookie, +String expectedLegacy, String expectedRfc6265) { +CookieProcessor legacy = new LegacyCookieProcessor(); +CookieProcessor rfc6265 = new Rfc6265CookieProcessor(); +doTest(cookie, legacy, expectedLegacy, rfc6265, expectedRfc6265); +} + + +private void doTestAllowSeparators(Cookie cookie, +String expectedLegacy, String expectedRfc6265) { +LegacyCookieProcessor legacy = new LegacyCookieProcessor(); +legacy.setAllowHttpSepsInV0(true); +legacy.setForwardSlashIsSeparator(true); +CookieProcessor rfc6265 = new Rfc6265CookieProcessor(); +doTest(cookie, legacy, expectedLegacy, rfc6265, expectedRfc6265); +} + + +private void doTest(Cookie cookie, +CookieProcessor legacy, String expectedLegacy, +CookieProcessor rfc6265, String expectedRfc6265) { +Assert.assertEquals(expectedLegacy, legacy.generateHeader(cookie)); +if (exp
svn commit: r1628693 - /tomcat/trunk/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java
Author: markt Date: Wed Oct 1 12:58:41 2014 New Revision: 1628693 URL: http://svn.apache.org/r1628693 Log: Add validation of cookie values. Modified: tomcat/trunk/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java Modified: tomcat/trunk/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java?rev=1628693&r1=1628692&r2=1628693&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java Wed Oct 1 12:58:41 2014 @@ -81,12 +81,37 @@ public class Rfc6265CookieProcessor impl // generation. header.append(cookie.getName()); header.append('='); -// TODO: Value also needs validation that varies depending on the spec -// being used. This is currently delayed until the header is -// generated. -header.append(cookie.getValue()); +String value = cookie.getValue(); +if (value != null) { +validateCookieValue(value); +header.append(value); +} // TODO add support for the attributes. return header.toString(); } + + +private void validateCookieValue(String value) { +if (value == null || value.length() == 0) { +return; +} + +int start = 0; +int end = value.length(); + +if (end > 1 && value.charAt(0) == '"' && value.charAt(end - 1) == '"') { +start = 1; +end--; +} + +char[] chars = value.toCharArray(); +for (int i = start; i < end; i++) { +char c = chars[i]; +if (c < 0x21 || c == 0x22 || c == 0x2c || c == 0x3b || c == 0x5c || c == 0x7f) { +// TODO i18n +throw new IllegalArgumentException(); +} +} +} } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1628686 - in /tomcat/site/trunk: docs/doap_Tomcat.rdf xdocs/doap_Tomcat.rdf
Author: kkolinko Date: Wed Oct 1 12:10:24 2014 New Revision: 1628686 URL: http://svn.apache.org/r1628686 Log: Followup to r1628644: update DOAP file for release of Tomcat 8.0.14. Modified: tomcat/site/trunk/docs/doap_Tomcat.rdf tomcat/site/trunk/xdocs/doap_Tomcat.rdf Modified: tomcat/site/trunk/docs/doap_Tomcat.rdf URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/doap_Tomcat.rdf?rev=1628686&r1=1628685&r2=1628686&view=diff == --- tomcat/site/trunk/docs/doap_Tomcat.rdf (original) +++ tomcat/site/trunk/docs/doap_Tomcat.rdf Wed Oct 1 12:10:24 2014 @@ -57,8 +57,8 @@ Latest 8.0.x Release -2014-06-24 -8.0.9 +2014-09-29 +8.0.14 Modified: tomcat/site/trunk/xdocs/doap_Tomcat.rdf URL: http://svn.apache.org/viewvc/tomcat/site/trunk/xdocs/doap_Tomcat.rdf?rev=1628686&r1=1628685&r2=1628686&view=diff == --- tomcat/site/trunk/xdocs/doap_Tomcat.rdf (original) +++ tomcat/site/trunk/xdocs/doap_Tomcat.rdf Wed Oct 1 12:10:24 2014 @@ -57,8 +57,8 @@ Latest 8.0.x Release -2014-06-24 -8.0.9 +2014-09-29 +8.0.14 - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1628592 - in /tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run: AbstractRunMojo.java RunMojo.java
2014-10-01 8:02 GMT+04:00 : > Author: olamy > Date: Wed Oct 1 04:02:59 2014 > New Revision: 1628592 > > URL: http://svn.apache.org/r1628592 > Log: > minot formatting > > Modified: > > tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java > > tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java > > Modified: > tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java > URL: > http://svn.apache.org/viewvc/tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java?rev=1628592&r1=1628591&r2=1628592&view=diff > == > --- > tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java > (original) > +++ > tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/AbstractRunMojo.java > Wed Oct 1 04:02:59 2014 > @@ -734,7 +734,7 @@ public abstract class AbstractRunMojo > // normally this one only but just in case ... > if ( jarScanner instanceof StandardJarScanner ) > { > -( (StandardJarScanner) jarScanner ).setScanAllDirectories( > jarScanAllDirectories ); > +( StandardJarScanner.class.cast( jarScanner ) > ).setScanAllDirectories( jarScanAllDirectories ); > } Is there any profit in changing ( (StandardJarScanner) jarScanner ) to StandardJarScanner.class.cast( jarScanner ) ? 1) The former is an operation, the latter is a method call. I think an operation executes more efficiently. 2) The latter is longer text. 3) I have seen compilers to spot errors in class-cast operations (such as "unnecessary class-cast" and "illegal class-cast" errors). I suspect that it would be harder to them to spot such errors in method calls, though I do not have experience here. Best regards, Konstantin Kolinko - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1628603 - in /tomcat/maven-plugin/branches/tc8.x: ./ common-tomcat-maven-plugin/ tomcat-maven-archetype/ tomcat-maven-plugin-it/ tomcat6-maven-plugin/ tomcat7-maven-plugin/ tomcat7-wa
2014-10-01 9:31 GMT+04:00 : > Author: olamy > Date: Wed Oct 1 05:31:10 2014 > New Revision: 1628603 > > URL: http://svn.apache.org/r1628603 > Log: > bump version to 3.0-SNAPSHOT > > Modified: > tomcat/maven-plugin/branches/tc8.x/common-tomcat-maven-plugin/pom.xml > tomcat/maven-plugin/branches/tc8.x/pom.xml > tomcat/maven-plugin/branches/tc8.x/tomcat-maven-archetype/pom.xml > tomcat/maven-plugin/branches/tc8.x/tomcat-maven-plugin-it/pom.xml > tomcat/maven-plugin/branches/tc8.x/tomcat6-maven-plugin/pom.xml > tomcat/maven-plugin/branches/tc8.x/tomcat7-maven-plugin/pom.xml > tomcat/maven-plugin/branches/tc8.x/tomcat7-war-runner/pom.xml > tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/pom.xml > > tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java A change to RunMojo.java has crawled in. It is unrelated to version bumps in pom.xml files. My concern is that it is a non-trivial change that is not mentioned in commit message. > tomcat/maven-plugin/branches/tc8.x/tomcat8-war-runner/pom.xml > > Modified: > tomcat/maven-plugin/branches/tc8.x/common-tomcat-maven-plugin/pom.xml > URL: > http://svn.apache.org/viewvc/tomcat/maven-plugin/branches/tc8.x/common-tomcat-maven-plugin/pom.xml?rev=1628603&r1=1628602&r2=1628603&view=diff > == > --- tomcat/maven-plugin/branches/tc8.x/common-tomcat-maven-plugin/pom.xml > (original) > +++ tomcat/maven-plugin/branches/tc8.x/common-tomcat-maven-plugin/pom.xml Wed > Oct 1 05:31:10 2014 > @@ -24,7 +24,7 @@ > > tomcat-maven-plugin > org.apache.tomcat.maven > -2.3-SNAPSHOT > +3.0-SNAPSHOT > >common-tomcat-maven-plugin >Apache Tomcat Maven Plugin :: Common API (...) > Modified: > tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java > URL: > http://svn.apache.org/viewvc/tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java?rev=1628603&r1=1628602&r2=1628603&view=diff > == > --- > tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java > (original) > +++ > tomcat/maven-plugin/branches/tc8.x/tomcat8-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat8/run/RunMojo.java > Wed Oct 1 05:31:10 2014 > @@ -20,6 +20,7 @@ package org.apache.tomcat.maven.plugin.t > > import org.apache.catalina.Context; > import org.apache.catalina.WebResource; > +import org.apache.catalina.WebResourceRoot; > import org.apache.catalina.WebResourceSet; > import org.apache.catalina.loader.WebappLoader; > import org.apache.catalina.webresources.EmptyResource; > @@ -339,10 +340,13 @@ public class RunMojo > > getLog().debug( "classLoaderEntriesCalculator urls: " + urls ); > > -final URLClassLoader urlClassLoader = new URLClassLoader( > urls.toArray( new URL[urls.size()] ) ); > +final URLClassLoader urlClassLoader = new URLClassLoader( > urls.toArray( new URL[urls.size()] ), // > + > Thread.currentThread().getContextClassLoader() ); > > final ClassRealm pluginRealm = getTomcatClassLoader(); > > +final WebResourceRoot previous = context.getResources(); > + > context.setResources( > new MyDirContext( new File( > project.getBuild().getOutputDirectory() ).getAbsolutePath(), // >getPath(), // > @@ -351,6 +355,13 @@ public class RunMojo > @Override > public WebResource getClassLoaderResource( String path ) > { > + > +if (previous.getState().isAvailable()) > +{ > +WebResource webResource = > previous.getClassLoaderResource( path ); > +log.debug( "foo" ); > +} > + > log.debug( "RunMojo#getClassLoaderResource: " + path > ); > URL url = urlClassLoader.getResource( > StringUtils.removeStart( path, "/" ) ); > // search in parent (plugin) classloader > - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1628670 - in /tomcat/trunk/java/org/apache: catalina/connector/Response.java tomcat/util/http/CookieProcessor.java tomcat/util/http/LegacyCookieProcessor.java tomcat/util/http/Rfc6265Cook
Author: markt Date: Wed Oct 1 10:18:19 2014 New Revision: 1628670 URL: http://svn.apache.org/r1628670 Log: Add Cookie generation to the CookieProcessor interface Re-plumb the current Cookie generation to use the new interface Provide an initial (and very incomplete) RFC6265 cookie generation implementation Modified: tomcat/trunk/java/org/apache/catalina/connector/Response.java tomcat/trunk/java/org/apache/tomcat/util/http/CookieProcessor.java tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java tomcat/trunk/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java Modified: tomcat/trunk/java/org/apache/catalina/connector/Response.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Response.java?rev=1628670&r1=1628669&r2=1628670&view=diff == --- tomcat/trunk/java/org/apache/catalina/connector/Response.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/Response.java Wed Oct 1 10:18:19 2014 @@ -51,7 +51,6 @@ import org.apache.tomcat.util.buf.CharCh import org.apache.tomcat.util.buf.UEncoder; import org.apache.tomcat.util.http.FastHttpDateFormat; import org.apache.tomcat.util.http.MimeHeaders; -import org.apache.tomcat.util.http.SetCookieSupport; import org.apache.tomcat.util.http.parser.MediaTypeCache; import org.apache.tomcat.util.net.URL; import org.apache.tomcat.util.res.StringManager; @@ -945,17 +944,17 @@ public class Response } public String generateCookieString(final Cookie cookie) { -//web application code can receive a IllegalArgumentException -//from the appendCookieValue invocation +// Web application code can receive a IllegalArgumentException +// from the generateHeader() invocation if (SecurityUtil.isPackageProtectionEnabled()) { return AccessController.doPrivileged(new PrivilegedAction() { @Override public String run(){ -return SetCookieSupport.generateHeader(cookie); +return getContext().getCookieProcessor().generateHeader(cookie); } }); } else { -return SetCookieSupport.generateHeader(cookie); +return getContext().getCookieProcessor().generateHeader(cookie); } } Modified: tomcat/trunk/java/org/apache/tomcat/util/http/CookieProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/CookieProcessor.java?rev=1628670&r1=1628669&r2=1628670&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/http/CookieProcessor.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/http/CookieProcessor.java Wed Oct 1 10:18:19 2014 @@ -18,6 +18,8 @@ package org.apache.tomcat.util.http; import java.nio.charset.Charset; +import javax.servlet.http.Cookie; + public interface CookieProcessor { /** @@ -26,8 +28,13 @@ public interface CookieProcessor { void parseCookieHeader(MimeHeaders headers, ServerCookies serverCookies); /** - * The character set that is to be used to turn the bytes provided in the - * cookie header into characters for the cookie value. + * Generate the HTTP header value for the given Cookie. + */ +String generateHeader(Cookie cookie); + +/** + * The character set that will be used when converting between bytes and + * characters when parsing and/or generating HTTP headers for cookies. */ Charset getCharset(); } Modified: tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java?rev=1628670&r1=1628669&r2=1628670&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java Wed Oct 1 10:18:19 2014 @@ -185,6 +185,12 @@ public final class LegacyCookieProcessor } +@Override +public String generateHeader(javax.servlet.http.Cookie cookie) { +return SetCookieSupport.generateHeader(cookie); +} + + /** * Parses a cookie header after the initial "Cookie:" * [WS][$]token[WS]=[WS](token|QV)[;|,] Modified: tomcat/trunk/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java?rev=1628670&r1=1628669&r2=1628670&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/http/Rfc6265CookieProcesso
[Bug 56393] Implement RFC6265 for Cookie parsing
https://issues.apache.org/bugzilla/show_bug.cgi?id=56393 Bug 56393 depends on bug 56394, which changed state. Bug 56394 Summary: Allow cookie-parsing to be pluggable https://issues.apache.org/bugzilla/show_bug.cgi?id=56394 What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 56394] Allow cookie-parsing to be pluggable
https://issues.apache.org/bugzilla/show_bug.cgi?id=56394 Mark Thomas changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #1 from Mark Thomas --- CookieProcessor has been introduced for 8.0.15 onwards. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1628656 - /tomcat/trunk/webapps/docs/changelog.xml
Author: markt Date: Wed Oct 1 09:17:33 2014 New Revision: 1628656 URL: http://svn.apache.org/r1628656 Log: Add a bug reference Modified: tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1628656&r1=1628655&r2=1628656&view=diff == --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Wed Oct 1 09:17:33 2014 @@ -47,6 +47,14 @@ + +56394: Introduce new configuration element CookieProcessor in +Context to allow context-specific configuration of cookie processing +options. Attributes of Context element that were added in Tomcat 8.0.13 +to allow configuration of a new experimental RFC6265 based cookie parser +(useRfc6265 and cookieEncoding) are +replaced by this new configuration element. (markt) + Improve the previous fix for 56401. Avoid logging version information in the constructor since it then gets logged at undesirable @@ -57,14 +65,6 @@ remove sessions from the store when persisting them. (markt) -Introduce new configuration element CookieProcessor in Context to allow -context-specific configuration of cookie processing options. Attributes -of Context element that were added in Tomcat 8.0.13 to allow -configuration of a new experimental RFC6265 based cookie parser -(useRfc6265 and cookieEncoding) are -replaced by this new configuration element. (markt) - - Deprecate the use of system proprties to control cookie parsing and replace them with attributes on the new CookieProcessor that may be configured on a per context basis. (markt) - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 56397] Establish parallel Maven-based build process
https://issues.apache.org/bugzilla/show_bug.cgi?id=56397 --- Comment #22 from Mark Thomas --- Comment on attachment 32072 --> https://issues.apache.org/bugzilla/attachment.cgi?id=32072 Patch for tomcat-maven-layout created with "svn diff -x -u" I do not believe that your current approach is viable. Calling svn up on an external is a relatively slow process. One external per module is just about OK. 30-40 externals per module is not. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[ANN] Apache Tomcat 8.0.14 available
The Apache Tomcat team announces the immediate availability of Apache Tomcat 8.0.14. Apache Tomcat 8 is an open source software implementation of the Java Servlet, JavaServer Pages, Java Unified Expression Language and Java WebSocket technologies. Apache Tomcat 8.0.14 includes numerous fixes for issues identified in 8.0.12 as well as a number of other enhancements and changes. The notable changes since 8.0.12 include: - Update the Java WebSocket support to version 1.1 of the Java WebSocket specification. - The Windows installer, the Windows service and the Windows service management application are all digitally signed. - Experimental support for Cookie parsing using RFC 6265. Note that the configuration options associated with this feature are not stable and *will* change in the next release. - Performance improvements to annotation scanning on web application start. Please refer to the change log for the complete list of changes: http://tomcat.apache.org/tomcat-8.0-doc/changelog.html Downloads: http://tomcat.apache.org/download-80.cgi Migration guides from Apache Tomcat 5.5.x, 6.0.x and 7.0.x: http://tomcat.apache.org/migration.html Enjoy! - The Apache Tomcat team - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1628644 - in /tomcat/site/trunk: ./ docs/ xdocs/
Author: markt Date: Wed Oct 1 08:48:01 2014 New Revision: 1628644 URL: http://svn.apache.org/r1628644 Log: UPdate for 8.0.14 release Modified: tomcat/site/trunk/build.properties.default tomcat/site/trunk/docs/download-80.html tomcat/site/trunk/docs/index.html tomcat/site/trunk/docs/migration-8.html tomcat/site/trunk/docs/oldnews.html tomcat/site/trunk/docs/whichversion.html tomcat/site/trunk/xdocs/download-80.xml tomcat/site/trunk/xdocs/index.xml tomcat/site/trunk/xdocs/migration-8.xml tomcat/site/trunk/xdocs/oldnews.xml tomcat/site/trunk/xdocs/whichversion.xml Modified: tomcat/site/trunk/build.properties.default URL: http://svn.apache.org/viewvc/tomcat/site/trunk/build.properties.default?rev=1628644&r1=1628643&r2=1628644&view=diff == --- tomcat/site/trunk/build.properties.default (original) +++ tomcat/site/trunk/build.properties.default Wed Oct 1 08:48:01 2014 @@ -38,7 +38,7 @@ tomcat.loc=http://www.apache.org/dist/to # - Tomcat versions - tomcat60=6.0.41 tomcat70=7.0.55 -tomcat80=8.0.12 +tomcat80=8.0.14 # - Download destination - Modified: tomcat/site/trunk/docs/download-80.html URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/download-80.html?rev=1628644&r1=1628643&r2=1628644&view=diff == --- tomcat/site/trunk/docs/download-80.html (original) +++ tomcat/site/trunk/docs/download-80.html Wed Oct 1 08:48:01 2014 @@ -204,8 +204,8 @@ https://www.apache.org/dist/tomcat/tomcat-8/KEYS";>KEYS | -8.0.12 | -Browse | +8.0.14 | +Browse | http://archive.apache.org/dist/tomcat/tomcat-8";>Archives @@ -251,12 +251,12 @@ -8.0.12 +8.0.14 Please see the - README + README file for packaging information. It explains what every distribution contains. @@ -272,44 +272,44 @@ -zip -(https://www.apache.org/dist/tomcat/tomcat-8/v8.0.12/bin/apache-tomcat-8.0.12.zip.asc";>pgp, -https://www.apache.org/dist/tomcat/tomcat-8/v8.0.12/bin/apache-tomcat-8.0.12.zip.md5";>md5) +zip +(https://www.apache.org/dist/tomcat/tomcat-8/v8.0.14/bin/apache-tomcat-8.0.14.zip.asc";>pgp, +https://www.apache.org/dist/tomcat/tomcat-8/v8.0.14/bin/apache-tomcat-8.0.14.zip.md5";>md5) -tar.gz -(https://www.apache.org/dist/tomcat/tomcat-8/v8.0.12/bin/apache-tomcat-8.0.12.tar.gz.asc";>pgp, -https://www.apache.org/dist/tomcat/tomcat-8/v8.0.12/bin/apache-tomcat-8.0.12.tar.gz.md5";>md5) +tar.gz +(https://www.apache.org/dist/tomcat/tomcat-8/v8.0.14/bin/apache-tomcat-8.0.14.tar.gz.asc";>pgp, +https://www.apache.org/dist/tomcat/tomcat-8/v8.0.14/bin/apache-tomcat-8.0.14.tar.gz.md5";>md5) -32-bit Windows zip -(https://www.apache.org/dist/tomcat/tomcat-8/v8.0.12/bin/apache-tomcat-8.0.12-windows-x86.zip.asc";>pgp, -https://www.apache.org/dist/tomcat/tomcat-8/v8.0.12/bin/apache-tomcat-8.0.12-windows-x86.zip.md5";>md5) +32-bit Windows zip +(https://www.apache.org/dist/tomcat/tomcat-8/v8.0.14/bin/apache-tomcat-8.0.14-windows-x86.zip.asc";>pgp, +https://www.apache.org/dist/tomcat/tomcat-8/v8.0.14/bin/apache-tomcat-8.0.14-windows-x86.zip.md5";>md5) -64-bit Windows zip -(https://www.apache.org/dist/tomcat/tomcat-8/v8.0.12/bin/apache-tomcat-8.0.12-windows-x64.zip.asc";>pgp, -https://www.apache.org/dist/tomcat/tomcat-8/v8.0.12/bin/apache-tomcat-8.0.12-windows-x64.zip.md5";>md5) +64-bit Windows zip +(https://www.apache.org/dist/tomcat/tomcat-8/v8.0.14/bin/apache-tomcat-8.0.14-windows-x64.zip.asc";>pgp, +https://www.apache.org/dist/tomcat/tomcat-8/v8.0.14/bin/apache-tomcat-8.0.14-windows-x64.zip.md5";>md5) -64-bit Itanium Windows zip -(https://www.apache.org/dist/tomcat/tomcat-8/v8.0.12/bin/apache-tomcat-8.0.12-windows-i64.zip.asc";>pgp, -https://www.apache.org/dist/tomcat/tomcat-8/v8.0.12/bin/apache-tomcat-8.0.12-windows-i64.zip.md5";>md5) +64-bit Itanium Windows zip +(https://www.apache.org/dist/tomcat/tomcat-8/v8.0.14/bin/apache-tomcat-8.0.14-windows-i64.zip.asc";>pgp, +https://www.apache.org/dist/tomcat/tomcat-8/v8.0.14/bin/apache-tomcat-8.0.14-windows-i64.zip.md5";>md5) -32-bit/64-bit Windows Service Installer -(https://www.apache.org/dist/tomcat/tomcat-8/v8.0.12/bin/apache-tomcat-8.0.12.exe.asc";>pgp, -https://www.apache.org/dist/tomcat/tomcat-8/v8.0.12/bin/apache-tomcat-8.0.12.exe.md5";>md5) +32-bit/64-bit
svn commit: r1628642 - in /tomcat/site/trunk/docs/tomcat-8.0-doc: ./ api/ api/org/apache/catalina/ api/org/apache/catalina/ant/ api/org/apache/catalina/ant/jmx/ api/org/apache/catalina/authenticator/
Author: markt Date: Wed Oct 1 08:42:33 2014 New Revision: 1628642 URL: http://svn.apache.org/r1628642 Log: Update for 8.0.14 release [This commit notification would consist of 82 parts, which exceeds the limit of 50 ones, so it was shortened to the summary.] - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org