[configuration] Creating a properties file
Hi, I trying to move from Commons Configuration 1.x to 2.1.1 and I cannot figure out how to do something that used to be obvious: creating a properties file that does not yet exist on the file system. In 1.x all I had to do is create a PropertiesConfiguration with a File, set a few properties and then save. In 2.1.1 I cannot find how to configure the build for it to accept a path to a file that does not exist, I always end up with: org.apache.commons.configuration2.ex.ConfigurationException: Could not locate: org.apache.commons.configuration2.io.FileLocator@28d79cba[fileName=store.properties,basePath=/media/data/projets/xwiki/src/git/xwiki-commons/xwiki-commons-core/xwiki-commons-job/target/test/jobs/status,sourceURL=,encoding=ISO-8859-1,fileSystem=,locationStrategy=] at org.apache.commons.configuration2.io.FileLocatorUtils.locateOrThrow(FileLocatorUtils.java:346) at org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:972) at org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:702) and from what I see in FileHandler sources it not really configurable. So did I missed something or am I really supposed to create an empty file before using the builder ? Thanks, -- Thomas - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Re: [configuration] Creating a properties file
Here is what I currently do: PropertiesBuilderParameters parameters = new Parameters().properties(); if (file.exists()) { new Parameters().properties().setFile(file); } FileBasedConfigurationBuilder builder = new FileBasedConfigurationBuilder(PropertiesConfiguration.class) .configure(parameters); PropertiesConfiguration properties = builder.getConfiguration(); properties.setProperty("property", "value"); builder.getFileHandler().save(file); but I find it more complex than it should. IMO the file handler should not care if the file exist or not by default (empty PropertiesConfiguration as in 1.x if it does not exist) and only fail if asked to in the parameters of the builder. At the very least it should be possible to have some way to tell the builder to not care about not existing file. On Wed, Aug 30, 2017 at 10:37 AM, Thomas Mortagne wrote: > Hi, > > I trying to move from Commons Configuration 1.x to 2.1.1 and I cannot > figure out how to do something that used to be obvious: creating a > properties file that does not yet exist on the file system. > > In 1.x all I had to do is create a PropertiesConfiguration with a > File, set a few properties and then save. > > In 2.1.1 I cannot find how to configure the build for it to accept a > path to a file that does not exist, I always end up with: > > org.apache.commons.configuration2.ex.ConfigurationException: Could not > locate: > org.apache.commons.configuration2.io.FileLocator@28d79cba[fileName=store.properties,basePath=/media/data/projets/xwiki/src/git/xwiki-commons/xwiki-commons-core/xwiki-commons-job/target/test/jobs/status,sourceURL=,encoding=ISO-8859-1,fileSystem=,locationStrategy=] > at > org.apache.commons.configuration2.io.FileLocatorUtils.locateOrThrow(FileLocatorUtils.java:346) > at > org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:972) > at > org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:702) > > and from what I see in FileHandler sources it not really configurable. > > So did I missed something or am I really supposed to create an empty > file before using the builder ? > > Thanks, > -- > Thomas -- Thomas - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Re: [configuration] Creating a properties file
Hi Thomas, Am 30.08.2017 um 10:56 schrieb Thomas Mortagne: > Here is what I currently do: > > PropertiesBuilderParameters parameters = new > Parameters().properties(); > if (file.exists()) { > new Parameters().properties().setFile(file); > } > > FileBasedConfigurationBuilder builder = > new > FileBasedConfigurationBuilder(PropertiesConfiguration.class) > .configure(parameters); > PropertiesConfiguration properties = builder.getConfiguration(); > > properties.setProperty("property", "value"); > > builder.getFileHandler().save(file); > > but I find it more complex than it should. one option would be to create the PropertiesConfiguration directly, populate it, and then save it using a FileHandler. This would roughly look something like the following: PropertiesConfiguration config = new PropertiesConfiguration(); config.addProperty(...); FileHandler handler = new FileHandler(config); File out = new File("union.properties"); handler.save(out); More information can be found in the user's guide in the section about file-based configurations [1]. HTH Oliver [1] http://commons.apache.org/proper/commons-configuration/userguide/howto_filebased.html#File_Operations_on_Configurations > > IMO the file handler should not care if the file exist or not by > default (empty PropertiesConfiguration as in 1.x if it does not exist) > and only fail if asked to in the parameters of the builder. At the > very least it should be possible to have some way to tell the builder > to not care about not existing file. > > On Wed, Aug 30, 2017 at 10:37 AM, Thomas Mortagne > wrote: >> Hi, >> >> I trying to move from Commons Configuration 1.x to 2.1.1 and I cannot >> figure out how to do something that used to be obvious: creating a >> properties file that does not yet exist on the file system. >> >> In 1.x all I had to do is create a PropertiesConfiguration with a >> File, set a few properties and then save. >> >> In 2.1.1 I cannot find how to configure the build for it to accept a >> path to a file that does not exist, I always end up with: >> >> org.apache.commons.configuration2.ex.ConfigurationException: Could not >> locate: >> org.apache.commons.configuration2.io.FileLocator@28d79cba[fileName=store.properties,basePath=/media/data/projets/xwiki/src/git/xwiki-commons/xwiki-commons-core/xwiki-commons-job/target/test/jobs/status,sourceURL=,encoding=ISO-8859-1,fileSystem=,locationStrategy=] >> at >> org.apache.commons.configuration2.io.FileLocatorUtils.locateOrThrow(FileLocatorUtils.java:346) >> at >> org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:972) >> at >> org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:702) >> >> and from what I see in FileHandler sources it not really configurable. >> >> So did I missed something or am I really supposed to create an empty >> file before using the builder ? >> >> Thanks, >> -- >> Thomas > > > - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Re: [configuration] Creating a properties file
OK but my use case is that the file may or may not already exist and if it already exist I need to modify it, not overwrite it. My point is that I did not really needed to care about that in 1.x. On Wed, Aug 30, 2017 at 5:49 PM, Oliver Heger wrote: > Hi Thomas, > > Am 30.08.2017 um 10:56 schrieb Thomas Mortagne: >> Here is what I currently do: >> >> PropertiesBuilderParameters parameters = new >> Parameters().properties(); >> if (file.exists()) { >> new Parameters().properties().setFile(file); >> } >> >> FileBasedConfigurationBuilder builder = >> new >> FileBasedConfigurationBuilder(PropertiesConfiguration.class) >> .configure(parameters); >> PropertiesConfiguration properties = builder.getConfiguration(); >> >> properties.setProperty("property", "value"); >> >> builder.getFileHandler().save(file); >> >> but I find it more complex than it should. > > one option would be to create the PropertiesConfiguration directly, > populate it, and then save it using a FileHandler. This would roughly > look something like the following: > > PropertiesConfiguration config = new PropertiesConfiguration(); > config.addProperty(...); > > FileHandler handler = new FileHandler(config); > File out = new File("union.properties"); > handler.save(out); > > More information can be found in the user's guide in the section about > file-based configurations [1]. > > HTH > Oliver > > [1] > http://commons.apache.org/proper/commons-configuration/userguide/howto_filebased.html#File_Operations_on_Configurations > >> >> IMO the file handler should not care if the file exist or not by >> default (empty PropertiesConfiguration as in 1.x if it does not exist) >> and only fail if asked to in the parameters of the builder. At the >> very least it should be possible to have some way to tell the builder >> to not care about not existing file. >> >> On Wed, Aug 30, 2017 at 10:37 AM, Thomas Mortagne >> wrote: >>> Hi, >>> >>> I trying to move from Commons Configuration 1.x to 2.1.1 and I cannot >>> figure out how to do something that used to be obvious: creating a >>> properties file that does not yet exist on the file system. >>> >>> In 1.x all I had to do is create a PropertiesConfiguration with a >>> File, set a few properties and then save. >>> >>> In 2.1.1 I cannot find how to configure the build for it to accept a >>> path to a file that does not exist, I always end up with: >>> >>> org.apache.commons.configuration2.ex.ConfigurationException: Could not >>> locate: >>> org.apache.commons.configuration2.io.FileLocator@28d79cba[fileName=store.properties,basePath=/media/data/projets/xwiki/src/git/xwiki-commons/xwiki-commons-core/xwiki-commons-job/target/test/jobs/status,sourceURL=,encoding=ISO-8859-1,fileSystem=,locationStrategy=] >>> at >>> org.apache.commons.configuration2.io.FileLocatorUtils.locateOrThrow(FileLocatorUtils.java:346) >>> at >>> org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:972) >>> at >>> org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:702) >>> >>> and from what I see in FileHandler sources it not really configurable. >>> >>> So did I missed something or am I really supposed to create an empty >>> file before using the builder ? >>> >>> Thanks, >>> -- >>> Thomas >> >> >> > > - > To unsubscribe, e-mail: user-unsubscr...@commons.apache.org > For additional commands, e-mail: user-h...@commons.apache.org > -- Thomas - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Re: [configuration] Creating a properties file
Am 31.08.2017 um 08:12 schrieb Thomas Mortagne: > OK but my use case is that the file may or may not already exist and > if it already exist I need to modify it, not overwrite it. I see. Then there is a constructor of FileBasedConfigurationBuilder that accepts a boolean allowFailOnInit flag. Setting this flag to true will cause the behavior you are probably after: If the file does not exist, an empty configuration is created. Otherwise, it is loaded from the file. Oliver > > My point is that I did not really needed to care about that in 1.x. > > On Wed, Aug 30, 2017 at 5:49 PM, Oliver Heger > wrote: >> Hi Thomas, >> >> Am 30.08.2017 um 10:56 schrieb Thomas Mortagne: >>> Here is what I currently do: >>> >>> PropertiesBuilderParameters parameters = new >>> Parameters().properties(); >>> if (file.exists()) { >>> new Parameters().properties().setFile(file); >>> } >>> >>> FileBasedConfigurationBuilder builder = >>> new >>> FileBasedConfigurationBuilder(PropertiesConfiguration.class) >>> .configure(parameters); >>> PropertiesConfiguration properties = builder.getConfiguration(); >>> >>> properties.setProperty("property", "value"); >>> >>> builder.getFileHandler().save(file); >>> >>> but I find it more complex than it should. >> >> one option would be to create the PropertiesConfiguration directly, >> populate it, and then save it using a FileHandler. This would roughly >> look something like the following: >> >> PropertiesConfiguration config = new PropertiesConfiguration(); >> config.addProperty(...); >> >> FileHandler handler = new FileHandler(config); >> File out = new File("union.properties"); >> handler.save(out); >> >> More information can be found in the user's guide in the section about >> file-based configurations [1]. >> >> HTH >> Oliver >> >> [1] >> http://commons.apache.org/proper/commons-configuration/userguide/howto_filebased.html#File_Operations_on_Configurations >> >>> >>> IMO the file handler should not care if the file exist or not by >>> default (empty PropertiesConfiguration as in 1.x if it does not exist) >>> and only fail if asked to in the parameters of the builder. At the >>> very least it should be possible to have some way to tell the builder >>> to not care about not existing file. >>> >>> On Wed, Aug 30, 2017 at 10:37 AM, Thomas Mortagne >>> wrote: Hi, I trying to move from Commons Configuration 1.x to 2.1.1 and I cannot figure out how to do something that used to be obvious: creating a properties file that does not yet exist on the file system. In 1.x all I had to do is create a PropertiesConfiguration with a File, set a few properties and then save. In 2.1.1 I cannot find how to configure the build for it to accept a path to a file that does not exist, I always end up with: org.apache.commons.configuration2.ex.ConfigurationException: Could not locate: org.apache.commons.configuration2.io.FileLocator@28d79cba[fileName=store.properties,basePath=/media/data/projets/xwiki/src/git/xwiki-commons/xwiki-commons-core/xwiki-commons-job/target/test/jobs/status,sourceURL=,encoding=ISO-8859-1,fileSystem=,locationStrategy=] at org.apache.commons.configuration2.io.FileLocatorUtils.locateOrThrow(FileLocatorUtils.java:346) at org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:972) at org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:702) and from what I see in FileHandler sources it not really configurable. So did I missed something or am I really supposed to create an empty file before using the builder ? Thanks, -- Thomas >>> >>> >>> >> >> - >> To unsubscribe, e-mail: user-unsubscr...@commons.apache.org >> For additional commands, e-mail: user-h...@commons.apache.org >> > > > - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Re: [configuration] Creating a properties file
Of course I looked everywhere except the constructor... Thanks a lot and sorry for the noise ! On Thu, Aug 31, 2017 at 4:43 PM, Oliver Heger wrote: > > > Am 31.08.2017 um 08:12 schrieb Thomas Mortagne: >> OK but my use case is that the file may or may not already exist and >> if it already exist I need to modify it, not overwrite it. > > I see. Then there is a constructor of FileBasedConfigurationBuilder that > accepts a boolean allowFailOnInit flag. Setting this flag to true will > cause the behavior you are probably after: If the file does not exist, > an empty configuration is created. Otherwise, it is loaded from the file. > > Oliver > >> >> My point is that I did not really needed to care about that in 1.x. >> >> On Wed, Aug 30, 2017 at 5:49 PM, Oliver Heger >> wrote: >>> Hi Thomas, >>> >>> Am 30.08.2017 um 10:56 schrieb Thomas Mortagne: Here is what I currently do: PropertiesBuilderParameters parameters = new Parameters().properties(); if (file.exists()) { new Parameters().properties().setFile(file); } FileBasedConfigurationBuilder builder = new FileBasedConfigurationBuilder(PropertiesConfiguration.class) .configure(parameters); PropertiesConfiguration properties = builder.getConfiguration(); properties.setProperty("property", "value"); builder.getFileHandler().save(file); but I find it more complex than it should. >>> >>> one option would be to create the PropertiesConfiguration directly, >>> populate it, and then save it using a FileHandler. This would roughly >>> look something like the following: >>> >>> PropertiesConfiguration config = new PropertiesConfiguration(); >>> config.addProperty(...); >>> >>> FileHandler handler = new FileHandler(config); >>> File out = new File("union.properties"); >>> handler.save(out); >>> >>> More information can be found in the user's guide in the section about >>> file-based configurations [1]. >>> >>> HTH >>> Oliver >>> >>> [1] >>> http://commons.apache.org/proper/commons-configuration/userguide/howto_filebased.html#File_Operations_on_Configurations >>> IMO the file handler should not care if the file exist or not by default (empty PropertiesConfiguration as in 1.x if it does not exist) and only fail if asked to in the parameters of the builder. At the very least it should be possible to have some way to tell the builder to not care about not existing file. On Wed, Aug 30, 2017 at 10:37 AM, Thomas Mortagne wrote: > Hi, > > I trying to move from Commons Configuration 1.x to 2.1.1 and I cannot > figure out how to do something that used to be obvious: creating a > properties file that does not yet exist on the file system. > > In 1.x all I had to do is create a PropertiesConfiguration with a > File, set a few properties and then save. > > In 2.1.1 I cannot find how to configure the build for it to accept a > path to a file that does not exist, I always end up with: > > org.apache.commons.configuration2.ex.ConfigurationException: Could not > locate: > org.apache.commons.configuration2.io.FileLocator@28d79cba[fileName=store.properties,basePath=/media/data/projets/xwiki/src/git/xwiki-commons/xwiki-commons-core/xwiki-commons-job/target/test/jobs/status,sourceURL=,encoding=ISO-8859-1,fileSystem=,locationStrategy=] > at > org.apache.commons.configuration2.io.FileLocatorUtils.locateOrThrow(FileLocatorUtils.java:346) > at > org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:972) > at > org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:702) > > and from what I see in FileHandler sources it not really configurable. > > So did I missed something or am I really supposed to create an empty > file before using the builder ? > > Thanks, > -- > Thomas >>> >>> - >>> To unsubscribe, e-mail: user-unsubscr...@commons.apache.org >>> For additional commands, e-mail: user-h...@commons.apache.org >>> >> >> >> > > - > To unsubscribe, e-mail: user-unsubscr...@commons.apache.org > For additional commands, e-mail: user-h...@commons.apache.org > -- Thomas - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org