Author: lryan
Date: Mon Jan 21 15:57:16 2008
New Revision: 614063
URL: http://svn.apache.org/viewvc?rev=614063&view=rev
Log:
Fix VM crash issue with recursive JAR loading
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java?rev=614063&r1=614062&r2=614063&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java
Mon Jan 21 15:57:16 2008
@@ -26,9 +26,10 @@
import java.io.IOException;
import java.io.InputStream;
import java.net.JarURLConnection;
+import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
-import java.net.URISyntaxException;
+import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
@@ -150,6 +151,7 @@
loadFiles(new File[]{f}, features);
} else {
URLConnection urlConnection = resourceUrl.openConnection();
+ List<String> featurePaths = new ArrayList<String>();
if (urlConnection instanceof JarURLConnection) {
JarURLConnection jarUrlConn = (JarURLConnection)urlConnection;
JarFile jar = jarUrlConn.getJarFile();
@@ -159,11 +161,14 @@
JarEntry jarEntry = jarEntries.nextElement();
if (jarEntry.getName().startsWith(file) &&
jarEntry.getName().endsWith("feature.xml")) {
- ParsedFeature feature =
processResource(jarEntry.getName());
- if (feature != null) {
- features.put(feature.name, feature);
- }
+ featurePaths.add(jarEntry.getName());
}
+ }
+ }
+ for (String path : featurePaths) {
+ ParsedFeature feature = processResource(path);
+ if (feature != null) {
+ features.put(feature.name, feature);
}
}
}