felix-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard S. Hall" <he...@ungoverned.org>
Subject Re: Felix 4.0.0 didn't allow Object in configMap
Date Tue, 27 Sep 2011 15:04:39 GMT
On 9/27/11 10:45 AM, echo_o wrote:
> Thank you Richard.
>
> As your said that if I used felixConstants, I actually didn't use standard API, so I
think I should find another way to achieve my requirement.
>
> PS: Maybe newFramework() should allow Map<String, Object>  in the next release.

Even then, OSGi probably won't standardize on passing in bundle 
activators, which is something specific to Felix.

If you want to achieve the same basic thing using a standard approach, 
you simply need to creating your framework instance with 
FrameworkFactory.newFramework(), then call init() on it, after which you 
can get the system bundle context to register services. You can also add 
a synchronous bundle listeners to listen for when the framework stops. 
This gives you pretty much the same behavior as what you'd get with 
passing in a bundle activator.

-> richard

>
>
> 2011-09-27
>
>
>
> XuHuiSheng
>
>
>
> 发件人: Richard S. Hall
> 发送时间: 2011-09-27  22:05:41
> 收件人: users
> 抄送:
> 主题: Re: Felix 4.0.0 didn't allow Object in configMap
>
> On 9/27/11 1:38 AM, echo_o wrote:
>> Hi Guys,
>>
>>     First, Glad to see felix 4.0.0 released and provide OSGi 4.3 new features.  Thank
you for your greate job.
>>
>>     But I meet a small problem, that the org.osgi.framework.launch.FrameworkFactory.newFramework()
need a Map<String, String>   for its parameter now.  It means that I could not pass
a Object to configMap.
>>
>>     Unfortunately, I need put a SystemBundleActivator to the framework,  So you will
see codes like below:
>>
>> configMap.put(FelixConstants.SYSTEMBUNDLE_ACTIVATORS_PROP, Collections.singletonList(activator));
>>
>>     which is not allow in OSGi 4.3.  I digged the source of Felix.java, there is
also some config parameter using non-string type,  E.G.
>>
>> m_logger = (Logger) m_configMutableMap.get(FelixConstants.LOG_LOGGER_PROP);
>>
>>     So I guess, if I still want to use Felix non-standard config parameter, then
I cannot use FrameworkFactory any more.
> You know, I never noticed this, but yes that is correct. I didn't
> realize that this was changed to<String, String>...if I did, I would
> have probably pushed for<String, Object>  in R4.3.
>>     Is there anyway that I could still using FrameworkFactory?  Any suggestion will
be appreciated.  Thank you very much.
> Internally, the Felix framework does not completely use generics, so
> just by chance, you can probably still do it. If you create a raw Map
> and then cast it to Map<String, String>  when you call newFramework(),
> then it will still work.
> However, this is a short-term solution. We'll likely need to create a
> FelixFrameworkFactory that allows you to pass in a Map<String, Object>.
> Sort of sucks, since it will be non-standard API, but the fact is, if
> you are passing in Objects as config properties then you are already
> using non-standard API.
> ->  richard
>>
>>
>>     PS: the download URL of felix source in home page is broken.
>>
>> http://labs.renren.com/apache-mirror//felix/org.apache.felix.framework-4.0.0-project.zip
>>
>>     I think it should be changed to
>>
>> http://labs.renren.com/apache-mirror//felix/org.apache.felix.framework-4.0.0-source-release.zip
>>
>>
>> 2011-09-27
>>
>>
>>
>> XuHuisheng
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Mime
View raw message