On 8/11/10 14:53, Richard S. Hall wrote:
On 8/11/10 14:46, mhutton86 wrote:
http://felix.apache.org/site/how-to-use-ipojo-annotations.html#howtouseipojoannotatio...@bind
http://felix.apache.org/site/how-to-use-ipojo-annotations.html#howtouseipojoannotatio...@requires
Is where I was convinced about the mutual relationship between
@Bind/Unbind,
and @Requires. But if what you are saying is true, that would be
great and
would solve my problem. It is not working when i take away the @Requires
dependency and then the id parameter. Is there any chance you have a
resource of how to accomplish this?
This would be greatly appreciated.
I'm not sure what you're doing wrong, but even the reference card you
cited describes the two approaches as field vs method injection. I'm
not sure if the iPOJO docs include a method injection example.
If you download the example code for our book (it's big):
http://code.google.com/p/osgi-in-action/
The example in chapter12/paint-example-ip/ has a component
org.foo.paint which uses @Bind/@Unbind without @Requires.
p.s. The component in question is org.foo.paint.PaintFrame...
-> richard
Mark-Anthony
Richard S. Hall wrote:
On 8/11/10 14:16, mhutton86 wrote:
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]
---------------------------------------------------------------------
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]