Estou utizando o XStream para gravar os arquivos de configuração do meu sistema. Quando executo o toXML ocorre tudo perfeitamente. Porém quando tento ler o objeto do arquivo, está acontecendo o seguinte erro:
Exception in thread “main” com.thoughtworks.xstream.io.StreamException: : only whitespace content allowed before start tag and not / (position: START_DOCUMENT seen /… @1:1)
Este erro aconteceu quando usei o XppDomDriver. Quando uso o DomDriver ocorre outro problema:
[Fatal Error] :1:1: Content is not allowed in prolog.
Exception in thread “main” com.thoughtworks.xstream.io.StreamException: : Content is not allowed in prolog.
at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:86)
at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:66)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:861)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:853)
Alguém sabe como resolver isto?
Segue o código da classe que estou utilizando e a classe que usei para fazer o teste:
public class ConfigurationService extends ServiceAdapter
{
private NetConfig netConfig;
private File netConfigFile;
private XStream serializer;
@Override
public void initialize()
{
serializer = new XStream(new DomDriver());
serializer.alias("NetConfig", NetConfig.class);
serializer.omitField(NetConfig.class, "serverPort");
serializer.omitField(NetConfig.class, "useSSL");
netConfigFile = new File(System.getProperty("user.dir")+File.separator+
"conf"+File.separator+"net-config.xml");
if (netConfigFile.exists()) {
netConfig = (NetConfig) serializer.fromXML(netConfigFile.getPath());
} else {
netConfig = getNetConfigDefault();
}
}
public NetConfig getNetConfig()
{
return netConfig;
}
public NetConfig getNetConfigDefault()
{
NetConfig config = new NetConfig();
config.setServerAddress("localhost");
config.setServerPort(3001);
config.setConnectionTimeout(3);
config.setConnectionTries(2);
config.setWriteTimeout(3);
config.setIdleTime(3);
config.setUseSSL(true);
return config;
}
public void updateNetConfig()
{
try {
if (!netConfigFile.exists()){
createConfigDirectory();
}
BufferedWriter out = new BufferedWriter(new FileWriter(netConfigFile));
serializer.toXML(netConfig, out);
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
private void createConfigDirectory()
{
File confDirectory = new File(System.getProperty("user.dir")+File.separator+"conf"+File.separator);
if (!confDirectory.exists()) {
confDirectory.mkdir();
}
}
public class Teste {
public static void main (String[] args)
{
ConfigurationService service = new ConfigurationService();
service.initialize();
NetConfig netConfig = service.getNetConfig();
System.out.println(netConfig);
netConfig.setConnectionTimeout(10);
service.updateNetConfig();
netConfig = service.getNetConfig();
}
}