/*
* Copyright (c) 2012-2015, Luigi R. Viggiano
* All rights reserved.
*
* This software is distributable under the BSD license.
* See the terms of the BSD license in the documentation provided with this software.
*/
package org.aeonbits.owner.examples;
import org.aeonbits.owner.Config;
import org.aeonbits.owner.Config.HotReload;
import org.aeonbits.owner.Config.Sources;
import org.aeonbits.owner.ConfigFactory;
import org.aeonbits.owner.ExamplesBase;
import org.aeonbits.owner.Reloadable;
import org.aeonbits.owner.event.ReloadEvent;
import org.aeonbits.owner.event.ReloadListener;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Date;
import java.util.Properties;
/**
* @author Luigi R. Viggiano
*/
public class HotReloadExample extends ExamplesBase {
private static final String CFG_FILE = "file:target/examples-generated-resources/HotReloadExample.properties";
private static File target;
static {
try {
target = fileFromURI(CFG_FILE);
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
@Sources(CFG_FILE)
@HotReload(1)
interface AutoReloadConfig extends Config, Reloadable {
@DefaultValue("5")
Integer someValue();
}
public static void main(String[] args) throws IOException, InterruptedException {
System.out.printf("\n\n HOT RELOAD EXAMPLE \n\n");
save(target, new Properties() {{
setProperty("someValue", "10");
}});
AutoReloadConfig cfg = ConfigFactory.create(AutoReloadConfig.class);
cfg.addReloadListener(new ReloadListener() {
public void reloadPerformed(ReloadEvent event) {
System.out.print("\rReload intercepted at " + new Date() + " \n");
}
});
System.out.println("The program is running. ");
System.out.println("Now you can change the file located at: \n\n\t" + target.getAbsolutePath() +
"\n\n ...and see the changes reflected below\n\n");
int someValue = 0;
while (someValue >= 0) {
someValue = cfg.someValue();
System.out.print("\rsomeValue is: " + someValue + "\t\t\t\t");
Thread.sleep(500);
}
}
}