Bom dia,
Estou me aventurando num aplicativo que rode no GAE basedo no JSF 2.0, prime-faces e twig-persist…
Tive vários problemas para rodar o JSF (se fosse começar hoje não usaria), mas está rodando até bem.
O meu problema agora é com o Twig ou o datastore (ainda não sei dizer).
Tenho duas classes (vou remover os getters e setters para nao ocupar muito espaço):
[code]
import java.io.Serializable;
import org.hibernate.validator.constraints.Length;
import com.google.code.twig.annotation.Id;
public class Size implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Length(min=1,max=4,message="{validation.size.invalidSize}")
private String size;
private String description;
public Size() {
super();
}
public Size(String name, String description) {
this.size = name;
this.description = description;
}
}[/code] e [code]import java.io.Serializable;
import java.util.Collection;
import com.google.code.twig.annotation.Id;
public class SizeGroup implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Long id;
private String name;
private Collection<Size> sizes;
}[/code]
Para facilitar meus testes criei classes para povoar minha base de dados:
[code]
public class SizeProducer implements Producer {
@Override
public void produce() {
SizeDAO dao = new SizeDAO();
dao.persist(new Size("PP", "Muito pequeno"));
dao.persist(new Size("P", "Pequeno"));
dao.persist(new Size("M", "Médio"));
dao.persist(new Size("G", "Grande"));
dao.persist(new Size("GG", "Muito grande"));
dao.persist(new Size("XGG", "Muito maior que grande"));
}
}[/code]e[code]public class SizeGroupProducer implements Producer{
@Override
public void produce() {
SizeDAO sizeDao = new SizeDAO();
List<Size> findAll = sizeDao.findAll();
int middle = (int) Math.floor(findAll.size() / 2 );
SizeGroup infantil = new SizeGroup();
infantil.setName("Infantil");
infantil.setSizes(findAll.subList(0, middle));
SizeGroup adulto = new SizeGroup();
adulto.setName("Adulto");
adulto.setSizes(findAll.subList(middle, findAll.size()));
SizeGroupDao dao = new SizeGroupDao();
dao.persist(infantil);
dao.persist(adulto);
}
}[/code]
Ao testar no ambiente de desenvolvimento, o primeiro produtor de dados executa normal… ao executar o segundo ele não encontra todos os itens adicionados pelo primeiro. Ao debugar notei que se ficar inspecionando o findAll várias vezes ele vai carregando mais registros até chegar a quantidade correta. Imaginei que isso fosse um delay para disponibilizar os dados.
Será que é isso mesmo? Se sim, como faço para evitar os problemas que posso ter com esse atraso? Será um problema com o Twig? Não cheguei a testar com o Objectfy (devo fazer isso entre hoje e amanhã) será que terei o mesmo problema?
Alguém pode me ajudar, por favor?
Grato pela atenção,
Éberson