DWR + Generics

5 respostas
hodrigohamalho

Cara to passando um perrengue aqui com DWR utilizando generics,
A aplicação estava funcionando normalmente, porém como iria reaproveitar o código fiz uma classe Abstrata, tipando com generics e as outras classes iriamam apenas estende-la, mas dai começou a aparecer o seguinte erro:

21:35:13,677 WARN LocalUtil:1355 - Missing type info for (method=public java.util.List br.com.timesheet.service.AbstractService.getMatchingList(java.lang.String,java.util.List), parameter: 1). Assuming this is a map with String keys. Please add to in dwr.xml

public abstract class AbstractService<T extends Bean> implements Service<T> {
	
	protected abstract Dao<T> getDao();
	
    public List<T> getMatchingList(String filter, List<T> objetos)
    {
        Pattern regex = Pattern.compile(filter, Pattern.CASE_INSENSITIVE);
        
        List<T> reply = new ArrayList<T>();
        
        for (T obj : objetos)
        {
            if (regex.matcher(obj.getNome()).find())
            {
                reply.add(obj);
            }
        }
        
        return reply;
    }
}

Classe de serviço.

public class CasoDeUsoService extends AbstractService<CasoDeUso>{
	protected Dao<CasoDeUso> getDao() {
		CasoDeUsoDaoImpl dao = CasoDeUsoDaoImpl.getInstance();
		return dao;
	}

}

Queria saber se alguem já passou por alguem problema parecido… e pode dar um mão ai
abraço :smiley:

5 Respostas

juniorsatanas

que erro mano ? posta aqui o código !

hodrigohamalho

kra não da erro… só não funciona
unica mensagem que aparece é essa:

21:35:13,677 WARN LocalUtil:1355 - Missing type info for (method=public java.util.List br.com.timesheet.service.AbstractService.getMatchingList(java.lang.String,java.util.List, parameter: 1). Assuming this is a map with String keys. Please add to in dwr.xml

faelcavalcanti

verifique como está a declaração da assinatura deste método no dwr.xml!

hodrigohamalho

alguem pode passar um exemplo de como mapeia metodo no dwr.xml?

pq eu até agora só mapiei classes…

a.moraissoares

Pessoal boa tarde, estou com um problema muito semelhante

Alguém conseguiu a solução?

Aqui está minha classe Abstrata
public abstract class CrudServiceImpl<T> implements CrudService<T> {

	private static final long serialVersionUID = 1L;

        abstract public CrudDAO<T> getCrudDAO();
	
	abstract public boolean saveOrUpdate(T obj);
	
	public T selectById(Long id, String esquema) {
		return this.getCrudDAO().selectById(id, esquema);
	}
}

Aqui segue minha classe que herda a anterior e implementa o método abstrato saveOrUpdate(T obj)

public class TesteServiceImpl extends CrudServiceImpl<Teste> implements TesteService{

	@Inject
	private TesteDAO<Teste> testeDAO;

	public Teste newTeste() {
		return new Teste();
	}

      @Override
	public boolean saveOrUpdate(Teste obj) {
		if (obj.getId() == null)
			return this.getCrudDAO().insert(obj);
		else
			return this.getCrudDAO().update(obj);
	}

	@Override
	public CrudDAO<Teste> getCrudDAO() {
		return this.testeDAO;
	}
}

Como podem ver estou criando um CRUD básico, e preciso chamar o método saveOrUpdate através do RemoteMethod, no javascript da minha app.
Ao executar a seguinte chamada:

TesteService.newTeste({
    callback : function(teste){
        console.log(teste);
        TesteService.saveOrUpdate(teste);
    },
    async : false
});

recebo a seguinte exceção:

java.lang.Object cannot be cast to br.com.minhaApp.Teste

Aguardo alguma opinião, grato!

Criado 27 de dezembro de 2009
Ultima resposta 3 de mai. de 2011
Respostas 5
Participantes 4