Hi,
I'm getting the following NullPointerException in web flow:
No transition found on occurence of event 'processChanges' in state 'errorDisplay' of flow 'manageorder-flow' -- valid transitional criteria are array<TransitionCriteria>[[empty]] -- likely programmer error, check the set of TransitionCriteria for this state.
Here is the code:
Here is the method code:Code:<view-state id="submitOrder" model="onlineAdoptions" view ="submitOrder"> <transition on="processOrderSubmit"> <evaluate expression="changeActionFactory.createChangeActions(requestParameters.execution, requestParameters.uowXml)" result="requestScope.uow" /> <evaluate expression="unitOfWorkManager.applyChangeActionUOW(flowRequestContext, conversationScope.onlineAdoptionsPathScope)" /> <render fragments="procesOrderSubmitResult" /> </transition> <transition on-exception="com.follett.fheg.ecommerce.onlineadoptions.service.AdoptionServiceException" to="submitOrder"> <evaluate expression="T(com.follett.fheg.ecommerce.onlineadoptions.util.ExceptionUtils).buildServerResponseMessage(flashScope.rootCauseException)" result="flashScope.serverResponseMessage" /> <render fragments="procesOrderSubmitResult" /> </transition> <transition on="processOrderComplete" to="manageOrderComplete" /> <transition on="back" to="reviewOrder" bind="false"> <evaluate expression="ddcsLoaderAction.loadDDCSForOnlineAdoption(flowRequestContext, conversationScope.onlineAdoption, courseSearchScope)" /> </transition> </view-state>
Code:/** * Factory class for creating instances of Change Actions. This class implements * BeanFactoryAware in order to inject the BeanFactory reference into the change * actions being created. * * @author mnolan */ public class OnlineAdoptionChangeActionFactory implements BeanFactoryAware { @SuppressWarnings("unused") private static final String cvsid = "$Id: OnlineAdoptionChangeActionFactory.java,v 1.5 2011/03/31 19:29:07 smukher Exp $"; private static final String PACKAGE_PATH = OnlineAdoptionChangeActionFactory.class.getPackage().getName(); private BeanFactory beanFactory = null ; private Unmarshaller unmarshaller = null ; /** * Takes in the ChangeAction string generated from the browser and gives * back a list of concrete <code>OnlineAdoptionChangeAction</code>. * * @param xmlString * @return * @throws AdoptionChangeActionException */ public OnlineAdoptionChangeActionUnitOfWork createChangeActions ( final String executionId, final String xmlString ) throws AdoptionChangeActionException { if (StringUtils.isBlank(xmlString)) { throw new AdoptionChangeActionException(LogicalErrorCode.CHANGE_ACTION_FACTORY_TRANSFORMATION_ERROR); } ChangeActions changeActionsDataList = null ; try { final Source source = new StreamSource(org.apache.commons.io.IOUtils.toInputStream(xmlString)); changeActionsDataList = (ChangeActions) this.unmarshaller.unmarshal(source) ; } catch (final IOException e) { throw new AdoptionChangeActionException(LogicalErrorCode.CHANGE_ACTION_FACTORY_TRANSFORMATION_ERROR, e) ; } return this.createChangeActions(executionId, changeActionsDataList) ; } /** * Creates ChangeActions on the fly taking in the <code>ChangeActions</code> * JAXB class. * * @param changeActionsDataList * Input list of ChangeAction * @return List of class that implements OnlineAdoptionChangeAction * @throws AdoptionChangeActionException */ public OnlineAdoptionChangeActionUnitOfWork createChangeActions ( final String executionId, final ChangeActions changeActionsDataList ) throws AdoptionChangeActionException { final List < OnlineAdoptionChangeAction<?> > changeActionResultList = new LinkedList < OnlineAdoptionChangeAction<?> >() ; if (CollectionUtils.isNotEmpty(changeActionsDataList.getChangeAction())) { for (final ChangeAction changeActionData : changeActionsDataList.getChangeAction()) { try { final ChangeActionType changeActionType = changeActionData.getActionName() ; final Class < ? > changeActionClass = Class.forName(PACKAGE_PATH + "." + changeActionType.value()) ; @SuppressWarnings("unchecked") final Constructor < OnlineAdoptionChangeAction > constructor = ConstructorUtils.getAccessibleConstructor( changeActionClass, new Class[0]) ; @SuppressWarnings("unchecked") final OnlineAdoptionChangeAction<ChangeAction> changeAction = constructor.newInstance() ; if (changeAction instanceof BeanFactoryAware) { final BeanFactoryAware beanFactoryAwareChangeAction = (BeanFactoryAware) changeAction ; beanFactoryAwareChangeAction.setBeanFactory(this.beanFactory) ; } changeAction.init(changeActionData); changeActionResultList.add(changeAction) ; } catch (final Exception e) { // mnolan - We are handling exception generically as we want // to treat them all in the same manner if (!(e instanceof AdoptionChangeActionException)) { throw new AdoptionChangeActionException(LogicalErrorCode.CHANGE_ACTION_FACTORY_CHANGE_ACTION_CONSTRUCTION_ERROR, e) ; } else { throw (AdoptionChangeActionException) e; } } } } return new OnlineAdoptionChangeActionUnitOfWork(executionId, changeActionResultList) ; }


Reply With Quote
