You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by de...@apache.org on 2012/04/03 14:59:31 UTC
[15/15] webworks commit: Sync up with cordova-js.
Sync up with cordova-js.
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/commit/681a9446
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/tree/681a9446
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/diff/681a9446
Branch: refs/heads/master
Commit: 681a94464ec669d68f3fc8757471ac87717e8896
Parents: 74117b4
Author: Drew Walters <de...@apache.org>
Authored: Fri Mar 2 07:37:17 2012 -0600
Committer: Drew Walters <de...@apache.org>
Committed: Fri Mar 2 07:37:17 2012 -0600
----------------------------------------------------------------------
.../src/org/apache/cordova/CordovaExtension.java | 2 +-
.../src/org/apache/cordova/api/PluginResult.java | 10 ++-
.../src/org/apache/cordova/file/FileManager.java | 61 +++++++++++---
3 files changed, 57 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/681a9446/framework/ext/src/org/apache/cordova/CordovaExtension.java
----------------------------------------------------------------------
diff --git a/framework/ext/src/org/apache/cordova/CordovaExtension.java b/framework/ext/src/org/apache/cordova/CordovaExtension.java
index 86dad0b..b6e99a5 100644
--- a/framework/ext/src/org/apache/cordova/CordovaExtension.java
+++ b/framework/ext/src/org/apache/cordova/CordovaExtension.java
@@ -113,7 +113,7 @@ public final class CordovaExtension implements WidgetExtension {
// if this is premature, we at least set the _nativeReady flag to true
// so that when the JS side is ready, it knows native side is too
Logger.log(this.getClass().getName() + ": invoking Cordova.onNativeReady.fire()");
- scriptEngine.executeScript("try {Cordova.onNativeReady.fire();} catch(e) {_nativeReady = true;}", null);
+ scriptEngine.executeScript("try {require('cordova/channel').onNativeReady.fire();} catch(e) {_nativeReady = true;}", null);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/681a9446/framework/ext/src/org/apache/cordova/api/PluginResult.java
----------------------------------------------------------------------
diff --git a/framework/ext/src/org/apache/cordova/api/PluginResult.java b/framework/ext/src/org/apache/cordova/api/PluginResult.java
index 2cca7ee..f8a666c 100644
--- a/framework/ext/src/org/apache/cordova/api/PluginResult.java
+++ b/framework/ext/src/org/apache/cordova/api/PluginResult.java
@@ -18,6 +18,7 @@
*/
package org.apache.cordova.api;
+import org.apache.cordova.json4j.JSONArray;
import org.apache.cordova.json4j.JSONObject;
/**
@@ -40,6 +41,11 @@ public class PluginResult {
this.message = JSONObject.quote(message);
}
+ public PluginResult(Status status, JSONArray message) {
+ this.status = status.ordinal();
+ this.message = message.toString();
+ }
+
public PluginResult(Status status, JSONObject message) {
this.status = status.ordinal();
this.message = (message != null) ? message.toString(): "null";
@@ -93,7 +99,7 @@ public class PluginResult {
* @return JavaScript string that invokes the appropriate plugin success callback
*/
public String toSuccessCallbackString(String callbackId) {
- return "try { Cordova.callbackSuccess('"+callbackId+"', " + this.getJSONString() + "); } catch(e) { alert('error in callbackSuccess:' + e.message); }";
+ return "try { require('cordova').callbackSuccess('"+callbackId+"', " + this.getJSONString() + "); } catch(e) { alert('error in callbackSuccess:' + e.message); }";
}
/**
@@ -104,7 +110,7 @@ public class PluginResult {
* @return JavaScript string that invokes the appropriate plugin error callback
*/
public String toErrorCallbackString(String callbackId) {
- return "try { Cordova.callbackError('"+callbackId+"', " + this.getJSONString() + "); } catch(e) { alert('error in callbackError:' + e.message); }";
+ return "try { require('cordova').callbackError('"+callbackId+"', " + this.getJSONString() + "); } catch(e) { alert('error in callbackError:' + e.message); }";
}
public String toErrorString() {
http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/681a9446/framework/ext/src/org/apache/cordova/file/FileManager.java
----------------------------------------------------------------------
diff --git a/framework/ext/src/org/apache/cordova/file/FileManager.java b/framework/ext/src/org/apache/cordova/file/FileManager.java
index b59dfcb..7bf75eb 100644
--- a/framework/ext/src/org/apache/cordova/file/FileManager.java
+++ b/framework/ext/src/org/apache/cordova/file/FileManager.java
@@ -77,6 +77,7 @@ public class FileManager extends Plugin {
protected static String ACTION_REQUEST_FILE_SYSTEM = "requestFileSystem";
protected static String ACTION_RESOLVE_FILE_SYSTEM_URI = "resolveLocalFileSystemURI";
protected static String ACTION_GET_METADATA = "getMetadata";
+ protected static String ACTION_GET_FILE_METADATA = "getFileMetadata";
protected static String ACTION_LIST_DIRECTORY = "readEntries";
protected static String ACTION_COPY_TO = "copyTo";
protected static String ACTION_MOVE_TO = "moveTo";
@@ -219,7 +220,7 @@ public class FileManager extends Plugin {
}
return resolveFileSystemURI(uri);
}
- else if (ACTION_GET_METADATA.equals(action)) {
+ else if (ACTION_GET_METADATA.equals(action) || ACTION_GET_FILE_METADATA.equals(action)) {
String path = null;
try {
path = args.getString(0);
@@ -230,7 +231,7 @@ public class FileManager extends Plugin {
return new PluginResult(PluginResult.Status.JSON_EXCEPTION,
SYNTAX_ERR);
}
- return getMetadata(path);
+ return getMetadata(path, ACTION_GET_FILE_METADATA.equals(action));
}
else if (ACTION_LIST_DIRECTORY.equals(action)) {
String path = null;
@@ -529,7 +530,7 @@ public class FileManager extends Plugin {
}
catch (JSONException e) {
return new PluginResult(PluginResult.Status.JSON_EXCEPTION,
- "File systen entry JSON conversion failed.");
+ "File system entry JSON conversion failed.");
}
return result;
@@ -571,17 +572,30 @@ public class FileManager extends Plugin {
*
* @param path
* full path name of the file or directory
+ * @param full
+ * return full or partial meta data.
* @return PluginResult containing metadata for file system entry or an
* error code if unable to retrieve metadata
*/
- protected static PluginResult getMetadata(String path) {
+ protected static PluginResult getMetadata(String path, boolean full) {
PluginResult result = null;
FileConnection fconn = null;
try {
fconn = (FileConnection)Connector.open(path);
if (fconn.exists()) {
- long lastModified = fconn.lastModified();
- result = new PluginResult(PluginResult.Status.OK, lastModified);
+ if (full) {
+ JSONObject metadata = new JSONObject();
+ metadata.put("size", fconn.fileSize());
+ metadata.put("type",
+ MIMETypeAssociations.getMIMEType(fconn.getURL()));
+ metadata.put("name", fconn.getName());
+ metadata.put("fullPath", fconn.getURL());
+ metadata.put("lastModifiedDate", fconn.lastModified());
+ result = new PluginResult(PluginResult.Status.OK, metadata);
+ } else {
+ result = new PluginResult(PluginResult.Status.OK,
+ fconn.lastModified());
+ }
}
else {
result = new PluginResult(PluginResult.Status.IO_EXCEPTION,
@@ -597,7 +611,11 @@ public class FileManager extends Plugin {
catch (IOException e) {
Logger.log(FileUtils.class.getName() + ": " + e);
result = new PluginResult(PluginResult.Status.IO_EXCEPTION,
- e.getMessage());
+ NOT_READABLE_ERR);
+ }
+ catch (JSONException e) {
+ result = new PluginResult(PluginResult.Status.JSON_EXCEPTION,
+ "File system entry JSON conversion failed.");
}
finally {
try {
@@ -609,6 +627,18 @@ public class FileManager extends Plugin {
return result;
}
+ private static JSONObject buildEntry(String dirPath, String filePath) throws JSONException {
+ JSONObject entry = new JSONObject();
+ boolean isDir = filePath.endsWith(FileUtils.FILE_SEPARATOR);
+
+ entry.put("isFile", !isDir);
+ entry.put("isDirectory", isDir);
+ entry.put("name", isDir ? filePath.substring(0, filePath.length()-1) : filePath);
+ entry.put("fullPath", dirPath + filePath);
+
+ return entry;
+ }
+
/**
* Returns a listing of the specified directory contents. Names of both
* files and directories are returned.
@@ -630,13 +660,18 @@ public class FileManager extends Plugin {
NOT_FOUND_ERR);
}
- // pass directory contents back as an array of Strings (names)
- JSONArray array = new JSONArray();
- while (listing.hasMoreElements()) {
- array.add((String)listing.nextElement());
- }
+ try {
+ // pass directory contents back as an array of JSONObjects (entries)
+ JSONArray array = new JSONArray();
+ while (listing.hasMoreElements()) {
+ array.add(buildEntry(path, (String) listing.nextElement()));
+ }
- return new PluginResult(PluginResult.Status.OK, array.toString());
+ return new PluginResult(PluginResult.Status.OK, array);
+ } catch (JSONException e) {
+ return new PluginResult(PluginResult.Status.JSON_EXCEPTION,
+ "File system entry JSON conversion failed.");
+ }
}
/**