[ 
http://issues.apache.org/jira/browse/CONFIGURATION-104?page=comments#action_12419922
 ] 

Oliver Heger commented on CONFIGURATION-104:
--------------------------------------------

+1 for the idea of a Layout class that tries to obtain as much information as 
possible from the properties file. I would like to start with a rather simple 
one that can be enhanced step by step.

The collaboration between a PropertiesConfiguration object and its Layout 
object could be as follows:
- The load(Reader) method of PropertiesConfiguration delegates to the Layout 
object.
- The Layout object reads the file line by line and stores relevant 
information, e.g. about comments, in internal data structures.
- Extracted properties are added to the PropertiesConfiguration.
- The Layout object is also registered as event listener at its 
PropertiesConfiguration. If events are received, its content is updated 
accordingly.
- PropertiesConfiguration.save(Writer) again delegates to the Layout object for 
writing the data back to file.

So the interface of the layout class could roughly look as follows:

public class PropertiesConfigurationLayout implements ConfigurationListener
{
    /**
     * Creates a new instance and sets the associated configuration.
     */
    public PropertiesConfigurationLayou(PropertiesConfiguration config);

    /**
     * Reads in a properties file.
     */
    public void load(Reader in) throws ConfigurationException;

    /**
     * Writes the internal data into a properties file.
     */
    public void save(Writer out) throws ConfigurationException;

    // it would also be nice to have access to comments for properties
    
    /**
     * Returns the comment for the specified key.
     */
    public String getComment(String key);

    /**
     * Sets the comment for the specified key.
     */
    public void setComment(String key, String comment);

    /**
     * Returns the header comment.
     */
    public String getHeaderComment();

    /**
     * Sets the header comment.
     */
    public void setHeaderComment(String comment);
}

Any thoughts?


> [configuration] Preserve file structure (line comments) when re-saving 
> properties file
> --------------------------------------------------------------------------------------
>
>          Key: CONFIGURATION-104
>          URL: http://issues.apache.org/jira/browse/CONFIGURATION-104
>      Project: Commons Configuration
>         Type: Bug

>  Environment: Operating System: other
> Platform: Other
>     Reporter: Oded Noam
>  Attachments: preserve-comments-patch, preserve-comments-patch-java1.3
>
> This bug applies when an application allows both manual editing of its 
> configuration files, and  manipulation of the configuration via software. 
> When 
> saving the configuration file after changing, its file structure - file, 
> section and line comments - will all be lost. Next time a human tries to edit 
> the configuration file, all property documentation will be lost.
> I have created a fix for this problem, applicable to PropertiesConfiguration 
> and XMLPropertiesConfiguration. The fix allows these classes to preserve a 
> list of comment lines preceding each property line. By default, comments are 
> not preserved; in case the comment preservation is required, it should be 
> enabled prior to loading the configuration file using:
> AbstractFileConfiguration.setDefaultPreserveComments(true);
> The fix is implemented and tested, attached as a patch file to this bug.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to