You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Umesh Awasthi <um...@gmail.com> on 2012/09/04 06:07:37 UTC

Best place to define properties for plugin

I am in process to create a plugin and i need to pass provider class as
well some other properties to the plugin bean class.
though i can define them in side the plugin's  xml file but want these
properties to be configurable.

Since struts.xml loads after the plugin loading so i can not define the
properties there, any suggestion how to accomplish this ?

-- 
With Regards
Umesh Awasthi
http://www.travellingrants.com/

Re: Best place to define properties for plugin

Posted by Umesh Awasthi <um...@gmail.com>.
Thanks Gabriel  for the valuable inputs

On Wed, Sep 5, 2012 at 7:48 PM, Gabriel Belingueres
<be...@gmail.com>wrote:

> 2012/9/4 Umesh Awasthi <um...@gmail.com>:
> > I am in process to create a plugin and i need to pass provider class as
> > well some other properties to the plugin bean class.
> > though i can define them in side the plugin's  xml file but want these
> > properties to be configurable.
>
> I know of several ways of doing this:
>
> 1) Defining the property as usual with its own setter/getter in the
> plugin class. This will let you configure it with the <param> tag when
> you define your interceptor stack. You should provide a sensitive
> default value in case no <param> tag is present.
>
> 2) Declaring a <bean> for injecting an instance of some class using
> the IoC container provided with Struts. In your plugin you need to
> annotate with @Inject the setter method that will be called to inject
> the instance.
>
> 3) Declare a <constant> that will specify the *name* of a bean to
> inject. This is what is annotated with @Inject.
> Also you need to inject an instance of the Container class.
> In the init() method of the plugin, just call:
> container.getInstance(MyClass.class, myInjectedString);
> to get the proper instantiation of a given type. This is most useful
> when you have different strategies of accomplish some functionality
> and you can choose one by declaring a constant.
>
> 4) Idem 3), but instead of declaring a global <constant> you use a
> property as in 1), then you can have different interceptor stacks with
> different values assigned to this particular functionality.
>
> > Since struts.xml loads after the plugin loading so i can not define the
> > properties there, any suggestion how to accomplish this ?
>
> The only constraint I know of is that a plugin must not depend on (nor
> interfere with) definitions done in other plugin.
>
> HTH,
> Gabriel
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>


-- 
With Regards
Umesh Awasthi
http://www.travellingrants.com/

Re: Best place to define properties for plugin

Posted by Gabriel Belingueres <be...@gmail.com>.
2012/9/4 Umesh Awasthi <um...@gmail.com>:
> I am in process to create a plugin and i need to pass provider class as
> well some other properties to the plugin bean class.
> though i can define them in side the plugin's  xml file but want these
> properties to be configurable.

I know of several ways of doing this:

1) Defining the property as usual with its own setter/getter in the
plugin class. This will let you configure it with the <param> tag when
you define your interceptor stack. You should provide a sensitive
default value in case no <param> tag is present.

2) Declaring a <bean> for injecting an instance of some class using
the IoC container provided with Struts. In your plugin you need to
annotate with @Inject the setter method that will be called to inject
the instance.

3) Declare a <constant> that will specify the *name* of a bean to
inject. This is what is annotated with @Inject.
Also you need to inject an instance of the Container class.
In the init() method of the plugin, just call:
container.getInstance(MyClass.class, myInjectedString);
to get the proper instantiation of a given type. This is most useful
when you have different strategies of accomplish some functionality
and you can choose one by declaring a constant.

4) Idem 3), but instead of declaring a global <constant> you use a
property as in 1), then you can have different interceptor stacks with
different values assigned to this particular functionality.

> Since struts.xml loads after the plugin loading so i can not define the
> properties there, any suggestion how to accomplish this ?

The only constraint I know of is that a plugin must not depend on (nor
interfere with) definitions done in other plugin.

HTH,
Gabriel

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org