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

Reply via email to