Hi Gilles,

Gilles Sadowski wrote:

> On Wed, Mar 09, 2011 at 03:00:07PM +0100, Luc Maisonobe wrote:
>> Le 09/03/2011 13:59, Gilles Sadowski a écrit :
>> > Hi.
>> > 
>> >>>> [...]
>> >>>>
>> >>>> Or make the fields transient?
>> >>>>
>> >>>> That would perhaps cause problems if the Exceptions were ever
>> >>>> serialised, but can that happen?
>> >>>
>> >>> Yes, it's a typical JEE scenario and I cannot say how often I cursed
>> >>> Sun for stuffing an unserializable object into
>> >>> NamingException.setResolvedObject within their LDAP implementation
>> >>> ...
>> >>>
>> >>> Actually the MathRE should contain a writeObject implementation that
>> >>> replaces any non-serializable object in that array with some kind of
>> >>> replacement (e.g. with its String representation). Otherwise the
>> >>> MathRE will not reach its destination and all the localization was
>> >>> for nothing.
>> >>
>> >> That's a good idea. We could even do that replacement directly at
>> >> construction and never store the Object themselves, regardless of
>> >> their status with respect to serialization.
>> > 
>> > Do you mean storing only the String representation of the arguments?
>> > Wouldn't that defeat the purpose of the map feature (which was to allow
>> > any kind of objects to be stored and retrieved)?
>> 
>> You are right, I am stupid. So we have to check for serializable.
> 
> I don't see why: The serialization will work provided all "Object"
> arguments are "Serializable"; it is the user's code responsibility to not
> try serializing the exception when it knows that it contains a
> non-serializable object.
> If the exceptions generated from CM contain only serializable objects
> (which is the case now), then we've done our part.

Yes, but it might not be always directly obvious. It's always annoying, if 
in a client/server scenario an error occurs and suddenly cannot even 
reported to the client. That's why I proposed the customized 
writeObject/readObject for MathRE. The thrown exception should make it under 
any circumstances over the wire, even if it means that unserializable 
objects are nulled or replaced with a String representation. Otherwise the 
client simply gets an error and no-one can tell why. However, this is an 
action only for the serialization process. Or ensure - as already proposed 
in this thread - that only serializable types can be added by using an 
appropriate method/type signature.

- Jörg



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to