Re: Hollow state

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Wed Feb 19 2003 - 13:07:42 EST

  • Next message: Schneider, Eric: "RE: Hollow state"

    Hmm.. the code in question in CayenneDataObject is:

       if (persistenceState == PersistenceState.HOLLOW) {
             dataContext.refetchObject(objectId);
       }

    The failure means that object is both HOLLOW and has no associated
    DataContext. Normally only TRANSIENT objects have null DataContext. I
    suspect the root cause of this is deserialization in Tapestry. The fact
    that it works on 2.3, but not 2.4 also points to that.

    I haven't looked at Tapestry 2.4 yet, is there changes in how
    serialization works between pages?

    Andrus

    > I'm developing an application with Cayenne 1.0a5 and Tapestry 2.4 alpha
    > 3. I'm getting exceptions like this:
    >
    > java.lang.NullPointerException
    > *
    > org.objectstyle.cayenne.CayenneDataObject.readProperty(CayenneDataObject
    > .java:183)
    >
    > *
    > com.ixe.isis.ixenetadmin.model._CustomerService.getService(_CustomerServ
    > ice.java:134)
    >
    > *
    > com.ixe.isis.ixenetadmin.model.CustomerService.getDescription(CustomerSe
    > rvice.java:18)
    >
    > *
    > com.ixe.isis.ixenetadmin.pages.customer.ServiceSignatureGroups.getTitle(
    > ServiceSignatureGroups.java:64)
    >
    > * java.lang.reflect.Method.invoke(Native Method)
    >
    > * ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java)
    >
    > * ognl.OgnlRuntime.getMethodValue(OgnlRuntime.java)
    >
    > *
    > ognl.ObjectPropertyAccessor.getPossibleProperty(ObjectPropertyAccessor.j
    > ava)
    >
    > *
    > ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java)
    >
    > * ognl.OgnlRuntime.getProperty(OgnlRuntime.java)
    >
    > * ognl.ASTProperty.getValueBody(ASTProperty.java)
    >
    > * ognl.SimpleNode.getValue(SimpleNode.java)
    >
    > * ognl.Ognl.getValue(Ognl.java)
    >
    > * ognl.Ognl.getValue(Ognl.java)
    >
    > *
    > net.sf.tapestry.binding.ExpressionBinding.resolveProperty(ExpressionBind
    > ing.java:232)
    >
    > *
    > net.sf.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.ja
    > va:225)
    >
    > *
    > net.sf.tapestry.binding.AbstractBinding.getString(AbstractBinding.java:1
    > 41)
    >
    > The real problem is some cayenne EOs are in hollow state and refetch is
    > not automatic.
    >
    > ixenetadmin/ServiceSignatureGroups/customer {[]<oid:
    > com.ixe.isis.ixenetadmin.model.Customer: <RIM_NO: 34177>; state:
    > hollow>}
    > ixenetadmin/ServiceSignatureGroups/service {[]<oid:
    > com.ixe.isis.ixenetadmin.model.CustomerService: <ID_CLIENTE_SERVICIO:
    > 4e5817c2-c0a8-141e-0069-cc0e0373ff20>; state: hollow>}
    >
    > I can "patch" the code to refetch every EO in hollow state, but is this
    > the "normal" behavior?
    >
    > Note: these objects are persistant properties to the page.
    >
    > I developed a prototype using Tapestry 2.3 and didn't experience
    > something similar.
    >
    > Any ideas?
    >
    > Regards
    >
    > David
    >
    >



    This archive was generated by hypermail 2.0.0 : Wed Feb 19 2003 - 13:07:43 EST