Webconsole creates a new configuration everytime a factory configuration is 
updated
-----------------------------------------------------------------------------------

                 Key: FELIX-901
                 URL: https://issues.apache.org/jira/browse/FELIX-901
             Project: Felix
          Issue Type: Bug
          Components: Web Console
    Affects Versions: webconsole-1.2.2
         Environment: felix-1.4.1
org.apache.felix.configadmin-1.0.4
org.apache.felix.metatype-1.0.2
org.apache.felix.webconsole-1.2.2
org.osgi.compendium-1.2.0
pax-web-service-0.5.1
            Reporter: Paul Neyens


When using the webconsole to update/edit configurations for a 
ManagedServiceFactory, it always creates a new configuration when pressing the 
'save' button.

Note:
I 'm not sure how to set the 'pid' attribute in the metatype's Designate 
element when a factory pid is available. In any case, the factory does not show 
up in the webconsole unless the 'pid' value is identical to the 'factoryPid' 
value.

Tested with following code: (I can provide a bundle if required)

package trial;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.service.cm.ConfigurationException;
import org.osgi.service.cm.ManagedServiceFactory;

import java.util.Dictionary;
import java.util.HashSet;
import java.util.Set;
import java.util.Hashtable;

public class TrialManagedServiceFactory implements ManagedServiceFactory, 
BundleActivator {

    private static final String PID = "trial.TrialManagedServiceFactory";
    private Set<String> pids = new HashSet<String>();

    public void start(BundleContext bundleContext) throws Exception {
        Hashtable props = new Hashtable(5);
        props.put(Constants.SERVICE_PID, PID);
        
bundleContext.registerService("org.osgi.service.cm.ManagedServiceFactory", 
this, props);
    }

    public void stop(BundleContext bundleContext) throws Exception {
    }

    public String getName() {
        return PID;
    }

    public void updated(String s, Dictionary dictionary) throws 
ConfigurationException {
        if (pids.add(s)) {
            System.out.println("TrialManagedServiceFactory: Received new pid " 
+ s);
        } else {
            System.out.println("TrialManagedServiceFactory: Received pid update 
" + s);
        }
        System.out.println(dictionary);
    }

    public void deleted(String s) {
        if (pids.remove(s)) {
            System.out.println("TrialManagedServiceFactory: Deleted pid " + s);
        } else {
            System.out.println("TrialManagedServiceFactory: Cannot delete 
unknown pid " + s);
        }
    }
}

metatype:

<?xml version="1.0" encoding="UTF-8"?>
<MetaData xmlns="http://www.osgi.org/xmlns/metatype/v1.0.0";>

    <OCD name="Trial Factory" id="trial.TrialManagedServiceFactory"
         description="Trial ManagedServiceFactory">
        <AD name="Param 1" id="trial.param.1" type="String"/>
        <AD name="Param 2" id="trial.param.2" type="Integer"/>
    </OCD>


    <Designate pid="trial.TrialManagedServiceFactory" 
factoryPid="trial.TrialManagedServiceFactory">
        <Object ocdref="trial.TrialManagedServiceFactory"/>
    </Designate>
</MetaData>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to