@414n la scelta tecnica è stata fatta in base ad un semplice concetto... semplicità! non conoscevo le Preference Api pero' espresso in altri termini volevo avere un pojo da utilizzare come configurazione, che mi consentisse di non dover fare refactoring esteso, almeno per la parte di caricamente da file.
attualmente tramite Google GSON il caricamento del file di configurazione viene gestito da un metodo banale simil questo
Codice: Seleziona tutto
public static void loadFromFile(String file, Type type) {
File confFile = new File(file);
Reader conf = null;
Gson gs = new Gson();
Object confObj = null;
try {
conf = Files.newReader(confFile, Charset.forName("UTF-8"));
confObj = gs.fromJson(conf, type);
configuration = confObj;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (conf != null)
conf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Ti ripeto, non conosco le refactoring api, ma in questo modo posso:
- disaccoppiare l'oggetto configurazione, con lo storage.. che a sto punto puo' essere qualsiasi cosa (nello specifico il progetto in questione è un server smtp.. quindi per configurare il connettore, potrei tecnicamente includere nella configurazione l'oggetto java che lo definisce.. senza gestire travasi properties -> oggetto di nessun tipo.)
- se aggiungo una flag, non devo curarmi dello storage.. basta aggiundere un campo nel json e ovviamente modificare il codice che utilizza sta configurazione
- posso gestire diversi file di configurazione in un colpo solo.. e senza l'onere di dover configurare il sistema di configurazione.. che soprattutto in java è una cosa che mi urta assai.. ovvero complicare l'incomplicabile
@invalid_packet mi sa che forse mi sono spiegato male.. io intendo commentare come possibilità di avere roba tipo
Codice: Seleziona tutto
{
"port":9999,
"workers":120,
"maxConnections":100,
"mailDir":"outmail",
"sessionConfig":{
"mail.user":"bart",
"mail.host":"example.org"
# questo parametro è commentato.. decommentare in produzione
# "mail.host":"pippopluto.org"
}
}
che venga visto in modo corretto:D