AnsweredAssumed Answered

I'm Trying To Bootstrap new class With Null Pointer Result

Question asked by mohammed.amr on Aug 21, 2011
Latest reply on Aug 31, 2011 by mikemars
Dear Gurus,

I have set of folders and nodes that must be bootstrapped once the alfresco server start up, the bootstrap aimed to create Folders & Nodes under Dictionary Folder and it is tested via other scenario but using bootstrap an exception has been thrown.

First of all Look at the class.


public class SecurityRequirementBootstrap {

   

   public void init() throws Exception{
      AuthenticationUtil.runAs(new RunAsWork<String>() {
         public String doWork() throws Exception {
             transaction = transactionService.getUserTransaction();
             transaction.begin();
             if(!authenticationService.authenticationExists("admin")){
                authenticationService.createAuthentication("admin", new char [] {'a','d','m','i','n'});
             }
             if(!personService.personExists("admin")){
                personService.createPerson(createDefaultProperties("admin", "admin", "admin", "admin@localhost", "admin"));
             }
             authenticationService.authenticate("admin", new char [] {'a','d','m','i','n'});
            NodeUtil.checkSecurityPreRequesite(searchService,nodeService);
            transaction.commit();
            return "";
         }
      }, "admin");
   }

    private Map<QName, Serializable> createDefaultProperties(String userName, String firstName, String lastName,
            String email, String password) {
        HashMap<QName, Serializable> properties = new HashMap<QName, Serializable>();
        properties.put(ContentModel.PROP_USERNAME, userName);
        properties.put(ContentModel.PROP_FIRSTNAME, firstName);
        properties.put(ContentModel.PROP_LASTNAME, lastName);
        properties.put(ContentModel.PROP_EMAIL, email);
        properties.put(ContentModel.PROP_PASSWORD, password);
        return properties;
    }   


    private NodeService nodeService;
    private SearchService searchService;
    private UserTransaction transaction;
    private TransactionService transactionService;
    private MutableAuthenticationService authenticationService;
    private PersonService personService;
   
    public PersonService getPersonService() {
      return personService;
   }
   public void setPersonService(PersonService personService) {
      this.personService = personService;
   }
   public MutableAuthenticationService getAuthenticationService() {
      return authenticationService;
   }
   public void setAuthenticationService(
         MutableAuthenticationService authenticationService) {
      this.authenticationService = authenticationService;
   }
   public TransactionService getTransactionService() {
      return transactionService;
   }
   public void setTransactionService(TransactionService transactionService) {
      this.transactionService = transactionService;
   }   
   public NodeService getNodeService() {
      return nodeService;
   }
   public void setNodeService(NodeService nodeService) {
      this.nodeService = nodeService;
   }
   public SearchService getSearchService() {
      return searchService;
   }
   public void setSearchService(SearchService searchService) {
      this.searchService = searchService;
   }
}
  

This class has been pointed by the xml file named bootstrap-context.xml


<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
   <bean id="com.ds.module.extensions.Core.workflowBootstrap" parent="workflowDeployer">
      <property name="workflowDefinitions">
         <list>
            <props>
               <prop key="engineId">jbpm</prop>
               <prop key="location">alfresco/module/com.ds.module.extensions.Core/workflows/IssuePublishProcessDefinition/processdefinition.xml</prop>
               <prop key="mimetype">text/xml</prop>
               <prop key="redeploy">true</prop>
            </props>
         </list>
      </property>
      <property name="models">
         <list>
            <value>alfresco/module/com.ds.module.extensions.Core/workflows/IssuePublishProcessDefinition/IssuePublishWorkflowModel.xml</value>
         </list>
      </property>
   </bean>
   <bean id="com.ds.module.extensions.Core.securityRequirementBootstrap"
         class="com.ds.ui.bean.dialog.module.SecurityRequirementBootstrap"
         init-method="init">
      <property name="searchService">
         <ref bean="searchService"/>
      </property>
      <property name="nodeService">
         <ref bean="nodeService"/>
      </property>
      <property name="transactionService">
         <ref bean="transactionService"/>
      </property>
      <property name="authenticationService">
            <ref bean="authenticationService" />
        </property>
        <property name="personService">
            <ref bean="personService" />
        </property>      
   </bean>
</beans>

& FYI i have use an AMP file to change the alfresco.war and the module-context.xml contains


<beans>
   <import resource="classpath:alfresco/module/com.ds.module.extensions.Core/context/bootstrap-context.xml" />
    <bean id="com.ds.module.extensions.Core.configBootstrap" class="org.alfresco.web.config.WebClientConfigBootstrap" init-method="init">
       <property name="configs">
         <list>
            <value>classpath:alfresco/module/com.ds.module.extensions.Core/ui/web-client-config-custom.xml</value>
         </list>
       </property>
    </bean>
    <bean id="com.ds.module.extensions.Core.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="models">
            <list>
                <value>alfresco/module/com.ds.module.extensions.Core/model/CS-Security-Model.xml</value>
            </list>
        </property>
    </bean>   
</beans>

But without any progress cause i have the exception


14:47:01,790  ERROR [web.context.ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.ds.module.extensions.Core.securityRequirementBootstrap' defined in class path resource [alfresco/module/com.ds.module.extensions.Core/context/bootstrap-context.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1401)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
   at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
   at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:557)
   at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:842)
   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:416)
   at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)
   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192)
   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
   at org.alfresco.web.app.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:63)
   at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
   at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
   at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
   at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
   at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
   at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
   at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
   at org.apache.catalina.core.StandardService.start(StandardService.java:519)
   at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
   at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NullPointerException
   at org.alfresco.web.ui.common.Utils.addErrorMessage(Utils.java:825)
   at com.ds.ui.bean.dialog.util.NodeUtil.createSequencesFolder(NodeUtil.java:457)
   at com.ds.ui.bean.dialog.util.NodeUtil.checkSecurityPreRequesite(NodeUtil.java:509)
   at com.ds.ui.bean.dialog.module.SecurityRequirementBootstrap$1.doWork(SecurityRequirementBootstrap.java:36)
   at com.ds.ui.bean.dialog.module.SecurityRequirementBootstrap$1.doWork(SecurityRequirementBootstrap.java:1)
   at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:508)
   at com.ds.ui.bean.dialog.module.SecurityRequirementBootstrap.init(SecurityRequirementBootstrap.java:25)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1529)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1468)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1398)
   … 37 more

Can anyone help me and guide to me know exactly where is the problem.

Outcomes