I am not sure what is going on. I am getting a null pointer on a hibernateTemplate.
I am using Hibernate 3, ACEGI and Spring WebMVC. I am also tring to get declaritive transactions working.
I will paste my config files below. I have a controller that adds an object to the database, that works. Then I call an appPemission() which uses a ultilty class called AbstractHibernateSpringDAO which extends the HibernateDaoSupport. The AbstractHibernateSpringDAO tried to save its permission object to the database its hibernateTemplate is null.
Code:public class AppDAOHibernate extends AbstractHibernateSpringDAO implements AppDAO { private BasicAclExtendedDao basicAclExtendedDao; ..... edu.bju.shared.model.security.dao.AppDAO#save(edu.bju.shared.model.security.App) */ public void save(App app) { super.saveOrUpdate(app); } public void addPermission(long parentObject, SimpleAclEntry acl, int permissionMask, String recipient) { super.addPermission(App.class.getName(), parentObject, acl, permissionMask, recipient); } .... }Code:public abstract class AbstractHibernateSpringDAO extends HibernateDaoSupport implements GenericDAO{ public AbstractHibernateSpringDAO(){} public void saveOrUpdate(Object obj){ getHibernateTemplate().saveOrUpdate(obj); } public void delete(Object obj){ getHibernateTemplate().delete(obj); } public Object find(Class clazz, Long id){ return getHibernateTemplate().load(clazz, id); } public List findAll(Class clazz){ return getHibernateTemplate().find("from " + clazz.getName()); } public void addPermission(String className, long parentObject, SimpleAclEntry acl, int permissionMask, String recipient){ AclObjectIdentity aclObject = new AclObjectIdentity(); aclObject.setAclClass(acl.getClass().getName()); aclObject.setParentObject(parentObject); aclObject.setObjectIdentity(className); AclObjectIdentityDAOHibernate aclObjectDao = new AclObjectIdentityDAOHibernate(); aclObjectDao.save(aclObject); AclPermission aclPer = new AclPermission(); aclPer.setAclObjectIdentity(aclObject); aclPer.setMask(new Integer(permissionMask)); aclPer.setRecipient(recipient); AclPermissionDAOHibernate aclPerDAO = new AclPermissionDAOHibernate(); aclPerDAO.save(aclPer); } public void deletePermission(){ } /* (non-Javadoc) * @see edu.bju.aem.util.GenericDAO#startOperation() */ public void startOperation() { // TODO Auto-generated method stub } }stacktraceCode:<bean id="factory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="mappingResources"> <list> <value>edu/bju/aem/model/Service.hbm.xml</value> <value>edu/bju/aem/model/OS.hbm.xml</value> <value>edu/bju/aem/model/mapping/Server.hbm.xml</value> <value>edu/bju/aem/model/Database.hbm.xml</value> <value>edu/bju/shared/model/people/mapping/PersonWareHouse.hbm.xml</value> <value>edu/bju/shared/model/security/mapping/App.hbm.xml</value> <value>edu/bju/shared/model/security/mapping/AppRole.hbm.xml</value> <value>edu/bju/shared/model/security/mapping/AppRights.hbm.xml</value> <value>edu/bju/shared/model/security/mapping/AclObjectIdentity.hbm.xml</value> <value>edu/bju/shared/model/security/mapping/AclPermission.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.DB2Dialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="format_sql">true</prop> </props> </property> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> <bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"><ref bean="transactionManager"/></property> <property name="transactionAttributes"> <props> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="remove*">PROPAGATION_REQUIRED</prop> <prop key="load*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="delete*">PROPAGATION_REQUIRED</prop> <prop key="add*">PROPAGATION_REQUIRED</prop> <prop key="find*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"><ref bean="factory"/></property> </bean> <bean id="appDAOHibernateManaged" parent="txProxyTemplate"> <property name="target"> <bean class="edu.bju.shared.model.security.dao.AppDAOHibernate"> <property name="sessionFactory"><ref bean="factory"/></property> </bean> </property> <property name="preInterceptors"> <list> <ref bean="securityInterceptor"/> </list> </property> </bean>
Code:10:53:49,265 INFO [STDOUT] Hibernate: insert into AEM.APPS (APPNAME, DESCRIPTION, ENTITYPACKAGE, ID) values (?, ?, ?, ?) 10:54:24,953 ERROR [DispatcherServlet] Could not complete request java.lang.NullPointerException at edu.bju.shared.util.spring.AbstractHibernateSpringDAO.saveOrUpdate(AbstractHibernateSpringDAO.java:32) at edu.bju.shared.model.security.dao.AclObjectIdentityDAOHibernate.save(AclObjectIdentityDAOHibernate.java:40) at edu.bju.shared.util.spring.AbstractHibernateSpringDAO.addPermission(AbstractHibernateSpringDAO.java:49) at edu.bju.shared.model.security.dao.AppDAOHibernate.addPermission(AppDAOHibernate.java:56) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:335) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170) at net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:80) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176) at $Proxy54.addPermission(Unknown Source) at .... 10:54:24,953 ERROR [[aemApp]] Servlet.service() for servlet aemApp threw exception


Reply With Quote