irods-contrib / irods-cloud-browser

DFC Web Based cloud browser
BSD 2-Clause "Simplified" License
19 stars 13 forks source link

Error downloading files where filenames contain the character '+' #207

Open othmar-weber opened 6 years ago

othmar-weber commented 6 years ago

There are two file in a directory:

[webo@by08tq ~]$ ils
/cardtestZone/home/me:
  test
  te+st
  C- /cardtestZone/home/me/.irods

The first file could be downloaded via cloud browser. Downloading the 2nd causes a stacktrace: {"error":{"cause":null,"class":"org.irods.jargon.core.exception.FileNotFoundException","localizedMessage":"unable to find file under path","message":"unable to find file under path","stackTrace":[{"class":"java.lang.StackTraceElement","className":"org.irods.jargon.core.pub.CollectionListingUtils","fileName":"CollectionListingUtils.java","lineNumber":261,"methodName":"handleNoObjStatUnderRootOrHomeByLookingForPublicAndHome","nativeMethod":false},{"class":"java.lang.StackTraceElement","className":"org.irods.jargon.core.pub.CollectionListingUtils","fileName":"CollectionListingUtils.java","lineNumber":1203,"methodName":"retrieveObjectStatForPath","nativeMethod":false},{"class":"java.lang.StackTraceElement","className":"org.irods.jargon.core.pub.CollectionAndDataObjectListAndSearchAOImpl","fileName":"CollectionAndDataObjectListAndSearchAOImpl.java","lineNumber":1491,"methodName":"retrieveObjectStatForPath","nativeMethod":false},{"class":"java.lang.StackTraceElement","className":"org.irods.jargon.idrop.web.services.FileService","fileName":"FileService.groovy","lineNumber":110,"methodName":"obtainInputStreamForDownloadSingleFile","nativeMethod":false},{"class":"java.lang.StackTraceElement","className":"org.irods.jargon.idrop.web.controllers.DownloadController","fileName":"DownloadController.groovy","lineNumber":43,"methodName":"show","nativeMethod":false},{"class":"java.lang.StackTraceElement","className":"grails.plugin.cache.web.filter.PageFragmentCachingFilter","fileName":"PageFragmentCachingFilter.java","lineNumber":198,"methodName":"doFilter","nativeMethod":false},{"class":"java.lang.StackTraceElement","className":"grails.plugin.cache.web.filter.AbstractFilter","fileName":"AbstractFilter.java","lineNumber":63,"methodName":"doFilter","nativeMethod":false},{"class":"java.lang.StackTraceElement","className":"com.brandseye.cors.CorsFilter","fileName":"CorsFilter.java","lineNumber":82,"methodName":"doFilter","nativeMethod":false},{"class":"java.lang.StackTraceElement","className":"java.util.concurrent.ThreadPoolExecutor","fileName":"ThreadPoolExecutor.java","lineNumber":1149,"methodName":"runWorker","nativeMethod":false},{"class":"java.lang.StackTraceElement","className":"java.util.concurrent.ThreadPoolExecutor$Worker","fileName":"ThreadPoolExecutor.java","lineNumber":624,"methodName":"run","nativeMethod":false},{"class":"java.lang.StackTraceElement","className":"java.lang.Thread","fileName":"Thread.java","lineNumber":748,"methodName":"run","nativeMethod":false}],"suppressed":[],"underlyingIRODSExceptionCode":0}}

Looks like the character "+" is not handled correctly.