You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Sebastian Heib <he...@synyx.de> on 2009/12/02 17:08:25 UTC

iPojo and valid components

Hi,

I have an iPojo component that asks the user for some input data. This 
data is then provided as a service for other bundles. So far - no 
problem. But I only want to provide the data for other components, AFTER 
the user entered something (so as soon as there is actually data 
available), and not while the user is still entering data (as the 
provided data would be empty in this case).

But as my component must be valid for the user to enter something, the 
service is also immediately available. This results in the consuming 
component to get valid as well, but without the actual data (this is NOT 
what I want, I want the consuming component to get valid as soon as 
there is real data available). I tried to write a handler for this case 
that checks if the user input data is actually valid. Is this the way to 
go? Or is there an easier way? How can I re-check the provided service 
within my handler (currently I check it once in the 'start' method, but 
how to I know if something changed on the service side?)?

Thanks,
Sebastian

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: iPojo and valid components

Posted by Clement Escoffier <cl...@gmail.com>.
Hi,



On 02.12.2009, at 17:08, Sebastian Heib wrote:

> Hi,
> 
> I have an iPojo component that asks the user for some input data. This data is then provided as a service for other bundles. So far - no problem. But I only want to provide the data for other components, AFTER the user entered something (so as soon as there is actually data available), and not while the user is still entering data (as the provided data would be empty in this case).
> 
> But as my component must be valid for the user to enter something, the service is also immediately available. This results in the consuming component to get valid as well, but without the actual data (this is NOT what I want, I want the consuming component to get valid as soon as there is real data available). I tried to write a handler for this case that checks if the user input data is actually valid. Is this the way to go? Or is there an easier way? How can I re-check the provided service within my handler (currently I check it once in the 'start' method, but how to I know if something changed on the service side?)?

There is several way to do that.
- Doing a handler will work obviously, but this is really dependent to your case.
- Using the lifecycle controller (@Controller) which allow you to invalid your instance until the configuration (here the user input) is correct
- Having an instance taking the user input and when it's done, creating another instance (which provides the service) with the user entry as parameter (i.e. configuration). Something like:


 @Requires(filter="factory.name=my.second.component")
 Factory myFactory;

    public void receiveUserInput(String input) {
        Properties conf = new Properties();
        conf.put("user.input", input);
        try {
            myFactory.createComponentInstance(conf);
        } catch (UnacceptableConfiguration e) {
            e.printStackTrace();
        } catch (MissingHandlerException e) {
            e.printStackTrace();
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
    }


Regards,

Clement

> 
> Thanks,
> Sebastian
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>