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());
...
}
...
}