Uploaded image for project: 'XWiki Platform'
  1. XWiki Platform
  2. XWIKI-23579

Adding a field with an empty name to a document's class irreversibly breaks it

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Minor
    • None
    • 17.7.0
    • Old Core
    • None
    • Unknown

    Description

      Calling com.xpn.xwiki.objects.classes.BaseClass#add*Field(fieldName, ...) with fieldName = "" and saving it causes the following stack trace when viewing the corresponding document.

      One can't remove the document or edit anything from the UI.

      • Calling add*Field with an empty or null string should raise an exception or return false.
      • the XML representation of a document should not end up with tags without names (<>) should a field with an empty name be found
          Error number 3202 in 3: Exception while reading document [xwiki:Main.WebHome()]
      com.xpn.xwiki.XWikiException: Error number 3202 in 3: Exception while reading document [xwiki:Main.WebHome()]
      	at com.xpn.xwiki.store.XWikiHibernateStore.loadXWikiDoc(XWikiHibernateStore.java:1233)
      	at com.xpn.xwiki.store.XWikiCacheStore.lambda$loadXWikiDoc$2(XWikiCacheStore.java:436)
      	at org.xwiki.cache.internal.CacheLoader$LoaderEntry.lambda$new$0(CacheLoader.java:71)
      	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
      	at org.xwiki.cache.internal.CacheLoader.runLoader(CacheLoader.java:179)
      	at org.xwiki.cache.internal.CacheLoader.loadAndStoreInCache(CacheLoader.java:118)
      	at com.xpn.xwiki.store.XWikiCacheStore.loadXWikiDoc(XWikiCacheStore.java:432)
      	at com.xpn.xwiki.XWiki.getDocument(XWiki.java:2201)
      	at com.xpn.xwiki.XWiki.getDocument(XWiki.java:2263)
      	at com.xpn.xwiki.XWiki.prepareDocuments(XWiki.java:5815)
      	at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:548)
      	at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:339)
      	at com.xpn.xwiki.web.LegacyActionServlet.service(LegacyActionServlet.java:111)
      	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
      	at org.eclipse.jetty.ee10.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1394)
      	at org.eclipse.jetty.ee10.servlet.ServletHolder.handle(ServletHolder.java:751)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1622)
      	at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:123)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:71)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:66)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:135)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:212)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.xwiki.container.servlet.filters.internal.SafeRedirectFilter.doFilter(SafeRedirectFilter.java:106)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.xwiki.container.servlet.filters.internal.ResolveRelativeRedirectFilter.doFilter(ResolveRelativeRedirectFilter.java:129)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.xwiki.container.servlet.filters.internal.SourceURLResolverFilter.doFilter(SourceURLResolverFilter.java:177)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:120)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:208)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.eclipse.jetty.ee10.websocket.servlet.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:195)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$MappedServlet.handle(ServletHandler.java:1555)
      	at org.eclipse.jetty.ee10.servlet.ServletChannel.dispatch(ServletChannel.java:823)
      	at org.eclipse.jetty.ee10.servlet.ServletChannel.handle(ServletChannel.java:440)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler.handle(ServletHandler.java:470)
      	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:575)
      	at org.eclipse.jetty.ee10.servlet.SessionHandler.handle(SessionHandler.java:717)
      	at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1071)
      	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:181)
      	at org.eclipse.jetty.server.Server.handle(Server.java:182)
      	at org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:677)
      	at org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:416)
      	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322)
      	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99)
      	at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:480)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:443)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:201)
      	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:311)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:981)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1211)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1166)
      	at java.base/java.lang.Thread.run(Thread.java:1583)
      Caused by: com.xpn.xwiki.XWikiException: Error number 3202 in 3: Exception while reading document [xwiki:MetadataPro.Sets.my set.WebHome()]
      	at com.xpn.xwiki.store.XWikiHibernateStore.loadXWikiDoc(XWikiHibernateStore.java:1233)
      	at com.xpn.xwiki.store.XWikiCacheStore.lambda$loadXWikiDoc$2(XWikiCacheStore.java:436)
      	at org.xwiki.cache.internal.CacheLoader$LoaderEntry.lambda$new$0(CacheLoader.java:71)
      	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
      	at org.xwiki.cache.internal.CacheLoader.runLoader(CacheLoader.java:179)
      	at org.xwiki.cache.internal.CacheLoader.loadAndStoreInCache(CacheLoader.java:118)
      	at com.xpn.xwiki.store.XWikiCacheStore.loadXWikiDoc(XWikiCacheStore.java:432)
      	at com.xpn.xwiki.XWiki.getDocument(XWiki.java:2201)
      	at com.xpn.xwiki.XWiki.getDocument(XWiki.java:2263)
      	at com.xpn.xwiki.XWiki.getXClass(XWiki.java:7131)
      	at com.xpn.xwiki.objects.classes.BaseClass.newCustomClassInstance(BaseClass.java:1350)
      	at com.xpn.xwiki.store.XWikiHibernateStore.loadXWikiDoc(XWikiHibernateStore.java:1159)
      	... 69 more
      Caused by: com.xpn.xwiki.XWikiException: Error number 2002 in 2: Error parsing xml
      	at com.xpn.xwiki.objects.BaseElement.fromXML(BaseElement.java:581)
      	at com.xpn.xwiki.objects.classes.BaseClass.fromXML(BaseClass.java:538)
      	at com.xpn.xwiki.store.XWikiHibernateStore.loadXWikiDoc(XWikiHibernateStore.java:1117)
      	... 80 more
      Caused by: org.xwiki.filter.FilterException: Failed to read XAR XML document
      	at org.xwiki.filter.xar.internal.input.XARInputFilterStream.readDocument(XARInputFilterStream.java:129)
      	at org.xwiki.filter.xar.internal.input.XARInputFilterStream.read(XARInputFilterStream.java:77)
      	at org.xwiki.filter.xar.internal.input.XARInputFilterStream.read(XARInputFilterStream.java:47)
      	at org.xwiki.filter.input.AbstractBeanInputFilterStream.read(AbstractBeanInputFilterStream.java:79)
      	at com.xpn.xwiki.internal.filter.XWikiDocumentFilterUtils.importEntity(XWikiDocumentFilterUtils.java:191)
      	at com.xpn.xwiki.internal.filter.XWikiDocumentFilterUtils.importEntity(XWikiDocumentFilterUtils.java:155)
      	at com.xpn.xwiki.objects.BaseElement.fromXML(BaseElement.java:579)
      	... 82 more
      Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '>' (code 62) in content after '<' (malformed start element?).
       at [row,col \{unknown-source}]: [1,165]
      	at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:628)
      	at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2934)
      	at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1122)
      	at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1203)
      	at org.xwiki.filter.xar.internal.input.ClassReader.read(ClassReader.java:86)
      	at org.xwiki.filter.xar.internal.input.ClassReader.read(ClassReader.java:43)
      	at org.xwiki.filter.xar.internal.input.DocumentLocaleReader.readClass(DocumentLocaleReader.java:548)
      	at org.xwiki.filter.xar.internal.input.DocumentLocaleReader.read(DocumentLocaleReader.java:368)
      	at org.xwiki.filter.xar.internal.input.DocumentLocaleReader.read(DocumentLocaleReader.java:335)
      	at org.xwiki.filter.xar.internal.input.XARInputFilterStream.readDocument(XARInputFilterStream.java:127)
      	... 88 more
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            rjakse Raphaƫl Jakse
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated: