Datamodel: casting exception on @Destroy - Submit bug?
bsgcic Nov 27, 2009 7:31 AMIs there a bug that should be reported for the following?:
Getting the following error for a datamodel when it is used to display an h:dataTable. The dataTable is displayed fine. However, in the log, I receive:
15:04:42,312 WARN [Component] Exception calling component @Destroy method: deliveryDeadlineOptionList javax.ejb.EJBException: java.lang.ClassCastException: java.util.ArrayList cannot be cast to javax.faces.model.DataModel at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:77) ...
The bean for this is used for the following two purposes:
1. Value of an s:selectItems
2. Value of an h:dataTable (i.e., as mentioned above)
The bean:
@Stateful @Scope(CONVERSATION) @Name("deliveryDeadlineOptionList") @TransactionAttribute(REQUIRES_NEW) public class DeliveryDeadlineOptionListAction implements DeliveryDeadlineOptionList, Serializable { @PersistenceContext(type=PersistenceContextType.EXTENDED) @In(create=true) private EntityManager entityManager; @DataModel private List<DeliveryDeadlineOption> deliveryDeadlineOptionsList; @DataModelSelection private DeliveryDeadlineOption deliveryDeadlineOption; @Create public void create() {getDeliveryDeadlineOptionsList();} @Factory public List<DeliveryDeadlineOption> getDeliveryDeadlineOptionsList(){ return (List<DeliveryDeadlineOption>) entityManager.createQuery("select c from DeliveryDeadlineOption c") .getResultList(); } public DeliveryDeadlineOption getDeliveryDeadlineOption(){return deliveryDeadlineOption;} @Destroy @Remove public void destroy() {} }
Relevant portions of the bean where deliveryDeadlineOptionList is used for the s:selectItems functionality:
@Stateful @Name("quoteCalculate") @Scope(ScopeType.CONVERSATION) public class QuoteCalculatingAction implements QuoteCalculating { @PersistenceContext(type=PersistenceContextType.EXTENDED) @In(create=true) private EntityManager entityManager; ... @In(value="deliveryDeadlineOptionsList", create=true) private List<DeliveryDeadlineOption> deliveryDeadlineOptions; @DataModel private List<DeliveryDeadlineOption> selectedDeliveryDeadlineOptions; ... (Standard getters and setters for above) public void selectedDeliveryDeadlineOptionsChange(ValueChangeEvent valueChangeEvent) { setSelectedDeliveryDeadlineOptions((List<DeliveryDeadlineOption>) valueChangeEvent.getNewValue()); ... } ... }