jglobus/JGlobus — pull request #62 by paulmillar (2013-01-31 17:01:44+00:00)
Title: Make GlobusGSSCredentialImpl honour its Serializable identifier.

In JGlobus v1.8, GlobusGSSCredentialImpl was Serializable. This
feature is relied upon in application that use JGlobus.

Currently, the GlobusGSSCredentialImpl is marked Serializable, but
contains a field, X509Credential, that is not serialisable. This then
breaks the Serializable contract and attempts to serialise the object
will fail.

X509Credential is not currently Serializable, but contains only one
field member that prevents this: OpenSSLKey. Therefore, the
critical part of this patch makes the abstract OpenSSLKey
Serializable.

Note that the abstract class OpenSSLKey is a holder for the private
key of a credential and allows certain operations on it. Only the
IvParameterSpec field member prevents OpenSSLKey from being
Serializable. The patch records the byte-array used to build
the IvParameterSpec independently of the IvParameterSpec field
member and marks the latter transient. When deserialising,
the IvParameterSpec field member is rebuilt if the byte-array
is not null.

A number of unit-tests are included to verify that, for both
OpenSSLKey and GlobusGSSCredentialImpl, an object is equal to a
serialised-then-deserialised version of that object. For this to
work, missing equals methods were implemented and an existing equals
method was fixed. Unit-tests are also added for these equals
methods.