You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by st...@apache.org on 2013/10/10 19:56:03 UTC
[1/4] git commit: CB-4504: Updating FileUtils.java to compensate for
Java porting failures in the Android SDK. This fails because Java knows
nothing about android_asset not being an actual filesystem
Updated Branches:
refs/heads/master 0e2ce7be5 -> 27288cd5c
CB-4504: Updating FileUtils.java to compensate for Java porting failures in the Android SDK. This fails because Java knows nothing about android_asset not being an actual filesystem
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/commit/963f8b8b
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/tree/963f8b8b
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/diff/963f8b8b
Branch: refs/heads/master
Commit: 963f8b8b12f613a654e39c2bc113dade23098b7b
Parents: 0e2ce7b
Author: Joe Bowser <bo...@apache.org>
Authored: Thu Sep 26 12:03:46 2013 -0700
Committer: Joe Bowser <bo...@apache.org>
Committed: Thu Sep 26 12:04:11 2013 -0700
----------------------------------------------------------------------
src/android/FileUtils.java | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/963f8b8b/src/android/FileUtils.java
----------------------------------------------------------------------
diff --git a/src/android/FileUtils.java b/src/android/FileUtils.java
index 405eb83..e42c5af 100755
--- a/src/android/FileUtils.java
+++ b/src/android/FileUtils.java
@@ -1016,12 +1016,21 @@ public class FileUtils extends CordovaPlugin {
rawData = data.getBytes();
}
ByteArrayInputStream in = new ByteArrayInputStream(rawData);
- FileOutputStream out = new FileOutputStream(filename, append);
- byte buff[] = new byte[rawData.length];
- in.read(buff, 0, buff.length);
- out.write(buff, 0, rawData.length);
- out.flush();
- out.close();
+ try
+ {
+ FileOutputStream out = new FileOutputStream(filename, append);
+ byte buff[] = new byte[rawData.length];
+ in.read(buff, 0, buff.length);
+ out.write(buff, 0, rawData.length);
+ out.flush();
+ out.close();
+ }
+ catch (NullPointerException e)
+ {
+ // This is a bug in the Android implementation of the Java Stack
+ NoModificationAllowedException realException = new NoModificationAllowedException(filename);
+ throw realException;
+ }
return rawData.length;
}
[3/4] git commit: CB-5020 - File plugin should execute on a separate
thread
Posted by st...@apache.org.
CB-5020 - File plugin should execute on a separate thread
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/commit/4eb576ce
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/tree/4eb576ce
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/diff/4eb576ce
Branch: refs/heads/master
Commit: 4eb576ce068f1ea03eeed010e63905e3faff4976
Parents: 8a29d64
Author: David Kemp <dr...@chromium.org>
Authored: Tue Oct 8 16:26:28 2013 -0400
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Tue Oct 8 21:43:45 2013 -0400
----------------------------------------------------------------------
src/android/FileUtils.java | 393 ++++++++++++++++++++++++++--------------
1 file changed, 259 insertions(+), 134 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/4eb576ce/src/android/FileUtils.java
----------------------------------------------------------------------
diff --git a/src/android/FileUtils.java b/src/android/FileUtils.java
index e42c5af..29026f0 100755
--- a/src/android/FileUtils.java
+++ b/src/android/FileUtils.java
@@ -72,10 +72,8 @@ public class FileUtils extends CordovaPlugin {
public static int RESOURCE = 2;
public static int APPLICATION = 3;
- /**
- * Constructor.
- */
- public FileUtils() {
+ private interface FileOp {
+ void run( ) throws Exception;
}
/**
@@ -86,144 +84,271 @@ public class FileUtils extends CordovaPlugin {
* @param callbackContext The callback context used when calling back into JavaScript.
* @return True if the action was valid, false otherwise.
*/
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- try {
- if (action.equals("testSaveLocationExists")) {
- boolean b = DirectoryManager.testSaveLocationExists();
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, b));
- }
- else if (action.equals("getFreeDiskSpace")) {
- long l = DirectoryManager.getFreeDiskSpace(false);
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, l));
- }
- else if (action.equals("testFileExists")) {
- boolean b = DirectoryManager.testFileExists(args.getString(0));
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, b));
- }
- else if (action.equals("testDirectoryExists")) {
- boolean b = DirectoryManager.testFileExists(args.getString(0));
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, b));
- }
- else if (action.equals("readAsText")) {
- String encoding = args.getString(1);
- int start = args.getInt(2);
- int end = args.getInt(3);
-
- this.readFileAs(args.getString(0), start, end, callbackContext, encoding, PluginResult.MESSAGE_TYPE_STRING);
- }
- else if (action.equals("readAsDataURL")) {
- int start = args.getInt(1);
- int end = args.getInt(2);
-
- this.readFileAs(args.getString(0), start, end, callbackContext, null, -1);
- }
- else if (action.equals("readAsArrayBuffer")) {
- int start = args.getInt(1);
- int end = args.getInt(2);
-
- this.readFileAs(args.getString(0), start, end, callbackContext, null, PluginResult.MESSAGE_TYPE_ARRAYBUFFER);
- }
- else if (action.equals("readAsBinaryString")) {
- int start = args.getInt(1);
- int end = args.getInt(2);
-
- this.readFileAs(args.getString(0), start, end, callbackContext, null, PluginResult.MESSAGE_TYPE_BINARYSTRING);
- }
- else if (action.equals("write")) {
- long fileSize = this.write(args.getString(0), args.getString(1), args.getInt(2), args.getBoolean(3));
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, fileSize));
- }
- else if (action.equals("truncate")) {
- long fileSize = this.truncateFile(args.getString(0), args.getLong(1));
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, fileSize));
- }
- else if (action.equals("requestFileSystem")) {
- long size = args.optLong(1);
- if (size != 0 && size > (DirectoryManager.getFreeDiskSpace(true) * 1024)) {
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, FileUtils.QUOTA_EXCEEDED_ERR));
- } else {
- JSONObject obj = requestFileSystem(args.getInt(0));
+ public boolean execute(String action, final JSONArray args, final CallbackContext callbackContext) throws JSONException {
+ if (action.equals("testSaveLocationExists")) {
+ threadhelper( new FileOp( ){
+ public void run() {
+ boolean b = DirectoryManager.testSaveLocationExists();
+ callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, b));
+ }
+ },callbackContext);
+ }
+ else if (action.equals("getFreeDiskSpace")) {
+ threadhelper( new FileOp( ){
+ public void run() {
+ long l = DirectoryManager.getFreeDiskSpace(false);
+ callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, l));
+ }
+ },callbackContext);
+ }
+ else if (action.equals("testFileExists")) {
+ final String fname=args.getString(0);
+ threadhelper( new FileOp( ){
+ public void run() {
+ boolean b = DirectoryManager.testFileExists(fname);
+ callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, b));
+ }
+ }, callbackContext);
+ }
+ else if (action.equals("testDirectoryExists")) {
+ final String fname=args.getString(0);
+ threadhelper( new FileOp( ){
+ public void run() {
+ boolean b = DirectoryManager.testFileExists(fname);
+ callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, b));
+ }
+ }, callbackContext);
+ }
+ else if (action.equals("readAsText")) {
+ final String encoding = args.getString(1);
+ final int start = args.getInt(2);
+ final int end = args.getInt(3);
+ final String fname=args.getString(0);
+ threadhelper( new FileOp( ){
+ public void run() {
+ readFileAs(fname, start, end, callbackContext, encoding, PluginResult.MESSAGE_TYPE_STRING);
+ }
+ }, callbackContext);
+ }
+ else if (action.equals("readAsDataURL")) {
+ final int start = args.getInt(1);
+ final int end = args.getInt(2);
+ final String fname=args.getString(0);
+ threadhelper( new FileOp( ){
+ public void run() {
+ readFileAs(fname, start, end, callbackContext, null, -1);
+ }
+ }, callbackContext);
+ }
+ else if (action.equals("readAsArrayBuffer")) {
+ final int start = args.getInt(1);
+ final int end = args.getInt(2);
+ final String fname=args.getString(0);
+ threadhelper( new FileOp( ){
+ public void run() {
+ readFileAs(fname, start, end, callbackContext, null, PluginResult.MESSAGE_TYPE_ARRAYBUFFER);
+ }
+ },callbackContext);
+ }
+ else if (action.equals("readAsBinaryString")) {
+ final int start = args.getInt(1);
+ final int end = args.getInt(2);
+ final String fname=args.getString(0);
+ threadhelper( new FileOp( ){
+ public void run() {
+ readFileAs(fname, start, end, callbackContext, null, PluginResult.MESSAGE_TYPE_BINARYSTRING);
+ }
+ }, callbackContext);
+ }
+ else if (action.equals("write")) {
+ final String fname=args.getString(0);
+ final String data=args.getString(1);
+ final int offset=args.getInt(2);
+ final Boolean isBinary=args.getBoolean(3);
+ threadhelper( new FileOp( ){
+ public void run() throws FileNotFoundException, IOException, NoModificationAllowedException {
+ long fileSize = write(fname, data, offset, isBinary);
+ callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, fileSize));
+ }
+ }, callbackContext);
+ }
+ else if (action.equals("truncate")) {
+ final String fname=args.getString(0);
+ final int offset=args.getInt(1);
+ threadhelper( new FileOp( ){
+ public void run( ) throws FileNotFoundException, IOException, NoModificationAllowedException {
+ long fileSize = truncateFile(fname, offset);
+ callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, fileSize));
+ }
+ }, callbackContext);
+ }
+ else if (action.equals("requestFileSystem")) {
+ final int fstype=args.getInt(0);
+ final long size = args.optLong(1);
+ threadhelper( new FileOp( ){
+ public void run() throws IOException, JSONException {
+ if (size != 0 && size > (DirectoryManager.getFreeDiskSpace(true) * 1024)) {
+ callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, FileUtils.QUOTA_EXCEEDED_ERR));
+ } else {
+ JSONObject obj = requestFileSystem(fstype);
+ callbackContext.success(obj);
+ }
+ }
+ }, callbackContext);
+ }
+ else if (action.equals("resolveLocalFileSystemURI")) {
+ final String fname=args.getString(0);
+ threadhelper( new FileOp( ){
+ public void run() throws IOException, JSONException {
+ JSONObject obj = resolveLocalFileSystemURI(fname);
callbackContext.success(obj);
}
- }
- else if (action.equals("resolveLocalFileSystemURI")) {
- JSONObject obj = resolveLocalFileSystemURI(args.getString(0));
- callbackContext.success(obj);
- }
- else if (action.equals("getMetadata")) {
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, getMetadata(args.getString(0))));
- }
- else if (action.equals("getFileMetadata")) {
- JSONObject obj = getFileMetadata(args.getString(0));
- callbackContext.success(obj);
- }
- else if (action.equals("getParent")) {
- JSONObject obj = getParent(args.getString(0));
- callbackContext.success(obj);
- }
- else if (action.equals("getDirectory")) {
- JSONObject obj = getFile(args.getString(0), args.getString(1), args.optJSONObject(2), true);
- callbackContext.success(obj);
- }
- else if (action.equals("getFile")) {
- JSONObject obj = getFile(args.getString(0), args.getString(1), args.optJSONObject(2), false);
- callbackContext.success(obj);
- }
- else if (action.equals("remove")) {
- boolean success;
-
- success = remove(args.getString(0));
-
- if (success) {
- notifyDelete(args.getString(0));
- callbackContext.success();
- } else {
- callbackContext.error(FileUtils.NO_MODIFICATION_ALLOWED_ERR);
+ },callbackContext);
+ }
+ else if (action.equals("getMetadata")) {
+ final String fname=args.getString(0);
+ threadhelper( new FileOp( ){
+ public void run() throws FileNotFoundException, JSONException {
+ callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, getMetadata(fname)));
}
- }
- else if (action.equals("removeRecursively")) {
- boolean success = removeRecursively(args.getString(0));
- if (success) {
- callbackContext.success();
- } else {
- callbackContext.error(FileUtils.NO_MODIFICATION_ALLOWED_ERR);
+ }, callbackContext);
+ }
+ else if (action.equals("getFileMetadata")) {
+ final String fname=args.getString(0);
+ threadhelper( new FileOp( ){
+ public void run() throws FileNotFoundException, JSONException {
+ JSONObject obj = getFileMetadata(fname);
+ callbackContext.success(obj);
}
- }
- else if (action.equals("moveTo")) {
- JSONObject entry = transferTo(args.getString(0), args.getString(1), args.getString(2), true);
- callbackContext.success(entry);
- }
- else if (action.equals("copyTo")) {
- JSONObject entry = transferTo(args.getString(0), args.getString(1), args.getString(2), false);
- callbackContext.success(entry);
- }
- else if (action.equals("readEntries")) {
- JSONArray entries = readEntries(args.getString(0));
- callbackContext.success(entries);
- }
- else {
- return false;
- }
- } catch (FileNotFoundException e) {
- callbackContext.error(FileUtils.NOT_FOUND_ERR);
- } catch (FileExistsException e) {
- callbackContext.error(FileUtils.PATH_EXISTS_ERR);
- } catch (NoModificationAllowedException e) {
- callbackContext.error(FileUtils.NO_MODIFICATION_ALLOWED_ERR);
- } catch (InvalidModificationException e) {
- callbackContext.error(FileUtils.INVALID_MODIFICATION_ERR);
- } catch (MalformedURLException e) {
- callbackContext.error(FileUtils.ENCODING_ERR);
- } catch (IOException e) {
- callbackContext.error(FileUtils.INVALID_MODIFICATION_ERR);
- } catch (EncodingException e) {
- callbackContext.error(FileUtils.ENCODING_ERR);
- } catch (TypeMismatchException e) {
- callbackContext.error(FileUtils.TYPE_MISMATCH_ERR);
+ },callbackContext);
+ }
+ else if (action.equals("getParent")) {
+ final String fname=args.getString(0);
+ threadhelper( new FileOp( ){
+ public void run() throws JSONException {
+ JSONObject obj = getParent(fname);
+ callbackContext.success(obj);
+ }
+ },callbackContext);
+ }
+ else if (action.equals("getDirectory")) {
+ final String dirname=args.getString(0);
+ final String fname=args.getString(1);
+ threadhelper( new FileOp( ){
+ public void run() throws FileExistsException, IOException, TypeMismatchException, EncodingException, JSONException {
+ JSONObject obj = getFile(dirname, fname, args.optJSONObject(2), true);
+ callbackContext.success(obj);
+ }
+ },callbackContext);
+ }
+ else if (action.equals("getFile")) {
+ final String dirname=args.getString(0);
+ final String fname=args.getString(1);
+ threadhelper( new FileOp( ){
+ public void run() throws FileExistsException, IOException, TypeMismatchException, EncodingException, JSONException {
+ JSONObject obj = getFile(dirname, fname, args.optJSONObject(2), false);
+ callbackContext.success(obj);
+ }
+ },callbackContext);
+ }
+ else if (action.equals("remove")) {
+ final String fname=args.getString(0);
+ threadhelper( new FileOp( ){
+ public void run() throws NoModificationAllowedException, InvalidModificationException {
+ boolean success= remove(fname);
+ if (success) {
+ notifyDelete(fname);
+ callbackContext.success();
+ } else {
+ callbackContext.error(FileUtils.NO_MODIFICATION_ALLOWED_ERR);
+ }
+ }
+ },callbackContext);
+ }
+ else if (action.equals("removeRecursively")) {
+ final String fname=args.getString(0);
+ threadhelper( new FileOp( ){
+ public void run() throws FileExistsException {
+ boolean success = removeRecursively(fname);
+ if (success) {
+ callbackContext.success();
+ } else {
+ callbackContext.error(FileUtils.NO_MODIFICATION_ALLOWED_ERR);
+ }
+ }
+ },callbackContext);
+ }
+ else if (action.equals("moveTo")) {
+ final String fname=args.getString(0);
+ final String newParent=args.getString(1);
+ final String newName=args.getString(2);
+ threadhelper( new FileOp( ){
+ public void run() throws JSONException, NoModificationAllowedException, IOException, InvalidModificationException, EncodingException, FileExistsException {
+ JSONObject entry = transferTo(fname, newParent, newName, true);
+ callbackContext.success(entry);
+ }
+ },callbackContext);
+ }
+ else if (action.equals("copyTo")) {
+ final String fname=args.getString(0);
+ final String newParent=args.getString(1);
+ final String newName=args.getString(2);
+ threadhelper( new FileOp( ){
+ public void run() throws JSONException, NoModificationAllowedException, IOException, InvalidModificationException, EncodingException, FileExistsException {
+ JSONObject entry = transferTo(fname, newParent, newName, false);
+ callbackContext.success(entry);
+ }
+ },callbackContext);
+ }
+ else if (action.equals("readEntries")) {
+ final String fname=args.getString(0);
+ threadhelper( new FileOp( ){
+ public void run() throws FileNotFoundException, JSONException {
+ JSONArray entries = readEntries(fname);
+ callbackContext.success(entries);
+ }
+ },callbackContext);
+ }
+ else {
+ return false;
}
return true;
}
+ /* helper to execute functions async and handle the result codes
+ *
+ */
+ private void threadhelper(final FileOp f, final CallbackContext callbackContext){
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ try {
+ f.run();
+ } catch ( Exception e) {
+ e.printStackTrace();
+ if( e instanceof EncodingException){
+ callbackContext.error(FileUtils.ENCODING_ERR);
+ } else if(e instanceof FileNotFoundException) {
+ callbackContext.error(FileUtils.NOT_FOUND_ERR);
+ } else if(e instanceof FileExistsException) {
+ callbackContext.error(FileUtils.PATH_EXISTS_ERR);
+ } else if(e instanceof NoModificationAllowedException ) {
+ callbackContext.error(FileUtils.NO_MODIFICATION_ALLOWED_ERR);
+ } else if(e instanceof InvalidModificationException ) {
+ callbackContext.error(FileUtils.INVALID_MODIFICATION_ERR);
+ } else if(e instanceof MalformedURLException ) {
+ callbackContext.error(FileUtils.ENCODING_ERR);
+ } else if(e instanceof IOException ) {
+ callbackContext.error(FileUtils.INVALID_MODIFICATION_ERR);
+ } else if(e instanceof EncodingException ) {
+ callbackContext.error(FileUtils.ENCODING_ERR);
+ } else if(e instanceof TypeMismatchException ) {
+ callbackContext.error(FileUtils.TYPE_MISMATCH_ERR);
+ }
+ }
+ }
+ });
+ }
+
/**
* Need to check to see if we need to clean up the content store
*
[4/4] git commit: [CB-5010] Updated version and RELEASENOTES.md for
release 0.2.4
Posted by st...@apache.org.
[CB-5010] Updated version and RELEASENOTES.md for release 0.2.4
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/commit/27288cd5
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/tree/27288cd5
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/diff/27288cd5
Branch: refs/heads/master
Commit: 27288cd5cd28516e92bb6b9f811dac5d4a5729fb
Parents: 4eb576c
Author: Steven Gill <st...@gmail.com>
Authored: Wed Oct 9 15:24:23 2013 -0700
Committer: Steven Gill <st...@gmail.com>
Committed: Wed Oct 9 15:24:23 2013 -0700
----------------------------------------------------------------------
RELEASENOTES.md | 5 +++++
plugin.xml | 2 +-
2 files changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/27288cd5/RELEASENOTES.md
----------------------------------------------------------------------
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 81a1e7b..5a06f4e 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -38,3 +38,8 @@
* [CB-4763] Copy FileHelper.java into the plugin.
* [CB-2901] [BlackBerry10] Automatically unsandbox filesystem if path is not in app sandbox
* [CB-4752] Incremented plugin version on dev branch.
+
+### 0.2.4 (Oct 9, 2013)
+* CB-5020 - File plugin should execute on a separate thread
+* [CB-4915] Incremented plugin version on dev branch.
+* CB-4504: Updating FileUtils.java to compensate for Java porting failures in the Android SDK. This fails because Java knows nothing about android_asset not being an actual filesystem
http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/27288cd5/plugin.xml
----------------------------------------------------------------------
diff --git a/plugin.xml b/plugin.xml
index 32185b4..8e72e15 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -3,7 +3,7 @@
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android"
id="org.apache.cordova.file"
- version="0.2.4-dev">
+ version="0.2.4">
<name>File</name>
<description>Cordova File Plugin</description>
<license>Apache 2.0</license>
[2/4] git commit: [CB-4915] Incremented plugin version on dev branch.
Posted by st...@apache.org.
[CB-4915] Incremented plugin version on dev branch.
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/commit/8a29d64d
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/tree/8a29d64d
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/diff/8a29d64d
Branch: refs/heads/master
Commit: 8a29d64d9aed246b25a7111b3d1eb31817a2ad88
Parents: 963f8b8
Author: Steven Gill <st...@gmail.com>
Authored: Wed Sep 25 18:34:14 2013 -0700
Committer: Steven Gill <st...@gmail.com>
Committed: Thu Sep 26 15:26:01 2013 -0700
----------------------------------------------------------------------
plugin.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/8a29d64d/plugin.xml
----------------------------------------------------------------------
diff --git a/plugin.xml b/plugin.xml
index 1dfe453..32185b4 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -3,7 +3,7 @@
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android"
id="org.apache.cordova.file"
- version="0.2.3">
+ version="0.2.4-dev">
<name>File</name>
<description>Cordova File Plugin</description>
<license>Apache 2.0</license>