xwikisas / application-filemanager

XWiki application to manage a hierarchy of folders and files
GNU Lesser General Public License v2.1
0 stars 4 forks source link

Files with punctuation marks can't be accessed #81

Closed ane-gabriela closed 9 months ago

ane-gabriela commented 10 months ago

Issue maybe related to The PDF file isn't shown when it contains a comma in the title

Steps to reproduce:

  1. Click on File Manager
  2. Upload the following file Te$t with #special + ch@rs - test. It's ^a test! Test ~1 = and (2) & {3}, [4]. 100% a test 1; 2` 3; 5. and 10 spaces..pdf
  3. Access the uploaded file FirstAccess
  4. Click on Attachments ErrrosPDF

Expected results: The document uploaded is shown in the wiki page and in the attachments section.

Actual results: Because of the comma , the title of the attachment is separated in 2 separate tabs which results in an error "Error: The document [xwiki:FileManager.Te$t with #special + ch] does not exists or you have no access to that document." The file isn't shown.

In the wiki console:

2023-10-18 17:59:45,217 [qtp382750013-174 - http://localhost:8080/xwiki/bin/view/FileManager/Te%24t%20with%20%23special%20%2B%20ch%40rs%20-%20test.%20It's%20%5Ea%20test!%20Test%20~1%20%3D%20and%20(2)%20%26%20%7B3%7D%2C%20%5B4%5D.%20100%25%20a%20test%201%3B%202%60%203%3B%205.%20%20%20%20%20%20%20%20%20%20and%2010%20spaces..pdf] ERROR o.a.v.rendering - Left side ($paths.length) of comparison operation has null value at xwiki:FileManagerCode.RecentFilesPanel[line 5, column 21] Oct 18, 2023 5:59:49 PM org.restlet.engine.application.StatusFilter doHandle WARNING: Exception or error caught by status service java.lang.IllegalArgumentException: The value given array contains not enough elements (contains 0, but need at least 1) at org.restlet.ext.jaxrs.AbstractUriBuilder$ArrayVariableResolver.resolve(AbstractUriBuilder.java:84) at org.restlet.ext.jaxrs.AbstractUriBuilder$ArrayVariableResolver.resolve(AbstractUriBuilder.java:65) at org.restlet.routing.Template.format(Template.java:392) at org.restlet.ext.jaxrs.AbstractUriBuilder.build(AbstractUriBuilder.java:201) at org.xwiki.livedata.internal.rest.AbstractLiveDataResource.withNamespaceAndSourceParams(AbstractLiveDataResource.java:160) at org.xwiki.livedata.internal.rest.AbstractLiveDataResource.withNamespaceAndSourceParams(AbstractLiveDataResource.java:138) at org.xwiki.livedata.internal.rest.DefaultLiveDataEntriesResource.createEntries(DefaultLiveDataEntriesResource.java:172) at org.xwiki.livedata.internal.rest.DefaultLiveDataEntriesResource.getEntries(DefaultLiveDataEntriesResource.java:200) at org.xwiki.livedata.internal.rest.DefaultLiveDataEntriesResource.getEntries(DefaultLiveDataEntriesResource.java:79) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.restlet.ext.jaxrs.internal.wrappers.AbstractMethodWrapper.internalInvoke(AbstractMethodWrapper.java:162) at org.restlet.ext.jaxrs.internal.wrappers.ResourceMethod.invoke(ResourceMethod.java:281) at org.restlet.ext.jaxrs.JaxRsRestlet.invokeMethod(JaxRsRestlet.java:997) at org.restlet.ext.jaxrs.JaxRsRestlet.handle(JaxRsRestlet.java:746) at org.restlet.routing.Filter.doHandle(Filter.java:150) at org.restlet.routing.Filter.handle(Filter.java:197) at org.restlet.routing.Router.doHandle(Router.java:422) at org.restlet.routing.Router.handle(Router.java:641) at org.restlet.routing.Filter.doHandle(Filter.java:150) at org.restlet.routing.Filter.handle(Filter.java:197) at org.restlet.routing.Filter.doHandle(Filter.java:150) at org.restlet.routing.Filter.handle(Filter.java:197) at org.restlet.routing.Filter.doHandle(Filter.java:150) at org.restlet.routing.Filter.handle(Filter.java:197) at org.restlet.routing.Filter.doHandle(Filter.java:150) at org.restlet.routing.Filter.handle(Filter.java:197) at org.restlet.routing.Filter.doHandle(Filter.java:150) at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140) at org.restlet.routing.Filter.handle(Filter.java:197) at org.restlet.routing.Filter.doHandle(Filter.java:150) at org.restlet.routing.Filter.handle(Filter.java:197) at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202) at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:77) at org.restlet.Application.handle(Application.java:385) at org.restlet.routing.Filter.doHandle(Filter.java:150) at org.restlet.routing.Filter.handle(Filter.java:197) at org.restlet.routing.Router.doHandle(Router.java:422) at org.restlet.routing.Router.handle(Router.java:641) at org.restlet.routing.Filter.doHandle(Filter.java:150) at org.restlet.routing.Filter.handle(Filter.java:197) at org.restlet.routing.Router.doHandle(Router.java:422) at org.restlet.routing.Router.handle(Router.java:641) at org.restlet.routing.Filter.doHandle(Filter.java:150) at org.restlet.routing.Filter.handle(Filter.java:197) at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202) at org.restlet.Component.handle(Component.java:408) at org.restlet.Server.handle(Server.java:507) at org.restlet.engine.connector.ServerHelper.handle(ServerHelper.java:63) at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:143) at org.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:1117) at javax.servlet.http.HttpServlet.service(HttpServlet.java:590) at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1419) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764) at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1624) at com.xpn.xwiki.web.XWikiContextInitializationFilter.doFilter(XWikiContextInitializationFilter.java:82) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594) at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594) at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:132) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594) at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594) at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594) at org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:164) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:506) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1571) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1378) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:463) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1544) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1300) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:192) at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) at org.eclipse.jetty.server.Server.handle(Server.java:562) at org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:418) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:675) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:410) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:319) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) at org.eclipse.jetty.io.SocketChannelEndPoint$1.run(SocketChannelEndPoint.java:101) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:412) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:381) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:268) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.lambda$new$0(AdaptiveExecutionStrategy.java:138) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:407) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:894) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1038) at java.base/java.lang.Thread.run(Thread.java:834)

Same issue for Te$t with #special + ch@rs - test. It's ^a test! Test ~1 = and (2) & {3}, [4]. 100% a test 1; 2` 3; 5. and 10 spaces..docx

Docx

For https://github.com/xwikisas/application-filemanager/assets/40691112/ef3a2c6b-51e6-45ac-b564-40397a600d42 the video is shown but an error appears when accessing the attachments section, the same error as above appears in the wiki console.

mp4

Environment: Windows 11, XWiki 14.10.18 with MySQL 8.1, Chrome 118, File Manager Application (Pro) 2.6

petrenkonikita112263 commented 10 months ago

@ane-gabriela have you checked the version of dependency on File Manager (Pro) - what is the version of PDF Viewever on your side? I assume it's 2.3.3 which is the default for clean install latest version of File Manager (Pro). You need to execute Updater in EM and update this dependency.

I couldn't reproduce issue on 13.10 XWiki with File Manager (Pro) latest 2.6 and dependency version 2.5.2 image

For me, what can be done - update version of PDF Viewer (Pro) as dependency to the latest in File Manager (Pro), which allows on first installation to have latest version it. And from what I see, I guess it'll be included in release 2.6.1 - commit a149c3b.

Other formats based on your examples

image image

petrenkonikita112263 commented 9 months ago

I'm adding label "Cannot reproduce" because the issue doesn't raise on latest version FM (Pro) 2.6.1. @snazare you can close it later.

Cannot reproduce on XWiki 14.10.18 with latest version of FM (Pro) msedge_z3bx7hdcuY image

True - issue isn't reproducible on XWiki 15.9 with FM 2.6.1.

snazare commented 9 months ago

solved by https://github.com/xwikisas/macro-pdfviewer/issues/48

ane-gabriela commented 8 months ago

@petrenkonikita112263 I've retested with XWiki 14.10.18, File Manager Application (Pro) 2.6.1, Chrome 119, Windows 11 and the issue seems fixed but only the PDF files with special chars issue. The office files with special chars and the attachments section of videos and mp3 remain with issues - see https://github.com/xwikisas/application-filemanager/issues/93