Ian Springer created JCLOUDS-1200:
-------------------------------------
Summary: org.jclouds.http.HttpResponseException fails to serialize
Key: JCLOUDS-1200
URL: https://issues.apache.org/jira/browse/JCLOUDS-1200
Project: jclouds
Issue Type: Bug
Components: jclouds-core
Affects Versions: 1.9.2
Reporter: Ian Springer
The org.jclouds.http.HttpResponseException class fails to serialize due to
having a field of type org.jclouds.http.HttpCommand, which is not Serializable.
It appears the same is true for the other field with type
org.jclouds.http.HttpResponse. Per Java design, all Throwable subclasses should
be serializable.
Here is the stack trace when an HttpResponseException fails to serialize:
{code}
Caused by: java.io.NotSerializableException: org.jclouds.http.HttpCommand
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at com.google.common.testing.Platform.reserialize(Platform.java:45)
... 35 more
{code}
And here is a failing test that attempts to serialize a HttpResponseException
instance:
{code}
@Test
public void testHttpResponseExceptionSerializable() {
HttpRequest request = ((HttpRequest.Builder)
HttpRequest.builder().method("GET")).endpoint("http://foo.com/").build()
HttpResponse response = HttpResponse.builder().build()
HttpResponseException original = new HttpResponseException(new
HttpCommand(request), response)
HttpResponseException copy = SerializableTester.reserialize(original)
assert copy != null
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)