On 8/11/10 14:16, mhutton86 wrote:
Thank you for the quick reply Richard,

To be honest, I did not know this could be done without the @Requires.

Although when I try without the @Requires, @Bind does not pickup any new
tidgets at all.
according to http://felix.apache.org/site/ipojo-reference-card.html @
"Configuring service dependencies in the instance configuration" It appears
I need the @Requires with a matching (id) option.

Unless there is something else that I am missing?

I am not sure.

I do know that @Requires and @Bind/@Unbind are independent of each other, although they can be used together. There are basically two ways to have your dependencies injected:

  1. Field injection (i.e., @Requires)
  2. Method injection (i.e., @Bind/@Unbind)

iPOJO does allow you to use both at the same time, but typically in such situations the bind/unbind methods are more for notification purposes or for obtaining service properties.

-> richard



Richard S. Hall wrote:
   If you have @Bind/@Unbind and use them to maintain your own list, then
why do you need @Requires at all?

->  richard

On 8/11/10 13:17, mhutton86 wrote:
I have a service that I require

@Requires(optional=true, id="tidget_devices", filter="(!(serviceName=file
reader))")
private TidgetSaasmDevice[] initialTidgets;

but these TidgetSaasmDevices are not ready off the bat, and have to be
added
via late-binding
@Bind(id="tidget_devices")
private synchronized void addTidgetSaasmDevice(TidgetSaasmDevice
newTidget)
{...}

@Unbind(id="tidget_devices")
private synchronized void removeTidgetSaasmDevice(TidgetSaasmDevice
newTidget){...}

since TidgetSaasmDevice[] is an array. adding to it is a pain. so I have
a
List to take care of this.

// dynamic list for adding tidgets
private List<TidgetSaasmDevice>   tidgets = new
ArrayList<TidgetSaasmDevice>();

but the problem when I start felix, is that a tidget is always loaded
twice
(random). due to the initial @Requires dependency trying to be fulfilled.
@optional = true, won't solve this (not surprising). I can solve this by
checking if this node is already added before trying to add it again. but
this does not work ans is more of a hack then a fix.

Any ideas?

Example Output:
adding: tidget-saasm COM22-0
adding: tidget-saasm COM9-0
adding: tidget-saasm COM22-1
adding: tidget-saasm COM29-0
---------------------------------------------------------------------
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