On 7/1/2011 5:28 AM, Wim Jongman wrote:
Hi,
I think many use this pattern:
Properties
properties = new Properties();
context.registerService(
IGravityEventHandler.class.getName(),
new
LoggingGravityEventHandler(), properties);
However, since my upgrade to 3.7 I get an error. Apparently
the interface to the registerservice method has been changed:
from
registerService(java.lang.String clazz,
java.lang.Object service, java.util.Dictionary properties)
to
registerService(java.lang.Class<S> clazz,
S service,
java.util.Dictionary<java.lang.String,?> properties)
Quite annoying right?
Yes, it is annoying, but it's the result of a change in the Equinox
implementation's move to support OSGi 4.3...which uses generics in
OSGi core API (as the second signature for
bundleContext.registerService describes above).
Of course this isn't specific to ECF at all...it's rather the
implied by OSGi 4.3 and the fact that Equinox 3.7 supports it.
FWIW, in the ECF code the easiest way to get around this is to
change the registerService call to cast the Properties instance like
this:
Properties properties = new Properties();
context.registerService(
IGravityEventHandler.class.getName(),
new
LoggingGravityEventHandler(), (Dictionary) properties);
The (Dictionary) cast satisfies the compiler.
Scott
|