litiengine
litiengine copied to clipboard
Make Resource loading less error prone from capitalization
When I accidentally tried to load a TmxMap "lab" instead of its actual name "Lab", I got very misleading Error messages because the XML parser tried to parse the directory "lab" instead of the contained "Lab.tmx". Maybe we should include a mechanism to prevent this kind of misunderstanding and check for lowercased matches in the project Resources.
Thu Mar 26 18:02:34 CET 2020 Main Update Loop threw an exception:
de.gurkenlabs.litiengine.resources.ResourceLoadException: de.gurkenlabs.litiengine.environment.tilemap.xml.TmxException
at de.gurkenlabs.litiengine.resources.ResourcesContainer.loadResource(ResourcesContainer.java:391)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1688)
at de.gurkenlabs.litiengine.resources.ResourcesContainer.get(ResourcesContainer.java:273)
at de.gurkenlabs.litiengine.resources.ResourcesContainer.get(ResourcesContainer.java:207)
at de.gurkenlabs.litiengine.environment.GameWorld.getEnvironment(GameWorld.java:315)
at de.gurkenlabs.litiengine.environment.GameWorld.loadEnvironment(GameWorld.java:420)
at de.gurkenlabs.drlepus.GameSession.lambda$1(GameSession.java:74)
at de.gurkenlabs.litiengine.GameLoop.executeTimedActions(GameLoop.java:104)
at de.gurkenlabs.litiengine.GameLoop.process(GameLoop.java:83)
at de.gurkenlabs.litiengine.UpdateLoop.run(UpdateLoop.java:57)
Caused by: de.gurkenlabs.litiengine.environment.tilemap.xml.TmxException
at de.gurkenlabs.litiengine.resources.Maps.load(Maps.java:31)
at de.gurkenlabs.litiengine.resources.Maps.load(Maps.java:1)
at de.gurkenlabs.litiengine.resources.ResourcesContainer.loadResource(ResourcesContainer.java:389)
... 9 more
Caused by: javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException; systemId: file:/D:/Git/drlepus/bin/main/lab; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.]
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:335)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:548)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:234)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:199)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:162)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:171)
at de.gurkenlabs.litiengine.util.io.XmlUtilities.read(XmlUtilities.java:94)
at de.gurkenlabs.litiengine.resources.Maps.load(Maps.java:29)
... 11 more
Caused by: org.xml.sax.SAXParseException; systemId: file:/D:/Git/drlepus/bin/main/lab; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1472)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:994)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:228)
... 17 more