TEST97 - Issue with VFEAT

Description

Test97 TYPE:Test.Test97 MULT:YES STACK:YES CHOOSE:NOCHOICE BONUS:CHECKS|Will|1

and we are using:

Test97 ~ Virtual VFEAT:Test97

To apply it virtually. This is the stack I get:

16:36:16.34 SEVERE AWT-EventQueue-0 CharacterAbilities:448 Failed to add ability due to
java.lang.NullPointerException
at java.util.ArrayList.addAll(Unknown Source)
at pcgen.gui2.facade.Gui2InfoFactory.processAbilities(Gui2InfoFactory.java:2039) at pcgen.gui2.facade.Gui2InfoFactory.getChoices(Gui2InfoFactory.java:2021)
at pcgen.gui2.tabs.ability.AbilityTreeTableModel$CategoryTreeTableNode.buildAbilityNode(AbilityTreeTableModel.java:231)
at pcgen.gui2.tabs.ability.AbilityTreeTableModel$CategoryTreeTableNode.elementAdded(AbilityTreeTableModel.java:240)
at pcgen.core.facade.util.AbstractListFacade.fireElementAdded(AbstractListFacade.java:117)
at pcgen.core.facade.util.SortedListFacade.elementAdded(SortedListFacade.java:105)
at pcgen.core.facade.util.AbstractListFacade.fireElementAdded(AbstractListFacade.java:117)
at pcgen.core.facade.util.DefaultListFacade.addElement(DefaultListFacade.java:112)
at pcgen.core.facade.util.DefaultListFacade.addElement(DefaultListFacade.java:106)
at pcgen.core.facade.util.DefaultListFacade.updateContentsNoOrder(DefaultListFacade.java:236)
at pcgen.gui2.facade.CharacterAbilities.rebuildAbilityLists(CharacterAbilities.java:263)
at pcgen.gui2.facade.CharacterAbilities$GrantedAbilityChangeHandler.dataAdded(CharacterAbilities.java:921)
at pcgen.cdom.facet.base.AbstractDataFacet.fireDataFacetChangeEvent(AbstractDataFacet.java:248)
at pcgen.cdom.facet.base.AbstractDataFacet.fireDataFacetChangeEvent(AbstractDataFacet.java:194)
at pcgen.cdom.facet.GrantedAbilityFacet.add(GrantedAbilityFacet.java:102)
at pcgen.cdom.facet.GrantedAbilityFacet.dataAdded(GrantedAbilityFacet.java:813)
at pcgen.cdom.facet.base.AbstractDataFacet.fireDataFacetChangeEvent(AbstractDataFacet.java:248)
at pcgen.cdom.facet.base.AbstractDataFacet.fireDataFacetChangeEvent(AbstractDataFacet.java:194)
at pcgen.cdom.facet.base.AbstractListFacet.add(AbstractListFacet.java:69)
at pcgen.core.PlayerCharacter.applyAbility(PlayerCharacter.java:9099)
at pcgen.core.PlayerCharacter.processAbilityList(PlayerCharacter.java:9062)
at pcgen.core.PlayerCharacter.processAbilityListsOnAdd(PlayerCharacter.java:9028)
at pcgen.core.PlayerCharacter.processAddition(PlayerCharacter.java:10112)
at pcgen.cdom.facet.ObjectAdditionFacet.dataAdded(ObjectAdditionFacet.java:60)
at pcgen.cdom.facet.base.AbstractDataFacet.fireDataFacetChangeEvent(AbstractDataFacet.java:248)
at pcgen.cdom.facet.base.AbstractDataFacet.fireDataFacetChangeEvent(AbstractDataFacet.java:194)
at pcgen.cdom.facet.base.AbstractSourcedListFacet.add(AbstractSourcedListFacet.java:95)
at pcgen.cdom.facet.CDOMObjectConsolidationFacet.add(CDOMObjectConsolidationFacet.java:70)
at pcgen.cdom.facet.CDOMObjectConsolidationFacet.dataAdded(CDOMObjectConsolidationFacet.java:136)
at pcgen.cdom.facet.base.AbstractDataFacet.fireDataFacetChangeEvent(AbstractDataFacet.java:248)
at pcgen.cdom.facet.base.AbstractDataFacet.fireDataFacetChangeEvent(AbstractDataFacet.java:194)
at pcgen.cdom.facet.base.AbstractSourcedListFacet.add(AbstractSourcedListFacet.java:95)
at pcgen.cdom.facet.CharacterConsolidationFacet.dataAdded(CharacterConsolidationFacet.java:65)
at pcgen.cdom.facet.base.AbstractDataFacet.fireDataFacetChangeEvent(AbstractDataFacet.java:248)
at pcgen.cdom.facet.input.ActiveAbilityFacet.add(ActiveAbilityFacet.java:77)
at pcgen.core.PlayerCharacter.addAbilityNeedCheck(PlayerCharacter.java:8848)
at pcgen.gui2.facade.CharacterAbilities.addAbility(CharacterAbilities.java:440)
at pcgen.gui2.facade.CharacterFacadeImpl.addAbility(CharacterFacadeImpl.java:620)
at pcgen.gui2.tabs.AbilityChooserTab$AddAction.actionPerformed(AbilityChooserTab.java:686)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

16:40:33.31 SEVERE AWT-EventQueue-0 Main:590 Uncaught error - ignoring
java.lang.ArrayIndexOutOfBoundsException: node has no children
at javax.swing.tree.DefaultMutableTreeNode.getChildAt(Unknown Source)
at pcgen.gui2.tabs.ability.AbilityTreeTableModel$CategoryTreeTableNode.elementModified(AbilityTreeTableModel.java:265)
at pcgen.core.facade.util.AbstractListFacade.fireElementModified(AbstractListFacade.java:195)
at pcgen.core.facade.util.SortedListFacade.elementModified(SortedListFacade.java:136)
at pcgen.core.facade.util.AbstractListFacade.fireElementModified(AbstractListFacade.java:195)
at pcgen.core.facade.util.DefaultListFacade.modifyElement(DefaultListFacade.java:140)
at pcgen.gui2.facade.CharacterAbilities.refreshChoices(CharacterAbilities.java:764)
at pcgen.gui2.facade.CharacterAbilities$1.run(CharacterAbilities.java:724)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.WaitDispatchSupport$2.run(Unknown Source)
at java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(Unknown Source)
at java.awt.Dialog.show(Unknown Source)
at javax.swing.JOptionPane.showOptionDialog(Unknown Source)
at javax.swing.JOptionPane.showMessageDialog(Unknown Source)
at javax.swing.JOptionPane.showMessageDialog(Unknown Source)
at pcgen.gui2.PCGenFrame.showErrorMessage(PCGenFrame.java:1702)
at pcgen.gui2.util.ShowMessageGuiObserver.showMessageDialog(ShowMessageGuiObserver.java:79)
at pcgen.gui2.util.ShowMessageGuiObserver.update(ShowMessageGuiObserver.java:58)
at java.util.Observable.notifyObservers(Unknown Source)
at pcgen.core.utils.ShowMessageDelegate.showMessageDialog(ShowMessageDelegate.java:55)
at pcgen.core.utils.ShowMessageDelegate.showMessageDialog(ShowMessageDelegate.java:49)
at pcgen.gui2.facade.CharacterAbilities.addAbility(CharacterAbilities.java:449)
at pcgen.gui2.facade.CharacterFacadeImpl.addAbility(CharacterFacadeImpl.java:620)
at pcgen.gui2.tabs.AbilityChooserTab$AddAction.actionPerformed(AbilityChooserTab.java:686)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

16:40:34.262 SEVERE AWT-EventQueue-0 Main:590 Uncaught error - ignoring
java.lang.ArrayIndexOutOfBoundsException: node has no children
at javax.swing.tree.DefaultMutableTreeNode.getChildAt(Unknown Source)
at pcgen.gui2.tabs.ability.AbilityTreeTableModel$CategoryTreeTableNode.elementModified(AbilityTreeTableModel.java:265)
at pcgen.core.facade.util.AbstractListFacade.fireElementModified(AbstractListFacade.java:195)
at pcgen.core.facade.util.SortedListFacade.elementModified(SortedListFacade.java:136)
at pcgen.core.facade.util.AbstractListFacade.fireElementModified(AbstractListFacade.java:195)
at pcgen.core.facade.util.DefaultListFacade.modifyElement(DefaultListFacade.java:140)
at pcgen.gui2.facade.CharacterAbilities.refreshChoices(CharacterAbilities.java:764)
at pcgen.gui2.facade.CharacterAbilities$1.run(CharacterAbilities.java:724)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Environment

Latest SVN build (6.03)

Activity

Show:
Tom Parker
February 20, 2014, 9:02 PM

Please DO NOT fix this by gating for null on the addAll call without attaching further detail indicating why the gate is the appropriate solution

By my reading the method is entered for any CNAbility on the PC, and then those without a CHOOSE are filtered. Only those with a CHOOSE should hit the addAll call, and anything applied to the PC with a CHOOSE should have associations... so the NPE here implies to me something is going wrong earlier in the code. Putting in a gate at this location only hides the error.

Tom Parker
June 5, 2014, 5:51 PM

Committed revision 24042.

Fixed

Assignee

Tom Parker

Reporter

Andrew Maitland

Labels

None

Theme

None

Epic/Theme

None

Pending User Input

None

Fix versions

Priority

Minor
Configure