jclouds-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ian Springer (JIRA)" <j...@apache.org>
Subject [jira] [Created] (JCLOUDS-1200) org.jclouds.http.HttpResponseException fails to serialize
Date Thu, 10 Nov 2016 03:04:58 GMT
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)

Mime
View raw message