Problemas Converter - Demoiselle Framework

0 respostas
vmwanderlind

Pessoal, estou implementando uma aplicação de cadastros de atendimento para meu TCC
sobre o Framework Demoiselle, utilizando o arquétipo demoiselle-jsf-jpa, me baseando
no exemplo do bookmark, criei as entidades: Cliente, Funcionario, TipoAtendimento e Atendimento.
E demais classes controladoras para cada camada.

Meu problema é que para a tela de cadastro de atendimento, estou utilizando o
componente p:autocomplete do primefaces, que solicita a implementação de um converter.
Na tela de Cadastro de Atendimento o componente consegue fazer a busca dos nomes que estão armazenados
no banco, das 3 entidades Cliente, Funcionario e TipoAtendimento só que quando mando salvar aparece a seguinte exception:

16:16:54,599 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/tcc].[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception: java.lang.NullPointerException
	at br.gov.frameworkdemoiselle.sample.tcc.view.ClienteConverter.getAsObject(ClienteConverter.java:24) [:]
	at org.primefaces.component.autocomplete.AutoCompleteRenderer.getConvertedValue(AutoCompleteRenderer.java:226) [:]
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1023) [:2.0.3-]
	at javax.faces.component.UIInput.validate(UIInput.java:953) [:2.0.3-]
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1204) [:2.0.3-]
	at javax.faces.component.UIInput.processValidators(UIInput.java:693) [:2.0.3-]
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081) [:2.0.3-]
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081) [:2.0.3-]
	at javax.faces.component.UIForm.processValidators(UIForm.java:240) [:2.0.3-]
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081) [:2.0.3-]
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081) [:2.0.3-]
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1159) [:2.0.3-]
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:72) [:2.0.3-]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) [:2.0.3-]
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114) [:2.0.3-]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308) [:2.0.3-]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.0.0.Final]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.Final]
	at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67) [:6.0.0.Final]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.0.0.Final]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.Final]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.0.0.Final]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [:6.0.0.Final]
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.0.0.Final]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) [:6.0.0.Final]
	at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
	at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.0.0.Final]
	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.0.0.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [:6.0.0.Final]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.0.0.Final]
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.0.0.Final]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.0.0.Final]
	at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.0.0.Final]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.0.0.Final]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.0.0.Final]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.0.0.Final]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.0.0.Final]
	at java.lang.Thread.run(Thread.java:662) [:1.6.0_23]

//======================================================================
A entidade Atendimento está implementada da seguinte forma:

@Entity
public class Atendimento implements Serializable {

	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue
	private Long id;
	
	@Column
	private Date dataAtendimento;
	
	@Column
	@Size(max = 255)
	private String observacao;
	
	@ManyToOne
	private Cliente cliente;
	
	@ManyToOne
	private Funcionario funcionario;
	
	@ManyToOne
	private TipoAtendimento tipoAtendimento;

//==========================================================
Implementação do Converter

@FacesConverter(value = "clienteConverter")
public class ClienteConverter implements Converter {
	
	@Inject
	private ClienteBC clienteBC;

	@Override
	public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
		Cliente cliente = clienteBC.findByNomeCliente(string);
		return cliente;
	}

	@Override
	public String getAsString(FacesContext fc, UIComponent uic, Object o) {
		Cliente cliente = new Cliente();
		cliente = (Cliente) o;
		return cliente.getNomeCliente();
	}

}

//============================================================
O método clienteBC.findByNomeCliente(string) irá fazer a consulta no DAO,
onde implementei o método de busca por nome da seguinte maneira:

@PersistenceController
public class ClienteDAO extends JPACrud<Cliente, Long> {
	
	private static final long serialVersionUID = 1L;
	
	@Inject
	@SuppressWarnings("unused")
	private Logger logger;
	
	public Cliente findByNomeCliente(String nomeCliente) {
		final String jpql = "SELECT c FROM Cliente c WHERE c.nomeCliente = :" + nomeCliente;
		final Query query = getEntityManager().createQuery(jpql);
		Cliente cliente = (Cliente) query.getSingleResult();
		return cliente;
	}
	
}

Será que tem algo de errado com essa minha consulta???

Desde já obrigado!!

Criado 22 de outubro de 2011
Respostas 0
Participantes 1