Estou fazendo uma aplicação que faz algumas operações de CRUD simples.
Quando tento inserir algo no banco recebo um NullPointerException.
java.lang.NullPointerException
at br.com.teste.manager.message.view.application.FormApplicationPanel$FormApplication.createApplication(FormApplicationPanel.java:51)
at br.com.teste.manager.message.view.application.FormApplicationPanel$FormApplication.onSubmit(FormApplicationPanel.java:93)
at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1452)
at org.apache.wicket.markup.html.form.Form.process(Form.java:908)
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:873)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:182)
at org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1188)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1265)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1366)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:498)
at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:444)
at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Complete stack:
org.apache.wicket.WicketRuntimeException: Method onFormSubmitted of interface org.apache.wicket.markup.html.form.IFormSubmitListener targeted at component [MarkupContainer [Component id = formApplication]] threw an exception
at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:193)
at org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1188)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1265)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1366)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:498)
at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:444)
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:182)
at org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1188)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1265)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1366)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:498)
at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:444)
public final class FormApplicationPanel extends Panel {
@SpringBean
private ApplicationDAO dao;
private final Application application;
public FormApplicationPanel(final String id, final Application application) {
super(id);
this.application = application;
this.add(new FormApplication());
}
public ApplicationDAO getDao() {
return dao;
}
public void setDao(ApplicationDAO dao) {
this.dao = dao;
}
private final class FormApplication extends Form<Application> {
....
protected void createApplication() {
dao.create(application);
}
protected void editApplication() {
getDao().edit(application);
}
...
public FormApplication() {
super("formApplication");
this.setOptionSelected();
this.add(new TextField("name", new PropertyModel(application, "name")));
this.add(new TextArea("description", new PropertyModel(application, "description")));
this.add(new DropDownChoice("status", new PropertyModel(this, "optionSelected"), this.loadOptions(), ChoiceRenderFactory.getChoiceRender()));
}
@Override
protected void onSubmit() {
super.onSubmit();
if (application.getId() != null) {
this.editApplication();
} else {
this.createApplication();
}
this.setResponsePage(ListApplications.class);
}
}
}
@Repository
public class ApplicationDAO {
@PersistenceContext
private EntityManager entityManager;
@Transactional
public void create(Application application) {
this.getEntityManager().persist(application);
}
@Transactional
public void edit(Application application) {
this.getEntityManager().merge(application);
}
@Transactional
public Collection<Application> findAll() {
Collection<Application> collection = null;
return collection;
}
public EntityManager getEntityManager() {
return entityManager;
}
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
}
<bean name="applicationDAO" class="br.com.teste.manager.message.model.ApplicationDAO" />
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<bean name="WicketApplication" class="br.com.teste.manager.message.view.ManagerMessageApplication" />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
A princípio não vejo nada de errado. Desde já agradeço a ajuda.
