Fixed behavior of HttpGenerator to change its persistent also for
requests.
Reworked HttpSenderOverHTTP to send headers via IteratingCallback, so
that multiple generation steps can be made to produce SHUTDOWN_OUT.
Refactored the DefaultServlet to better handle static gzipped files with etags in the cache.
Required a simplification of always having a HttpContent rather than the prior situation of
having either a Resource or a HttpContent. So introduced a HttpContent.Factory, of which
the ResourceCache is the normal implementation, but there is also now a ResourceContentFactory
that creates content when there is no cache.
The Gzip resource is now associated with the normal resource, so less lookups are needed.
This also give scope for caching dynamic gzipping in the future.
The GzipHttpContent class has been introduced to send content with the headers of the
uncompress, but content of the compressed resource.
Added utility classes:
IncludeExclude - handles standard include exclude set
RegexSet - A set of regular expressions that have a combined compiled pattern
PathMap.PathSet - A set of standard path mappings
The problem had several aspects:
* HttpField.add should not let a null entry be added to the fields
* The putHeaders methods should have checked for a null field before trying to add it
* But the fundamental problem was the JarFileResource.close was leaving exist==true, so a new entry was never created.
+ Updating expectations on HttpURIParseTest
+ Making results of new HttpURI(String) and new HttpURI(URI) consistent
+ Making results of HttpURI parsing consistent with java.net.URI
+ Making output of HttpURI.toString() and java.net.URI.toASCIIString()
consistent with regards to ssp (scheme specific part) behavior
+ Cleaning up HttpURITest
+ Creating parameterized HttpURIParseTest from various separate test
cases in former HttpURITest
+ Currently @Ignored
+ Test Parse from String
+ Test Parse from URI
+ Test Parse result differences with java.net.URI
+ Adding more testcases to demonstrate bug