[ 
https://issues.apache.org/jira/browse/FELIX-584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dieter Wimberger resolved FELIX-584.
------------------------------------

    Resolution: Fixed

The new version resolves the issue. 

However, we realized that the Equinox implementation of the configuration admin 
behaves differently from the Apache Felix one: the methods that create a new 
instance of a Managed Service Factory do not imply that the Configuration 
instances "exist" (i.e. they cannot be listed or obtained otherwise if they are 
not updated using the instance returned by the methods themselves).

Even though it seems unimportant, as a matter of fact it can make a big 
difference for management agents. Thus, it seems as if there is a need to  have 
a clear statement as to whether the standard specifications (Service 
Compendium, 104.7.2) implicitly assume that using one of the two methods "to 
create a new instance of a Managed Service Factory" automatically implies that 
the created Configuration instance "exists" in the meaning of "existence" as 
used in 104.7.3.



> org.apache.felix.webconsole.internal.compendium.AjaxConfigManagerAction.applyConfiguration():
>  "create" action is not handled properly
> -------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: FELIX-584
>                 URL: https://issues.apache.org/jira/browse/FELIX-584
>             Project: Felix
>          Issue Type: Bug
>          Components: Web Console
>            Reporter: Dieter Wimberger
>            Assignee: Felix Meschberger
>         Attachments: AjaxConfigManagerAction.java.diff, FELIX-584-1.png
>
>
> The current revision of the code (662145) creates the configuration, and 
> returns true.
> else if ( request.getParameter( "create" ) != null )
> {
>     // pid is a factory PID and we have to create a new configuration
>     // we should actually also display that one !
>     Configuration config = ca.createFactoryConfiguration( pid, null );
>      // request.setAttribute(ATTR_REDIRECT_PARAMETERS, "pid=" +
>     // config.getPid());
>     return true;
>  }
> The problem with this approach is the fact that in many cases the 
> Configuration instance will not be persisted or available until the update() 
> method is used to set new properties.
> Based on the fact that the "create" action may be called already with a 
> complete set of properties edited in the form, I would suggest to only  
> differentiate between factory "create" and "save" in the way the 
> Configuration instance is created. i.e.:
>  if ( request.getParameter( "create" ) != null )
>  {
>      // pid is a factory PID and we have to create a new configuration
>      config = ca.createFactoryConfiguration( pid, null );
> } else {
>      // pid is managed service, get configuration
>      config = ca.getConfiguration( pid, null );
> }

-- 
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