Oops, new Eclipse workspace -> settings gone.

Thanks for your watchful eye :)

Valentin

On 13 Mar 2010, at 03:39, Donald Woods wrote:

Looks like a file was added without the required license header, which
will cause mvn rat:check to fail at release time....

incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/ apache/aries/blueprint/container/IdSpace.java


-Donald


On 3/11/10 8:45 AM, [email protected] wrote:
Author: mahrwald
Date: Thu Mar 11 13:45:28 2010
New Revision: 921845

URL: http://svn.apache.org/viewvc?rev=921845&view=rev
Log:
ARIES-246: Fix duplicate anon component recipe problem with CompDefRegProcessors

Added:
incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/ apache/aries/blueprint/container/IdSpace.java
Modified:
incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/ apache/aries/blueprint/container/BlueprintContainerImpl.java incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/ apache/aries/blueprint/container/BlueprintRepository.java incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/ apache/aries/blueprint/container/RecipeBuilder.java incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/ apache/aries/blueprint/di/Repository.java

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/main/ java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java?rev=921845&r1=921844&r2=921845&view=diff
= = = = = = = = = ===================================================================== --- incubator/aries/trunk/blueprint/blueprint-core/src/main/java/ org/apache/aries/blueprint/container/BlueprintContainerImpl.java (original) +++ incubator/aries/trunk/blueprint/blueprint-core/src/main/java/ org/apache/aries/blueprint/container/BlueprintContainerImpl.java Thu Mar 11 13:45:28 2010
@@ -138,7 +138,8 @@ public class BlueprintContainerImpl impl
    private final AtomicBoolean running = new AtomicBoolean();
    private List<ServiceRecipe> services;
    private AccessControlContext accessControlContext;
-
+    private final IdSpace tempRecipeIdSpace = new IdSpace();
+
public BlueprintContainerImpl(BundleContext bundleContext, Bundle extenderBundle, BlueprintListener eventDispatcher, NamespaceHandlerRegistry handlers, ScheduledExecutorService executors, List<Object> pathList) {
        this.bundleContext = bundleContext;
        this.extenderBundle = extenderBundle;
@@ -427,7 +428,7 @@ public class BlueprintContainerImpl impl

    public BlueprintRepository getRepository() {
        if (repository == null) {
-            repository = new RecipeBuilder(this).createRepository();
+ repository = new RecipeBuilder(this, tempRecipeIdSpace).createRepository();
        }
        return repository;
    }
@@ -484,15 +485,31 @@ public class BlueprintContainerImpl impl
            }
// Update repository with recipes processed by the processors
            untrackServiceReferences();
- Repository tmpRepo = new RecipeBuilder(this).createRepository(); + Repository tmpRepo = new RecipeBuilder(this, tempRecipeIdSpace).createRepository();
+
+            LOGGER.debug("Updating blueprint repository");
+
+            for (String name : repository.getNames()) {
+                if (repository.getInstance(name) == null) {
+ LOGGER.debug("Removing uninstantiated recipe {}", new Object[] { name });
+                    repository.removeRecipe(name);
+                } else {
+ LOGGER.debug("Recipe {} is already instantiated", new Object[] { name });
+                }
+            }
+
            for (String name : tmpRepo.getNames()) {
                if (repository.getInstance(name) == null) {
+ LOGGER.debug("Adding new recipe {}", new Object[] { name });
                    Recipe r = tmpRepo.getRecipe(name);
                    if (r != null) {
                        repository.putRecipe(name, r);
                    }
+                } else {
+ LOGGER.debug("Recipe {} is already instantiated and cannot be updated", new Object[] { name });
                }
            }
+
            getSatisfiableDependenciesMap(true);
            trackServiceReferences();
        }

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/main/ java/org/apache/aries/blueprint/container/BlueprintRepository.java
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintRepository.java?rev=921845&r1=921844&r2=921845&view=diff
= = = = = = = = = ===================================================================== --- incubator/aries/trunk/blueprint/blueprint-core/src/main/java/ org/apache/aries/blueprint/container/BlueprintRepository.java (original) +++ incubator/aries/trunk/blueprint/blueprint-core/src/main/java/ org/apache/aries/blueprint/container/BlueprintRepository.java Thu Mar 11 13:45:28 2010
@@ -114,6 +114,13 @@ public class BlueprintRepository impleme
        }
        recipes.put(name, recipe);
    }
+
+    public void removeRecipe(String name) {
+        if (instances.get(name) != null)
+ throw new ComponentDefinitionException("Name " + name + " is already instanciated as " + instances.get(name) + " and cannot be removed.");
+
+        recipes.remove(name);
+    }

private Object convert(String name, Object instance) throws ComponentDefinitionException {
        try {

Added: incubator/aries/trunk/blueprint/blueprint-core/src/main/java/ org/apache/aries/blueprint/container/IdSpace.java
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/IdSpace.java?rev=921845&view=auto
= = = = = = = = = ===================================================================== --- incubator/aries/trunk/blueprint/blueprint-core/src/main/java/ org/apache/aries/blueprint/container/IdSpace.java (added) +++ incubator/aries/trunk/blueprint/blueprint-core/src/main/java/ org/apache/aries/blueprint/container/IdSpace.java Thu Mar 11 13:45:28 2010
@@ -0,0 +1,11 @@
+package org.apache.aries.blueprint.container;
+
+import java.util.concurrent.atomic.AtomicLong;
+
+public class IdSpace {
+    private AtomicLong currentId = new AtomicLong(0);
+
+    public long nextId() {
+        return currentId.getAndIncrement();
+    }
+}

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/main/ java/org/apache/aries/blueprint/container/RecipeBuilder.java
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/RecipeBuilder.java?rev=921845&r1=921844&r2=921845&view=diff
= = = = = = = = = ===================================================================== --- incubator/aries/trunk/blueprint/blueprint-core/src/main/java/ org/apache/aries/blueprint/container/RecipeBuilder.java (original) +++ incubator/aries/trunk/blueprint/blueprint-core/src/main/java/ org/apache/aries/blueprint/container/RecipeBuilder.java Thu Mar 11 13:45:28 2010
@@ -70,12 +70,13 @@ import org.osgi.service.blueprint.reflec
 */
public class RecipeBuilder {

-    private Set<String> names = new HashSet<String>();
-    private int nameCounter;
-    private ExtendedBlueprintContainer blueprintContainer;
-    private ComponentDefinitionRegistry registry;
+    private final Set<String> names = new HashSet<String>();
+    private final ExtendedBlueprintContainer blueprintContainer;
+    private final ComponentDefinitionRegistry registry;
+    private final IdSpace recipeIdSpace;

- public RecipeBuilder(ExtendedBlueprintContainer blueprintContainer) { + public RecipeBuilder(ExtendedBlueprintContainer blueprintContainer, IdSpace recipeIdSpace) {
+        this.recipeIdSpace = recipeIdSpace;
        this.blueprintContainer = blueprintContainer;
this.registry = blueprintContainer.getComponentDefinitionRegistry();
    }
@@ -349,7 +350,7 @@ public class RecipeBuilder {
    private String getName(String name) {
        if (name == null) {
            do {
-                name = "#recipe-" + ++nameCounter;
+                name = "#recipe-" + recipeIdSpace.nextId();
} while (names.contains(name) || registry.containsComponentDefinition(name));
        }
        names.add(name);

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/main/ java/org/apache/aries/blueprint/di/Repository.java
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/di/Repository.java?rev=921845&r1=921844&r2=921845&view=diff
= = = = = = = = = ===================================================================== --- incubator/aries/trunk/blueprint/blueprint-core/src/main/java/ org/apache/aries/blueprint/di/Repository.java (original) +++ incubator/aries/trunk/blueprint/blueprint-core/src/main/java/ org/apache/aries/blueprint/di/Repository.java Thu Mar 11 13:45:28 2010
@@ -50,6 +50,13 @@ public interface Repository {
    Recipe getRecipe(String name);

    void putRecipe(String name, Recipe recipe);
+
+    /**
+     * Remove an uninstantiated recipe
+     * @param name
+ * @throws ComponentDefinitionException if the recipe is already instantiated
+     */
+    void removeRecipe(String name);

    Object create(String name) throws ComponentDefinitionException;





Reply via email to