Characters which are not created properly, then saved,
cause the application to not load properly.
Version:
"Spaghetti" available for public download on 20/08/2006
Method:
1 - Create a new group with singular and plural names.
2 - Select "new <membername>".
3 - Give the member only a name (real world - first box)
4 - Save member (at top right)
5 - Save group
6 - Return to menu
7 - Exit and restart
Effect:
The following exception is thrown at launch:-
DefaultValidationEventHandler: [FATAL_ERROR]:
Unexpected end of element {}:Equip
ment
Location: line 79 of
file:/C:/Documents%20and%20Settings/Moggie/Desktop/New
%20Folder/save/entities/Big%20Man.xml
javax.xml.bind.UnmarshalException: Unexpected end of
element {}:Equipment
at
rpg.jaxb.character.impl.runtime.SAXUnmarshallerHandlerImpl.handleEven
t(SAXUnmarshallerHandlerImpl.java:571)
at
rpg.jaxb.character.impl.runtime.AbstractUnmarshallingEventHandlerImpl
.reportError(AbstractUnmarshallingEventHandlerImpl.java:137)
at
rpg.jaxb.character.impl.runtime.AbstractUnmarshallingEventHandlerImpl
.reportError(AbstractUnmarshallingEventHandlerImpl.java:134)
at
rpg.jaxb.character.impl.runtime.AbstractUnmarshallingEventHandlerImpl
.unexpectedLeaveElement(AbstractUnmarshallingEventHandlerImpl.java:151)
at
rpg.jaxb.character.impl.runtime.AbstractUnmarshallingEventHandlerImpl
.leaveElement(AbstractUnmarshallingEventHandlerImpl.java:61)
at
rpg.jaxb.character.impl.CharacterTypeImpl$Unmarshaller.leaveElement(C
haracterTypeImpl.java:10573)
at
rpg.jaxb.character.impl.runtime.SAXUnmarshallerHandlerImpl.endElement
(SAXUnmarshallerHandlerImpl.java:134)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endEleme
nt(Unknown Source)
at
com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.
emptyElement(Unknown Source)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scan
StartElement(Unknown Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l$FragmentContentDispatcher.dispatch(Unknown Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l.scanDocument(Unknown Source)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
nknown Source)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
nknown Source)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown
So
urce)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Un
known Source)
at
rpg.jaxb.character.impl.runtime.UnmarshallerImpl.unmarshal(Unmarshall
erImpl.java:138)
at
javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnm
arshallerImpl.java:131)
at
javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnm
arshallerImpl.java:136)
at
javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnm
arshallerImpl.java:145)
at
javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnm
arshallerImpl.java:163)
at
rpg.util.xml.XMLCharacterFileKit.getEntity(XMLCharacterFileKit.java:6
2)
at
rpg.util.xml.XMLGroupFileKit.getGroups(XMLGroupFileKit.java:113)
at
rpg.gui.gamemaster.initialcontrol.LoadGroupPanel.<init>(LoadGroupPane
l.java:42)
at
rpg.gui.gamemaster.initialcontrol.InitialControlPanel.<init>(InitialC
ontrolPanel.java:42)
at
rpg.gamemaster.GameMaster.initiateMainPane(GameMaster.java:100)
at
rpg.gamemaster.GameMaster.<init>(GameMaster.java:77)
at rpg.gamemaster.Main.main(Main.java:34)
Exception in thread "main" java.lang.NullPointerException
at
rpg.gui.group.GroupActivePanel.update(GroupActivePanel.java:83)
at java.util.Observable.notifyObservers(Unknown
Source)
at java.util.Observable.notifyObservers(Unknown
Source)
at rpg.group.Group.addEntity(Group.java:45)
at
rpg.util.xml.XMLGroupFileKit.getGroups(XMLGroupFileKit.java:113)
at
rpg.gui.gamemaster.initialcontrol.LoadGroupPanel.<init>(LoadGroupPane
l.java:42)
at
rpg.gui.gamemaster.initialcontrol.InitialControlPanel.<init>(InitialC
ontrolPanel.java:42)
at
rpg.gamemaster.GameMaster.initiateMainPane(GameMaster.java:100)
at
rpg.gamemaster.GameMaster.<init>(GameMaster.java:77)
at rpg.gamemaster.Main.main(Main.java:34)
This means that any malformed or corrupted save file
will prevent the application from loading at all.
Resolution:
There are two steps to be taken:-
First, character data entry must be verified at
creation before saving
Second, malformed or corrupted saves must be correctly
handled. The XML loader must handle load exceptions.
These exceptions must not prevent the application from
loading.
Note:
The category and Group of this report are incorrect.
Other options must be added.