Skip to content

Including a non-breaking space ( ) in a note causes an exception #8

Description

@alexmsmartins

The CKEditor for notes is the one introducing this entity.
It is important to remember this is a HTML entity but not a XML entity. And this is why scala.xml does not handle it well.

The resulting exception is:

org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 33; The entity "nbsp" was referenced, but not declared.
    org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
    org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
    org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEntityReference(Unknown Source)
    org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    javax.xml.parsers.SAXParser.parse(SAXParser.java:392)
    scala.xml.factory.XMLLoader$class.loadXML(XMLLoader.scala:40)
    scala.xml.XML$.loadXML(XML.scala:40)
    scala.xml.factory.XMLLoader$class.loadString(XMLLoader.scala:59)
    scala.xml.XML$.loadString(XML.scala:40)
    pt.cnbc.wikimodels.util.SBMLHandler$.wrapHTML(SBMLHandler.scala:101)
    pt.cnbc.wikimodels.util.SBMLHandler$.genNotesFromHTML(SBMLHandler.scala:80)
    pt.cnbc.wikimodels.sbmlVisitors.Bean2SBMLConverter$.visitModel(Bean2SBMLConverter.scala:49)
    pt.cnbc.wikimodels.sbmlVisitors.Bean2SBMLConverter$.visit(Bean2SBMLConverter.scala:31)
    pt.cnbc.wikimodels.client.record.SBaseRecord$class.toXML(SBMLRecord.scala:130)
    pt.cnbc.wikimodels.client.record.SBMLModelRecord.toXML(SBMLRecord.scala:141)
    pt.cnbc.wikimodels.client.record.SBaseRecord$class.updateRestRec(SBMLRecord.scala:101)
    pt.cnbc.wikimodels.client.record.SBMLModelRecord.updateRestRec(SBMLRecord.scala:141)
    pt.cnbc.wikimodels.client.snippet.EditModelScreen.finish(SBMLScreens.scala:162)
    net.liftweb.http.LiftScreen$class.doFinish(LiftScreen.scala:1434)
    pt.cnbc.wikimodels.client.snippet.EditModelScreen.doFinish(SBMLScreens.scala:154)
    net.liftweb.http.LiftScreen$$anonfun$renderHtml$3.apply(LiftScreen.scala:1405)
    net.liftweb.http.LiftScreen$$anonfun$renderHtml$3.apply(LiftScreen.scala:1405)
    net.liftweb.http.ScreenWizardRendered$$anonfun$37$$anonfun$apply$31.apply(LiftScreen.scala:991)
    net.liftweb.http.ScreenWizardRendered$$anonfun$37$$anonfun$apply$31.apply(LiftScreen.scala:990)
    net.liftweb.http.S$NFuncHolder$$anonfun$apply$5.apply(S.scala:190)
    net.liftweb.http.S$NFuncHolder$$anonfun$apply$5.apply(S.scala:190)
    scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
    scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
    scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
    scala.collection.immutable.List.foreach(List.scala:45)
    scala.collection.TraversableLike$class.map(TraversableLike.scala:194)
    scala.collection.immutable.List.map(List.scala:45)
    net.liftweb.http.S$NFuncHolder.apply(S.scala:190)
    net.liftweb.http.S$ProxyFuncHolder.apply(S.scala:115)
    net.liftweb.http.LiftSession$$anonfun$buildFunc$1$2.apply(LiftSession.scala:651)
    net.liftweb.http.LiftSession$$anonfun$16$$anonfun$apply$39.apply(LiftSession.scala:667)
    net.liftweb.http.LiftSession$$anonfun$16$$anonfun$apply$39.apply(LiftSession.scala:667)
    scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
    scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
    scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
    scala.collection.immutable.List.foreach(List.scala:45)
    scala.collection.TraversableLike$class.map(TraversableLike.scala:194)
    scala.collection.immutable.List.map(List.scala:45)
    net.liftweb.http.LiftSession$$anonfun$16.apply(LiftSession.scala:667)
    net.liftweb.http.LiftSession$$anonfun$16.apply(LiftSession.scala:656)
    scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
    scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
    scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
    scala.collection.immutable.List.foreach(List.scala:45)
    scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:200)
    scala.collection.immutable.List.flatMap(List.scala:45)
    net.liftweb.http.LiftSession.runParams(LiftSession.scala:655)
    net.liftweb.http.LiftSession.processRequest(LiftSession.scala:1074)
    net.liftweb.http.LiftServlet.net$liftweb$http$LiftServlet$$dispatchStatefulRequest(LiftServlet.scala:414)
    net.liftweb.http.LiftServlet$$anonfun$doSession$1$1.apply(LiftServlet.scala:279)
    net.liftweb.http.LiftServlet$$anonfun$doSession$1$1.apply(LiftServlet.scala:279)
    net.liftweb.http.S$class.net$liftweb$http$S$$wrapQuery(S.scala:1376)
    net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit$1$$anonfun$apply$34.apply(S.scala:1524)
    net.liftweb.http.S$class.net$liftweb$http$S$$doAround(S.scala:1305)
    net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit$1.apply(S.scala:1522)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.S$class.net$liftweb$http$S$$_nest2InnerInit(S.scala:1521)
    net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$38$$anonfun$apply$39$$anonfun$apply$40$$anonfun$apply$41.apply(S.scala:1561)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.S$$anonfun$withReq$1.apply(S.scala:1571)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.S$class.withReq(S.scala:1570)
    net.liftweb.http.S$.withReq(S.scala:48)
    net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$38$$anonfun$apply$39$$anonfun$apply$40.apply(S.scala:1560)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$38$$anonfun$apply$39.apply(S.scala:1559)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$38.apply(S.scala:1558)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1.apply(S.scala:1557)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.S$class.net$liftweb$http$S$$_innerInit(S.scala:1556)
    net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$44$$anonfun$apply$45$$anonfun$apply$46$$anonfun$apply$47$$anonfun$apply$48.apply(S.scala:1594)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$44$$anonfun$apply$45$$anonfun$apply$46$$anonfun$apply$47.apply(S.scala:1592)
    net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:613)
    net.liftweb.http.RequestVarHandler$.apply(Vars.scala:515)
    net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$44$$anonfun$apply$45$$anonfun$apply$46.apply(S.scala:1591)
    net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:613)
    net.liftweb.http.TransientRequestVarHandler$.apply(Vars.scala:528)
    net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$44$$anonfun$apply$45.apply(S.scala:1590)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$44.apply(S.scala:1589)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1.apply(S.scala:1588)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.S$class.net$liftweb$http$S$$_init(S.scala:1587)
    net.liftweb.http.S$class.init(S.scala:1190)
    net.liftweb.http.LiftServlet.doSession$1(LiftServlet.scala:278)
    net.liftweb.http.LiftServlet.doService(LiftServlet.scala:288)
    net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:132)
    net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:131)
    net.liftweb.util.TimeHelpers$class.calcTime(TimeHelpers.scala:344)
    net.liftweb.util.Helpers$.calcTime(Helpers.scala:34)
    net.liftweb.util.TimeHelpers$class.logTime(TimeHelpers.scala:363)
    net.liftweb.util.Helpers$.logTime(Helpers.scala:34)
    net.liftweb.http.LiftServlet.doIt$1(LiftServlet.scala:131)
    net.liftweb.http.LiftServlet.service(LiftServlet.scala:142)
    net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply$mcV$sp(HTTPProvider.scala:72)
    net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(HTTPProvider.scala:71)
    net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(HTTPProvider.scala:71)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.URLRewriter$.doWith(Req.scala:1253)
    net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply$mcV$sp(HTTPProvider.scala:70)
    net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply(HTTPProvider.scala:70)
    net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply(HTTPProvider.scala:70)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply$mcV$sp(HTTPProvider.scala:66)
    net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply(HTTPProvider.scala:60)
    net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply(HTTPProvider.scala:60)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.provider.HTTPProvider$class.service(HTTPProvider.scala:60)
    net.liftweb.http.LiftFilter.service(LiftServlet.scala:757)
    net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(ServletFilterProvider.scala:67)
    net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply(ServletFilterProvider.scala:62)
    net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply(ServletFilterProvider.scala:62)
    net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$19.apply(Vars.scala:619)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18.apply(Vars.scala:618)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17.apply(Vars.scala:617)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16.apply(Vars.scala:616)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:615)
    net.liftweb.http.RequestVarHandler$.apply(Vars.scala:515)
    net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply(ServletFilterProvider.scala:61)
    net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply(ServletFilterProvider.scala:61)
    net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$19.apply(Vars.scala:619)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18.apply(Vars.scala:618)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17.apply(Vars.scala:617)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16.apply(Vars.scala:616)
    net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
    net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:615)
    net.liftweb.http.provider.servlet.ServletFilterProvider$class.doFilter(ServletFilterProvider.scala:60)
    net.liftweb.http.LiftFilter.doFilter(LiftServlet.scala:757)
    org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    org.mortbay.jetty.handler.ContextHandler.__handle(ContextHandler.java:765)
    org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java)
    org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:440)
    org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    org.mortbay.jetty.Server.handle(Server.java:326)
    org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943)
    org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
    org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
    org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
    org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)```

Metadata

Metadata

Assignees

Labels

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions