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 2015/12/09 10:03:12 UTC
svn commit: r1718778 -
/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintRepository.java
Author: gnodet
Date: Wed Dec 9 09:03:12 2015
New Revision: 1718778
URL: http://svn.apache.org/viewvc?rev=1718778&view=rev
Log:
[ARIES-1467] Blueprint creates unnecessary prototype bean instances
Modified:
aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintRepository.java
Modified: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintRepository.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintRepository.java?rev=1718778&r1=1718777&r2=1718778&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintRepository.java (original)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintRepository.java Wed Dec 9 09:03:12 2015
@@ -35,6 +35,7 @@ import java.util.concurrent.CopyOnWriteA
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
+import org.apache.aries.blueprint.reflect.MetadataUtil;
import org.apache.aries.blueprint.services.ExtendedBlueprintContainer;
import org.apache.aries.blueprint.container.BeanRecipe.UnwrapperedBeanHolder;
import org.apache.aries.blueprint.di.CircularDependencyException;
@@ -47,6 +48,8 @@ import org.apache.aries.blueprint.di.Col
import org.osgi.service.blueprint.container.ReifiedType;
import org.osgi.service.blueprint.container.ComponentDefinitionException;
import org.osgi.service.blueprint.container.NoSuchComponentException;
+import org.osgi.service.blueprint.reflect.BeanMetadata;
+import org.osgi.service.blueprint.reflect.ComponentMetadata;
/**
* The default repository implementation
@@ -242,9 +245,15 @@ public class BlueprintRepository impleme
DependencyGraph graph = new DependencyGraph(this);
HashMap<String, Object> objects = new LinkedHashMap<String, Object>();
for (Map.Entry<String, Recipe> entry : graph.getSortedRecipes(names).entrySet()) {
- objects.put(
- entry.getKey(),
- entry.getValue().create());
+ String name = entry.getKey();
+ ComponentMetadata component = blueprintContainer.getComponentDefinitionRegistry().getComponentDefinition(name);
+ boolean prototype = (component instanceof BeanMetadata)
+ && MetadataUtil.isPrototypeScope((BeanMetadata) component);
+ if (!prototype || names.contains(name)) {
+ objects.put(
+ name,
+ entry.getValue().create());
+ }
}
return objects;
}