[JIRA] Created: (CAY-605) Hessian serialization mechanism converts Floats to Doubles

From: Andrus Adamchik (JIRA) ("Andrus)
Date: Sat Jul 22 2006 - 23:43:48 EDT

  • Next message: Marcel: "Re: ROP project restructuring suggestion [Was: ROP server side exception]"

    Hessian serialization mechanism converts Floats to Doubles
    ----------------------------------------------------------

             Key: CAY-605
             URL: http://issues.apache.org/cayenne/browse/CAY-605
         Project: Cayenne
            Type: Bug

      Components: Cayenne Core Library
        Versions: 1.2 [STABLE], 3.0
        Reporter: Andrus Adamchik
     Assigned to: Andrus Adamchik
        Priority: Minor
         Fix For: 1.2 [STABLE], 3.0

    If an entity has a field defined as java.lang.Float, then sending a client object to the server, and then retrieving it back results in this exception:

    java.lang.IllegalArgumentException
            at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
            at java.lang.reflect.Field.set(Field.java:656)
            at org.objectstyle.cayenne.property.FieldAccessor.writePropertyDirectly(FieldAccessor.java:115)
            at org.objectstyle.cayenne.property.SimpleProperty.writePropertyDirectly(SimpleProperty.java:119)
            at org.objectstyle.cayenne.property.SimpleProperty.writeProperty(SimpleProperty.java:90)
            at org.objectstyle.cayenne.map.EntityDescriptor$SimplePersistentProperty.writeProperty(EntityDescriptor.java:341)
            at org.objectstyle.cayenne.util.ObjectDetachOperation$1.visitProperty(ObjectDetachOperation.java:195)
            at org.objectstyle.cayenne.property.SimpleProperty.visit(SimpleProperty.java:98)
            at org.objectstyle.cayenne.property.BaseClassDescriptor.visitProperties(BaseClassDescriptor.java:250)
            at org.objectstyle.cayenne.util.ObjectDetachOperation.detach(ObjectDetachOperation.java:134)
            at org.objectstyle.cayenne.access.ClientServerChannelQueryAction.toClientObjects(ClientServerChannelQueryAction.java:221)
            at org.objectstyle.cayenne.access.ClientServerChannelQueryAction.interceptObjectConversion(ClientServerChannelQueryAction.java:181)
            at org.objectstyle.cayenne.access.ClientServerChannelQueryAction.execute(ClientServerChannelQueryAction.java:106)
            at org.objectstyle.cayenne.access.ClientServerChannel.onQuery(ClientServerChannel.java:99)
            at org.objectstyle.cayenne.remote.service.DispatchHelper.dispatch(DispatchHelper.java:76)
            at org.objectstyle.cayenne.remote.service.BaseRemoteService.processMessage(BaseRemoteService.java:182)
     

    As it turned out Hessian serializes Floats as Doubles... Will have to add a custom handler.

    -- 
    This message is automatically generated by JIRA.
    -
    If you think it was sent incorrectly contact one of the administrators:
       http://issues.apache.org/cayenne/secure/Administrators.jspa
    -
    For more information on JIRA, see:
       http://www.atlassian.com/software/jira
    



    This archive was generated by hypermail 2.0.0 : Sat Jul 22 2006 - 23:46:06 EDT