Hi Scott,
why don't use a managed service factory ?
It would automatically create a service based on a cfg. So for your user, he
creates the cfg file, and then, automatically, the corresponding service is
created.
Thoughts ?
Regards
JB
On 02/22/2018 09:18 PM, Leschke, Scott wrote:
> As I mentioned a few weeks ago, I’m trying to create a service instance
> programmatically and write the associated .cfg file for it. Based on
> feedback I
> got, I create the following method.
>
>
>
> The goal is to create the service instance and then get its configuration
> which
> at this point will mostly be the defaults that it receives in its
> configuration
> type (hence my previous post). It /appears/ to work, except what is really
> happening is that I get two services. One is created by
> createFactoryConfguration call and the other by Felix FileInstall after the
> .cfg
> file is written.
>
>
>
> Actually I’m a bit surprised that placeholder .cfg file isn’t created if
> property /felix.fileinstall.filename/is defined, as I think that would solve
> this problem, but perhaps there’s another way?
>
>
>
> Thoughts?
>
> * *
>
> * *
>
> *private**void* createConfig(String cpid, String dir, String name,
> Map<String,Object> props)
>
> *throws* Exception
>
> {
>
> Configuration conf = parent.cfgAdmin.createFactoryConfiguration(cpid,
> "?");
>
>
>
> dir = (dir.endsWith("/") ? dir : dir + '/');
>
> name = name.replaceAll(" ", "_").toLowerCase();
>
> File cfg = *new* File(dir + cpid + '-' + name + ".cfg");
>
>
>
> Dictionary<String,Object> confProps = toDictionary(props);
>
> confProps.put("felix.fileinstall.filename", cfg.toURI().toString());
>
>
>
> *try*
>
> {
>
> conf.update(confProps);
>
>
>
> // Get the properties for the new service object
>
> props = getProps(conf.getPid());
>
>
>
> // Create .cfg file with initial property set
>
> ITemplate tmp = parent.templateMgr.getTemplate(
> configTemplates.get(cpid) );
>
> tmp.bind("cfg", props);
>
>
>
> *try* (FileLineWriter w = *new* FileLineWriter(cfg))
>
> {
>
> w.putLine(tmp.render());
>
> }
>
> }
>
> *catch* (Exception e)
>
> {
>
> cfg.delete();
>
> conf.delete();
>
> *throw* e;
>
> }
>
> }
>
>
>
--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com