Bom dia galera, beleza?
Estou com um problema que é o seguinte.
Estou usando XStream 1.3 e quero converter uma string em um objeto.
Porem, o codigo em java ja estava implementado e com isso possuo algumas interfaces.
xml
99999999999999
<solicitante
o meu problema que a classe Solicitante possui uma Identificacao que é uma interface e esta interface é implementada pela classe InterfaceCNPJ.
Assim, nao consigo fazer a string virar um objeto solicitante.
Alguem poderia me ajudar?
Att,
donatinho
O xml que você postou é o que está gerando ou é o que você deseja?
Explique um pouco melhor seu problema…
E faça um favor para você mesmo, não use o XStream… Já usei e sempre tive alguns problemas. Depois que encontrei o Simple XML não tive mais nenhum problema. Dê uma olhada http://simple.sourceforge.net/
[]´s
Oi davidbuzatto, como vai?
Pois bem, vou tentar ser mais claro.
O xml é o seguinte:
porem a classe Solicitante implementa a interface Identificacao que instancia um objeto IdentificacaoCNPJ.
SolicitanteModel solMod = new SolicitanteModel();
solMod.setIdentificacao(new IdentificacaoCNPJ("999999999999999"));
Assim, estou usando o XStream, porém consigo transformar de xml para objeto, so que nao consigo ler o valor do atributo CNPJ, sempre retorna vazio.
:shock:
Galera, nao sei se estou sendo claro com minha duvida…
entao, acho que vou melhor a pergunta…
como faco para converter de string para objeto classes que implementam interfaces . . .
Bom dia a todos!
Consegui resolver o problema da seguinte forma:
- criei uma classe que implementa converter
public class IdentificacaoCNPJConverter implements Converter {
public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) {
}
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
IdentificacaoCNPJ iden = null;
while(reader.hasMoreChildren()) {
reader.moveDown();
if(reader.getNodeName() != null && reader.getNodeName().equals("CNPJ")) {
iden = new IdentificacaoCNPJ(reader.getValue());
}
reader.moveUp();
}
return iden;
}
public boolean canConvert(Class clazz) {
return clazz.equals(IdentificacaoIf.class);
}
}
- na classe do confXstream construi o codigo:
xstream.alias("solicitante", SolicitanteModel.class);
xstream.alias("identificacao", IdentificacaoIf.class);
xstream.alias("identificacao", IdentificacaoCNPJ.class);
xstream.aliasField("CNPJ", IdentificacaoCNPJ.class, "identificacao");
assim, a conversao de string para objeto funcionou…
See ya
donatinho
:roll: