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