Clement,
I managed to get this to work using the following pattern:
*...@component(...)*
*public class MyComponent {*
* private boolean mIsValid = false;*
*
> *
* @Validate*
* public void starting() throws Exception {*
* init();*
* mIsValid = true;*
* }*
*
> *
* @Invalidate*
* public void stopping() {*
* mIsValid = false;*
* terminate();*
* }*
*
> *
* @Updated*
* public void updated() throws Exception {*
* // Do nothing if we are not valid yet*
* if (mIsValid) {*
* restart();*
* }*
* }*
*
> *
* @Property(name = "myProp", mandatory = false, value = "default value")*
* private String mMyProp;*
*
> *
* private String mRegisteredMyProp;*
*
> *
* private void init() throws Exception {*
* // Perform my initialisation*
* ...*
* mRegisteredMyProp = mMyProp;*
* }*
*
> *
* private void terminate() {*
* // Perform my cleanup*
* ...*
* mRegisteredMyProp = null;*
* }*
*
> *
* private void restart() throws Exception {*
* // Has the configuration changed?*
* if (!mMyProp.equals(mRegisteredMyProp) {*
* terminate();*
* init();*
* }*
* }*
*}*
Thus I didn't need a life cycle controller after all. The implementation of
FELIX-2773 could probably do something similar. I think that if iPOJO were
to support inheritance, then the need to include functionality such as
FELIX-2773 would be void since it would then be an easy task to put it in a
super class. Forgive me for asking again but would is the status of
supporting inheritance in iPOJO?
/Bengt
2011/1/11 Clement Escoffier <[email protected]>
>
>
> On 11.01.11 10:16, "Bengt Rodehav" <[email protected]> wrote:
>
> >I created the following JIRA ticket:
> >
> >https://issues.apache.org/jira/browse/FELIX-2773
>
> Thanks,
>
> >
> ><https://issues.apache.org/jira/browse/FELIX-2773>I'll try experimenting
> >with the life cycle controller and see if I can use that as a workaround.
> >
> >Are you thinking something like this:
> >
> >- Create an attribute that acts as life cycle controller. Initial value
> >would be true.
> >- When I detect that a critical property (one that requires restart) is
> >updated, I set the life cycle controller to false. I guess I would do this
> >in an @Updated method.
> >
> >When do I set the life cycle controller to true again?
>
>
> Probably at the end of the @Updated if everything is fine.
>
> Regards,
>
> Clement
>
> >
> >/Bengt
> >
> >2011/1/11 Clement Escoffier <[email protected]>
> >
> >> Hi,
> >>
> >> On 10.01.11 14:59, "Bengt Rodehav" <[email protected]> wrote:
> >>
> >> >I use iPOJO and configuration admin. When certain configuration
> >>properties
> >> >change, I want to "restart" my iPOJO instance. I e I want the instance
> >>to
> >> >become invalid and then valid again. Currently I do some
> >>initialisation on
> >> >the method marked as @Validate and some cleanup in the method marked
> >> >as @Invalidate.
> >> >
> >> >It's very tricky to get this to work. When I start my application it
> >>seems
> >> >like both the @Validate and the @Updated methods are called which
> >>causes
> >> >problems. What is the recommended way to accomplish this?
> >> >
> >> >Ideally I would like to mark my iPOJO properties as requiring the
> >>instance
> >> >to "restart", e g
> >> >
> >> >* @Property(name = "rootUrl", restart = "true")*
> >> >
> >> >* private String mRootUrl;*
> >>
> >> Unfortunately this is not supported. It can be an interesting feature to
> >> allow an instance to be invalidated/validated during the
> >>reconfiguration.
> >> Could you open a jira issue ?
> >>
> >> In the meantime, you could try to use the lifecycle controller to force
> >> the invalidation / revalidation.
> >>
> >> Regards,
> >>
> >> Clement
> >>
> >> >
> >> >
> >> >/Bengt
> >>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [email protected]
> >> For additional commands, e-mail: [email protected]
> >>
> >>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>