[ https://issues.apache.org/jira/browse/CB-9752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14990117#comment-14990117 ]
ASF subversion and git services commented on CB-9752: ----------------------------------------------------- Commit 76c8fd5e43598ea660c2db64eb08e2659b45a575 in cordova-plugin-file's branch refs/heads/master from [~jasongin] [ https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-file.git;h=76c8fd5 ] Fix CB-9752: getDirectory fails on valid directory with assets filesystem Calls to FileEntry.getDirectory() on an asset entry would internally call the AssetFileSystem.listAssets() method using an asset path with a trailing slash, regardless of whether a trailing slash was included by the user. But neither the asset list cache (from cdvasset.manifest) nor Android's AssetManager.list() API support matching a path with a trailing slash. That resulted in a TypeMismatchException thrown from AssetFileSystem.getFileForLocalURL(), because the asset path was found but not matched as a directory as expected by the caller. This fix removes the trailing slash from the asset path before matching against the asset list cache or calling Android's AssetManager.list() API. A new unit test for getting asset directories fails without and passes with the fix. While I'm here, I'm also adding a unit test for reading asset file contents. There are a couple old bug reports about that (CB-7273, CB-8350). The bugs don't repro anymore, but I'm adding the test anyway since there wasn't good test coverage before. > getDirectory fails on valid directory with assets filesystem > ------------------------------------------------------------ > > Key: CB-9752 > URL: https://issues.apache.org/jira/browse/CB-9752 > Project: Apache Cordova > Issue Type: Bug > Components: Android, Plugin File > Environment: cordova 5.3.3 > cordova android 4.0.0 > cordova-plugin-file 2.0.0 > *** using build-extras.gradle to speed up lookups (as per README.md for > plugin) *** > Reporter: Denis Babineau > Assignee: Jason Ginchereau > > The following JS snippet fails with "failed to get www directory": > window.resolveLocalFileSystemURL(cordova.file.applicationDirectory, > function(appDir) { > appDir.getDirectory('www', {create:false}, function(wwwDir) { > console.log("success!"); > }, function() { > console.log("failed to get www directory"); > }); > }, function() { > console.log("Failed to get application directory"); > }); > I narrowed it down to AssetFilesystem.java's listAssets() method called from > isDirectory() which returns the "new String[0];" (assetPath = 'www/' in this > method) which in turn causes isDirectory() to return false. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org