Setting Values

The following methods allow you to add, remove, and modify entries and sections in a config file:

- {@link oaj.config.Config}
  - {@link oaj.config.Config#set(String,Object) set(String,Object)}
  - {@link oaj.config.Config#set(String,Object,Serializer) set(String,Object,Serializer)}
  - {@link oaj.config.Config#set(String,Object,Serializer,ConfigMod,String,List) set(String,Object,Serializer,ConfigMod,String,List)}
  - {@link oaj.config.Config#set(String,Object,Serializer,ConfigMod[],String,List) set(String,Object,Serializer,ConfigMod[],String,List)}
  - {@link oaj.config.Config#set(String,String) set(String,String)}
  - {@link oaj.config.Config#remove(String) remove(String)}
  - {@link oaj.config.Config#setSection(String,List) setSection(String,List)}
  - {@link oaj.config.Config#setSection(String,List,Map) setSection(String,List,Map)}
  - {@link oaj.config.Config#removeSection(String) removeSection(String)}

// Construct the sample config file programmatically Config c = Config. create("MyConfig.cfg").build() .set("key1", 1) .set("key2", true) .set("key3", new int[]{1,2,3}) .set("key4", new URI("http://foo")) .set("Section1/key1", 2) .set("Section1/key2", false) .set("Section1/key3", new int[]{4,5,6}) .set("Section1/key4", new URI("http://bar")) .commit();

The method {@link oaj.config.Config#set(String,Object,Serializer,ConfigMod[],String,List)} can be used for adding comments and pre-lines to entries, and specifying encoded values.

// Set an encoded value with some comments. c.set("key1", 1, null, ConfigMod. ENCODED, "Same-line comment", Arrays.asList( "# Comment 1", "", "# Comment 2" ) );

# Comment 1 # Comment 2 key1 = 1 # Same-line comment

The last 4 arguments in {@link oaj.config.Config#set(String,Object,Serializer,ConfigMod[],String,List)} are optional in that if you pass null, the current value will not be overwritten.
To unset the same-line comment, you should pass in a blank string.
To remove pre-lines, you should pass in an empty list.

Sections can be added with optional pre-lines using the `setSection` methods:

// Set an encoded value with some comments. c.setSection("NewSection", Arrays.asList( "# Section comment 1", "", "# Section comment 2" ) );

# Section comment 1 # Section comment 2 [NewSection]

Changes made to the configuration are transactional in nature.
They are kept in memory until you call the {@link oaj.config.Config#commit()} method.
Until then, you still see the modified values when you call any of the getters, but the modified values exist only in memory.

Changes can be rolled back using the {@link oaj.config.Config#rollback()} method.