Vraptor mandar objeto via Rest de uma aplicação Desktop[RESOLVIDO]

Boa noite estou começado a criar uma aplicação java desktop, que precisa se comunicar com uma aplicação web que tenho que uso Vraptor, sei que o vraptor tem suporte para Rest,

como eu faço para mandar um objeto Item por exemplo da minha aplicação Desktop para a aplicação web na minha web eu tenho isso:


@Restrito
	@Post
	@Path("/produto/salvaitem")
	public void salvaItem(Item item){
		try{
	
			item = repositoryItem.save(item);
			

	            result.use(Results.json()).withoutRoot().from(item).serialize();
		
					
			
		}catch(PersistenceException e ){
			ErroJson response = new ErroJson(e.getMessage());
				result.use(Results.json()).withoutRoot().from(response).serialize();
		}
	}

Arquivo .js


...

var item = {
							'item.iditem'							: $("#iditem").val(),
							'item.filial.estab' 					: $("#estab").val(),
							'item.produto.idproduto'				: $("#idproduto").val(),
						.....
						
					}
						
						$.ajax({
							type 		: 'POST',
							url  		: '/CP/produto/salvaitem',
							data 		: item,
							dataType	: 'json',
                         .....

isso funciona na web de boa.

mas eu vou ter uma aplicação desktop que vai ter esse mesmo objeto.

como eu faço na apl. desktop para consumir esse metodo json?

Obrigado!

eu vi esse artigo do Guilherme:

mas qual é lib que ele usa do Result e do Restfulie ?

String uri = "http://localhost:8000/clients/15";
Result r = Restfulie.at(uri).get();
System.out.println(r.getCode());

ele usa o restfulie…

http://restfulie.caelum.com.br/

Então Lucas eu dei uma olhada lá e adaptei no meu projeto o exemplo que ele dá deu certo, mas quando uso uma classe do model que tem a tabela no meu banco de dados dá erro:

segue:

Do exemplo:
Obejto Item (Iguais na aplicação web e Desktop)

package br.com.caelum.example.model;

import com.thoughtworks.xstream.annotations.XStreamAlias;


@XStreamAlias("item")
public class Item {
	private Integer id;
	private String name;
	private Double price;

	public Item(String nome, Double preco) {
		this.name = nome;
		this.price = preco;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String nome) {
		this.name = nome;
	}

	public Double getPrice() {
		return price;
	}

	public void setPrice(Double preco) {
		this.price = preco;
	}

}

Controller Item


@Resource
public class ItemsController {

	private final Database database;
	private final Result result;

	public ItemsController(Database database, Result result) {
		this.database = database;
		this.result = result;
	}

	@Get
	@Path("/items")
	public void list() {
		List<Item> list = database.lista();
		result.use(representation()).from(list, "items").serialize();
	}
	
....

Database Item

package br.com.caelum.example.infra;

import java.util.ArrayList;
import java.util.List;

import br.com.caelum.example.model.Item;
import br.com.caelum.vraptor.ioc.ApplicationScoped;
import br.com.caelum.vraptor.ioc.Component;

@Component
@ApplicationScoped
public class Database {
	private int contador = 0;
	private final List<Item> items;

	public Database() {
		this.items = new ArrayList<Item>();
		this.adiciona(new Item("Chave", 20.0));
		this.adiciona(new Item("Lousa", 35.0));
	}

	public void adiciona(Item item) {
		item.setId(++contador);
		this.items.add(item);
	}

	public Item get(int id) {
		if(id > this.items.size()) {
			return null;
		}
		return this.items.get(id - 1);
	}

	public List<Item> lista() {
		return items;
	}

}

Na minha Aplicação Desktop:

public EcfCaixa() {
        initComponents();

        restfulie = Restfulie.custom();
        restfulie.getMediaTypes().register(new XmlMediaType().withTypes(Item.class));

    }
       
...
 
    public void shouldBeAbleToGetAnItem() throws Exception {

    
        
        Response response = restfulie.at("http://localhost:8080/CP/items").accept("application/xml").get();
        List<Item> item = response.getResource();
        
        for (Item itens : item) {
            System.out.println(itens.getName());
        }

    }

Retorno:

Chave
Lousa

Classe que estou usando que esta dando erro:

Uf.java (Iguais na apliacação web e desktop)

package br.com.coliseu.model;

// Generated 18/06/2011 09:46:05 by Hibernate Tools 3.4.0.CR1

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import com.thoughtworks.xstream.annotations.XStreamAlias;

/**
 * Uf generated by hbm2java
 */
@Entity
@Table(name = "uf", schema = "coliseusys")
@XStreamAlias("uf")
public class Uf implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String uf;
	private String nomeuf;
	private String paissigla;
	private String siglauf;

	public Uf() {
	}

	public Uf(String uf, String nomeuf, String paissigla) {
		this.uf = uf;
		this.nomeuf = nomeuf;
		this.paissigla = paissigla;
	}

	public Uf(String uf, String nomeuf, String paissigla, String siglauf) {
		this.uf = uf;
		this.nomeuf = nomeuf;
		this.paissigla = paissigla;
		this.siglauf = siglauf;

	}

	@Id
	@Column(name = "uf", unique = true, nullable = false, length = 2)
	public String getUf() {
		return this.uf;
	}

	public void setUf(String uf) {
		this.uf = uf;
	}

	@Column(name = "nomeuf", length = 60)
	public String getNomeuf() {
		return this.nomeuf;
	}

	public void setNomeuf(String nomeuf) {
		this.nomeuf = nomeuf;
	}

	@Column(name = "paissigla",length = 2)
	public String getPaissigla() {
		return this.paissigla;
	}

	public void setPaissigla(String paissigla) {
		this.paissigla = paissigla;
	}

	@Column(name = "siglauf", length = 2)
	public String getSiglauf() {
		return this.siglauf;
	}

	public void setSiglauf(String siglauf) {
		this.siglauf = siglauf;
	}


}

Controller:


@Resource
public class UfController {

    private final UfRepository repository;
    private final Result result;

    public UfController(UfRepository repository, Result result) {
        this.repository = repository;
        this.result = result;
    }

	@Get
	@Path("/uf/carregaUF")
	public void carregaSubgrupoTeste() {
		try {
			List<Uf> list = repository.listCombo("uf");
			result.use(representation()).from(list, "uf").serialize();
		} catch (PersistenceException ex) {
			result.include("cmbSubgrupo", null);
		}

	}

.....

Aqui no controller ele retorna a lista de uf certinho


Na aplicação Desktop:


....

 Response response = restfulie.at("http://localhost:8080/CP/uf/carregaUF").accept("application/xml").get();
        List<Uf> uf = response.getResource();

       
        for (Uf itens : uf) {
            System.out.println(itens.getNomeuf());
            System.out.println(itens.getUf());
        }


...

ele chama a aplicação web e tals, só na hora de retonar ele da esse erro:

Ago 21, 2012 6:59:34 PM br.com.arena.view.EcfCaixa jButton1ActionPerformed
Grave: null
com.thoughtworks.xstream.mapper.CannotResolveClassException: uf : uf
	at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:71)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:86)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:96)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:52)
	at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:136)
	at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:923)
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:909)
	at com.thoughtworks.xstream.XStream.fromXML(XStream.java:853)
	at com.thoughtworks.xstream.XStream.fromXML(XStream.java:845)
	at br.com.caelum.restfulie.mediatype.XmlMediaType.unmarshal(XmlMediaType.java:90)
	at br.com.caelum.restfulie.http.apache.ApacheResponse.getResource(ApacheResponse.java:59)
	at br.com.arena.view.EcfCaixa.shouldBeAbleToGetAnItem(EcfCaixa.java:288)
	at br.com.arena.view.EcfCaixa.jButton1ActionPerformed(EcfCaixa.java:270)
	at br.com.arena.view.EcfCaixa.access$300(EcfCaixa.java:26)
	at br.com.arena.view.EcfCaixa$4.actionPerformed(EcfCaixa.java:166)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Pode por gentileza me dar uma ajudinha?

Obrigado!

vc fez o configure dos mediatypes?

Desculpe a minha ignorância…
Mas você poderia me explicar o que é isso?

vc precisa pedir pro restfulie ler as anotações das suas classes…

restfulie.getMediaTypes().register(new XmlMediaType().withTypes(Item.class));  

nessa linha vc tem que colocar todas as classes que vão participar da deserialização no withTypes, inclusive a Uf.class

fiz isso:

  restfulie.getMediaTypes().register(new XmlMediaType().withTypes(Uf.class));

e continua o mesmo erro:

Grave: null
com.thoughtworks.xstream.mapper.CannotResolveClassException: uf : uf
	at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:71)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:86)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:96)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
	at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:52)
	at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:136)
	at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:923)
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:909)
	at com.thoughtworks.xstream.XStream.fromXML(XStream.java:853)
	at com.thoughtworks.xstream.XStream.fromXML(XStream.java:845)
	at br.com.caelum.restfulie.mediatype.XmlMediaType.unmarshal(XmlMediaType.java:90)
	at br.com.caelum.restfulie.http.apache.ApacheResponse.getResource(ApacheResponse.java:59)
	at br.com.arena.view.EcfCaixa.shouldBeAbleToGetAnItem(EcfCaixa.java:284)
	at br.com.arena.view.EcfCaixa.jButton1ActionPerformed(EcfCaixa.java:266)
	at br.com.arena.view.EcfCaixa.access$300(EcfCaixa.java:26)
	at br.com.arena.view.EcfCaixa$4.actionPerformed(EcfCaixa.java:162)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

vc tem que passar vários de uma vez só:

restfulie.getMediaTypes().register(new XmlMediaType().withTypes(Item.class, Uf.class, Bolinha.class, Cadarço.class));  

Sim eu fiz isso pela primeira vez:

        restfulie.getMediaTypes().register(new XmlMediaType().withTypes(Uf.class, Item.class));

e deu o mesmo erro…
mas como eu queria fazer o teste só com a Uf.class, e deixei somente ela, e o erro persiste.

Lucas eu tinha esquecido de colocar @XStreamAlias(“uf”)

@XStreamAlias("uf")
public class Uf implements java.io.Serializable {

depois que coloquei isso no Uf.java do Desktop:

deu esse erro:

com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$DuplicateFieldException: uf
---- Debugging information ----
duplicate-field     : uf
class               : br.com.coliseu.model.Uf
required-type       : br.com.coliseu.model.Uf
path                : /uf/uf[2]
line number         : 9
-------------------------------
	at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$SeenFields.add(AbstractReflectionConverter.java:322)
	at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:234)
	at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:162)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
	at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:923)
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:909)
	at com.thoughtworks.xstream.XStream.fromXML(XStream.java:853)
	at com.thoughtworks.xstream.XStream.fromXML(XStream.java:845)
	at br.com.caelum.restfulie.mediatype.XmlMediaType.unmarshal(XmlMediaType.java:90)
	at br.com.caelum.restfulie.http.apache.ApacheResponse.getResource(ApacheResponse.java:59)
	at br.com.arena.view.EcfCaixa.shouldBeAbleToGetAnItem(EcfCaixa.java:284)
	at br.com.arena.view.EcfCaixa.jButton1ActionPerformed(EcfCaixa.java:266)
	at br.com.arena.view.EcfCaixa.access$300(EcfCaixa.java:26)
	at br.com.arena.view.EcfCaixa$4.actionPerformed(EcfCaixa.java:162)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

se vc vai colocar vários uf sem wrapper vc tem que anotar o field que é uma lista de UF como @XStreamImplicit se eu não me engano

Lucas não entendi aonde colocar o @XStreamImplicit

não sei :wink:

o erro que tá dando é pq tem uma tag uf duplicada… vê como tá o seu xml e ve se tem algo errado

A consegui resolver aqui é tinha o atributo uf, que era o mesmo nome da classe, esse era o problema.

Obrigado Lucas deu certo.