Jayan
Jayan

Reputation: 18458

apache-commons-config PropertiesConfiguration: comments after last property is lost

I am using PropertiesConfiguration to edit property file. This allows me to retain comments. All works fine except for comments that comes after the last key..

For example input file

# *** A comment
GameCheck.no=No
**#  end coment**

The output is as below. It lost comment that was after last key

# *** A comment
GameCheck.no = myvar

The code as below.

package trials;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.PropertiesConfigurationLayout;

import java.io.FileWriter;
import java.io.IOException;

public class EditVersion {

    public static void main(String[] args) {

        try {
            PropertiesConfiguration config =  new PropertiesConfiguration("C:\\try\\in.properties");
            config.setProperty("application.version", "myvar");
            PropertiesConfigurationLayout layout = config.getLayout();

            config.save( new FileWriter( "c:/try/out.props"));
        } catch (ConfigurationException e) {

        } catch (IOException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
    }
}

Work around is to add a dummy property towards the end of file. Is there a correct way?

Upvotes: 5

Views: 5749

Answers (3)

myNameCoad
myNameCoad

Reputation: 2663

This seems to be a bug for old versions of commons-configuration ( 1.8 <= )

Version 1.10 should solve the issue.

Download from here https://commons.apache.org/proper/commons-configuration/download_configuration.cgi

Upvotes: 0

Emmanuel Bourg
Emmanuel Bourg

Reputation: 11058

This is a bug that should be reported in the project's JIRA :)

https://issues.apache.org/jira/browse/CONFIGURATION

Upvotes: 2

deltaforce2
deltaforce2

Reputation: 593

You could try to remove the ** from the beginning of **# end coment** in case it makes a difference.

Also check out whether it helps if there is an empty line just after your last actual line.

Upvotes: 0

Related Questions