[bug] NPE with strange propertyName

6 posts / 0 new
Last post
atao
Offline
Joined: 10/15/2008
[bug] NPE with strange propertyName

Vincent,

When I start my application I get a NPE, see below, with this instruction (in CheckStartup.doIt):

        List<Payslip> payslips = getHibernateTemplate(context).find("from Payslip");

The value of the argument "propertyName" sent to AbstractComponentDescriptor.getPropertyDescriptor is "_org.popsuite.hr.model.Contract.payslipsIndexBackref".

Indeed there is no such property name in the model (or in view and frontend configuration files). I put Contract model below.

Regards

Pierre

 

  <bean
    id="Contract"
    class="org.jspresso.framework.model.descriptor.entity.basic.BasicEntityDescriptor">
    <constructor-arg value="org.popsuite.hr.model.Contract" />
<!--
    <property name="ancestorDescriptors">
      <list>
        <ref  local="identifiableContract" />
      </list>
    </property>
     -->
    <property name="propertyDescriptors">
      <list>
        <bean parent="refType">
          <property name="name"                 value="worker" />
          <property name="referencedDescriptor" ref="Worker" />
          <property name="reverseRelationEnd"   ref="Worker-contracts" />
          <property name="mandatory"            value="true" />
        </bean>
        <bean parent="refType">
          <property name="name"                 value="job" />
          <property name="referencedDescriptor" ref="Job" />
        </bean>
        <bean parent="refType">
          <property name="name"                 value="refPeriodType" />
          <property name="referencedDescriptor" ref="ReferencePeriodType" />
        </bean>
        <bean parent="refType">
          <property name="name"                 value="effectivity" />
          <property name="referencedDescriptor" ref="DateInterval" />
        </bean>
        <bean parent="calendarType">
          <property name="name"                 value="start" />
          <property name="delegateWritable"     value="true"/>
          <property name="delegateClassName"    value="org.popsuite.hr.model.extension.ContractExtension" />
        </bean>
        <bean parent="calendarType">
          <property name="name"                 value="end" />
          <property name="delegateWritable"     value="true"/>
          <property name="delegateClassName"    value="org.popsuite.hr.model.extension.ContractExtension" />
        </bean>
        <bean parent="refType">
          <property name="name"                 value="grossWage" />
          <property name="referencedDescriptor" ref="Money" />
          <property name="delegateWritable"     value="true"/>
          <property name="delegateClassName"    value="org.popsuite.hr.model.extension.ContractMapper" />
        </bean>
        <bean parent="refType">
          <property name="name"                 value="forJspressoMapping_GrossWage" />
          <property name="referencedDescriptor" ref="Money" />
          <property name="sqlName"              value="GROSS_WAGE"/>
          <property name="i18nNameKey"          value="contract.gross.wage"/>
        </bean>
        <bean parent="refType">
          <property name="name"                 value="paymentDay" />
          <property name="referencedDescriptor" ref="PaymentDay" />
        </bean>
        <ref local="Contract-payslips" />
      </list>
    </property>
    <property name="serviceDelegateClassNames">
      <map>
        <entry key="org.popsuite.hr.model.service.ContractService"
               value="org.popsuite.hr.model.service.ContractServiceDelegate" />
      </map>
    </property>
    <property name="serviceDelegateBeanNames">
      <map>
        <entry key="org.popsuite.hr.model.service.PayrollService"
               value="contractPayrollServiceDelegate" />
      </map>
    </property>
  </bean>
 
  <bean
    id="Contract-payslips"
    parent="collectionType">
    <property name="name"        value="payslips" />
    <property name="composition" value="true" />
    <property name="referencedDescriptor" >
      <bean
        parent="collection">
        <property name="collectionInterface" value="java.util.List" />
        <property name="elementDescriptor"   ref="Payslip" />
      </bean>
    </property>
  </bean>

==================================================================================================

java.lang.NullPointerException
    at org.jspresso.framework.model.descriptor.basic.AbstractComponentDescriptor.getPropertyDescriptor(AbstractComponentDescriptor.java:245)
    at org.jspresso.framework.model.component.basic.AbstractComponentInvocationHandler.straightGetProperty(AbstractComponentInvocationHandler.java:573)
    at org.jspresso.framework.model.component.basic.AbstractComponentInvocationHandler.straightSetProperty(AbstractComponentInvocationHandler.java:1080)
    at org.jspresso.framework.model.component.basic.AbstractComponentInvocationHandler.straightSetProperties(AbstractComponentInvocationHandler.java:1074)
    at org.jspresso.framework.model.component.basic.AbstractComponentInvocationHandler.invoke(AbstractComponentInvocationHandler.java:173)
    at org.jspresso.framework.model.entity.basic.BasicEntityInvocationHandler.invoke(BasicEntityInvocationHandler.java:92)
    at $Proxy25.straightSetProperties(Unknown Source)
    at org.jspresso.framework.application.backend.persistence.hibernate.ControllerAwareEntityProxyInterceptor.onLoad(ControllerAwareEntityProxyInterceptor.java:163)
    at org.hibernate.event.def.DefaultPreLoadEventListener.onPreLoad(DefaultPreLoadEventListener.java:41)
    at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:148)
    at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:877)
    at org.hibernate.loader.Loader.doQuery(Loader.java:752)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
    at org.hibernate.loader.Loader.doList(Loader.java:2232)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
    at org.hibernate.loader.Loader.list(Loader.java:2124)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
    at org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:930)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
    at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:921)
    at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:913)
    at org.popsuite.hr.development.CheckStartup.doIt(CheckStartup.java:55)
    at org.popsuite.hr.development.CheckStartup.execute(CheckStartup.java:22)
    at org.jspresso.framework.application.backend.AbstractBackendController.execute(AbstractBackendController.java:143)
    at org.jspresso.framework.application.frontend.controller.AbstractFrontendController.executeBackend(AbstractFrontendController.java:653)
    at org.jspresso.framework.application.frontend.controller.AbstractFrontendController.execute(AbstractFrontendController.java:230)
    at org.jspresso.framework.application.frontend.controller.swing.DefaultSwingController.execute(DefaultSwingController.java:279)
    at org.jspresso.framework.application.frontend.controller.swing.DefaultSwingController$3.actionPerformed(DefaultSwingController.java:602)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at org.jvnet.substance.utils.RolloverButtonListener.mouseReleased(RolloverButtonListener.java:109)
    at java.awt.Component.processMouseEvent(Component.java:6263)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6028)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4630)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2475)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at org.jspresso.framework.util.swing.WaitCursorEventQueue.dispatchEvent(WaitCursorEventQueue.java:56)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
    at java.awt.Dialog$1.run(Dialog.java:1045)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at org.jspresso.framework.util.swing.WaitCursorEventQueue.dispatchEvent(WaitCursorEventQueue.java:56)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception occurred during event dispatching:
java.lang.NullPointerException
    at java.text.StringCharacterIterator.<init>(StringCharacterIterator.java:58)
    at java.text.StringCharacterIterator.<init>(StringCharacterIterator.java:47)
    at org.jspresso.framework.util.html.HtmlHelper.escapeForHTML(HtmlHelper.java:97)
    at org.jspresso.framework.application.frontend.controller.swing.DefaultSwingController.handleException(DefaultSwingController.java:347)
    at org.jspresso.framework.application.frontend.controller.AbstractFrontendController.execute(AbstractFrontendController.java:234)
    at org.jspresso.framework.application.frontend.controller.swing.DefaultSwingController.execute(DefaultSwingController.java:279)
    at org.jspresso.framework.application.frontend.controller.swing.DefaultSwingController$3.actionPerformed(DefaultSwingController.java:602)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at org.jvnet.substance.utils.RolloverButtonListener.mouseReleased(RolloverButtonListener.java:109)
    at java.awt.Component.processMouseEvent(Component.java:6263)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6028)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4630)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2475)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at org.jspresso.framework.util.swing.WaitCursorEventQueue.dispatchEvent(WaitCursorEventQueue.java:56)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
    at java.awt.Dialog$1.run(Dialog.java:1045)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at org.jspresso.framework.util.swing.WaitCursorEventQueue.dispatchEvent(WaitCursorEventQueue.java:56)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

 

atao
Offline
Joined: 10/15/2008
[bug] NPE with strange propertyName

Vincent,

 

ATM as a workaround, I have replaced the "list" type by a "set" in the definition of "Contract-payslips". Then everything runs fine.

 

Regards

Pierre

vvandens
Offline
Joined: 05/29/2008
[bug] NPE with strange propertyName

Hi Pierre,

Thank you for having reported the problem. It should be fixed in the new SNAPSHOT that I'm deploying right now.

 

Regards,

Vincent

atao
Offline
Joined: 10/15/2008
[bug] NPE with strange propertyName

Vincent,

 

Your patch in ControllerAwareEntityProxyInterceptor works but only ... if I duplicate it locally.

The snapshot downloaded this morning doesn't seem to include the patch.

 

Regards

Pierre

vvandens
Offline
Joined: 05/29/2008
[bug] NPE with strange propertyName

Pierre,

You are right. I just don't know what happened. I'm re-deploying now.

 

Thanks,

Vincent

atao
Offline
Joined: 10/15/2008
[bug] NPE with strange propertyName

Vincent,

It's OK now.

Regards

Pierre