Miguel, read the rest of that paragraph, and the following one:

"Although any Java object can be used as a property value, only String
objects and the eight primitive types (plus their wrappers) should be
used. Other types cannot be passed to handlers that reside external
from the Java VM."

"Another reason that arbitrary classes should not be used is the
mutability of objects. If the values are not immutable, then any
handler that receives the event could change the value. Any handlers
that received the event subsequently would see the altered value and
not the value as it was when the event was sent."

IMHO it's unfortunate that the specification uses the word SHOULD
instead of MUST; nevertheless it is irresponsible to advise people to
use arbitrary object types in Events.

Neil

On Tue, Mar 16, 2010 at 12:12 PM, Miguel <migue...@gmail.com> wrote:
> You can read in the specification about the properties:
> "Information about the actual event is provided as properties. The property
> name is a case-sensitive string and the value can be any object"
> (compendium osgi specification)
> So, you can use not only prinitive types...
> is it the object visible to other bundles? send the whole stacktrace to see
> where the problem is.
>
>
> Miguel
>
>
> On Tue, Mar 16, 2010 at 12:55 PM, Neil Bartlett <njbartl...@gmail.com>
> wrote:
>>
>> Eva,
>>
>> You haven't given the stack trace of the error or much other context,
>> e.g. it looks like it should be coming from the dispatching thread
>> rather than from the consumer.
>>
>> HOWEVER, to reinforce what Andrea said, you should not be putting an
>> object of any proprietary type into an Event. There are all sorts of
>> issues, for example the visibility of the class for that type, along
>> with the possibility that the event will be serialized and sent over
>> the network. Also events must be immutable because they are copied to
>> many consumers.
>>
>> If you want to send structured information such as is contained in
>> your Measure object, then please deconstruct it into a combination of
>> String and primitive fields.
>>
>> Regards,
>> Neil
>>
>> On Tue, Mar 16, 2010 at 11:45 AM, Eva Madrazo
>> <eva.madr...@grpss.ssr.upm.es> wrote:
>> > Hi Miguel,
>> > thanks for the quick answer.  In my org.osgi.service.event.Event
>> > implementation there isn't a constructor (String, Map) for the event
>> > object,
>> > there is a constructor that uses a Dictionary object instead
>> > .Nevertheless
>> > the rest is equivalent to my code.
>> > The events are posted, but it seems that it fails the conversion of the
>> > object included in the properties object.  When I construct the
>> > properties I
>> > have:
>> >
>> >                props.put("measure", (Measure)measure);
>> >
>> > But, when I retrieve this property from the event:
>> >
>> >                Measure measure = (Measure) event.getProperty("measure");
>> >
>> > The error is launched   ERROR - Exception while dispatching event
>> > org.osgi.service.event.Event [topic=topicName] to handler
>> > mypackage.simpleeventhand...@3e953e95
>> >
>> >
>> > .... any ideas?
>> > thanks!
>> >
>> >
>> > Date: Tue, 16 Mar 2010 11:31:05 +0100
>> > From: Miguel <migue...@gmail.com>
>> > Subject: Re: [osgi-dev] problem while receiving an Event
>> > To: OSGi Developer Mail List <osgi-dev@mail.osgi.org>
>> > Message-ID:
>> >        <6ed2320c1003160331n73f54f20gc53935ade58a4...@mail.gmail.com>
>> > Content-Type: text/plain; charset="iso-8859-1"
>> >
>> > try to use event admin this way:
>> >
>> > String topic = "here_my_topic_to_be_filtered";
>> >          Map properties = new Properties();
>> >
>> > [...]
>> >
>> >          Event ev = new Event(topic, properties);
>> >
>> > and post the event this way:
>> >
>> > _eventAdmin.postEvent ( ev );
>> >
>> >
>> > where _eventAdmin is the service reference ...
>> >
>> >
>> >
>> > Miguel
>> >
>> >
>> > On Tue, Mar 16, 2010 at 11:20 AM, Eva Madrazo
>> > <eva.madr...@grpss.ssr.upm.es>wrote:
>> >
>> >
>> >> > Hi,
>> >> > maybe this is a very simple problem but I do not achieve to resolve
>> >> > it
>> >> > and
>> >> > I found difficult to find information about it, so sorry if this is
>> >> > being
>> >> > answered before.  First of all I'm executing an equinox eRCP platform
>> >> > on
>> >> > a
>> >> > Windows Mobile 6.1 using J9.
>> >> >
>> >> > I have a very strange problem while receiving an Event.  When posting
>> >> > the
>> >> > event I add a propietary object (Measure) to the hashtable props:
>> >> >
>> >> >         Hashtable props = new Hashtable();
>> >> >         props.put("measure", measure);
>> >> >         eventAdmin.postEvent(new Event(measure.getName(), props));
>> >> >
>> >> > When receiving the event I want to extract this Measure object. If I
>> >> > do
>> >> >   Object measure = (Object) event.getProperty("measure");
>> >> >
>> >> > no problem occur, but when I try to do:
>> >> >
>> >> >   Measure measure = (Measure) event.getProperty("measure");
>> >> >
>> >> > I have this error in logs:
>> >> > ERROR - Exception while dispatching event
>> >> > org.osgi.service.event.Event
>> >> > [topic=topicName] to handler mypackage.simpleeventhand...@3e953e95
>> >> >
>> >> >
>> >> > I have check that the bundle imports the bundle with the definition
>> >> > of
>> >> > Measure object.
>> >> >
>> >> > I cannot imagine anything to change, please help me  :) >
>> >> > Thank you very much,
>> >> >  Eva
>> >> >
>> >
>> > _______________________________________________
>> > OSGi Developer Mail List
>> > osgi-dev@mail.osgi.org
>> > https://mail.osgi.org/mailman/listinfo/osgi-dev
>> >
>>
>> _______________________________________________
>> OSGi Developer Mail List
>> osgi-dev@mail.osgi.org
>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>
>
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev
>

_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to