You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by gn...@apache.org on 2017/09/28 06:50:23 UTC
svn commit: r1809952 - in /aries/trunk/blueprint/blueprint-spring: pom.xml
src/main/java/org/apache/aries/blueprint/spring/BlueprintBeanFactory.java
src/main/java/org/apache/aries/blueprint/spring/SpringApplicationContext.java
Author: gnodet
Date: Thu Sep 28 06:50:23 2017
New Revision: 1809952
URL: http://svn.apache.org/viewvc?rev=1809952&view=rev
Log:
[ARIES-1744] Unable to load resource from blueprint-spring
Modified:
aries/trunk/blueprint/blueprint-spring/pom.xml
aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintBeanFactory.java
aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/SpringApplicationContext.java
Modified: aries/trunk/blueprint/blueprint-spring/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-spring/pom.xml?rev=1809952&r1=1809951&r2=1809952&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-spring/pom.xml (original)
+++ aries/trunk/blueprint/blueprint-spring/pom.xml Thu Sep 28 06:50:23 2017
@@ -71,7 +71,7 @@
<id>dev</id>
<properties>
<blueprint.api.version>1.0.1</blueprint.api.version>
- <blueprint.core.version>1.7.1-SNAPSHOT</blueprint.core.version>
+ <blueprint.core.version>1.8.3-SNAPSHOT</blueprint.core.version>
<blueprint.parser.version>1.5.0-SNAPSHOT</blueprint.parser.version>
</properties>
</profile>
Modified: aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintBeanFactory.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintBeanFactory.java?rev=1809952&r1=1809951&r2=1809952&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintBeanFactory.java (original)
+++ aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/BlueprintBeanFactory.java Thu Sep 28 06:50:23 2017
@@ -40,14 +40,18 @@ import org.springframework.beans.factory
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.core.ResolvableType;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.ResourceLoader;
-public class BlueprintBeanFactory extends DefaultListableBeanFactory {
+public class BlueprintBeanFactory extends DefaultListableBeanFactory implements ResourceLoader {
private final ExtendedBlueprintContainer container;
+ private final ResourceLoader resourceLoader;
- public BlueprintBeanFactory(ExtendedBlueprintContainer container) {
+ public BlueprintBeanFactory(ExtendedBlueprintContainer container, ResourceLoader resourceLoader) {
super(new WrapperBeanFactory(container));
this.container = container;
+ this.resourceLoader = resourceLoader;
}
@Override
@@ -75,6 +79,16 @@ public class BlueprintBeanFactory extend
super.removeBeanDefinition(beanName);
}
+ @Override
+ public Resource getResource(String location) {
+ return resourceLoader.getResource(location);
+ }
+
+ @Override
+ public ClassLoader getClassLoader() {
+ return resourceLoader.getClassLoader();
+ }
+
public class SpringMetadata implements BeanMetadata {
private final String beanName;
Modified: aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/SpringApplicationContext.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/SpringApplicationContext.java?rev=1809952&r1=1809951&r2=1809952&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/SpringApplicationContext.java (original)
+++ aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/SpringApplicationContext.java Thu Sep 28 06:50:23 2017
@@ -16,8 +16,12 @@
*/
package org.apache.aries.blueprint.spring;
+import java.io.IOException;
+import java.net.URL;
import java.util.ArrayList;
+import java.util.Enumeration;
import java.util.List;
+import java.util.NoSuchElementException;
import org.apache.aries.blueprint.services.ExtendedBlueprintContainer;
import org.osgi.framework.Bundle;
@@ -34,7 +38,6 @@ public class SpringApplicationContext ex
public SpringApplicationContext(ExtendedBlueprintContainer container) {
this.container = container;
- this.beanFactory = new BlueprintBeanFactory(container);
parentClassLoaders.add(container.getClassLoader());
setClassLoader(new ClassLoader() {
@Override
@@ -48,7 +51,51 @@ public class SpringApplicationContext ex
}
throw new ClassNotFoundException(name);
}
+
+ @Override
+ public URL getResource(String name) {
+ for (ClassLoader cl : parentClassLoaders) {
+ URL url = cl.getResource(name);
+ if (url != null) {
+ return url;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public Enumeration<URL> getResources(String name) throws IOException {
+ final Enumeration<URL>[] enums = (Enumeration<URL>[]) new Enumeration<?>[parentClassLoaders.size()];
+ for (int i = 0; i < enums.length; i++) {
+ enums[i] = parentClassLoaders.get(i).getResources(name);
+ }
+ return new Enumeration<URL>() {
+ private int index = 0;
+ @Override
+ public boolean hasMoreElements() {
+ return next();
+ }
+ @Override
+ public URL nextElement() {
+ if (!this.next()) {
+ throw new NoSuchElementException();
+ } else {
+ return enums[this.index].nextElement();
+ }
+ }
+ private boolean next() {
+ while(this.index < enums.length) {
+ if (enums[this.index] != null && enums[this.index].hasMoreElements()) {
+ return true;
+ }
+ ++this.index;
+ }
+ return false;
+ }
+ };
+ }
});
+ this.beanFactory = new BlueprintBeanFactory(container, this);
prepareBeanFactory(beanFactory);
prepareRefresh();
}