You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2011/11/17 09:49:04 UTC
svn commit: r1203109 -
/geronimo/server/trunk/framework/modules/geronimo-hook/src/main/java/org/apache/geronimo/hook/equinox/SharedLibClassLoaderDelegateHook.java
Author: xuhaihong
Date: Thu Nov 17 08:49:04 2011
New Revision: 1203109
URL: http://svn.apache.org/viewvc?rev=1203109&view=rev
Log:
Support getResources method for shared library
Modified:
geronimo/server/trunk/framework/modules/geronimo-hook/src/main/java/org/apache/geronimo/hook/equinox/SharedLibClassLoaderDelegateHook.java
Modified: geronimo/server/trunk/framework/modules/geronimo-hook/src/main/java/org/apache/geronimo/hook/equinox/SharedLibClassLoaderDelegateHook.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-hook/src/main/java/org/apache/geronimo/hook/equinox/SharedLibClassLoaderDelegateHook.java?rev=1203109&r1=1203108&r2=1203109&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-hook/src/main/java/org/apache/geronimo/hook/equinox/SharedLibClassLoaderDelegateHook.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-hook/src/main/java/org/apache/geronimo/hook/equinox/SharedLibClassLoaderDelegateHook.java Thu Nov 17 08:49:04 2011
@@ -18,9 +18,13 @@
package org.apache.geronimo.hook.equinox;
import java.io.FileNotFoundException;
+import java.io.IOException;
import java.net.URL;
+import java.util.Collections;
import java.util.Enumeration;
+import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Set;
import org.apache.geronimo.hook.BundleHelper;
import org.apache.geronimo.hook.SharedLibraryRegistry;
@@ -81,7 +85,29 @@ public class SharedLibClassLoaderDelegat
}
public Enumeration<URL> postFindResources(String name, BundleClassLoader classLoader, BundleData data) throws FileNotFoundException {
- return null;
+ SharedLibraryRegistry sharedLibraryRegistry = BundleHelper.getSharedLibraryRegistry();
+ if (sharedLibraryRegistry == null) {
+ return null;
+ }
+ List<Bundle> dependentSharedLibBundles = sharedLibraryRegistry.getDependentSharedLibBundles(data.getBundleID());
+ if (dependentSharedLibBundles == null || dependentSharedLibBundles.isEmpty()) {
+ return null;
+ }
+ Set<URL> foundResources = new LinkedHashSet<URL>();
+ for (Bundle sharedLibBundle : dependentSharedLibBundles) {
+ try {
+ Enumeration<URL> en = sharedLibBundle.getResources(name);
+ if (en == null) {
+ continue;
+ }
+ while (en.hasMoreElements()) {
+ foundResources.add(en.nextElement());
+ }
+ } catch (IOException e) {
+ //ignore this bundle
+ }
+ }
+ return Collections.enumeration(foundResources);
}
public String preFindLibrary(String name, BundleClassLoader classLoader, BundleData data) throws FileNotFoundException {