Hi,

Service properties can only be injected into fields or be 'static' (no
field). However, you can use a configuration property settings the service
property field:
  <component name="MyServiceImpl" classname="MyServiceImpl">
        <provides specifications="MyService">
            <property name="my.prop" field="fooEnabledField"
   />
        </provides>
  <properties>
      <!-- The constructor set the fooEnabledField field -->
  <property name="fooEnabled"
   constructor-parameter="0"
                 type="java.lang.Boolean"
                 mandatory="true"/>
  </properties>
    </component>
    <instance component="MyServiceImpl">
        <property name="fooEnabled" value="true"/>
    </instance>
    <instance component="MyServiceImpl">
        <property name="fooEnabled" value="false"/>
    </instance>

If you don't need the injected value inside your code, just use a 'static'
service property:

  <component name="MyServiceImpl" classname="MyServiceImpl">
        <provides specifications="MyService">
            <property name="fooEnabled" type="java.lang.Boolean"
mandatory="true/>"
        </provides>
  </component>


Regards,

Clement

On 23.04.11 00:28, "Paul Neyens" <[email protected]> wrote:

>Hi,
>
>I 'm currently discovering ipojo and I like it very much.
>One thing I am trying doesn't seem to work though: setting up a
>service with properties that should also be passed to the instance -
>preferably not through field injection.
>
>I tried some metadata that looks like this:
>
>   <component name="MyServiceImpl" classname="MyServiceImpl">
>        <provides specifications="MyService">
>            <property name="fooEnabled"
>                      constructor-parameter="0"
>                      type="java.lang.Boolean"
>                      mandatory="true"/>
>        </provides>
>    </component>
>    <instance component="MyServiceImpl">
>        <property name="fooEnabled" value="true"/>
>    </instance>
>    <instance component="MyServiceImpl">
>        <property name="fooEnabled" value="false"/>
>    </instance>
>
>I also tried replacing the constructor-parameter line with
>method="setFooEnabled" (having a corresponding method, of course)
>but only field injection (field="fooEnabled") seems to work.
>In the other cases a service is registered but the property is never
>injected (through constructor or setter).
>
>Am I overlooking some mistake I made, is there another way to achieve
>this or is this a missing feature?
>
>Thanks,
>
>Paul
>
>---------------------------------------------------------------------
>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]

Reply via email to