Changes in Apache XML-RPC
Make the HttpClient creation in XmlRpcCommonsTransport and the
URLConnection creation in XmlRpcSunHttpTransport protected.
This is required for cookie support.
The WebServer was producing invalid error responses, if contentLengthOptional
was set.
If the server was throwing an XmlRpcException, then the fault code and fault
string weren't given to the client.
The WebServer replies with an HTTP error 401 now, if the
client uses chunked encoding.
The properties "Extension-Name", "Specification-Vendor", "Specification-Version",
"Specification-Title", "Implementation-Vendor-Id",
"Implementation-Vendor" and "Implementation-Version" are now
present in the MANIFEST files.
An NPE was thrown, if the clients request didn't contain a "params" element.
The method TimingOutCallback.waitForResponse is now checking, whether
a response has already arrived before waiting.
Fixed a serious performance problem, if the XML parser was sending large
content in small pieces. This could happen, for example, if the content
contained a large number of character entities.
The configuration of the reply timeout in the commons transport was wrong.
The DateParser is now treating an empty string as null.
The XmlRpcRequestParser and XmlRpcResponseParser didn't reset
their internal state within startDocument(). Consequently, they
haven't been reusable.
Fixed the spelling of CharSetXmlWriterFactory, which made
the class basically useless.
Fixed that the WebServer didn't wait before retrying to
bind to the server socket.
Fixed an endless loop, if the WebServer threw a BindException.
A NullPointerException was triggered, if the BasicEncoding was set to null.
Basic authentication didn't work, if the base64 encoded string with
user name and password contained more than 72 characters.
Basic authentication didn't work with the commons http transport,
because the commons httpclient wasn't configured to send credentials
by default. (It was waiting for a challenge.)
Basic authentication didn't work with the commons http transport,
if user name or password contained non-ASCII characters.
The releaseWorker() method wasn't called for the server.
Fixed a bug in the web servers thread pool, which caused that
threads haven't been reused.
Documentation improvements
Added documentation on custom data types.
The XmlRpcLiteHttpTransport is now creating a socket
in a protected methods. This allows to switch to
alternative socket implementations.
More documentation fixes.
Fixed an invalid FAQ example.
Added a missing "synchronized" to the TimingOutCallback.
Fixed an invalid index, that caused the ReflectiveXmlRpcHandler to fail
detecting a method.
Added documentation for accessing an SSL server.
A null parameter list is now treated as an empty object array.
The type long was missing in types.apt.
Add connectionTimeout and replyTimeout in RPC clients.
CommonsTransport support connection and reply timeout, liteHttpTransport only support reply timeout
The value created by HttpUtil.encodeBasicAuthentication(...)
was terminated with a line feed, which is invalid for
use in HTTP headers.
add support for BigDecimal and BigInteger in extensions.
Nested object arrays could not be parsed.
The "string" tag could not be parsed.
Added the DynamicHandlerMapping.
XmlRpcException.printStackTrace() was throwing
an NPE, if no linked exception was present.
The project is now splitted into three jar files:
common, client, and server.
The Base64 encoder doesn't accept buffers of length 0. Such a buffer
was passed, if the byte array to encode has itself length 0.
HTTP/1.0 requires a content-length header. The Lite HTTP transport
doesn't support HTTP/1.1, so it refuses the "contentLengthOptional"
setting from now on.
Added support for initializable handlers.
Added the TimingOutCallback, which allows to abort a request,
if the server doesn't reply within a given time.
Fixed that dateTime values must not include timezone values.
The XmlRpcServlet allows to configure its "enabledForExtensions"
value as an init parameter.
It is now possible to create and initialize handler objects per
request.
Added partial support for automatic conversion of object arrays
to lists, or vectors. Same for maps to hash tables, or properties.
Complete rewrite, adding vendor extensions:
Streaming mode, support for all primitive Java types,
nulls, DOM elements, and JAXB objects.
A missing increment in LiteXmlRpcTransport.initConnection()
prevented, that the method could finally fail, resulting
in a never ending loop.
The Webserver class was unable to handle basic authentication,
because the BASE64 codec wasn't initialized.
The characters 0x20, 0xe000, and 0x10000 have been escaped
without reason.
The wrong version of commons-codec was downloaded by build.xml.
Added the CommonsXmlRpcTransportFactory.
Added the possibility to specify a timezone for interpreting
incoming date values.
Upgrade to commons-httpclient 3.0.