I've made a quick revert at rev 798132, but a cleaner one is needed.

2009/7/27 Guillaume Nodet <gno...@gmail.com>:
> For more informations, see section 121.6.10 and 121.6.11 of the OSGi
> compendium spec, but there is a clear different between the service
> being enabled or not and the lazy / eager activation.
>
> 2009/7/27 Guillaume Nodet <gno...@gmail.com>:
>> Lazy activation of services does not mean that the service is not 
>> registered, but simply that the service object is not eagerly created.
>> Else, the service will never be registered in the OSGi registry.
>> Could you please revert this commit ?
>>
>> 2009/7/24 gawor <ga...@apache.org>:
>>> Author: gawor
>>> Date: Fri Jul 24 18:42:34 2009
>>> New Revision: 797601
>>>
>>> URL: http://svn.apache.org/viewvc?rev=797601&view=rev
>>> Log:
>>> services can also have eager or lazy activation
>>>
>>> Modified:
>>>    
>>> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ExtendedBlueprintContainer.java
>>>    
>>> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java
>>>    
>>> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/ServiceRecipe.java
>>>
>>> Modified: 
>>> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ExtendedBlueprintContainer.java
>>> URL: 
>>> http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ExtendedBlueprintContainer.java?rev=797601&r1=797600&r2=797601&view=diff
>>> ==============================================================================
>>> --- 
>>> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ExtendedBlueprintContainer.java
>>>  (original)
>>> +++ 
>>> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/ExtendedBlueprintContainer.java
>>>  Fri Jul 24 18:42:34 2009
>>> @@ -20,6 +20,7 @@
>>>  import java.util.Dictionary;
>>>  import java.util.List;
>>>
>>> +import org.apache.geronimo.blueprint.container.ServiceRecipe;
>>>  import org.apache.geronimo.blueprint.di.Repository;
>>>  import org.osgi.framework.Bundle;
>>>  import org.osgi.framework.BundleContext;
>>> @@ -59,4 +60,6 @@
>>>
>>>     AccessControlContext getAccessControlContext();
>>>
>>> +    boolean isServiceEnabled(ServiceRecipe service);
>>> +
>>>  }
>>>
>>> Modified: 
>>> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java
>>> URL: 
>>> http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java?rev=797601&r1=797600&r2=797601&view=diff
>>> ==============================================================================
>>> --- 
>>> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java
>>>  (original)
>>> +++ 
>>> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/BlueprintContainerImpl.java
>>>  Fri Jul 24 18:42:34 2009
>>> @@ -592,6 +592,20 @@
>>>         }
>>>     }
>>>
>>> +    public boolean isServiceEnabled(ServiceRecipe r) {
>>> +        List<SatisfiableRecipe> dependencies = 
>>> getSatisfiableDependenciesMap().get(r.getName());
>>> +        boolean enabled = true;
>>> +        if (dependencies != null) {
>>> +            for (SatisfiableRecipe recipe : dependencies) {
>>> +                if (!recipe.isSatisfied()) {
>>> +                    enabled = false;
>>> +                    break;
>>> +                }
>>> +            }
>>> +        }
>>> +        return enabled;
>>> +    }
>>> +
>>>     private void instantiateEagerComponents() {
>>>         List<String> components = new ArrayList<String>();
>>>         for (String name : 
>>> componentDefinitionRegistry.getComponentDefinitionNames()) {
>>> @@ -619,16 +633,16 @@
>>>         services = repository.getAllRecipes(ServiceRecipe.class);
>>>         for (ServiceRecipe r : services) {
>>>             List<SatisfiableRecipe> dependencies = 
>>> getSatisfiableDependenciesMap().get(r.getName());
>>> -            boolean satisfied = true;
>>> +            boolean enabled = true;
>>>             if (dependencies != null) {
>>>                 for (SatisfiableRecipe recipe : dependencies) {
>>>                     if (!recipe.isSatisfied()) {
>>> -                        satisfied = false;
>>> +                        enabled = false;
>>>                         break;
>>>                     }
>>>                 }
>>>             }
>>> -            if (satisfied) {
>>> +            if (r.isEager() && enabled) {
>>>                 r.register();
>>>             }
>>>         }
>>>
>>> Modified: 
>>> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/ServiceRecipe.java
>>> URL: 
>>> http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/ServiceRecipe.java?rev=797601&r1=797600&r2=797601&view=diff
>>> ==============================================================================
>>> --- 
>>> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/ServiceRecipe.java
>>>  (original)
>>> +++ 
>>> geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/container/ServiceRecipe.java
>>>  Fri Jul 24 18:42:34 2009
>>> @@ -94,6 +94,10 @@
>>>         this.prototypeService = 
>>> isPrototypeService(metadata.getServiceComponent());
>>>     }
>>>
>>> +    public boolean isEager() {
>>> +        return (metadata.getActivation() == 
>>> ComponentMetadata.ACTIVATION_EAGER);
>>> +    }
>>> +
>>>     public Recipe getServiceRecipe() {
>>>         return serviceRecipe;
>>>     }
>>> @@ -127,6 +131,9 @@
>>>         }
>>>         ServiceRegistrationProxy proxy = new ServiceRegistrationProxy();
>>>         addObject(proxy, true);
>>> +        if (blueprintContainer.isServiceEnabled(this)) {
>>> +            register();
>>> +        }
>>>         internalGetService(null, null); // null bundle means we don't want 
>>> to retrieve the actual service when used with a ServiceFactory
>>>         return proxy;
>>>     }
>>>
>>>
>>>
>>
>>
>>
>> --
>> Cheers,
>> Guillaume Nodet
>> ------------------------
>> Blog: http://gnodet.blogspot.com/
>> ------------------------
>> Open Source SOA
>> http://fusesource.com
>>
>>
>>
>>
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com
>



-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com

Reply via email to