Marcos Sousa’s Blog

Blog sobre desenvolvimento de software
  • rss
  • Home
  • Sobre

Generator do Seam 2.1 não é compativel com 2.0.x

Marcos Sousa | March 28, 2009

Fazendo alguns testes com o Seam acabei descobrindo uma falha de compatibilidade do Seam Generator da versão 2.1 com as versões anteriores. O problema reside nos filtros que são criados nas páginas de listagens.

Nas versões anteriores, o componente para as páginas de listagens sobrescreviam os métodos:
- getEjbql: Consulta EJB QL usada para a listagem.
- getMaxResults: Define a quantidade de registros a serem retornados pela listagem.
- getRestrictions: Retorna lista de restrições a serem adicionadas a consulta.

Porém na versão 2.1 estes métodos deixaram de ser usados na geração do código. O problema é que o método getRestrictions teve o retorno aterado. Nas versões anteriores ele retornava uma lista de Strings, já na versão 2.1 o tipo de retorno foi alterado para uma lista de ValueExpression.

Com isto um código gerado na versão na versão 2.0.3, por exemplo, gera ClassCastException ao tentar converter String em ValueExpression. Solução? Atualizar o código, veja o antes e o depois:

@Name("userList")
public class UserList extends EntityQuery {

private static final String[] RESTRICTIONS = {
"lower(user.login) like concat(lower(#{userList.user.login}),'%')",
"lower(user.name) like concat(lower(#{userList.user.name}),'%')"};

private final User user = new User();
@Override
public String getEjbql() {
return "select user from User user";
}

@Override
public Integer getMaxResults() {
return 25;
}

public User getUser() {
return user;
}

@Override
public List<string> getRestrictions() {
return Arrays.asList(RESTRICTIONS);
}

}

A versão 2.1 o código gerado é algo semelhante a:

@Name("userList")
public class UserList extends EntityQuery<user> {

private static final String EJBQL = "select user from User user";

private static final String[] RESTRICTIONS = {
"lower(user.login) like concat(lower(#{userList.user.login}),'%')",
"lower(user.name) like concat(lower(#{userList.user.name}),'%')"};

private final User user = new User();

public UserList() {
setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS));
setMaxResults(25);
setEjbql(EJBQL);
}

public User getUser() {
return user;
}
}

Até que seja corrigido o problema fica a dica.

Categories
Java, Java EE, Java Server Faces, Jboss Seam
Tags
Jboss Seam, JSF, Seam Framework, Seam-gen
Comments rss
Comments rss
Trackback
Trackback

« URL Amigáveis com Seam 2.1 FacesContext em Seam Remoting calls »

9 Responses to “Generator do Seam 2.1 não é compativel com 2.0.x”

  1. Rui Santos says:
    May 13, 2009 at 5:35 pm

    Acabei de me deparar com o problema. Vai dar um trabalhinho modificar tantos beans =P
    De toda forma, valeu a dica!

    Reply
  2. Marcos Sousa says:
    May 16, 2009 at 12:52 am

    Rui,

    Realmente é chato, talvez valha esperar este problema ser convertido. Eu já relatei o problema no JIRA.

    Reply
  3. Rafael Wendel says:
    May 16, 2009 at 3:23 pm

    Marcola, tah precisando atualizar esse buteco aki com mais frequência né??

    Abraço

    Reply
  4. Marcos Sousa says:
    June 5, 2009 at 5:15 pm

    @Rafa Marques,

    O tempo está curto, mas tem bastante coisa nos meus rascunhos aqui.

    Reply
  5. Raphael Vinícius says:
    June 19, 2009 at 2:15 pm

    Sou novo no que diz respeito a Jboss, principalmente Seam.
    Não achei em nenhum canto um local para te passar um email, então estou escrevendo através desse comentário.

    Como eu trabalho com Autorização?
    Autenticar eu consigo, mas autorizar apenas quem tem determinada role, não “rola”, rsss

    Posso fazer isso no page.xml????

    []s

    Reply
  6. Marcos Sousa says:
    June 22, 2009 at 12:01 am

    @Raphael Vinícius,

    Bom o Seam tem um poderoso recurso de autorização, tem as tags s:hasRole e s:hasPermission (ambas na versão 2.1) se quiser conferir mais informações sugiro estes links:

    http://docs.jboss.com/seam/latest/reference/en-US/html/security.html#d0e11124, http://odyssi.blogspot.com/2008/01/intro-to-jboss-seam-security-part-1.html e http://java.dzone.com/articles/intro-jboss-seam-security-part

    Reply
  7. Roan says:
    June 22, 2009 at 5:41 pm

    Ola Marcos Sousa, certinho? Amigo preciso de uma dica sua,

    Quero fazer um cadastro de usuario basico usando Jboss Seam and Jboss Portal.

    Só com email, nome, password e gravar…

    Pode me dar um help, me gmail ta ae, me envia um email, abraços

    Reply
  8. Marcos Sousa says:
    June 25, 2009 at 1:31 pm

    @Roan,

    Claro, envie para mim (falecomigo at marcossousa dot com)o stracktrace que está sendo gerado, que eu dou uma ajuda para você.

    Reply
  9. Daniel says:
    August 19, 2010 at 3:54 pm

    Fala Marcos!

    Gostei muito do seu blog, achei bastante útil. Já está no meus favoritos.

    Estou trabalhando num projeto com SEAM e não consegui fazer uma pesquisa por data utilizando o mecanismo de pesquisa padrão do SEAM.

    Como eu colocaria no RESTRICTIONS o meu campo data? Tenho que usar algum SimpleDateFormat? Não vi uma maneira de usar o SimpleDateFormat no array de String do RESTRICTIONS. O BD que estou usando é o MySql 5.1 e minhas datas são persistidas no seguinte formato: 2010-08-02 14:14:19

    Valeu!

    Reply

Leave a Reply

Click here to cancel reply.

Núvens de tags

Agile Eventos Facelets GET Hibernate incompatiblidades Itext Java Java EE Java Magazine Java Server Faces JavaServer Faces Java Vídeo Magazine Jboss jboss-seam-itext Jboss Developer Studio Jboss Seam JDBC type: 7 JPA JSF linux mare marébh maré de agilidade Microsoft No Dialect mapping for JDBC type: 7 Page Actions PostGreSQL RHDS rich:fileUpload RichFaces Rich Faces RichFaces 3.2 Scrum Seam-gen Seam Framework Seam PDF Spring Spring Framework TDD URL Rewrite URL User Friendly Variable Resolver Vídeo Aula XP

Meus últimos tweets

  • Aos participantes do Bhjs que gostariam de vir para a Globo.com, segue as outras vagas http://t.co/KjBinf4x #bhjs #beagajs 1 week ago
  • Se você precisa buscar dado no disco, prefira assíncrona @luciano #bhjs #beagajs http://t.co/5gCHp7P8 2 weeks ago
  • @DouglasAguiar @HerberthAmaral Porque na copa? 2 weeks ago
  • Slides da palestra 'Indo além com jQuery' #bhjs #beagajs http://t.co/wHbhaI75 2 weeks ago
  • @araujolucas na parte da frente a temperatura está melhor 2 weeks ago
  • Começando a palestra do @cmilfont no #bhjs #beagajs http://t.co/9DZt7MQj 2 weeks ago
  • @isaias_barroso @DeivissonBruno @cmilfont gula ao extremo:) 2 weeks ago
  • Palestra com insights do desenvolvimento do paparazzo #gcom #bhjs #beagajs http://t.co/7igVbtmS 2 weeks ago
  • @flavio1110 energético? 2 weeks ago
  • Alguém indo do Aeroporto de Confins para centro/guitierrez por voltar de 12:00 #bhjs #beagajs 2 weeks ago

Anúcios

Categorias

  • .net
  • Agile
  • Agile Conference 2009
  • Artigos
  • Atualidades
  • c++
  • cinema
  • Django
  • DRY
  • Eventos
  • Flex
  • Formula 1
  • Hibernate
  • IDE
  • Inutilidades
  • Java
  • Java EE
  • Java Server Faces
  • Jboss Seam
  • linux
  • Mac OS
  • Microsoft
  • Open-source
  • Palestras
  • Python
  • RAD
  • RIA
  • RichFaces
  • Scrum
  • Software Livre
  • Spring
  • Spring Annotations
  • TDD
  • Testes
  • Uncategorized
  • Vídeo Aulas

Links recomendados

  • AJ Soluções
  • Ary Júnior
  • Erko Bridee
  • Fragmental
  • Fragmental TW
  • Guilherme Chapiewski
  • Handerson Frota
  • Jeveaux
  • Juliano Carniel
  • Onipresente
  • Passes de Letra
  • PortalJava.com
  • Rafael Carneiro
  • Rafael Pontes

DevMedia Post’s

Get Adobe Flash playerPlugin by wpburn.com wordpress themes
rss Comments rss valid xhtml 1.1 design by jide powered by Wordpress get firefox