bug339719: added blueprint support to Virgo. So far there are no
obvious limitations
diff --git a/org.eclipse.virgo.osgi.extensions.equinox/src/main/java/org/eclipse/virgo/osgi/extensions/equinox/hooks/MetaInfResourceClassLoaderDelegateHook.java b/org.eclipse.virgo.osgi.extensions.equinox/src/main/java/org/eclipse/virgo/osgi/extensions/equinox/hooks/MetaInfResourceClassLoaderDelegateHook.java
index ca9f0e8..fcaf17f 100644
--- a/org.eclipse.virgo.osgi.extensions.equinox/src/main/java/org/eclipse/virgo/osgi/extensions/equinox/hooks/MetaInfResourceClassLoaderDelegateHook.java
+++ b/org.eclipse.virgo.osgi.extensions.equinox/src/main/java/org/eclipse/virgo/osgi/extensions/equinox/hooks/MetaInfResourceClassLoaderDelegateHook.java
@@ -51,13 +51,19 @@
 @SuppressWarnings("deprecation")
 public class MetaInfResourceClassLoaderDelegateHook implements ClassLoaderDelegateHook {
 
-    private static final String DELEGATED_NAMESPACE_HANDLER_RESOLVER_CLASS_NAME = "org.springframework.osgi.context.support.DelegatedNamespaceHandlerResolver";
+    private static final String SPRINGDM_DELEGATED_NAMESPACE_HANDLER_RESOLVER_CLASS_NAME = "org.springframework.osgi.context.support.DelegatedNamespaceHandlerResolver";
     
-    private static final String DELEGATED_ENTITY_RESOLVER_CLASS_NAME = "org.springframework.osgi.context.support.DelegatedEntityResolver";
+    private static final String SPRINGDM_DELEGATED_ENTITY_RESOLVER_CLASS_NAME = "org.springframework.osgi.context.support.DelegatedEntityResolver";
+    
+    private static final String BLUEPRINT_DELEGATED_NAMESPACE_HANDLER_RESOLVER_CLASS_NAME = "org.eclipse.gemini.blueprint.context.support.DelegatedNamespaceHandlerResolver";
+    
+    private static final String BLUEPRINT_DELEGATED_ENTITY_RESOLVER_CLASS_NAME = "org.eclipse.gemini.blueprint.context.support.ChainedEntityResolver";
 
     private static final String EXCLUDED_RESOURCE_MANIFEST = "MANIFEST.MF";
 
     private static final String EXCLUDED_RESOURCE_SPRING_DIR = "spring";
+    
+    private static final String EXCLUDED_RESOURCE_BLUEPRINT_DIR = "blueprint";
 
     private static final String EXCLUDED_RESOURCE_SPRING_DIR_SUFFIX = ".xml";
 
@@ -169,7 +175,7 @@
     }
 
     private boolean isDelegatedResource(String name) {
-        return isMetaInfResource(name) && !isSpringDmDelegatedResolverCall();
+        return isMetaInfResource(name) && !isSpringDmDelegatedResolverCall() && !isBlueprintDelegatedResolverCall();
     }
 
     /**
@@ -185,22 +191,31 @@
         if (name.contains(EXCLUDED_RESOURCE_MANIFEST)) {
             return false;
         }
-        if (name.contains(EXCLUDED_RESOURCE_SPRING_DIR) && name.endsWith(EXCLUDED_RESOURCE_SPRING_DIR_SUFFIX)) {
+        if ((name.contains(EXCLUDED_RESOURCE_SPRING_DIR) || name.contains(EXCLUDED_RESOURCE_BLUEPRINT_DIR)) 
+            && name.endsWith(EXCLUDED_RESOURCE_SPRING_DIR_SUFFIX)) {
             return false;
         }
         return true;
     }
 
     private boolean isSpringDmDelegatedResolverCall() {
+        return isDelegatedResolverCall(SPRINGDM_DELEGATED_NAMESPACE_HANDLER_RESOLVER_CLASS_NAME, SPRINGDM_DELEGATED_ENTITY_RESOLVER_CLASS_NAME);
+    }
+    
+    private boolean isBlueprintDelegatedResolverCall() {
+        return isDelegatedResolverCall(BLUEPRINT_DELEGATED_NAMESPACE_HANDLER_RESOLVER_CLASS_NAME, BLUEPRINT_DELEGATED_ENTITY_RESOLVER_CLASS_NAME);
+    }
+    
+    private boolean isDelegatedResolverCall(String namespaceResolver, String entityResolver) {
         StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
         for (StackTraceElement element : stackTrace) {
             String className = element.getClassName();
-            if (DELEGATED_NAMESPACE_HANDLER_RESOLVER_CLASS_NAME.equals(className) || DELEGATED_ENTITY_RESOLVER_CLASS_NAME.equals(className)) {
+            if (namespaceResolver.equals(className) || entityResolver.equals(className)) {
                 return true;
             }
         }
         return false;
-    }        
+    }
 
     private void addAll(Collection<URL> target, Enumeration<URL> source) {
         while (source != null && source.hasMoreElements()) {