Static inner class, duplicate components
rrigoni Aug 8, 2011 1:30 PMHello all,
We have a Seam component and an inner class as follow, when Seam starts,try to setup the component twice.
The basic problem is the enum inside the class, if I remove the enum and put in a separate file, all works fine!
Why this problem occurs?
The class is as follows:
/** * */ package br.com.humanoweb.siheb.informacoespessoais.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.envers.Audited; import org.jboss.seam.annotations.AutoCreate; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Role; import br.com.humanoweb.arquitetura.framework.entity.BaseEntity; import br.com.humanoweb.arquitetura.framework.entity.EnumerableId; /** * @author Ronaldo * @date 03/08/2011 */ @Audited @Entity @Table(name = "tipo_situacao_pessoa", schema = "informacao_paciente") @Role(name = "situacaoPessoa") @AutoCreate @Name("situacaoPessoa") public class SituacaoPessoa extends BaseEntity { /** * serialVersionUID utilizado para interoperabilidade. */ private static final long serialVersionUID = -1283781264136921L; /** * Enum para indicar a situação de uma pessoa. * * @x: Ativo, Inativo ou Removido * @author ronaldo.rigoni * @date 04/08/2011 */ public static enum SituacaoPessoaEnum implements EnumerableId<SituacaoPessoa> { /** * Indica que a {@link Pessoa} está ativa. */ ATIVO(1L), /** * Indica que a {@link Pessoa} está inativa. */ INATIVO(2L), /** * Indica que a {@link Pessoa} foi removida do sistema. */ REMOVIDO(3L); /** * Identificador do enum que será usado para comparações com a entidade {@link SituacaoPessoa}. */ private Long id; /** * Inicializa a instância de {@link SituacaoPessoaEnum}. * * @param id O identificador. */ private SituacaoPessoaEnum(Long id) { this.id = id; } /** * Recupera o identificador deste tipo do enum. */ @Override public Long getId() { return id; } /** * Compara uma {@link SituacaoPessoa} verificando se a mesma possui o mesmo identificador que este enum. * * @param entity entidade do tipo {@link SituacaoPessoa}. */ @Override public boolean compare(SituacaoPessoa entity) { return this.id.equals(entity.getId()); } /** * serialVersionUID utilizado para interoperabilidade. */ private static final long serialVersionUID = -1283781297152634921L; } /** * Identificador de {@link SituacaoPessoa}. */ @Id @Column(name = "id") private Long id; /** * Nome da {@link SituacaoPessoa}. */ @Column(name = "nome") private String nome; /** * Construtor default. */ public SituacaoPessoa() { } /** * Constrói uma nova instância de {@link SituacaoPessoa}. * * @param situacaoPessoaEnum id correspondente. */ public SituacaoPessoa(SituacaoPessoaEnum situacaoPessoaEnum) { this.id = situacaoPessoaEnum.getId(); } /** * Recupera o identificador de {@link SituacaoPessoa}. */ public Long getId() { return this.id; } /** * Define o identificador de {@link SituacaoPessoa}. * * @param id o identificador. */ public void setId(Long id) { this.id = id; } /** * Recupera o nome de {@link SituacaoPessoa}. * * @return o nome. */ public String getNome() { return this.nome; } /** * Define o nome de {@link SituacaoPessoa}. * * @param nome o nome de {@link SituacaoPessoa}. */ public void setNome(String nome) { this.nome = nome; } }