You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2014/07/07 22:24:55 UTC
[3/9] android commit: Refactor: Move url-filter information into
PluginEntry.
Refactor: Move url-filter information into PluginEntry.
Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/af77977f
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/af77977f
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/af77977f
Branch: refs/heads/4.0.x
Commit: af77977fda281e912b9e8805d1d89a44e5ba1f52
Parents: e74baf1
Author: Andrew Grieve <ag...@chromium.org>
Authored: Fri Jul 4 14:52:31 2014 -0400
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Fri Jul 4 14:53:00 2014 -0400
----------------------------------------------------------------------
.../src/org/apache/cordova/ConfigXmlParser.java | 19 +++-----
.../src/org/apache/cordova/PluginEntry.java | 49 +++++++++++---------
.../src/org/apache/cordova/PluginManager.java | 25 +++++-----
3 files changed, 46 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/af77977f/framework/src/org/apache/cordova/ConfigXmlParser.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/ConfigXmlParser.java b/framework/src/org/apache/cordova/ConfigXmlParser.java
index 8062168..a5958ef 100644
--- a/framework/src/org/apache/cordova/ConfigXmlParser.java
+++ b/framework/src/org/apache/cordova/ConfigXmlParser.java
@@ -21,8 +21,6 @@ package org.apache.cordova;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -41,7 +39,6 @@ public class ConfigXmlParser {
private CordovaPreferences prefs = new CordovaPreferences();
private Whitelist whitelist = new Whitelist();
private ArrayList<PluginEntry> pluginEntries = new ArrayList<PluginEntry>(20);
- private HashMap<String, List<String>> urlMap = new HashMap<String, List<String>>();
public Whitelist getWhitelist() {
return whitelist;
@@ -59,10 +56,6 @@ public class ConfigXmlParser {
return launchUrl;
}
- public HashMap<String, List<String>> getPluginUrlMap() {
- return urlMap;
- }
-
public void parse(Activity action) {
// First checking the class namespace for config.xml
int id = action.getResources().getIdentifier("config", "xml", action.getClass().getPackage().getName());
@@ -82,16 +75,17 @@ public class ConfigXmlParser {
String service = "", pluginClass = "", paramType = "";
boolean onload = false;
boolean insideFeature = false;
+ ArrayList<String> urlMap = null;
+
while (eventType != XmlResourceParser.END_DOCUMENT) {
if (eventType == XmlResourceParser.START_TAG) {
String strNode = xml.getName();
if (strNode.equals("url-filter")) {
Log.w(TAG, "Plugin " + service + " is using deprecated tag <url-filter>");
- if (urlMap.get(service) == null) {
- urlMap.put(service, new ArrayList<String>(2));
+ if (urlMap == null) {
+ urlMap = new ArrayList<String>(2);
}
- List<String> filters = urlMap.get(service);
- filters.add(xml.getAttributeValue(null, "value"));
+ urlMap.add(xml.getAttributeValue(null, "value"));
} else if (strNode.equals("feature")) {
//Check for supported feature sets aka. plugins (Accelerometer, Geolocation, etc)
//Set the bit for reading params
@@ -130,12 +124,13 @@ public class ConfigXmlParser {
{
String strNode = xml.getName();
if (strNode.equals("feature")) {
- pluginEntries.add(new PluginEntry(service, pluginClass, onload));
+ pluginEntries.add(new PluginEntry(service, pluginClass, onload, urlMap));
service = "";
pluginClass = "";
insideFeature = false;
onload = false;
+ urlMap = null;
}
}
try {
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/af77977f/framework/src/org/apache/cordova/PluginEntry.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/PluginEntry.java b/framework/src/org/apache/cordova/PluginEntry.java
index dcc1974..c54f6cb 100755
--- a/framework/src/org/apache/cordova/PluginEntry.java
+++ b/framework/src/org/apache/cordova/PluginEntry.java
@@ -18,12 +18,12 @@
*/
package org.apache.cordova;
+import java.util.List;
+
import org.apache.cordova.CordovaWebView;
import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaPlugin;
-//import android.content.Context;
-//import android.webkit.WebView;
/**
* This class represents a service entry object.
@@ -52,30 +52,36 @@ public class PluginEntry {
*/
public boolean onload = false;
+ private List<String> urlFilters;
+
+ /**
+ * @param service The name of the service
+ * @param plugin The plugin associated with this entry
+ */
+ public PluginEntry(String service, CordovaPlugin plugin) {
+ this(service, plugin.getClass().getName(), true, null);
+ this.plugin = plugin;
+ }
+
/**
- * Constructor
- *
* @param service The name of the service
* @param pluginClass The plugin class name
* @param onload Create plugin object when HTML page is loaded
*/
public PluginEntry(String service, String pluginClass, boolean onload) {
+ this(service, pluginClass, onload, null);
+ }
+
+
+ public PluginEntry(String service, String pluginClass, boolean onload, List<String> urlFilters) {
this.service = service;
this.pluginClass = pluginClass;
this.onload = onload;
+ this.urlFilters = urlFilters;
}
- /**
- * Alternate constructor
- *
- * @param service The name of the service
- * @param plugin The plugin associated with this entry
- */
- public PluginEntry(String service, CordovaPlugin plugin) {
- this.service = service;
- this.plugin = plugin;
- this.pluginClass = plugin.getClass().getName();
- this.onload = false;
+ public List<String> getUrlFilters() {
+ return urlFilters;
}
/**
@@ -89,8 +95,7 @@ public class PluginEntry {
return this.plugin;
}
try {
- @SuppressWarnings("rawtypes")
- Class c = getClassByName(this.pluginClass);
+ Class<?> c = getClassByName(this.pluginClass);
if (isCordovaPlugin(c)) {
this.plugin = (CordovaPlugin) c.newInstance();
this.plugin.initialize(ctx, webView);
@@ -110,9 +115,8 @@ public class PluginEntry {
* @return a reference to the named class
* @throws ClassNotFoundException
*/
- @SuppressWarnings("rawtypes")
- private Class getClassByName(final String clazz) throws ClassNotFoundException {
- Class c = null;
+ private Class<?> getClassByName(final String clazz) throws ClassNotFoundException {
+ Class<?> c = null;
if ((clazz != null) && !("".equals(clazz))) {
c = Class.forName(clazz);
}
@@ -122,10 +126,9 @@ public class PluginEntry {
/**
* Returns whether the given class extends CordovaPlugin.
*/
- @SuppressWarnings("rawtypes")
- private boolean isCordovaPlugin(Class c) {
+ private boolean isCordovaPlugin(Class<?> c) {
if (c != null) {
- return org.apache.cordova.CordovaPlugin.class.isAssignableFrom(c);
+ return CordovaPlugin.class.isAssignableFrom(c);
}
return false;
}
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/af77977f/framework/src/org/apache/cordova/PluginManager.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/PluginManager.java b/framework/src/org/apache/cordova/PluginManager.java
index c5ffd6c..410cc6e 100755
--- a/framework/src/org/apache/cordova/PluginManager.java
+++ b/framework/src/org/apache/cordova/PluginManager.java
@@ -19,7 +19,6 @@
package org.apache.cordova;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import org.apache.cordova.CordovaWebView;
@@ -86,12 +85,12 @@ public class PluginManager {
* Load plugins from res/xml/config.xml
*/
public void loadPlugins() {
- ConfigXmlParser parser = new ConfigXmlParser();
- parser.parse(ctx.getActivity());
- for (PluginEntry entry : parser.getPluginEntries()) {
- addService(entry);
- }
- urlMap = parser.getPluginUrlMap();
+ ConfigXmlParser parser = new ConfigXmlParser();
+ parser.parse(ctx.getActivity());
+ urlMap = new HashMap<String, List<String>>();
+ for (PluginEntry entry : parser.getPluginEntries()) {
+ addService(entry);
+ }
}
/**
@@ -206,6 +205,10 @@ public class PluginManager {
*/
public void addService(PluginEntry entry) {
this.entries.put(entry.service, entry);
+ List<String> urlFilters = entry.getUrlFilters();
+ if (urlFilters != null) {
+ urlMap.put(entry.service, urlFilters);
+ }
}
/**
@@ -311,11 +314,9 @@ public class PluginManager {
* Called when the app navigates or refreshes.
*/
public void onReset() {
- Iterator<PluginEntry> it = this.entries.values().iterator();
- while (it.hasNext()) {
- CordovaPlugin plugin = it.next().plugin;
- if (plugin != null) {
- plugin.onReset();
+ for (PluginEntry entry : this.entries.values()) {
+ if (entry.plugin != null) {
+ entry.plugin.onReset();
}
}
}