You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Felix Meschberger (JIRA)" <ji...@apache.org> on 2009/06/15 11:05:07 UTC

[jira] Commented: (FELIX-925) Extend SCR to allow alternate activate and deactivate method signatures

    [ https://issues.apache.org/jira/browse/FELIX-925?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12719469#action_12719469 ] 

Felix Meschberger commented on FELIX-925:
-----------------------------------------

Added declaration file support for setting the name of the activate and deactivate methods in Rev. 784693:

  * The activate/deactivate attributes are now supported and are read
  * Upon declaration validation, the activate/deactivate values are validated:
      - if not set, the defaults "activate" and "deactivate" are assumed
      - for DS 1.0 namespaced declaration, the value is ignored and replaced by the default values (and a WARN message is logged)
      - for DS 1.1 namespaced declaration, the value is  accepted

Unit tests have also been added to verify this behaviour. 

> Extend SCR to allow alternate activate and deactivate method signatures
> -----------------------------------------------------------------------
>
>                 Key: FELIX-925
>                 URL: https://issues.apache.org/jira/browse/FELIX-925
>             Project: Felix
>          Issue Type: New Feature
>          Components: Declarative Services (SCR)
>    Affects Versions: scr-1.0.6
>         Environment: OSGi RFC-0134, OSGi R4.2 Early Draft 2 (http://www.osgi.org/download/osgi-4.2-early-draft2.pdf)
>            Reporter: Felix Meschberger
>            Assignee: Felix Meschberger
>             Fix For: scr-1.2.0
>
>
> A way is needed to avoid using DS API at all in components with SCR. This means the activate and deactivate methods should not require the ComponentContext parameter. We should also allow the names of the activate and deactivate methods to be specified to avoid requiring specific method names.
> To support this, the follow attributes will be added to the component element:
>     <attribute name="activate" type="token" use="optional" default="activate" />
>     <attribute name="deactivate" type="token" use="optional default="deactivate" />
> The activate attribute will specify the name of the activate method and the deactivate attribute will specify the name of the deactivate method.
> The signature for the activate and deactivate methods is:
>                     p r o t e c t ed vo i d <me thod - name> (< a r gumen t s > ) ;
> <arguments> can be zero or more arguments.
> For the activate method each argument must be of one of the following types:
>      ●   ComponentContext - the Component Context for the component
>      ●   BundleContext - the Bundle Context of the component's bundle
>      ●   Map - the Component Properties from ComponentContext.getProperties.
> If any argument of the activate method is not one of the above types, SCR must log an error message with the Log Service, if present, and the component configuration is not activated.
> For the deactivate method each argument must be of one of the following types:
>      ●   int/Integer - the deactivation reason
>      ●   ComponentContext - the Component Context for the component
>      ●   BundleContext - the Bundle Context of the component's bundle
>      ●   Map - the Component Properties from ComponentContext.getProperties.
> If any argument of the deactivate method is not one of the above types, SCR must log an error message with the Log Service, if present, and the deactivation of the component configuration will continue.
> The methods may also be declared public. The same rules as specified in 112.5.8 will be used to locate the activate and deactivate methods in the implementation class hierarchy.
> 3.2.1 Component deactivation reasons
> When a component is deactivated, the reason for the deactivation can be passed to the deactivate method. The following deactivation reasons are specified in ComponentConstants.
>                  /**
>                    * The reason the component instance was deactivated is unspecified.
>                    *
>                    * @since 1.1
>                    */
>                  public static final int DEACTIVATION_REASON_UNSPECIFIED = 0;
>                  /**
>                    * The component instance was deactivated because the component was disabled.
>                    *
>                    * @since 1.1
>                    */
>                  public static final int DEACTIVATION_REASON_DISABLED = 1;
>                  /**
>                    * The component instance was deactivated because a reference became unsatisfied.
>                    *
>                    * @since 1.1
>                    */
>                   public static final int DEACTIVATION_REASON_REFERENCE = 2;
>                   /**
>                    * The component instance was deactivated because its configuration was changed.
>                    *
>                    * @since 1.1
>                    */
>                   public static final int DEACTIVATION_REASON_CONFIGURATION_MODIFIED = 3;
>                   /**
>                    * The component instance was deactivated because its configuration was deleted.
>                    *
>                    * @since 1.1
>                    */
>                   public static final int DEACTIVATION_REASON_CONFIGURATION_DELETED = 4;
>                   /**
>                    * The component instance was deactivated because the component was disposed.
>                    *
>                    * @since 1.1
>                    */
>                   public static final int DEACTIVATION_REASON_DISPOSED = 5;
>                   /**
>                    * The component instance was deactivated because the bundle was stopped.
>                    *
>                    * @since 1.1
>                    */
>                   public static final int DEACTIVATION_REASON_BUNDLE_STOPPED = 6;

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.