--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
+<HTML>\r
+ <HEAD>\r
+ <TITLE>Documentation Overview</TITLE>\r
+ <link rel="stylesheet" type="text/css" href="style/jigsaw2.css">\r
+ </HEAD>\r
+ <BODY TEXT="#000000" BGCOLOR="#FFFFFF">\r
+\r
+ <div class="icons-w3c">\r
+ <a href="../../">\r
+ <img src="/Icons/w3c_home" \r
+ border="0" \r
+ alt="W3C logo"\r
+ height="48" \r
+ width="72"></a>\r
+ </div>\r
+ <div class="icons-jigsaw">\r
+ <a href="../">\r
+ <img src="/Icons/jigsaw" \r
+ border="0"\r
+ alt="Jigsaw"\r
+ height="49"\r
+ width="212"></a>\r
+ </div>\r
+\r
+ <div class="title">\r
+ <H1 class="title">\r
+ Jigsaw<br>\r
+ <span class="subtitle">release notes</span>\r
+ </H1>\r
+ <hr noshade width="70%">\r
+ </div>\r
+\r
+ <div class="left">\r
+ <p class="link">\r
+ <span class="linktitle">Jigsaw releases</span><br>\r
+ <a class="local" href="#2.2.6">2.2.6</a><br>\r
+ <a class="local" href="#2.2.5">2.2.5</a><br>\r
+ <a class="local" href="#2.2.4">2.2.4</a><br>\r
+ <a class="local" href="#2.2.3">2.2.3</a><br>\r
+ <a class="local" href="#2.2.2">2.2.2</a><br>\r
+ <a class="local" href="#2.2.1">2.2.1</a><br>\r
+ <a class="local" href="#2.2.0">2.2.0</a><br>\r
+ <a class="local" href="#2.1.2">2.1.2</a><br>\r
+ <a class="local" href="#2.0.5">2.0.5</a><br>\r
+ <a class="local" href="#2.1.1">2.1.1</a><br>\r
+ <a class="local" href="#2.0.4">2.0.4</a><br>\r
+ <a class="local" href="#2.1.0">2.1.0</a><br>\r
+ <a class="local" href="#2.0.3">2.0.3</a><br>\r
+ <a class="local" href="#2.0.2">2.0.2</a><br>\r
+ <a class="local" href="#2.0.1">2.0.1</a><br>\r
+ <a class="local" href="#2.0.0">2.0.0</a><br>\r
+ <a class="local" href="#2.0beta3">2.0 beta3</a><br>\r
+ <a class="local" href="#2.0beta2">2.0 beta2</a><br>\r
+ <a class="local" href="#2.0beta1">2.0 beta1</a><br>\r
+ <a class="local" href="#2.0alpha1">2.0 alpha1</a>\r
+ <p class="link">\r
+ <a class="local" href="#1.0beta2">1.0 beta2</a><br>\r
+ <a class="local" href="#1.0beta1">1.0 beta1</a><br>\r
+ <a class="local" href="#1.0beta">1.0 beta</a><br>\r
+ <a class="local" href="#1.0alpha5">1.0alpha5</a><br>\r
+ <a class="local" href="#1.0alpha4">1.0alpha4</a><br>\r
+ <a class="local" href="#1.0alpha3">1.0alpha3</a><br>\r
+ <a class="local" href="#1.0alpha2">1.0alpha2</a><br>\r
+ <a class="local" href="#1.0alpha1">1.0alpha1</a><br>\r
+ </div>\r
+ <div class="body">\r
+ <p class="pintro">\r
+ Following the normal W3C conventions, there were two different\r
+ kind of releases of <b>Jigsaw</b>. Member release are provided\r
+ to W3C members, a month in advance of the Public\r
+ Release. Depending on their status the member release may get a\r
+ different release number then the public release. On this page,\r
+ you will find the release notes for the different versions of\r
+ <b>Jigsaw</b> (which don't necessarily coincide with member\r
+ release). From the beginning of 1998, the releases are only\r
+ public ones, we still add the word "public" to avoid any\r
+ confusion.</p>\r
+ \r
+ <p class="pintro"><span class="larger">NOTE!</span> The odd number in the\r
+ middle state that this is NOT a stable release, not that it is unstable,\r
+ but it means that not all the features are present, and that some more\r
+ testing is needed until it gets its even middle number.</p>\r
+\r
+ <h2><a name="2.2.6"></a>Jigsaw 2.2.6</h2>\r
+ <b>A public release, made on April 10th, 2007.</b>\r
+\r
+ <p>This version is a bugfix and optimized version of 2.2.5. It may be\r
+ the latest using jdk1.2 only code.</p>\r
+\r
+\r
+ <h3>New Features</h3>\r
+ <p>\r
+ Support for more XML Parsers in the Resources deserialization code\r
+ </p>\r
+ \r
+ <ul>\r
+ <li>Added support for connection reuse policies in the \r
+ Client stack.</li>\r
+ <li>Added a default policy to reuse the same connection when the \r
+ thread matches (in HttpBasicConnection)</li>\r
+ <li>Added a socket timeout on request\r
+ parsing, to avoid having it linked to request timeout</li>\r
+ <li>The Servlet runner thread now use the server\r
+ timeout mechanism to interrupt the running thread when the server\r
+ is closing the request on timeout.</li>\r
+ <li>Added a method to print Dates in ISO 8601 format without \r
+ milliseconds</li>\r
+ <li>Added a "detach" method to HttpBasicConnection to remove a \r
+ connection from the list of used client connections but without \r
+ closing the socket immediately (used when the client hits a \r
+ HTTP/1.0 server that doesn't send Content-Length). </li>\r
+ \r
+ <h3>Bug Fixes</h3>\r
+ <ul> \r
+ <li>Fixed cookie parsing bug, if the cookie value contains a '='</li>\r
+ <li>Fixed SAX parsing of stores and remote resource description (allow multiple 'characters' call for one value)</li>\r
+ <li>Removed an unneeded synchronization point in HTTPFrame.getURL()</li>\r
+ <li>Added an extra SP when exporting auth headers with different components</li>\r
+ <li>Fixed source code to remove 'enum' as it is now a keywork starting with JDK 1.5</li>\r
+ <li>Fixed client connection deletion in connection reuse, it was leading to a leak in the client hashtable (and to lots of connections in CLOSE_WAIT).</li>\r
+ <li>Fixed bug in DateParser (wrong timezone offset) thanks to Menno Jonkers</li>\r
+ <li>Optimized a bit Digest Auth (the RFC2069 one) and implemented Digest Auth with qop="auth" per RFC2617 (available with SecurityLevel set to 2), See DigestQopAuthPrincipal</li>\r
+ <li>Fixed a few WebDAV properties that were using wrong formats</li>\r
+ <li>HeaderFilter now sets the relevant headers even when the reply is sent via the exception mechanism.</li>\r
+ <li>More SSL and servlet related patches from Thomas Kopp.</li>\r
+ <li>ActiveStream patch, under some condition, the same data \r
+ could be re-read a data chunk (thanks to Doug Borland)</li>\r
+ <li>The servlet parameter decoding now uses the right charset.</li>\r
+ <li>Fixed error when file timestamp was not modified but the file was actually modified.</li>\r
+ <li>Fixed deadlock during store change notification when the sweeper is running (very rare)</li>\r
+ <li>Fixed server client count when load is raising from LIGHT to DEAD</li>\r
+ <li>Fixed Segment information unpickle, as the segment start and size were not properly parsed, leading to an infinite loop</li>\r
+ <li>More SSL patches from Thomas Kopp, see <a href="http://dev.w3.org/cvsweb/java/classes/org/w3c/jigsaw/https/SSLAdapter.java?rev=1.7&content-type=text/x-cvsweb-markup">changelog</a> for more details.</li>\r
+\r
+ <li>Fixed connection count when MimeParser did not started and connection was new.</li>\r
+ <li>Client stack now reuses the\r
+ connection timeout parameter.</li>\r
+ </ul>\r
+\r
+ <h2><a name="2.2.5"></a>Jigsaw 2.2.5</h2>\r
+ <b>A public release, made on June 8th, 2005.</b>\r
+\r
+ <p>This version is a bugfix and optimized version of 2.2.4.\r
+ It contains an updated version of the SSL code (that may require \r
+ the use of jdk1.4). </p>\r
+\r
+ <h3>New Features</h3>\r
+ <p>\r
+ New Digest Authentication code has been added. \r
+ It now conforms to \r
+ <a href="http://www.ietf.org/rfc/rfc2617.txt">RFC2617</a>. \r
+ The old code was implementing only the \r
+ <a href="http://www.ietf.org/rfc/rfc2069.txt">RFC2069</a> \r
+ version of the Digest Authentication.\r
+ </p>\r
+ \r
+ <p>\r
+ WebDAV support has been improved, interoperating with most WebDAV\r
+ clients now.\r
+ </p>\r
+ \r
+ <h3>Bug Fixes</h3>\r
+ \r
+<ul>\r
+ <li>Added a "detach" method to HttpBasicConnection to remove a connection from the list of used client connections but without closing the socket immediately (used when the client hits a HTTP/1.0 server that doesn't send Content-Length). </li>\r
+ <li>Fixed client connection deletion in connection reuse, it was leading to a leak in the client hashtable (and to lots of connections in CLOSE_WAIT).</li>\r
+ <li>Fixed bug in DateParser (wrong timezone offset) thanks to Menno Jonkers</li>\r
+\r
+ <li>Optimized a bit Digest Auth (the RFC2069 one) and implemented Digest Auth with qop="auth" per RFC2617 (available with SecurityLevel set to 2), See DigestQopAuthPrincipal</li>\r
+ <li>Fixed a few WebDAV properties that were using wrong formats</li>\r
+ <li>Added a method to print Dates in ISO 8601 format without milliseconds</li>\r
+ <li>HeaderFilter now sets the relevant headers even when the reply is sent via the exception mechanism.</li>\r
+ <li>ActiveStream patch, under some condition, the same data \r
+ could be re-read a data chunk (thanks to Doug Borland)</li>\r
+ <li>The servlet parameter decoding now uses the right charset.</li>\r
+ <li>The Servlet runner thread now use the server\r
+ timeout mechanism to interrupt the running thread when the server\r
+ is closing the request on timeout.</li>\r
+\r
+ <li>Fixed error when file timestamp was not modified but the file was actually modified.</li>\r
+ <li>Fixed deadlock during store change notification when the sweeper is running.</li>\r
+ <li>Fixed server client count when load is raising from LIGHT to DEAD</li>\r
+\r
+ <li>Fixed Segment information unpickle, as the segment start and size were not properly parsed, leading to an infinite loop</li>\r
+ <li>More SSL patches from Thomas Kopp, see <a href="http://dev.w3.org/cvsweb/java/classes/org/w3c/jigsaw/https/SSLAdapter.java?rev=1.7&content-type=text/x-cvsweb-markup">changelog</a> for more details.</li>\r
+ <li>Fixed connection count when MimeParser did not started and connection was new.</li>\r
+</ul>\r
+ \r
+ <h3>Improvements</h3>\r
+ <ul>\r
+ <li>Added a socket timeout on request\r
+ parsing, to avoid having it linked to request timeout</li>\r
+ <li>Added a default policy to reuse the same connection when the thread matches (in HttpBasicConnection)</li>\r
+ <li>Added support for connection reuse policies in the Client stack.</li>\r
+ <li>Client stack now reuses the connection timeout parameter.</li> \r
+ </ul>\r
+\r
+\r
+ <h2><a name="2.2.4"></a>Jigsaw 2.2.4</h2>\r
+ <b>A public release, made on February 18th, 2004.</b>\r
+\r
+ <p>This version is a bugfix and optimized version of 2.2.3.\r
+ It contains an updated version of the SSL code (that may require \r
+ the use of jdk1.4). It contains a <strong>security fix</strong>, so\r
+ you are encouraged to update as soon as possible.</p>\r
+\r
+ <h3>New Features</h3>\r
+ <p>The HTTP Client stack has been completely reworked to be \r
+ faster and to avoid keeping information on too many remote servers.\r
+ The client stack now also has a timeout on connect.\r
+ </p>\r
+\r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Fix in the client stack persistent connection handler. It now closes the socket and mark the connection free when a "Connection: close" header is in the reply.</li>\r
+ <li>SSL patches from Thomas Kopp.</li>\r
+ <li>URI components now generate an exception when a separator is found</li>\r
+ <li>Memory usage optimization of the serialization of a resource.</li>\r
+ <li>Read/write of stores is now more fault tolerant.</li>\r
+ <li>Fixed the client stack use of connections, also the global server knowledge hastable is now trimmed the right way.</li>\r
+ <li>Fixed StatisticsFrame to use less StringBuffers</li>\r
+ <li>Added a configurable timeout on connect, for the HTTP client stack. <code>org.w3c.www.protocol.http.connections.connTimeout</code> (defaulting to 1000ms)</li>\r
+ <li>Fixed ContainerResource check for\r
+ duplicate key, the "new key" algorithm is now more random\r
+ (ie it uses the\r
+ whole scale instead of the object serial mask), as it was leading to\r
+ infinite loops on huge sites.</li>\r
+ </ul>\r
+\r
+ <h2><a name="2.2.3"></a>Jigsaw 2.2.3</h2>\r
+ <b>A public release, made on November 27th, 2003.</b>\r
+\r
+ <p>This version is a bugfix and optimized version of 2.2.2.\r
+ It also includes Jigedit with WebDAV support, a package with\r
+ a specific WebDAV configuration will follow, and a tutorial to do the\r
+ <a href="Doc/User/webdav.html">WebDAV setup</a> is already online.\r
+ </p>\r
+ \r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>SSL support for HTTP and WebDAV servers, thanks to \r
+ <a href="mailto:Thomas.Kopp@dialogika.de">Thomas Kopp</a>, \r
+ a <a href="Doc/User/ssl.html">tutorial</a> is available</li>\r
+ </ul> \r
+ \r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Fixed internal copy in DAVFrame in the \r
+ case of a SSL server</li>\r
+ <li>Added the underlying exception in the\r
+ HttpManager to distinguish between errors in the client stack.</li>\r
+ <li>Fixed ContainerResource check for\r
+ duplicate key, the "new key" algorithm is now more random (ie it uses the\r
+ whole scale instead of the object serial mask), as it was leading to\r
+ infinite loops on huge sites.</li>\r
+ <li>Fixed deadlock in NegotiatedFrame.\r
+ getVary() allowed a backward sync chain.</li>\r
+ <li>Added a "equiv" method in MimeType to\r
+ check for text/xml - application/xml rough equivalence on PUT</li>\r
+ <li>Added Long support in HttpBuffer and\r
+ HttpParser</li>\r
+ <li>Fixed lock ordering in NewStoreEntry to\r
+ avoid a deadlock</li>\r
+ <li>Verification of connection availability\r
+ on POST changed (need to have a fd_err + select to do it in a better\r
+ way)</li>\r
+ <li>Fixed deadlock when a file resource\r
+ mark its parent as modified (backward locking, again)</li>\r
+ <li>CvsRunner now uses File.createTempFile\r
+ instead of hardcoded /tmp (was <a\r
+ href="http://lists.w3.org/Archives/Public/www-jigsaw/2003MayJun/0019.html">problematic\r
+ on windows platform</a>)</li>\r
+ <li>Fixed deadlock in FileResource\r
+ (backward locking)</li>\r
+ <li>Fixed CgiFrame to accept more output\r
+ from Cgis (triggered my perl cgi library)</li>\r
+ <li>Added TeraBytes support for statistics\r
+ frame</li>\r
+ <li>Fixed notifyUnload in ForwardFrame to\r
+ avoid nullpointer exception (<a\r
+ href="http://lists.w3.org/Archives/Public/www-jigsaw/2003MarApr/0019.html">patch\r
+ from Brian Laird</a>)</li>\r
+ <li>Fixed getParameterMap of ServlerRequest\r
+ to map servlet2.3 spec</li>\r
+ <li>CacheFilter now normalize the URL\r
+ before any processing to avoid duplication on capitalization</li>\r
+ <li>Fixed test for socket close in jdk1.4\r
+ specific part, added a property to allow retries on two-steps request, in\r
+ the case of error on headers (thx to Phil Blake from IBM pointing me this\r
+ one)</li>\r
+ <li>Writers for resource serialization,\r
+ both in admin server and ResourceStoreManager now force UTF-8 encoding\r
+ (as XML is declared to be UTF-8)</li>\r
+ <li>Error recovery on parsing errors of\r
+ serialized resources, allowing stores to continue loading</li>\r
+ <li>Cleaned stat generation and added\r
+ hits/sec</li>\r
+ <li>HtmlGenerator now uses HTML4.01 and\r
+ adds the charset parameter if it is known</li>\r
+ <li>Added finer grain statistics by\r
+ separating dynamic from static generated replies</li>\r
+ <li>Fixed replaying of 1xx replies back to\r
+ the client</li>\r
+ <li>Fixed HttpCacheControl to add new\r
+ values for a directive that appears several times</li>\r
+ <li>Re-fixed validators for If-Match</li>\r
+ <li>dupRequest in proxy now removes\r
+ Proxy-Authorization, thx to Thomas Kriegelstein</li>\r
+ <li>Client now send back a BAD_REQUEST when\r
+ the http request parser in strict mode throw an exception</li>\r
+ <li>Fixed header name+":" parsing to\r
+ include implied LWS</li>\r
+ <li>proxy now serves GATEWAY_TIMEOUT and\r
+ BAD_GATEWAY as it should</li>\r
+ <li>Kludge for Age and maxValue -> must\r
+ use Long instead of integers</li>\r
+ <li>Fixed sharing default for the cache to\r
+ match the one of CacheProp (true)</li>\r
+ <li>Strict HTTP header parsing mode made\r
+ more valid wrt quoted strings</li>\r
+ <li>More error handling in strict mode to\r
+ generate BAD_REQUEST replies</li>\r
+ <li>A server-side "lenient" HTTP parsing\r
+ property has been added, decoupled from the client-side one, settable via\r
+ GeneralProperties in JigAdmin</li>\r
+ <li>Parsing of field-value now has a\r
+ strict/lenient mode</li>\r
+ <li>Revalidation on HEAD now invalidates on\r
+ new values</li>\r
+ <li>Fixed handling of errors during HTTP\r
+ headers parsing in the proxy, now returns a BAD_GATEWAY</li>\r
+ <li>Parsing of HttpInteger now generates an\r
+ exception on overflow</li>\r
+ <li>Accept header is no longer\r
+ automatically added by the proxy when the client request do not have\r
+ it.</li>\r
+ <li>Fixed deadlock in ServletWrapper wrt\r
+ lock ordering of timeout manager, when different instances of the servlet\r
+ are created while some are timeouting</li>\r
+ <li>Handling of HTTP exception in the\r
+ ForwardFrame is changed, direct HTTP exception now generates a 502 Bad\r
+ Gateway instead of a 504</li>\r
+ <li>Precondition failed in the cache now\r
+ generate an exception with a complete reply (ie: not reusing "wrong"\r
+ informations from the cached resource)</li>\r
+ <li>HttpCacheControl raw bytes shouldn't be\r
+ unquoted before parsing</li>\r
+ <li>Replies from a shared cache now remove\r
+ the header list protected by a private cache-control</li>\r
+ <li>Headers protected by a no-cache\r
+ directive are no longer stored</li>\r
+ <li>Cache-Control now parses extensions\r
+ instead of throwing an exception</li>\r
+ <li>Host header normalization now uses case\r
+ insensitive URI scheme comparison</li>\r
+ <li>Proxy now forwards back the 100\r
+ Continue reply from the upstream server</li>\r
+ <li>Multiple 100 results now in multiple\r
+ ContinueEvents</li>\r
+ <li>Validators (If-None-Match...) in the\r
+ EntityCacheResource are now matching the one in HTTPFrame</li>\r
+ <li>Default freshness lifetime for cgi with\r
+ no header info is now 0.</li>\r
+ <li>Cache is not used when a no-store\r
+ directive is present in the request</li>\r
+ <li>Overflow in Max-Forward leads to an\r
+ exception and a 5xx reply now, instead of forwarding a wrong value</li>\r
+ <li>Added consistency checks in the cache\r
+ for revalidated resources</li>\r
+ <li>Fixed ForwardFrame to check\r
+ chuked/Content-Length mismatch by reusing the duplicated request/reply\r
+ that actually has the right information</li>\r
+ <li>Fixed CacheFilter to do stricter\r
+ host:port check before invalidating resources on PUT/POST/DELETE</li>\r
+ <li>Invalidation of Content-Location now\r
+ uses relative URIs (was partly done, a typo was in the way)</li>\r
+ <li>Fixed CacheStore to avoid calls on\r
+ LRUNodes, as synchronization is missing on the SyncLRUList in this\r
+ case.</li>\r
+ <li>CacheGeneration uses a more stricter\r
+ way of crawling the LRUlist of files to delete</li>\r
+ <li>Fixed parsing of Content-Range (support\r
+ for unknown length)</li>\r
+ <li>Fixed XMP parsing in JpegHeaders</li>\r
+ <li>Fixed servlet flush notification to\r
+ avoid race condition problems with sendError/sendRedirect and such.</li>\r
+ <li>Fixed http Client to avoid aborting on\r
+ strange servlet related IOExceptions (see org.w3c.jigsaw.http.Client\r
+ rev1.71 log for in depth explanations)</li>\r
+ <li>CgiFrame now display in the server\r
+ console stderr of forked Cgis (prevent some cgi lockups on Win\r
+ platform)</li>\r
+ <li>Added a way to restransmit some buggy\r
+ but not defined in rfc2616 headers (cookies, not to name it)</li>\r
+ <li>Invalidation of Location and\r
+ Content-Location was wrongly assuming that resource were live in the\r
+ cache, leading to errors for valid requests</li>\r
+ <li>Fixed If-Match if the resource ETag is\r
+ weak (currently, it can happen only in the cache)</li>\r
+ <li>Fixed JpegHeaders to deliver XMP at the\r
+ beginning of the XML and not at the beginning of the chunk</li>\r
+ <li>Fixed JpegComFrame, the parameter was\r
+ unescaped twice, problematic with application/???+xml mime types</li>\r
+ <li>Added JpegXmpFrame, to extract\r
+ automatically XMP from Jpeg images</li>\r
+ <li>Fixed revalidation in HTTPFrame when\r
+ both If-None-Match and If-Modified-Since are present</li>\r
+ <li>Implemented Vary support and\r
+ revalidation of negotiated resources in the client-side HTTP cache</li>\r
+ <li>Implemented 410 Gone permanent support\r
+ via the new "shrinkable" flag of DirectoryResource (similar to\r
+ "extensible" for for deletions)</li>\r
+ <li>Cached resources were incorrectly\r
+ asking for revalidation every time once marked invalid.</li>\r
+ <li>Cache now serve HEAD from the cache</li>\r
+ <li>Cache now invalidate resource in\r
+ Location or Content-Location for POST, PUT and DELETE, if host matches\r
+ the requested URL</li>\r
+ <li>Added \CHAR escaping in quoted string\r
+ of a header parameter</li>\r
+ <li>Client stack will retry requests only\r
+ if it is a known idempotent resource</li>\r
+ <li>Fixed TRACE to allow it again to be\r
+ proxied</li>\r
+ <li>Fixed bug in Expectation check in the\r
+ proxy, and in the general case.</li>\r
+ <li>Fixed bug in continuation with empty\r
+ lines</li>\r
+ <li>Fixed bug in header continuation\r
+ parsing</li>\r
+ <li>GZIPFilter was incorrectly setting\r
+ Transfer-Encoding instead of Content-Encoding</li>\r
+ </ul>\r
+ \r
+ <h3>Improvements</h3>\r
+ <ul>\r
+ <li>Memory usage reduction</li>\r
+ </ul>\r
+\r
+\r
+ <h2><a name="2.2.2"></a>Jigsaw 2.2.2</h2>\r
+ <b>A public release, made on January 8th, 2003.</b>\r
+\r
+ <p>This version is a bugfix and optimized version of 2.2.1.\r
+ It also includes Jigedit with WebDAV support, a package with\r
+ a specific WebDAV configuration will follow, and a tutorial to do the\r
+ <a href="Doc/User/webdav.html">WebDAV setup</a> is already online.\r
+ </p>\r
+ \r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>SSL support for HTTP and WebDAV servers, thanks to \r
+ <a href="mailto:Thomas.Kopp@dialogika.de">Thomas Kopp</a>, \r
+ <a href="http://dev.w3.org/cvsweb/~checkout~/java/classes/org/w3c/jigsaw/https/readme.txt?rev=1.1&content-type=text/plain">raw documentation</a> \r
+ is available</li>\r
+ </ul> \r
+ \r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Fixed ForwardFrame to forbid forward of\r
+ Content-Location when reply is chunked</li>\r
+ <li>Fixed ForwardFrame to remove received\r
+ Trailer header</li>\r
+ <li>Fixed HTTP stack's Reply to allow body\r
+ on OPTIONS per rfc2616</li>\r
+ <li>Fixed lock ordering in HTTPFrame\r
+ regarding methods on Container (deadlock reported 5/12/2002)</li>\r
+ <li>Fixed deadlock in Resource.getParent(),\r
+ when both child and parent try to lock each other.</li>\r
+ <li>Deadlock fixes in the HTTP client\r
+ stack</li>\r
+ <li>Removed potential conflicting\r
+ Connection: header values in the HTTP client stack during discovery\r
+ of HTTP capabilities</li>\r
+ <li>Fixed RedirectedFrame to avoid\r
+ ipv6-like hosts when it is a ipv4 one.</li>\r
+ <li>Added a way to optimize by not\r
+ unloading big stores, depending on a tunable limit.</li>\r
+ <li>Ensure that keys in the\r
+ ResourceStoreManager are not used twice when generated</li>\r
+ <li>Fixed the default encoding used in\r
+ JigsawHttpServletResponse per servlet 2.3 API</li>\r
+ <li>Solved the deadlock problem with\r
+ negotiated frame, directory listing, and everything that needs\r
+ backward traversal of the resource tree.</li>\r
+ <li>Fixed JigsawHttpServletResponse, it now\r
+ checks that the stream has been commited\r
+ before screaming</li>\r
+ <li>Fixed Base64Decoder based on Jeffery\r
+ Collins <jcollins@boulder.net> original patch</li>\r
+ <li>Fixed JigsawHttpServletRequest\r
+ getCharacterEncoding to return null when undefined instead of the\r
+ iso-8859-1 default.</li>\r
+ <li>Fixed ContentLengthInputStream, it now\r
+ send an IOException when the stream is cut too early in read()</li>\r
+ <li>Fixed HttpURLConnection getContentType\r
+ was raising an exception rather than returning null</li>\r
+ <li>Various updates in the HTTP stack, to\r
+ consume less memory and use non-deprecated Date API.</li>\r
+ <li>Integrated cookie parsing patch\r
+ contributed by Julien Mudry <jmu@elca.ch></li>\r
+ <li>URL in jdk1.4 can have an empty file\r
+ element, it is now translated to '/' for all methods but\r
+ OPTIONS, where it is '*'</li>\r
+ <li>Special files "aux", "con", etc. can no\r
+ longer be created by the indexer on Windows platform \r
+ (still possible on other platforms as those files are not special\r
+ there).</li>\r
+ <li>Fixed servlet wrapper to close the\r
+ input stream when needed, also when a relocate or an error is\r
+ triggered from the servlet, an exception is raised if the client \r
+ already got (part of) the reply.</li>\r
+ <li>ServletWrapper now take the feeding\r
+ thread from a thread cache (avoid keeping too many open threads)</li>\r
+ <li>Fixed reuse of connection in the HTTP\r
+ Client stack, by using jdk1.4 method on socket (uses reflection to\r
+ keep the code backward compatible)</li>\r
+ <li>Fixed HTTP compliance of chunked\r
+ request, and proxy of request without body</li>\r
+ <li>Redid the InetAddress dump in the\r
+ logger as well as the status code dump</li>\r
+ <li>Memory and performance upgrade of the\r
+ infamous CommonLogger and ExtendedCommonLogger, who were the primary\r
+ culprits in the memory usage once the stores are loaded.</li>\r
+ <li>Started to find and elimnate all\r
+ unnecessary memory allocated</li>\r
+ <li>Fixed directory index of\r
+ ZipDirectoryResource, to delete and get size information the right\r
+ way</li>\r
+ <li>Fixed ZipFrame to allow automagic\r
+ destruction of stale entries in the underlying zip</li>\r
+ <li>Error reported when an error occur in\r
+ the file system does not display the PATH any longer to avoid\r
+ disclosing</li>\r
+ <li>Fixed a potential leak (never emptied\r
+ hashtable) in HttpManager</li>\r
+ <li>Fixed RelocateFrame to accomodate\r
+ new ipv6 scan of host in URL</li>\r
+ </ul>\r
+ \r
+ <h3>Improvements</h3>\r
+ <ul>\r
+ <li>Memory usage reduction</li>\r
+ <li>CPU usage reduction (mostly the loggers that are the hotspots)</li>\r
+ </ul>\r
+\r
+ <h2><a name="2.2.1"></a>Jigsaw 2.2.1</h2>\r
+ <b>A public release, made on April 8th, 2002.</b>\r
+\r
+ <p>This version fixes bugs, especially a security bug of version 2.2.0\r
+ It also includes Jigedit with WebDAV support, a package with\r
+ a specific WebDAV configuration will follow, and a tutorial to do the\r
+ <a href="Doc/User/webdav.html">WebDAV setup</a> is already online.\r
+ It is also the first release <a href="mailto:carine@w3.org">Carine\r
+ Bournez</a> worked on.\r
+ </p>\r
+ \r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li><a href="Doc/User/jigshell.html">JigShell</a>, a small utility\r
+ <li>WebDAV enabled JigEdit</li>\r
+ <li>Implementation of <a href="http://httpd.apache.org/">Apache</a> \r
+<a href="http://httpd.apache.org/docs/mod/mod_asis.html">mod_asis</a>.</li>\r
+ <li>PushCache package, contributed by \r
+ <a href="mailto:Paul.Henshaw@fantastic.com">Paul Henshaw</a> from \r
+ The Fantastic Corporation.</li>\r
+ <li>TidyPutFilter, a filter to validate automatically the\r
+ <a href="http://www.w3.org/MarkUp/#xhtml1">XHTML</a> or\r
+ <a href="http://www.w3.org/MarkUp/#previous">HTML</a> sent via the\r
+ PUT method, using \r
+ <a href="http://sourceforge.net/projects/jtidy">JTidy</a>.</li>\r
+ </ul> \r
+ \r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Previously uncaught error (ie: non Protocol ones) during lookup\r
+ are now resoved by sending a 400 Bad\r
+ Request </li>\r
+ <li>Fixed the way exception filters are called in httpd. Side \r
+ effect, ErrorFilter works again </li>\r
+ <li>Fixed a bug in TE Filter that was compressiong twice the stream\r
+ (need to figure out why it was called\r
+ twice though) </li>\r
+ <li>Fixed semantic of ; in the URI, with the right info given \r
+ during lookup</li>\r
+ <li>SECURITY FIX: Fixed security bug regarding URI parsing</li>\r
+ <li>Added a flag to remove the URI from default error pages as well\r
+ as the proxy module (SECURITY FIX: avoiding cross\r
+ scripting attacks)</li>\r
+ <li>Fixed ServletMapper to do redirect the right way (host parsing).\r
+ It was interacting with new jdk1.4\r
+ ipv6 scan </li>\r
+ <li>Merged patches from \r
+ <a href="mailto:Thomas.Kopp@dialogika.de">Thomas Kopp</a>\r
+ concerning servlets:\r
+ servlet loading, behaviour of\r
+ SingleThreadModel </li>\r
+ <li>Reverted 1.3 API calls to 1.2, or used reflection to use \r
+ jdk1.3 only methods in the push package</li>\r
+ <li>Added a specific frame to handle MKCOL and other \r
+ collection-related WebDAV methods in Jigedit</li>\r
+ <li>Fixed WebDAV implementation, it now sends all the requested\r
+ properties in a PROPFIND, with the\r
+ right statuds for the undefined ones.</li>\r
+ <li>Modified AclFilter to take benefit of skipBody </li>\r
+ <li>Added skipBody in Request, it allows a filter to skip an eventual\r
+ body in a better way than error\r
+ recovery. </li>\r
+ <li>Fixed bug when Content-Type was not set (it was set but the value\r
+ of the HttpMimeType was null,\r
+ defeating the usual check) </li>\r
+ <li>Fixed If-None-Match during the creation of a FileResource</li>\r
+ <li>Fixed trailing / for negotiated resources, it was ignored, \r
+ resulting in bad relative links </li>\r
+ <li>Fixed If-None-Match in HTTPFrame, it now handles *</li>\r
+ <li>ResourceStoreManager will issue a warning when a store raise an\r
+ exception during save, the general\r
+ save will continue (it was not the case before)</li>\r
+ <li>In CvsFileFrame, cvs update is performed also prior to a PUT.</li>\r
+ <li>Added stronger synchronization for log rotation. </li>\r
+ <li>Fixed indexer so that fake file resource can be created, as it \r
+ may be dangerous for directories, it is still\r
+ forbidden on those. </li>\r
+ <li>Fixed deadlock in DirectoryListerFrame, a lock was not done\r
+ resulting in locks done in the wrong order\r
+ in concurrent access </li>\r
+ <li>Fix NewStoreEntry, hashtable of loaded ResourceReference is now\r
+ cleared when the store is\r
+ unloaded. </li>\r
+ <li>Fix in EditableSlider, now a textfield can resize the boundaries \r
+ of the slider, a non-extensible mode is\r
+ also available </li>\r
+ <li>Fixed RedirectedFrame to add Content-Location after the internal\r
+ redirect, and Referer is kept.</li>\r
+ <li>Fixed NegotiatedFrame to gather filters from the selected\r
+ resource, collected during the lookup,\r
+ instead of the perform. However perform may select the resource if\r
+ the state is lost because of another filter.</li>\r
+ <li>Fixed error replies for JigEdit on a 412</li>\r
+ <li>Added synchronization fo class loading in servlet's class\r
+ loader</li>\r
+ </ul>\r
+ \r
+ <h3>Improvements</h3>\r
+ <ul>\r
+ <li>Resurrected -port as an undocumented deprecated feature.</li>\r
+ <li>Added CountInputStream, to get the actual number of bytes \r
+ read.</li>\r
+ <li>ByteArrayOutputStream now accept also InputStream</li>\r
+ <li>Implemented jdk1.2 API getErrorStream of HttpURLConnection</li>\r
+ <li>Implemented ETag override to match Apache FileETag directive in\r
+ JigEdit</li>\r
+ </ul> \r
+\r
+ <h2><a name="2.2.0"></a>Jigsaw 2.2.0</h2>\r
+ <b>A public release, made on March 13th, 2001.</b>\r
+\r
+ <p>This release is the first stabilized version of the 2.1 series, now\r
+ renumbered as 2.2. It also includes WebDAV support, a package with\r
+ a specific WebDAV configuration will follow, and a tutorial to do the\r
+ <a href="Doc/User/webdav.html">WebDAV setup</a> is already online.\r
+ </p>\r
+ \r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>WebDAV implementation\r
+ <li>org.w3c.util.DateParser: a parser for date in ISO 8601 format. \r
+ </ul> \r
+ \r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Fixed Allow: header depending on the frame configuration.</li>\r
+ <li>StringAttribute now accept null as a valid value.</li>\r
+ <li>Fixed jigadmin to allow removing some attributes.</li>\r
+ <li>Fixed VirtualHost lookup to use the host part of the resolved URI \r
+ instead of only the Host header</li>\r
+ <li>Fixed Host: header checking for HTTP/1.1 requests</li>\r
+ <li>Bug fixed in ServletProperties Reader (InitArgs separator)</li>\r
+ <li>RuntimeException throwned when the servlet container has no \r
+ ServletDirectory.</li>\r
+ <li>Fixed VirtualHostFrame for fully qualified request in the URI on \r
+ not default ports.</li>\r
+ <li>Fixed / -> %2F for the URI trick for rdf metadata</li>\r
+ <li>Fixed caching for authenticated resources</li>\r
+ <li>Fixed logname for october (10)</li>\r
+ <li>Fixed Content-Length to 0 for a 201 Created without a body</li>\r
+ <li>Compliancy fix in the cache, entity headers removed from a Not\r
+ Modified reply</li>\r
+ <li>Fixed slider in JigAdmin to auto expand near the limits</li>\r
+ <li>Fixed NullPointerException in ETag-based PUT on Negotiated \r
+ Resource.</li>\r
+ <li>Fixed Chunking when 0 bytes were received, the stream was wrongly\r
+ closed.</li>\r
+ <li>Servlet errors are now propagated the right way, and the monitor\r
+ always released. </li>\r
+ <li>Chunking is allowed on Connection: close</li>\r
+ <li>Connection: close requests now adds the header automatically in\r
+ the reply</li>\r
+ <li>Logger can now log the original URL during an internal redirect \r
+ <li>Fixed Digest Auth bug (well update of the spec) regarding unquoted\r
+ parameters in the credential</li>\r
+ <li>Fixed TRACE method, now done directly at the server level, as it\r
+ is only used as an echo.</li>\r
+ <li>Robustness fix, servlet are now killed after the right timeout</li>\r
+ <li>Fix problem with servlet timeouts and errors/redirects.</li>\r
+ <li>Various fixes for persistent jdbc connections</li>\r
+ <li>Fixed bug in HttpBasicServer, when the number of IP for a host was\r
+ updated with less IPs</li>\r
+ <li>Fixed compliancy bug for OPTIONS * (Content-Length is now\r
+ explicitly 0)</li>\r
+ <li>Fixed log time when the server ran into daylight saving changes.\r
+ </li>\r
+ <li>And several other ones...</li>\r
+ </ul>\r
+ \r
+ <h3>Improvements</h3>\r
+ <ul>\r
+ <li>HTTP Compliancy improved</li>\r
+ <li>Servlet now reuse Jigsaw filtering system even on the way back</li>\r
+ <li>Added support for mirroring from a non-root resource (providing\r
+ all the underneath links are relatives)\r
+ <li>Creation of NegotiatedResources in DirectoryResource is now \r
+ incremental. \r
+ <li>Added more statistics about resource store usage \r
+ </ul> \r
+\r
+ <h2><a name="2.1.2"></a>Jigsaw 2.1.2</h2>\r
+ <b>A public release, made on August 9th, 2000.</b>\r
+\r
+ <p>This release is the updated and enhanced version of the 2.1.1 release\r
+ it includes all the new features found in 2.0.5 and stability has been\r
+ vastly improved since 2.1.1, for both server and client side, also\r
+ servlet and jsp support has been improved.\r
+ </p>\r
+ \r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>CC/PP implementation.\r
+ <li>Persistent Jdbc connection handler.\r
+ <li>HTTP/0.9 support in client side API (*sigh*)\r
+ </ul> \r
+ \r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Many fixes for JSP support\r
+ <li>Fixed init of log rotation and log format\r
+ <li>Fixed several deadlocks in during indexing+save+event processing\r
+ <li>Fixed HTML4.0 compliancy of container listings\r
+ <li>Fixed requestDispatcher for VirtualHosts\r
+ <li>Fixed problem with getServerName and Host with no port number.\r
+ <li>Connections count and overall stability in SocketClientFactory\r
+ <li>ETag generation fixed when a non-file resource is involved.\r
+ <li>Fixed XMLResourceWriter, child list for jigadmin was not encoded.\r
+ <li>Fixed CommonLogger, some entries were missing when the buffer\r
+ length was reached.\r
+ <li>Fixed a bug in HTTPFrame leading to modification of the stores\r
+ for every load of a store.\r
+ <li>Fixed AclRealm so that AuthUser state is added to the request\r
+ <li>Fixed JpegHeaders to release the file decriptors on the file\r
+ <li>Fixed JigAdmin to correct URI not ended with '/' \r
+ (leading to an error when using jdk1.3)\r
+ <li>Fixed Slider in Jigadmin so that it checks the bound to avoid \r
+ problems \r
+ <li>Fixed a bug in ServletMappefFrame (pathinfo not corectly set) \r
+ <li>Fixed a bug in ServletResponse.sendRedirect() \r
+ <li>Fixed HTTP/1.0 request in client side when a body is there and\r
+ an error is replied\r
+ <li>Fixed FowardFrame to close connection when amgibuity can be raised\r
+ by the client-side reply concerning Content-Length. \r
+ </ul>\r
+ \r
+ <h3>Improvements</h3>\r
+ <ul>\r
+ <li>Added a lenient HTTP headers parsing mode to be kind to\r
+ ill-configured servers\r
+ <li>-host option resurrected\r
+ <li>CgiFrame can reuse the frame config\r
+ <li>JpegHeaders can extract metadata from digital cameras\r
+ <li>NegotiableFrame now uses ordering for Accept:\r
+ <li>Better Statistics Frame\r
+ <li>HttpAccept can have a quality factor\r
+ <li>Jigadmin can do a local reindex (that's what people usually want)\r
+ <li>Relocate and Redirect redone to be more flexible.\r
+ <li>MimeType can now be cloned\r
+ <li>Charset support, independant of the Mime Type\r
+ <li>Added get/setSMaxAge to be nice for caches\r
+ <li>Automatic log rotation in CommonLogger and ExtendedCommonLogger\r
+ <li>Statistics frames are now giving more informations\r
+ <li>HTTPFrame can have multiple indexes\r
+ <li>HTTPFrame generate index for generic containers\r
+ <li>ThreadCache is now using a FIFO for the free threads, to deal\r
+ with some broken jdk.\r
+ </ul> \r
+\r
+ <h2><a name="2.0.5"></a>Jigsaw 2.0.5</h2>\r
+ <b>A public release, made on July 5th, 2000.</b>\r
+\r
+ <p>This release is the updated and enhanced version of the 2.0.4 release\r
+ it includes all the new features available in 2.1.1, like servlet 2.2\r
+ support and JSP support. Also many bug fixes for improved stability\r
+ and HTTP/1.1 compliance.\r
+ </p>\r
+ \r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>Servlet 2.2 support (except for .war as it is too\r
+ "file" oriented).\r
+ <li>Charset support\r
+ <li>NoCache filter to deal with broken browsers.\r
+ <li>Shutdown hook, to save the configuration in case of emergency\r
+ (requires jdk1.3 to work, but jdk1.3 is NOT required to run Jigsaw)\r
+ <li>Automatic log rotation.\r
+ </ul> \r
+ \r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Fixed loggers to have a good date for HTTP/0.9 requests on \r
+ dateless replies\r
+ <li>Fixed JigAdmin to correct URI not ended with '/' \r
+ (leading to an error when using jdk1.3)\r
+ <li>Fixed a bug in HTTPFrame leading to modification of the stores\r
+ for every load of a store.\r
+ <li>Fixed AclRealm so that AuthUser state is added to the request\r
+ <li>Fixed JpegHeaders to release the file decriptors on the file\r
+ <li>Fixed ETag generation when a non-file resource is there.\r
+ <li>Loggers fixed, some entries were dropped when buffer was full\r
+ <li>Some servlet parameters were lost in servlet call.\r
+ <li>Fixed SocketClientFactory for more stability and better idle\r
+ connection removal.\r
+ <li>Fixed problem with getServerName() when port is 80\r
+ <li>Fixed return code when servlet is not available\r
+ <li>Fixed HttpBasicConnection to avoid caching IP forever.\r
+ <li>Fixed RequestDispatcher with VirtualHost\r
+ <li>Various fixes for JSP support.\r
+ <li>Fixed ServletPropertyReader for servlet preload.\r
+ <li>Fixed default port recognition in the lookup phase of the proxy\r
+ <li>Fixed synchronized call in HttpBasicServer to avoid deadlock \r
+ <li>bug fixed that was preventing binding on a specific IP\r
+ </ul>\r
+ \r
+ <h3>Improvements</h3>\r
+ <ul>\r
+ <li>Added a lenient HTTP headers parsing mode to be kind to\r
+ ill-configured servers\r
+ <li>-host option resurrected\r
+ <li>CgiFrame can reuse the frame config\r
+ <li>JpegHeaders can extract metadata from digital cameras\r
+ <li>NegotiableFrame now uses ordering for Accept:\r
+ <li>Better Statistics Frame\r
+ <li>HttpAccept can have a quality factor\r
+ <li>Jigadmin can do a local reindex (that's what people usually want)\r
+ <li>Relocate and Redirect redone to be more flexible.\r
+ <li>MimeType can now be cloned\r
+ <li>Charset support, independant of the Mime Type\r
+ <li>Added get/setSMaxAge to be nice for caches\r
+ <li>Automatic log rotation in CommonLogger and ExtendedCommonLogger\r
+ <li>Statistics frames are now giving more informations\r
+ <li>HTTPFrame can have multiple indexes\r
+ <li>HTTPFrame generate index for generic containers\r
+ </ul> \r
+\r
+ <h2><a name="2.1.1"></a></h2>\r
+\r
+ <h2>Jigsaw 2.1.1</h2>\r
+ <b>A public release, made on March 6th, 2000.</b>\r
+\r
+ <p>This release is the updated and enhanced version of the 2.1.0 release\r
+ it includes all the new features available in 2.0.4, as well as new \r
+ ones, like servlet 2.2 support.\r
+ </p>\r
+ \r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li><a href="http://www.w3.org/TR/photo-rdf/">Image metadata</a>\r
+ extraction\r
+ <li>Servlet 2.2 support (except for .war as it is too\r
+ "file" oriented).\r
+ <li>Charset support\r
+ <li>new rfc2616 compliant cache (almost finished)\r
+ <li>NoCache filter to deal with broken browsers.\r
+ <li>Shutdown hook, to save the configuration in case of emergency\r
+ (not yet functional, it will work with java2 1.3 and up)\r
+ <li>Automatic log rotation.\r
+ </ul> \r
+ \r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Bug fixed in RealmCatalog and AuthRealm\r
+ <li>internal lookup bug in ProxyFrame\r
+ <li>Fixed bug in the creation of frame arrays\r
+ <li>Fixed an unload notification that was not passed to frames\r
+ <li>Fixed a deadlock in the ResourceStoreManager\r
+ <li>Fixed an extra Content-Type sent in the admin protocol.\r
+ <li>ChunkedInputStream now notifies an EOF if it happens while you\r
+ ask to read for more bytes than available (was potentially waiting\r
+ forever before that!)\r
+ <li>Fixed HttpBasicServer, when the client part has to do a two stage\r
+ HTTP/1.1 request on behalf of a 1.0 client (proxy)\r
+ <li>Fixed ChunkedOutputStream, it is now more optimized and a \r
+ potential char to byte convertion problem has been removed. Also,\r
+ the closing of the stream has been fixed.\r
+ <li>Fixed Base64 encoder and decoder, to avoid a potential char to\r
+ byte conversion error\r
+ <li>modified the attribute name for last modified, as it was\r
+ interacting badly with revalidations\r
+ <li>Fixed MimeType matching\r
+ <li>Fixed bug in HttpMessage, The proxy stopped to forward the\r
+ SetCookie header \r
+ <li>Invalid XML characters are now encoded\r
+ <li>FileAttribute now pickles a String, mandatory for remote admin\r
+ <li>Resource store upgrader redone so that it works for jdk1.2.2\r
+ <li>Fixed bug preventing binding on a specific IP\r
+ <li>Redone Relocate and Redirect frames so that virtual hosts and\r
+ proxies are now supported.\r
+ <li>Fixed static declaration of inner classes in XMLProperties\r
+ <li>fixed HttpAccept to use quality factor as it should\r
+ <li>Fixed LookupState to use ; in the URI during lookup.\r
+ <li>Fixed init code of AttributeHolder\r
+ <li>Fixed race condition in resource store loading\r
+ <li>Fixed getRealPath in ServletContext\r
+ </ul>\r
+ \r
+ <h3>Improvements</h3>\r
+ <ul>\r
+ <li>Added a more clever (and expensive) loop check in the Proxy, \r
+ it check for the IP and not for the host only\r
+ <li>Relocate and Redirect redone to be more flexible.\r
+ <li>MimeType can now be cloned\r
+ <li>Charset support, independant of the Mime Type\r
+ <li>Added get/setSMaxAge to be nice for caches\r
+ <li>Automatic log rotation in CommonLogger and ExtendedCommonLogger\r
+ <li>Statistics frames are now giving more informations\r
+ <li>HTTPFrame can have multiple indexes\r
+ <li>HTTPFrame generate index for generic containers\r
+ </ul> \r
+\r
+ <h2><a name="2.0.4"></a></h2>\r
+\r
+ <h2>Jigsaw 2.0.4</h2>\r
+ <b>A public release, made on January the 21th, 2000.</b>\r
+\r
+ <p>This release is a backport of all enhancements that does not deal\r
+ with XML serialization and also a bufix release.\r
+ </p>\r
+\r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>Image metadata extraction\r
+ <li>Servlet.properties parsed at startup\r
+ <li>Charset support\r
+ <li>NoCache filter to deal with broken browsers.\r
+ </ul> \r
+ \r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Bug fixed in RealmCatalog and AuthRealm\r
+ <li>internal lookup bug in ProxyFrame\r
+ <li>Fixed bug in the creation of frame arrays\r
+ <li>Fixed an unload notification that was not passed to frames\r
+ <li>Fixed a deadlock in the ResourceStoreManager\r
+ <li>Fixed an extra Content-Type sent in the admin protocol.\r
+ <li>ChunkedInputStream now notifies an EOF if it happens while you\r
+ ask to read for more bytes than available (was potentially waiting\r
+ forever before that!)\r
+ <li>Fixed HttpBasicServer, when the client part has to do a two stage\r
+ HTTP/1.1 request on behalf of a 1.0 client (proxy)\r
+ <li>Fixed ChunkedOutputStream, it is now more optimized and a \r
+ potential char to byte convertion problem has been removed. Also,\r
+ the closing of the stream has been fixed.\r
+ <li>Fixed Base64 encoder and decoder, to avoid a potential char to\r
+ byte conversion error\r
+ <li>Fixed cached entry invalidation, it now marks the entry to be\r
+ revalidated next time rather than removing it directly from the\r
+ cache (helps disconnected operation).\r
+ <li>Fixed header update during revalidation not matching 200 or 304\r
+ (ex: auth failed)\r
+ <li>modified the attribute name for last modified, as it was\r
+ interacting badly with revalidations\r
+ <li>JigsawRequestDispatcher in servlet is now cloning the request\r
+ before an include or a forward\r
+ <li>Fixed MimeType matching\r
+ <li>CacheFilter no longer caches replies with Set-Cookies\r
+ <li>Fixed bug in HttpMessage, The proxy stopped to forward the\r
+ SetCookie header \r
+ </ul>\r
+ \r
+ <h3>Improvements</h3>\r
+ <ul>\r
+ <li>Added a more clever (and expensive) loop check in the Proxy, \r
+ it check for the IP and not for the host only\r
+ <li>Better servlet 2.1 support\r
+ <li>Better caching algorithms, (completely redone for 2.1.>0).\r
+ </ul>\r
+\r
+ <h2><a name="2.1.0"></a></h2>\r
+\r
+ <h2>Jigsaw 2.1.0</h2>\r
+ <b>A public release, made on September the 9th, 1999.</b>\r
+\r
+ <p>This release is the first release using the new serialization scheme.\r
+ It allows you to change the way the serialization is done. \r
+ As an exemple, and to provide an easier access to the configuration.\r
+ </p>\r
+\r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>New serialization scheme, the current version uses XML, see \r
+ <a href="Doc/Programmer/JigXML.html">the JXML format</a> for more \r
+ information on how to read the serialized files.</li>\r
+ <li>New admin exchange format, using \r
+ <a href="Doc/Programmer/JigXML.html">JXML</a>, it allows you to\r
+ create administration scripts.</li>\r
+ <li>A new upgrader will convert automatically the old Jigsaw stores\r
+ to the new format, the old stores are kept in a backup directory.\r
+ </ul> \r
+\r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>more HttpRange can now be created: "-500","500-", by using -1 as \r
+ the default value</li>\r
+ <li>The request parser now skip the body if sent directly by the client\r
+ when an error occured.</li>\r
+ <li>Servlet are destroyed only if all the connections are closed</li>\r
+ <li>Lister in Jigedit now defines the ACTION in the FORM</li>\r
+ <li>Servlet bug fixed in getResource(), thanks to James Clark.\r
+ </ul>\r
+ \r
+ <h3>Improvements</h3>\r
+ <ul>\r
+ <li>Directory listing now ends the URI of the containers with a "/", \r
+ preventing an extra redirect</li>\r
+ <li>Logger now has a property to define the logging directory</li>\r
+ </ul>\r
+\r
+ <h3>Limitations</h3>\r
+ <ul>\r
+ <li>The jdbmResourceStore has not yet been ported, a consequence is\r
+ the lack of CacheFilter in the proxy, but it will be replaced soon\r
+ by a completely new cache.</li>\r
+ </ul>\r
+\r
+ <h2><a name="2.0.3"></a></h2>\r
+\r
+ <h2>Jigsaw 2.0.3</h2>\r
+ <b>A public release, made on July the 27th, 1999.</b>\r
+\r
+ <p>This release is a bugfix version of the 2.0.2, while 2.1.0 will add \r
+ new feature and will completely change the way the resources are \r
+ serialized).\r
+ Meanwhile, there are new functionalities, like the new Acl api, which \r
+ replaces the old auth schemes.</p>\r
+\r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>new Acl API, more flexible than the previous auth scheme.</li>\r
+ <li>Redirecter Frame now handles PATH_INFO.</li>\r
+ <li>Charset and language dialects negotiation.</li>\r
+ <li>Added MimeTypeArray and other basic attributes arrays.</li>\r
+ </ul>\r
+\r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Bad request handling is better, previously, HTTP/1.1 without a \r
+ Host: header or a full URI was just closing the connection.</li>\r
+ <li>Servlet indexer can now index servlets with full package name</li>\r
+ <li>Bad permission on a file now fires an exception, rather than\r
+ (possibly) hanging.</li>\r
+ <li>MimeAttribute null balue is now handled in jigadm</li>\r
+ <li>Cache is now sending the right size for null documents</li>\r
+ <li>Servlet's getReader now takes care of the encoding.</li>\r
+ <li>ServletRequest now merges URI parameters and body parameters.</li>\r
+ <li>Fixed ResourceEvent bug (unloaded resources are no longer receiving\r
+ events)</li>\r
+ <li>Cache is no longer blocking for non-sized multipart documents.</li>\r
+ <li>Fixed loop in proxy when the proxy was on port 80 (fixed also if\r
+ it is the default https port)</li>\r
+ <li>Fixed timestamp problem when a file has been modified in the past\r
+ (clock skew is a pain)</li>\r
+ <li>Fixed max-connection and notification of waiting threads during the\r
+ deletion of an old kept-alive connection</li>\r
+ <li>Cached VaryResource are now checking ETag the right way, no more\r
+ 304 replies when it was just a cache revalidation.</li>\r
+ <li>Multiple cookies are now sent using multiple headers (ugly but \r
+ cookies ARE ugly).</li>\r
+ <li>Fixed ResourceStoreManager initialization, when another root \r
+ resource was set, it may end up in resource duplication and \r
+ problems while attaching frames/filters, also it was causing \r
+ deletion loops. WARNING! You may have to redo your configuration if \r
+ you changed the root resource!</li>\r
+ <li>Fixed servlet timeout unit</li>\r
+ <li>SSI Frame and servlet interaction fixed (no more chunking in that\r
+ case)</li>\r
+ <li>Logger and port can be changed while the server is running.</li>\r
+ <li>The "No logger" warning is more explicit</li>\r
+ </ul>\r
+\r
+ <h3>Improvements</h3>\r
+ <ul>\r
+ <li>Servlet timeout can be disabled</li>\r
+ <li>Servlet cookie maxage can now be -1 (unlimited)</li>\r
+ <li>Language negotiation has been redone, it now check dialects\r
+ also</li>\r
+ <li>Content negotiation now takes the order into account</li>\r
+ <li>Realms now have a real feeder (administration tool)</li>\r
+ <li>Added bind address so that multiple interfaces can be bound.</li>\r
+ <li>Client garbage collection scheme has been redone, allowing smoother\r
+ handling of clients when load goes up (it means also better\r
+ performances)</li>\r
+ <li>MirrorFrame now tweaks also temporary redirects</li>\r
+ <li>Md5 constructor now allows an encoding string.</li>\r
+ </ul>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+ <h2><a name="2.0.2">Jigsaw 2.0.2</a></h2>\r
+ <b>A public release, made on March the 31th, 1999.</b>\r
+\r
+ <p>This release includes the first version of the new administration tool\r
+ (jigadmin, v2). Along with that, numerous improvement over the old\r
+ version, like servlet API 2.1 support.</p>\r
+\r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>Digest Authentication</li>\r
+ <li>Http Extension Framework (HttpExtFrame)</li>\r
+ <li>New JigAdmin. This one should be more intuitive than the other, but\r
+ still, you probably need to understand the design to take best out of\r
+ it.</li>\r
+ <li>JSDK2.1 (Servlet API) support.</li>\r
+ <li>Per servlet timeout is possible</li>\r
+ <li>JNI port of LibUnix, thanks to Roland Mainz</li>\r
+ <li>New logger ExtendedCommonLogger, doing log rotation and using ECLF\r
+ format</li>\r
+ <li>*forbid* can be used as a Container index</li>\r
+ <li>Log file resolver, to do DNS resolution offline</li>\r
+ <li>ServletMapperFrame, used to map a file to a servlet (see the FAQ\r
+ entry about JSP)</li>\r
+ </ul>\r
+\r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>HttpChallenge fix, the byte buffer is now recomputed when it\r
+ changes.</li>\r
+ <li>Redirect fix for virtual hosts</li>\r
+ <li>Relocate fix for virtual hosts</li>\r
+ <li>Frame identifier now used in FrameReference as you may have \r
+ multiple instances of the same class attached to a resource</li>\r
+ <li>ContentLengthInputStream and ChunkedInputStream now throws an\r
+ IOException when an error occurs</li>\r
+ <li>201 Created now generates the right response</li>\r
+ <li>FileAttribute is now sent as a String in the admin protocol to \r
+ avoid automatic conversion of jdk1.2</li>\r
+ <li>When indexing a file with multiple extensions, frames attirbutes\r
+ are now aggregated. <b>It requires the use of the new default \r
+ indexer</b> provided in the distribution, as the Content-Type\r
+ for modifiers (like .fr) is now\r
+ set to *none*</li>\r
+ <li>VirtualHost now remove automatically the ":80" added by some\r
+ robots.</li>\r
+ <li>Extension matching process now does "perfect" match, then case\r
+ insensitive match if desired.</li>\r
+ <li>CgiFrame has now PATH_TRANSLATED defined</li>\r
+ <li>RedirecterFrame now forward the query string as expected.</li>\r
+ </ul>\r
+\r
+ <h3>Improvements</h3>\r
+ <ul>\r
+ <li>index resolution for containers now add Content-Location</li>\r
+ <li>PUT on negotiated resources is handled using ETags</li>\r
+ <li>Users can add environment variable in the CgiFrame \r
+ configuration</li>\r
+ <li>ETag generation is done in one place, so you can overload it.</li>\r
+ <li>URLDecoder updated to use InputStream AND Readers</li>\r
+ <li>ContentTypeIndexer can now use wildcards (well only *) in its mime\r
+ type definitions.</li>\r
+ <li>ThreadCache behaviour near the limit is now the right one, also \r
+ there is a feature to wait for all the thread of the cache.</li>\r
+ <li>PassDirectory can now act as a normal DirectoryResource is the\r
+ pass-target is not set</li>\r
+ </ul>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="2.0.1"></a>Jigsaw 2.0.1</h2>\r
+ <b>A public release, made on January the 18th, 1999.</b>\r
+\r
+ <p>This release has been done to allow people to use the admin tool \r
+ despite a JDK1.2 bug. So the fixed bug list is quite short!</p>\r
+\r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Nasty kludge (creation of an useless object) to prevent bug in \r
+ JDK1.2 classloader</li>\r
+ <li>Garbage collection of old client connection redone.</li>\r
+ </ul>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="2.0.0"></a>Jigsaw 2.0.0</h2>\r
+ <b>A public release, made on December the 24th, 1998.</b>\r
+\r
+ <p>This is the final version of the 2.0 version of <b>Jigsaw</b>. \r
+ This is a bugfix release of the <b>2.0beta3</b>.</p>\r
+\r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>DELETE method implemented both on normal resources and on CVS \r
+ resources. By default DELETE is not enabled</li>\r
+ <li>New version of JigEdit (documentation pending)</li>\r
+ <li>JDK1.2 fixes, it now compile gracefully with JDK1.2, which means\r
+ that the usual warnings are thrown.</li>\r
+ </ul>\r
+\r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>HttpCacheControl bug on "no-cache"</li>\r
+ <li>Event model for ResourceFrame fixed</li>\r
+ <li>Deleted variants of a Negotiated Frame are now removed from the\r
+ list of variants</li>\r
+ <li>PageCompile fix for \ under Windows and possible clash on class\r
+ name.</li>\r
+ <li>getCookies method for Servlets</li>\r
+ <li>NegotiatedFrame throw a 404 if no variant are present (after a\r
+ delete)</li>\r
+ <li>Servlets called from SSI don't close the stream any longer.</li>\r
+ <li>AdminReader and PlainRemoteResource are now URLEncoding the URIs\r
+ .</li>\r
+ <li>File system sensitivity check is now working during the lookup.\r
+ </li>\r
+ <li>First access on some resources may return an error as the parent\r
+ was not created, now fixed.</li>\r
+ <li>File Descriptor leak fixed on ugly configurations.</li>\r
+ </ul>\r
+\r
+ <h3>Enhancements</h3>\r
+\r
+ <p>Documentation is still evolving, and, as always, feedback welcome!</p>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="2.0beta3"></a>Jigsaw 2.0beta3</h2>\r
+ <b>A public release, made on October the 2nd, 1998.</b>\r
+\r
+ <p>This is a bug fix release of the previous <b>2.0beta2.</b></p>\r
+\r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>PageCompilation, allow you to do fancy server side includes</li>\r
+ <li>The ZipIndexer allow you to serve files contained in a zip.</li>\r
+ <li>Port of the LabelBureau</li>\r
+ <li>ServletIndexer allow you to index servlet and remove the .class\r
+ automatically</li>\r
+ <li>ProxyDispatcher rules editor, and re-parsing of the rules.</li>\r
+ </ul>\r
+\r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Various bug fixes on servlets</li>\r
+ <li>Properties editable directly in JigAdmin (mICP, proxy dispatcher,\r
+ servlet)</li>\r
+ <li>servlet classloader revamped.</li>\r
+ <li>ProxyFrame lookup bug (inifnite redirect on itself) fixed</li>\r
+ <li>Observable properties now works better.</li>\r
+ <li>Jigadm gives now more feedback during save and such.</li>\r
+ <li>Jigadm crash on latest JDK fixed.</li>\r
+ <li>HTTP/1.1 fixes according to the latest\r
+ draft-ietf-http-v11-spec-rev-05</li>\r
+ <li>Jigsaw client now reuses connections the right way</li>\r
+ <li>Tons of deadlocks and error recovery added in the internal \r
+ handling of the cache of the proxy</li>\r
+ <li>getRequestURI now works according to JSDK's api.</li>\r
+ <li>fixes in the ZipDirectory</li>\r
+ </ul>\r
+\r
+ <h3>Enhancements</h3>\r
+ <ul>\r
+ <li>The documentation is evolving, but still, constructive comments are\r
+ welcome!</li>\r
+ <li>JigAdmin GUI gives more feedback. Designers, feel free to work\r
+ on the GUI!</li>\r
+ </ul>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="2.0beta2"></a>Jigsaw 2.0beta2</h2>\r
+ <b>A public release, made on July the 10th, 1998.</b>\r
+\r
+ <p>This is a bug fix release of the previous <b>2.0beta1</b>.</p>\r
+\r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>Complete JSDK/2.0 servlet API support. It even includes session\r
+ tracking.</li>\r
+ <li>Some filters to demonstrate HTTP/1.1 interoperability like the\r
+ UseProxyFilter.</li>\r
+ <li>HourLimiterFilter, to restrict access during some time.</li>\r
+ <li>Content-Type indexers to use all the Content-Type information given in a\r
+ PUT.</li>\r
+ </ul>\r
+\r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Broken resources can now be deleted</li>\r
+ <li>Many HTTP/1.1 fixes according to the\r
+ draft-ietf-http-v11-spec-rev-03.</li>\r
+ <li>Partial Content fixed (it was sending one byte too much)</li>\r
+ <li>Missing Content-Length</li>\r
+ <li>Content-MD5 to ensure end-to-end message integrity check.</li>\r
+ <li>Events within frames and resources now fixed.</li>\r
+ <li>Bug in SSI frame (event related).</li>\r
+ <li>Many Cookies fixes, it is now implementing more things than before.</li>\r
+ <li>Tracking of the "real" root resource.</li>\r
+ <li>some more timeouts to solve the problem of blocked threads</li>\r
+ <li>Fixes in jdbm, to fix the way the buckets were splitted in the\r
+ cache.</li>\r
+ <li>Virtual Hosting was broken when issuing redirects, now fixed with the\r
+ creation of a specific resource: VitrualHostResouce.</li>\r
+ <li>Range requests from cached resources now have the real value.</li>\r
+ </ul>\r
+\r
+ <h3>Enhancements</h3>\r
+ <ul>\r
+ <li>The documentation! It is not perfect yet, and comments are welcome to\r
+ improve it.</li>\r
+ </ul>\r
+\r
+ <p></p>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="2.0beta1"></a>Jigsaw 2.0beta1</h2>\r
+ <b>A public release, made on April the 8th, 1998.</b>\r
+\r
+ <p>This is the first complete release of the new Jigsaw, with the <a\r
+ href="Doc/Programmer/design.html">new internal design</a>.</p>\r
+\r
+ <h3>Bug Fixes</h3>\r
+\r
+ <p>There was almost no bug fix in the new resource model of Jigsaw, but there\r
+ was some modification of the HTTP stack, mainly about the handling of the PUT\r
+ method.</p>\r
+\r
+ <h3>New Features</h3>\r
+\r
+ <p>All the resources of the 1.0beta2 has been ported to the new 2.0 version.\r
+ This includes:</p>\r
+ <ul>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/RedirecterFrame.html">RedirecterFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/VirtualHostFrame.html">VirtualHostFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/CgiFrame.html">CgiFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigedit/cvs/CvsFrame.html">CvsFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigedit/frames/CvsFileFrame.html">CvsFileFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigedit/tools/ToolsListerFrame.html">ToolsListerFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigedit/filters/PutListFrame.html">PutListFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/PostableFrame.html">PostableFrame</a></li>\r
+ <li><!-- <a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/map/MapFrame.html"> -->MapFrame<!-- </a> --></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/proxy/ForwardFrame.html">ForwardFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/proxy/ProxyFrame.html">ProxyFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/resources/PasswordEditorFrame.html">PasswordEditorFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/resources/CheckpointFrame.html">CheckpointFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/resources/DirectoryListerFrame.html">DirectoryListerFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/status/GcStatFrame.html">GcStatFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/status/StatisticsFrame.html">StatisticsFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/status/ThreadStatFrame.html">ThreadStatFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/CookieFilter.html">CookieFilter</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/HeaderFilter.html">HeaderFilter</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/LogFilter.html">LogFilter</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/CounterFilter.html">CounterFilter</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/DebugFilter.html">DebugFilter</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/GZIPFilter.html">GZIPFilter</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigedit/filters/PutFilter.html">PutFilter</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/CacheFilter.html">CacheFilter</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/AccessLimitFilter.html">AccessLimitFilter</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/PutSizeFilter.html">PutSizeFilter</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/ErrorFilter.html">ErrorFilter</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigedit/filters/GrepPutFilter.html">GrepPutFilter</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/ProcessFilter.html">ProcessFilter</a></li>\r
+ </ul>\r
+\r
+ <p>The new <a href="Doc/">documentation</a> is also more complete.</p>\r
+\r
+ <h3>Incompatible changes</h3>\r
+\r
+ <p>To avoid the name length limit on the Mac, the resource files used by\r
+ <b>JigAdmin</b> are now stored in a zip, the old version of <b>JigAdmin</b>\r
+ will not work with this new version, you then need to upgrade both the server\r
+ and the client to do administration.</p>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="2.0alpha1"></a>Jigsaw 2.0alpha1</h2>\r
+ <b>A public release, made on January the 31th, 1998.</b>\r
+\r
+ <p>This 2.0 release is the first release of the new <a\r
+ href="Doc/Programmer/design.html">internal design</a> of Jigsaw.</p>\r
+\r
+ <h3>Bug Fixes</h3>\r
+\r
+ <p>This version as all the bug fixes of the 1.0beta2 about protocol issues.\r
+ Other bug fixes have no meaning here as the internals of Jigsaw have been\r
+ reworked.</p>\r
+\r
+ <h3>Incompatibles changes</h3>\r
+ <ul>\r
+ <li>The name of the classes are now <tt>org.w3c</tt>... instead of\r
+ <tt>w3c</tt>...</li>\r
+ <li>The resources are no longer linked with the protocol, protocole frames\r
+ are added to the raw resources</li>\r
+ <li>The resources are limited, DirectoryResource, FileResource,\r
+ PassDirectory, FramedResource, ContainerResource and\r
+ ExternalContainer.</li>\r
+ <li>The new frames are:\r
+ <ul>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/tools/resources/ProtocolFrame.html">ProtocolFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/HTTPFrame.html">HTTPFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/tools/resources/ResourceFrame.html">ResourceFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/NegotiatedFrame.html">NegotiatedFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/RelocateFrame.html">RelocateFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/ssi/SSIFrame.html">SSIFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/servlet/ServletDirectoryFrame.html">ServletDirectoryFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/servlet/ServletWrapperFrame.html">ServletWrapperFrame</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/auth/AuthFilter.html">AuthFilter</a></li>\r
+ <li><a\r
+ href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/auth/GenericAuthFilter.html">GenericAuthFilter</a></li>\r
+ </ul>\r
+ </li>\r
+ <li>The filters are no longer placed on the resource, but on the protocol\r
+ frame.</li>\r
+ <li>The admin server has been reworked to support framed frames.</li>\r
+ <li>Support for active Resources through listeners. (bean-like event\r
+ model).</li>\r
+ <li>Modification of the <b>JigAdmin </b>configuration tool to support\r
+ protocol frames and framed frames.</li>\r
+ <li>The root store of the distribution is no longer needed to start a new\r
+ server, it creates its own store if none are present.</li>\r
+ <li>The ResourceStoreManager has been completely modified, so the old\r
+ configurations for the 1.0beta serie will no longer work. You will have to\r
+ reconfigure your server entirely!</li>\r
+ <li>The form-based configuration is invalid now and has been removed. You\r
+ MUST use the administration server to configure <b>Jigsaw</b></li>\r
+ </ul>\r
+\r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>True reindexing now exists (This is real reindexing rather than deleting\r
+ the resource).</li>\r
+ <li><b>Jigsaw</b> will create the root store if not present.</li>\r
+ <li>Installation program that modifies the property files of the servers\r
+ according to your configuration.</li>\r
+ <li>Partial draft of the <a href="Doc/">new documentation</a>, the next\r
+ release will have a completely new documentation.</li>\r
+ </ul>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="1.0beta2"></a>Jigsaw 1.0beta2</h2>\r
+ <b>A public release, made on January the 31th, 1998.</b>\r
+\r
+ <p>This is a bug fix release of the previous beta release. The purpose of the\r
+ "beta track" is to improve the stability of Jigsaw. For further developments,\r
+ see the 2.0 track.</p>\r
+\r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Fixed revalidation mechanism with a <tt>no-cache</tt> directive.</li>\r
+ <li>The update of a cached resource in case of a revalidation is now\r
+ correct.</li>\r
+ <li>The <tt>Max-Forwards</tt> header is now well handled.</li>\r
+ <li>The <tt>PUT</tt> and <tt>POST</tt> methods are now working well on\r
+ HTTP/1.1 servers.</li>\r
+ <li>Fixed a bug in the <tt>Via</tt> header of proxied resources.</li>\r
+ <li>Fixed default adds of HTTP headers that were wrong.</li>\r
+ <li>debug of the classloader for servlets</li>\r
+ <li>Bug fix in the jdbm enumerator.</li>\r
+ </ul>\r
+\r
+ <h3>Enhancements</h3>\r
+ <ul>\r
+ <li>The indexers can now create "ghost" resources to allow more fancy uses\r
+ of Jigsaw, like shadow icon directories.</li>\r
+ <li>Added the <tt>TRACE</tt> method of HTTP/1.1</li>\r
+ <li>Added the possibility of templates in the indexers</li>\r
+ <li>the GrepPutFilter forbid a PUT of a document containing a specified\r
+ string. Very useful when you edit your website from one server and you\r
+ doesn'y want to allow links to this server.</li>\r
+ <li>Added a DateThread, if you want to speed up Jigsaw a bit (~10% by\r
+ switching loggers).</li>\r
+ </ul>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="1.0beta1"></a>Jigsaw 1.0beta1</h2>\r
+ <b>A public release, made on September the 1st, 1997.</b>\r
+\r
+ <p>This is just a bug fix release of the latest member beta release.</p>\r
+\r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>Fixed a bug in Content-Length in case of Chunked encoding.</li>\r
+ <li>Added more feedback when a configuration error occurs while using\r
+ <b>JigAdmin</b>.</li>\r
+ <li>Fixed bug in the CacheFilter</li>\r
+ </ul>\r
+\r
+ <h3>Enhancements</h3>\r
+ <ul>\r
+ <li>Added a new Resource, DirectoryLister, acting like when you access to a\r
+ directory, useful to make a small index.</li>\r
+ </ul>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="1.0beta"></a>Jigsaw 1.0beta</h2>\r
+ <b>A member specific release, made on August the 1st, 1997.</b>\r
+\r
+ <h3>Bug Fixes</h3>\r
+ <ul>\r
+ <li>FileResource now supports the HTTP/1.1 <tt>If-Range</tt> header, and a\r
+ slight bug was fixed in the emitted <tt>Content-Range </tt>header</li>\r
+ <li>The HTTP client side cache filter has been fixed (jdbmResourceStore\r
+ enumration was buggy)</li>\r
+ <li>The Caught Exception trace in errlog has been removed (<i>The trace was\r
+ the bug</i> - tm)</li>\r
+ <li>Fixed a bug in ICP message parsing (will now correctly handle message of\r
+ length exceeding 255 bytes)</li>\r
+ <li>If it manages a shared cache, the CacheFilter will no longer cache\r
+ documents retreive through a request that has an Authorization\r
+ header.</li>\r
+ <li>Fixed a bug in HTTP Date parsing (one of the three date format wasn't\r
+ parsed properly)</li>\r
+ <li>Fixed a bug in ContentLengthInputStream (wrong size after an error on a\r
+ read)</li>\r
+ <li>Fixed a bug in ActiveStream which was the source of empty documents\r
+ feeded by the proxy.</li>\r
+ </ul>\r
+\r
+ <h3>Enhancements</h3>\r
+ <ul>\r
+ <li>Added a property in the <a\r
+ href="User/Reference/w3c.www.protocol.http.icp.ICPFilter.html#w3c.www.protocol.http.icp.disable-cache">ICPFilter</a>\r
+ to disable caching of documents retreived through ICP</li>\r
+ <li>JSDK/1.0 FCS servlet API support</li>\r
+ <li>Powerful JDBC access through server side include.\r
+ <p><br>\r
+ This new feature allow you to querty any JDBC compliant database and embed\r
+ the result within your HTML page. Check the <a\r
+ href="User/api/w3c.jigsaw.ssi.SSIResource.html">SSIResource api</a>.</p>\r
+ </li>\r
+ <li>PICS & JDBC.\r
+ <p><br>\r
+ A new LabelBureau implementation is available. It relies on any JDBC\r
+ compliant database as the storage mechanism for PICS labels, which makes\r
+ it more scaleable than the previous filesystem based approach.</p>\r
+ </li>\r
+ <li>Servlet support has been upgraded to 1.0FCS; Support for automatic\r
+ servlet reloading has also been implemented (Jigsaw will detect that the\r
+ servlet class files have changed and will reload them automatically).</li>\r
+ </ul>\r
+\r
+ <h3>New Features</h3>\r
+ <ul>\r
+ <li>Added a companion server to do the remote configuration.\r
+ <p><br>\r
+ The protocol used to communicate with the Admin servlet hasn't been\r
+ specified yet, and will probably change in the next releases of Jigsaw.\r
+ The client part of the API (<a\r
+ href="User/api/w3c.jigsaw.admin.RemoteResource.html">w3c.jigsaw.jigadm.RemoteResource</a>)\r
+ is unlikely to change though.</p>\r
+ </li>\r
+ <li>A new graphical tool is available to do the configuration of Jigsaw.\r
+ Currently, this allows you to do everything the form based editor could\r
+ do.</li>\r
+ <li>Support for the <a href="User/api/Package-w3c.www.sap.html">SAP</a>\r
+ protocol has been included, as the starting point for multicast\r
+ proxy-to-proxy support. SAP is the Session Announcement Protocol (an\r
+ Internet draft)</li>\r
+ <li>The <a\r
+ href="User/Reference/w3c.jigsaw.proxy.ProxyDirectory.html">ProxyDirectory</a>\r
+ resource now supports ftp tunneling (it won't do caching until someone\r
+ tells me how ftp results can be cached)</li>\r
+ <li>Support for a light multicasted version of ICP now available in the\r
+ proxy, turn your hundreds of useless 5Mo caches into a usefull 50Mo\r
+ collaborative proxy: <i>the net is the computer</i> ! Check the <a\r
+ href="User/Reference/w3c.www.protocol.http.micp.MICPFilter.html">MICPFilter</a>\r
+ client side filter.</li>\r
+ <li>Resource can now be extended through the use of <a\r
+ href="User/api/w3c.tools.store.ResourceFrame.html">ResourceFrame</a>;\r
+ <p><br>\r
+ The notion of HTTP filters has proven usefull enough to be extended for\r
+ non HTTP resources. You can now attach <i>frames</i> to resources that\r
+ describe users for example (such as the w3c.jigsaw.auth.AuthUser).</p>\r
+ </li>\r
+ </ul>\r
+\r
+ <h3>Incompatible API changes</h3>\r
+ <ul>\r
+ <li>The <a\r
+ href="User/api/w3c.jigsaw.forms.FormResource.html">FormResource</a>\r
+ constructor now takes a ResourceContext instead of a httpd instance</li>\r
+ <li>The indexing model haa changed quite a bit.\r
+ <p><br>\r
+ A new indexing model has been designed: each directory can declare how it\r
+ indexes its content through thew use of its own indexer. The indexer API\r
+ is defined in w3c.jigsaw.indexer.</p>\r
+ </li>\r
+ </ul>\r
+\r
+ <h3>Incompatible Configuration Changes</h3>\r
+ <ul>\r
+ <li>Filters pickling as attributes\r
+ <p><br>\r
+ Filters pickling has changed: filters are now just a special resource\r
+ attribute, and follow the general pickling format. They used to be\r
+ special, and that caused lots of troubles. <br>\r
+ <i>Don't redefine the pickle method !!</i></p>\r
+ </li>\r
+ <li>Cache directory hierarchy\r
+ <p><br>\r
+ The cache directory hierarchy has been made multi-directory: cached\r
+ entries are stored in a tree of directories instead of within a single\r
+ directory (lessen the load on the file system by decreasing the acche\r
+ directory size)</p>\r
+ </li>\r
+ </ul>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="1.0alpha5"></a>Jigsaw 1.0alpha5</h2>\r
+ <b>A public release made on February the 13th, 1997.</b>\r
+\r
+ <h3>Incompatible changes</h3>\r
+ <ul>\r
+ <li>The <a\r
+ href="User/api/w3c.tools.store.AttributeHolder.html">AttributeHolder</a>\r
+ <a\r
+ href="User/api/w3c.tools.store.AttributeHolder.html#unpickle">unpickle</a>\r
+ and <a\r
+ href="User/api/w3c.tools.store.AttributeHolder.html#unpickleInstance">unpickleInstance</a>\r
+ methods, now take a third boolean parameter, that indicates if the\r
+ resource is to be initialized after unpickling. <b>Warning</b> if you have\r
+ written an 1.0alpha3 resource that redefines this method, you should make\r
+ sure to define the new format for this method (since it's the one that\r
+ gets called by the unpickling engine)</li>\r
+ <li>The <a\r
+ href="User/api/w3c.www.http.HttpReplyMessage.html">HttpReplyMessage</a> <a\r
+ href="User/api/w3c.www.http.HttpReplyMessage.html#setLocation">setLocation</a>\r
+ method now takes an URL, to reflect the fact that HTTP/1.1 specification\r
+ requires an absolute URL here.</li>\r
+ <li>The getURL method of <a\r
+ href="User/api/w3c.jigsaw.resources.HTTPResource.html">HTTPResource</a>\r
+ has now been splitted into two diferent methods:\r
+ <dl>\r
+ <dt>String <a\r
+ href="User/api/w3c.jigsaw.resources.HTTPResource.html#getURLPath">getURLPath</a>()</dt>\r
+ <dd>Returns the path of the URL of the resource (as a String)</dd>\r
+ <dt>URL <a\r
+ href="User/api/w3c.jigsaw.resources.HTTPResource.html#getURL">getURL</a>(request)</dt>\r
+ <dd>Retuns the full URL of the resource. With virtual hosting support,\r
+ it may happen that a resource has differnt URLs according to the\r
+ incomming requests, that's one of the reason for that split.</dd>\r
+ </dl>\r
+ </li>\r
+ <li><a\r
+ href="User/api/w3c.tools.store.AttributeHolderAttribute.html">AttributeHolderAttribute</a>\r
+ semantics has slightly changed: it is up to resources using that kind of\r
+ attribute to initialize the value (if any) of that attribute, by calling\r
+ their <a\r
+ href="User/api/w3c.tools.store.AttributeHolder.html#initialize">initialize</a>\r
+ method with appropriate default values.</li>\r
+ <li>Resources can now refuse unloading, through the new <a\r
+ href="User/api/w3c.tools.store.Resource.html#acceptUnload">acceptUnload</a>\r
+ method. This allows to <i>lock</i> a resource in memory, whatever happens.\r
+ This should be use only with great care.</li>\r
+ <li>The <a\r
+ href="User/api/w3c.tools.store.ResourceStoreHolder.html">ResourceStoreHolder</a>\r
+ interface has changed in the following ways:\r
+ <dl>\r
+ <dt>notifyStoreUnload</dt>\r
+ <dd>Has been renamed to <a\r
+ href="User/api/w3c.tools.store.ResourceStoreHolder.html#acceptUnload">acceptStoreUnload</a>,\r
+ and returns a boolean that indicates wether the store holder is\r
+ willing to get rid of any of its references to the store. If any of\r
+ that store holders return <b>false</b> the store will not ne\r
+ unloaded.</dd>\r
+ <dt><a\r
+ href="User/api/w3c.tools.store.ResourceStoreHolder.html#notifyStoreShutdown">notifyStoreShutdown</a>\r
+ and <a\r
+ href="User/api/w3c.tools.store.ResourceStoreHolder.html#notifyStoreStabilize">notifyStoreStabilize</a></dt>\r
+ <dd>Semantics has been slightly changed: it is nolonger up to the\r
+ store holder to perform the job. The first method is the one in\r
+ which the holder should get rid of all its references to the store\r
+ (by nullifying them), and the second one is just a\r
+ notification.</dd>\r
+ </dl>\r
+ </li>\r
+ <li>The <a\r
+ href="User/api/w3c.jigsaw.resources.ContainerResource.html">ContainerResource</a>\r
+ <a\r
+ href="User/api/w3c.jigsaw.resources.ContainerResource.html#lookupStore">lookupStore</a>\r
+ method now throws an <a\r
+ href="User/api/w3c.jigsaw.resources.InvalidResourceException.html">InvalidResourceException</a>\r
+ if the resource exists in its store but cannot be restored. In such a\r
+ case, the <a\r
+ href="User/api/w3c.jigsaw.resources.DirectoryResource.html">DirectoryResource</a>\r
+ will emit an appropriate error message.</li>\r
+ <li>The <a\r
+ href="User/api/w3c.jigsaw.daemon.ServerHandler.html">ServerHandler</a>\r
+ interface <a\r
+ href="User/api/w3c.jigsaw.daemon.ServerHandler.html#initialize">initialize</a>\r
+ and <a\r
+ href="User/api/w3c.jigsaw.daemon.ServerHandler.html#clone">clone</a>\r
+ methods now provide a pointer to the <a\r
+ href="User/api/w3c.jigsaw.daemon.ServerHandlerManager.html">ServerHandlerManager</a>\r
+ as a first parameter.</li>\r
+ <li>The resource and resource store APIs have been moved outside of\r
+ <b>Jigsaw</b>. After a year of experimentation, this code has proven\r
+ usefull outside the scope of the server itself, that's why we decided to\r
+ move it to a newly created package <a\r
+ href="User/api/Package-w3c.tools.store.html">w3c.tools.store</a>. If you\r
+ have written some resources, the only change for you will be to import\r
+ that new package in your class files. The precise list of classes that has\r
+ moved is:\r
+ <ul>\r
+ <li>Attribute.java</li>\r
+ <li>AttributeHolder.java</li>\r
+ <li>AttributeHolderAttribute.java</li>\r
+ <li>AttributeRegistry.java</li>\r
+ <li>BooleanAttribute.java</li>\r
+ <li>ClassAttribute.java</li>\r
+ <li>DateAttribute.java</li>\r
+ <li>DoubleAttribute.java</li>\r
+ <li>FileAttribute.java</li>\r
+ <li>FilenameAttribute.java</li>\r
+ <li>HolderInitException.java</li>\r
+ <li>IllegalAttributeAccess.java</li>\r
+ <li>IntegerArrayAttribute.java</li>\r
+ <li>IntegerAttribute.java</li>\r
+ <li>InvalidResourceAttribute.java</li>\r
+ <li>LongAttribute.java</li>\r
+ <li>ObjectAttribute.java</li>\r
+ <li>PropertiesAttribute.java</li>\r
+ <li>Resource.java</li>\r
+ <li>ResourceLocker.java</li>\r
+ <li>ResourceShadower.java</li>\r
+ <li>ResourceStore.java</li>\r
+ <li>ResourceStoreHolder.java</li>\r
+ <li>ResourceStoreManager.java</li>\r
+ <li>SimpleResourceStore.java</li>\r
+ <li>StringArrayAttribute.java</li>\r
+ <li>StringAttribute.java</li>\r
+ <li>UnknownResourceException.java</li>\r
+ </ul>\r
+ </li>\r
+ <li>The <a\r
+ href="User/api/w3c.tools.store.ResourceStoreManager.html">ResourceStoreManager</a>\r
+ <a\r
+ href="User/api/w3c.tools.store.ResourceStoreManager.html#unpickleProlog">unpickleProlog</a>\r
+ method no longer returns a boolean. Instead it throws one of:\r
+ <dl>\r
+ <dt><a\r
+ href="User/api/w3c.tools.store.NotAStoreException.html">NotAStoreException</a></dt>\r
+ <dd>If the file preambule doesn't match the store cookie.</dd>\r
+ <dt><a\r
+ href="User/api/w3c.tools.store.InvalidStoreClassException.html">InvalidStoreClassException</a></dt>\r
+ <dd>If the class willing to load that repository doesn't match the\r
+ class that saved it.</dd>\r
+ <dt><a\r
+ href="User/api/w3c.tools.store.InvalidStoreVersionException.html">InvalidStoreVersionException</a></dt>\r
+ <dd>If the repository version doesn't match the loading class\r
+ version.</dd>\r
+ </dl>\r
+ </li>\r
+ </ul>\r
+\r
+ <h3>Compatible changes</h3>\r
+ <ul>\r
+ <li>HTTPResource defines a new <a\r
+ href="User/api/w3c.jigsaw.resources.HTTPResource.html#verify">verify</a>\r
+ method, that might be called by a resource store salvager to check the\r
+ consistency of the resource.For example, file system based resources will\r
+ use that method to check that the file or directory they wrap still exist,\r
+ and delete themselves if not.</li>\r
+ <li><a\r
+ href="User/api/w3c.jigsaw.resources.DirectoryResource.html">DirectoryResource</a>\r
+ listing now emits HTML3.2 compliant documents, along with a link to the\r
+ container (when possible)</li>\r
+ <li>The realms catalog no longer uses absolute pathes, it will not however\r
+ upgrade all realms catalog to not using absolute path. Relative path are\r
+ relative to the server's auth directory (typically\r
+ <tt>config/auth</tt>)</li>\r
+ <li>The <tt>w3c.jigsaw.space</tt> property is no longer settable through the\r
+ Admin properties editor. This was an oversight. The only way to set the\r
+ <i>space</i> for a server, is through the <tt>-space</tt> commandline\r
+ toggle (check the <a href="User/Administration/cmdline.html">command line\r
+ page </a>for more details)</li>\r
+ </ul>\r
+\r
+ <h3>New features</h3>\r
+ <ul>\r
+ <li>A new <a\r
+ href="User/Reference/w3c.jigsaw.contrib.SalvagerResource.html">SalvagerResource</a> \r
+ has been written. This resource will walk through the entire resource\r
+ space, to check for:\r
+ <ul>\r
+ <li>Cycles in resource stores (due to <b>Jigsaw</b> bugs)</li>\r
+ <li>Unused resource stores (it garbage collects the stores)</li>\r
+ <li>Synchronize resources with the file system, by calling the <a\r
+ href="User/api/w3c.jigsaw.resources.HTTPResource.html#verify">verify</a>\r
+ method of all resources.</li>\r
+ </ul>\r
+ </li>\r
+ <li>A new <a\r
+ href="User/api/w3c.tools.store.ResourceWalker.html">ResourceWalker</a>\r
+ interface is available, along with a <a\r
+ href="User/api/w3c.tools.store.WalkerEngine.html">WalkerEngine</a>. These\r
+ two classes provide respectively an interface to handle the walk, and an\r
+ <i>engine</i> that will trigger call to implementors of previous interface\r
+ while walking through a resource space.</li>\r
+ </ul>\r
+\r
+ <h3>Bug fixes</h3>\r
+\r
+ <p>Numerous bug fixes have been omitted from the list, that list only the main\r
+ ones:</p>\r
+ <ul>\r
+ <li>The <a\r
+ href="User/api/w3c.tools.store.ResourceStoreManager.html">ResourceStoreManager</a>\r
+ had numerous bugs, most of them should now be fixed.</li>\r
+ <li>The <a\r
+ href="User/api/w3c.www.protocol.http.icp.ICPFilter.html">ICPFilter</a>\r
+ HTTP client side filter that implements the Internet Cache Protocol should\r
+ now be compatible with Squid implementations</li>\r
+ <li>CVS has been fixed in numerous ways; the PutList resource should now be\r
+ usable.</li>\r
+ <li>The basic class <a\r
+ href="User/Reference/w3c.jigsaw.auth.AuthFilter.html">AuthFilter</a> now\r
+ performs authentication during lookup, rather then at\r
+ <tt>ingoingFilter</tt>'s time.</li>\r
+ </ul>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="1.0alpha4"></a>Jigsaw 1.0alpha4</h2>\r
+ <b>A member specific release, made on January the 13th, 1997.</b>\r
+\r
+ <h3>Incompatible changes</h3>\r
+ <ul>\r
+ <li>Properties are no longer saved in a single file, each <a\r
+ href="User/api/w3c.jigsaw.daemon.ServerHandler.html">ServerHandler</a> has\r
+ to manage its own property file. The file is designated through the server\r
+ <i>identifier</i>. This means that older <tt>httpd.props</tt> file should\r
+ be changed by:\r
+ <ul>\r
+ <li>Renaming them to <tt>http-server.props</tt> (the default server\r
+ identifier)</li>\r
+ <li>All properties prefix should be removed (ie all <tt>http-server</tt>\r
+ prefixes)</li>\r
+ </ul>\r
+ </li>\r
+ <li>The AttributeHolder pickling format has changed:\r
+ <ul>\r
+ <li>The FilteredResource pickling method had a bug (it didn't conform to\r
+ the general format)</li>\r
+ <li>Before being dumped, attribute values are prefixed by theire pickled\r
+ length. This allows the unpickleInstance method to skip unknown (ie\r
+ deleted) attributes.</li>\r
+ </ul>\r
+ </li>\r
+ <li>The <a\r
+ href="User/api/w3c.jigsaw.daemon.DaemonProperties.html">DaemonProperty</a>\r
+ class is now only used as a property loader. It implements a catalog of\r
+ property sets; each <a\r
+ href="User/api/w3c.jigsaw.daemon.ServerHandler.html">ServerHandler</a>\r
+ instance is responsible for managing its own <a\r
+ href="User/api/w3c.util.ObservableProperties.html">ObservableProperties</a>\r
+ instance.</li>\r
+ <li>The <a\r
+ href="User/api/w3c.jigsaw.resources.HTTPResource.html#getURL">getURL</a>\r
+ method of User <a\r
+ href="User/api/w3c.jigsaw.resources.HTTPResource.html">HTTPResource</a>\r
+ instances now return the full path of the resource within any of the\r
+ server contexts (it used to return the full URL).</li>\r
+ <li>The abstract <a\r
+ href="User/api/w3c.jigsaw.resources.Attribute.html">Attribute</a> class\r
+ now defines a new <a\r
+ href="User/api/w3c.jigsaw.resources.Attribute.html#getPickleLength">getPickleLength</a>\r
+ abstract method (that has to be defined by sub-classes). This method is\r
+ used for the new pickling format of resources, to allow the unpickle\r
+ method to skip unknown attribute values.</li>\r
+ <li>The <a\r
+ href="User/api/w3c.jigsaw.resources.ResourceStore.html">ResourceStore</a>\r
+ API has changed (for ResourceStore implementers only). The <a\r
+ href="User/api/w3c.jigsaw.resources.ResourceStore.html#getVersion">getVersion</a>\r
+ method has been added, and must return the version of the class that\r
+ implements the store.\r
+ <p><br>\r
+ The <a\r
+ href="User/api/w3c.jigsaw.resources.ResourceStore.html#initialize">initialize</a>\r
+ method has a new opaque <i>token</i> parameter, to be used by the store\r
+ when calling back the resource store manager (eg when calling the\r
+ markModified method). The <i>token</i> can be thought of as the identity,\r
+ for the resource store manager, of the store.</p>\r
+ </li>\r
+ <li>The <a\r
+ href="User/api/w3c.www.protocol.http.HttpManager.html">HttpManager</a> can\r
+ now be instantiated several times within the same process. This allows for\r
+ different context for the HTTP client side API. More precisely, the new\r
+ method <a\r
+ href="User/api/w3c.www.protocol.http.HttpManager.html#getManager(Properties)">getManager(Properties\r
+ props)</a> will create a new manager if no other manager has been created\r
+ with that exact property set.</li>\r
+ </ul>\r
+\r
+ <h3>Bug fixes</h3>\r
+ <ul>\r
+ <li>The <a\r
+ href="User/api/w3c.jigsaw.http.CommonLogger.html">CommonLogger</a> now\r
+ initializes its buffer size properly from properties.</li>\r
+ <li>Several fixes in the <a\r
+ href="User/api/w3c.www.protocol.http.cache.CacheFilter.html">CacheFilter</a>\r
+ (protocol implementation errors)</li>\r
+ <li>Bug fixes in the server-side <a\r
+ href="User/api/w3c.jigsaw.http.Request.html">Request</a> object, wouldn't\r
+ allow for non persistent connections.</li>\r
+ <li>The new <a\r
+ href="User/api/w3c.jigsaw.http.socket.SocketClientFactory.html">SocketClientFactory</a>\r
+ now properly deletes old clients if needed (old clients would otherwise\r
+ tend to be priviledged wr to newer ones).</li>\r
+ </ul>\r
+\r
+ <h3>New features</h3>\r
+ <ul>\r
+ <li>Created the <a\r
+ href="User/Reference/w3c.jigsaw.contrib.PasswordEditor.html">w3c.jigsaw.contrib.PasswordEditor</a>\r
+ resource, that allows web site users to change their own password within a\r
+ given realm.</li>\r
+ <li>Created the <a\r
+ href="User/Reference/w3c.jigsaw.contrib.CheckpointResource.html">w3c.jigsaw.contrib.CheckpointResource</a>\r
+ that will backup <b>Jigsaw</b> configuration every once in a while.</li>\r
+ <li>Created the <a\r
+ href="User/Reference/w3c.jigsaw.contrib.LogFilter.html">w3c.jigsaw.contrib.LogFilter</a>\r
+ filter, that allows for very flexible monitoring of an URL sub-space.</li>\r
+ <li>Added UNIX specific command line options, to be able to run\r
+ <b>Jigsaw</b> on port 80, as any user, under any groups. Support also\r
+ provided for chroot'ing <b>Jigsaw</b> under UNIX, check <a\r
+ href="User/FAQ.html#chroot">the FAQ entry</a>.</li>\r
+ <li>The proxy now provides minimal support for ICP, through the <a\r
+ href="User/api/w3c.www.protocol.http.proxy.ICPFilter.html">ICPFilter</a>.</li>\r
+ <li>Sun's servlet API is now supported, servlets can be downloaded from the\r
+ net ! Check the <a\r
+ href="User/api/w3c.jigsaw.servlet.ServletWrapper.html">ServletWrapper</a>\r
+ and <a\r
+ href="User/api/w3c.jigsaw.servlet.RemoteServletWrapper.html">RemoteServletWrapper</a>\r
+ resources.</li>\r
+ </ul>\r
+\r
+ <h3>Compatible API Changes</h3>\r
+ <ul>\r
+ <li>the <a href="User/api/w3c.jigsaw.http.Client.html">Client</a> <a\r
+ href="User/api/w3c.jigsaw.http.Client.html#getOutputStream">getOutputStream</a>\r
+ method now returns a DataOutputStream.</li>\r
+ <li>Revamped ClientPool, Client into abstract classes, etc. Check the new <a\r
+ href="User/api/w3c.jigsaw.http.Client.html">Client</a> and <a\r
+ href="User/api/w3c.jigsaw.http.ClientFactory.html">ClientFactory</a> APIs.\r
+ This dos <i>not</i> affect any of the resources, but a set of properties\r
+ did change in this process. All properties starting with\r
+ <tt>w3c.jigsaw.ClientPool</tt> are now changed, check the <a\r
+ href="User/Reference/w3c.jigsaw.http.socket.SocketConnectionProp.html">SocketConnectionProp</a>\r
+ resource for more infos.</li>\r
+ <li>The <a href="User/api/w3c.jigsaw.http.httpd.html">httpd</a> class now\r
+ has an a new errlog method, to signal error in a homogeneous way from\r
+ resources (it takes a resource and a message as a paragmeter):\r
+ <p><br>\r
+ <tt>errlog(HTTPResource resource, String msg</tt>)</p>\r
+ </li>\r
+ <li>The <a href="User/api/w3c.jigsaw.http.Logger.html#sync">Logger</a>\r
+ interface now define a <tt>sync</tt> method for asking the loggers to\r
+ flush whatever they have back to disk.</li>\r
+ <li>The <a href="User/api/w3c.jigsaw.resources.Resource.html">Resource</a>\r
+ object defines a new <b>store-entry</b> attribute, to be used by the store\r
+ of that resource as a closure (typically caching resource stores have an\r
+ entry for each loaded resource to keep track of lockers, etc). The\r
+ ResourceStore interface has been changed to reflect this: all methods that\r
+ used to take a resource identifier as a parametr can now take the resource\r
+ instead, and find up the entry through that new attribute.</li>\r
+ <li>The <a\r
+ href="User/api/w3c.jigsaw.resources.DirectoryResource.html">DirectoryResource</a>\r
+ class functionalities has been splitted into two sub-classes:\r
+ <dl>\r
+ <dt><a\r
+ href="User/api/w3c.jigsaw.resources.StoreContainer.html">StoreContainer</a></dt>\r
+ <dd>Defines a basic resource container, that keeps track of its\r
+ children through a resource store. It doesn't know nothing about a\r
+ file system</dd>\r
+ <dt><a\r
+ href="User/api/w3c.jigsaw.resources.DirectoryResource.html">DirectoryResource</a></dt>\r
+ <dd>Now extends the StoreContainer, and knows how to serve files from\r
+ a file-system.</dd>\r
+ </dl>\r
+ </li>\r
+ <li>The <a\r
+ href="User/api/w3c.jigsaw.resources.ContainerResource.html">ContainerResource</a>\r
+ for registering children, <a\r
+ href="User/api/w3c.jigsaw.resources.ContainerResource.html#registerResource">registerResource</a>,\r
+ now take as a parameter an HTTPResource instead of a Resource.</li>\r
+ <li>The <a\r
+ href="User/api/w3c.jigsaw.resources.HTTPResource.html#perform">HTTPResource</a>\r
+ perform method has been splitted into three separate stages, to allow for\r
+ more flexible customization of the process of performing a request:\r
+ <dl>\r
+ <dt><a\r
+ href="User/api/w3c.jigsaw.resources.HTTPResource.html#filterIn">filterIn</a></dt>\r
+ <dd>Applies all the filters on the way in, before the request gets\r
+ processed. If this method returns a non-null Reply, it is assumed\r
+ that some filter knew how to generate a reply on behalf of the\r
+ target resource (eg a RAMCacheFilter)</dd>\r
+ <dt><a\r
+ href="User/api/w3c.jigsaw.resources.HTTPResource.html#dispatch">dispatch</a></dt>\r
+ <dd>Dispatches the well-known HTTP methods (ie GET, POST, PUT, etc) to\r
+ the appropaite Java methods (ie get, post, put...)</dd>\r
+ <dt><a\r
+ href="User/api/w3c.jigsaw.resources.HTTPResource.html#filterOut">filterOut</a></dt>\r
+ <dd>Applies all filters on the way out. If this method returns a\r
+ non-null reply, it is assumed to subsume the original reply (as\r
+ obtained by calling dispatch).</dd>\r
+ </dl>\r
+ </li>\r
+ </ul>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="1.0alpha3"></a>Jigsaw 1.0alpha3</h2>\r
+ <b>A public release, made on October 7th, 1996.</b>\r
+\r
+ <p>This release is mainly a bug fix release with regard to the <a\r
+ href="#1.0alpha2">1.0alpha2</a> release.</p>\r
+\r
+ <h3>Bug fixes</h3>\r
+\r
+ <p>Main bug fixes are:</p>\r
+ <ul>\r
+ <li>The HTTP client side code has been reworked. This shouldn't affect users\r
+ of that package, since it is mainly a rewritting of the internals of the\r
+ HttpManager. The main problem was the managing of persistent connections,\r
+ which is now much enhanced. The code was also cleaned up in that\r
+ process.</li>\r
+ <li>The cache garbage collector really works now ! The 1.0alpha2 cache\r
+ garbage collector was just a proof of concept. The new garbage collector\r
+ works by <i>chunking</i> the flow of data being cache through generation\r
+ numbers, which allows for a much more precise garbage collections.</li>\r
+ </ul>\r
+\r
+ <h3>New features</h3>\r
+\r
+ <p>A small set of enhancements has been made too:</p>\r
+ <ul>\r
+ <li>Virtual hosts capabilities have been added, this feature supports only\r
+ the <tt>Host</tt> based version of that feature (which doesn't consume IP\r
+ addresses). More documentation is available <a\r
+ href="User/Reference/w3c.jigsaw.resources.VirtualHostResource.html">here</a>.</li>\r
+ <li>The <a\r
+ href="User/api/w3c.jigsaw.resources.ContainerResource.html">ContainerResource</a>\r
+ is now an abstract class, much more suitable for sub-classing then the <a\r
+ href="User/api/w3c.jigsaw.resources.DirectoryResource.html">DirectoryResource</a>.</li>\r
+ <li>The <a\r
+ href="User/Reference/w3c.jigsaw.proxy.ProxyDirectory.html">ProxyDirectory</a>\r
+ now has a <i>disconnected</i> mode, which allows you to connect your\r
+ laptop from the net, get any numbers of document, disconnect from the net\r
+ to later browse while on a trip. Check it !</li>\r
+ <li>A new <a\r
+ href="User/Reference/w3c.jigsaw.proxy.MirrorDirectory.html">MirrorDirectory</a> \r
+ resource has been added, that allows you to <i>mirror</i> any web site.\r
+ This resources is a nifty subclass of the newly created <a\r
+ href="User/Reference/w3c.jigsaw.proxy.ForwardDirectory.html">ForwardDirectory</a>\r
+ resource.</li>\r
+ </ul>\r
+\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="1.0alpha2"></a>Jigsaw 1.0alpha2</h2>\r
+ <b>A member specific release, made on September 7th, 1996.</b>\r
+\r
+ <p>This member release of <b>Jigsaw</b>, version <b>1.0a2</b> is a snapshot of\r
+ what will be <b>Jigsaw 1.0a3</b>, the next public release. It has lots of\r
+ improvements, and lots of new features that you should check out:</p>\r
+ <dl>\r
+ <dt>HTTP/1.1</dt>\r
+ <dd>The server is now fully HTTP/1.1 compliant, it will still be\r
+ compatible with older, HTTP/1.0 clients.</dd>\r
+ <dt>Caching proxy</dt>\r
+ <dd>This new release includes a caching proxy module, also fully HTTP/1.1\r
+ compliant. The HTTP client side API that is used by this proxy can be\r
+ used as a replacement for the default HTTP Java handler. See the FAQ for\r
+ more infos.</dd>\r
+ <dt>New resources</dt>\r
+ <dd>A set of new resources and filters have been added to the core\r
+ distibution:\r
+ <dl>\r
+ <dt>SSIResource</dt>\r
+ <dd>The server side include resource will handle standard server\r
+ side include commands. It is easily extensible in Java (make sure\r
+ you check our tutorial on how to extend it). This resource is\r
+ extremely powerfull and flexible and also impresively efficient,\r
+ we urge you to have a look at it !</dd>\r
+ <dt>Image maps</dt>\r
+ <dd>A new image map resource has been included in the release. This\r
+ adds image map support within the server in a very efficient\r
+ way.</dd>\r
+ <dt>ErrorFilter</dt>\r
+ <dd>Allows you to redefine all the error messages leaving the\r
+ server, by using internal redirection.</dd>\r
+ </dl>\r
+ </dd>\r
+ <dt>Enhancements</dt>\r
+ <dd>A lots of enhancements has been made to <b>Jigsaw</b> since release\r
+ <b>1.0a1</b>. Among which:\r
+ <dl>\r
+ <dt>Performance tuning</dt>\r
+ <dd>Although not fully tuned yet, this release deal with some of the\r
+ bottlenecks found in older release. Inparticular, the new client\r
+ pool class allows <b>Jigsaw</b> to handle gracefully an increased\r
+ number of simultaneous connections.</dd>\r
+ <dt>Configuration</dt>\r
+ <dd>Has been enhanced in several ways. Check the /Admin directory to\r
+ see them !</dd>\r
+ <dt>CgiResource</dt>\r
+ <dd>The new support for CGI scripts is much more easy to configure\r
+ and use. It also has imrpoved a lot in terms of robustness. It has\r
+ been tested on both UNIX and Windows.</dd>\r
+ <dt>PICS support</dt>\r
+ <dd>The PICS module of <b>Jigsaw</b> has been updated to reflect the\r
+ PICS 1.1 specification.</dd>\r
+ </dl>\r
+ </dd>\r
+ </dl>\r
+ <p></p>\r
+ <hr noshade="noshade" width="50%">\r
+\r
+\r
+ <h2><a name="1.0alpha1"></a>Jigsaw 1.0alpha1</h2>\r
+ <b>The first member and public release, made on May, 1st 1996 and June</b>\r
+\r
+ <p>This was the first available <b>Jigsaw</b> release.</p>\r
+ </div> <!-- body -->\r
+\r
+ <div class="footer">\r
+ <P>\r
+ <HR NOSHADE WIDTH="100%">\r
+ <A HREF="mailto:jigsaw@w3.org">Jigsaw Team</A>\r
+ <BR>$Id: RelNotes.html,v 1.1 2010/06/15 12:29:45 smhuang Exp $\r
+ <P class="policyfooter"> <FONT SIZE=-1>\r
+ <A HREF="/Consortium/Legal/ipr-notice.html#Copyright">Copyright</A>\r
+ © 1997 <A HREF="http://www.w3.org">W3C</A> \r
+ (<A HREF="http://www.lcs.mit.edu">MIT</A>, \r
+ <A HREF="http://www.inria.fr/">INRIA</A>,\r
+ <A HREF="http://www.keio.ac.jp/">Keio</A> ), \r
+ All Rights Reserved. W3C \r
+ <A HREF="/Consortium/Legal/ipr-notice.html#Legal Disclaimer">\r
+ liability,</A>\r
+ <A HREF="/Consortium/Legal/ipr-notice.html#W3C Trademarks">\r
+ trademark</A>,\r
+ <A HREF="/Consortium/Legal/copyright-documents.html">document\r
+ use </A>and\r
+ <A HREF="/Consortium/Legal/copyright-software.html">software\r
+ licensing\r
+ </A>rules apply. Your interactions with this site are in accordance\r
+ with our <A HREF="/Consortium/Legal/privacy-statement.html#Public">\r
+ public</A>\r
+ and <A HREF="/Consortium/Legal/privacy-statement.html#Members">\r
+ Member</A> privacy statements.\r
+ </FONT>\r
+ </div>\r
+ </BODY>\r
+</HTML>\r