java - Getting null pointer when using autowire for EventBus.UIEvent in vaadin application using springboot -


i using vaadin springboot , getting null pointer when using autowire eventbus.uieventbus.

i have vaadinsessionscope bean in application of springboot. , able create eventbus.uieventbus eventbus in main ui class.

what trying in below code pass event loginview main vaadin ui class. , null pointer eventbus.uieventbus eventbus auto wired.

any input appreciated . thank you.

    <?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"     xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelversion>4.0.0</modelversion>      <groupid>org.pk.connect2x</groupid>     <artifactid>connect2x</artifactid>     <version>0.0.1-snapshot</version>     <packaging>war</packaging>      <name>connect2x</name>     <description>get data source destination.</description>      <parent>         <groupid>org.springframework.boot</groupid>         <artifactid>spring-boot-starter-parent</artifactid>         <version>1.2.5.release</version>         <relativepath/> <!-- lookup parent repository -->     </parent>      <properties>         <project.build.sourceencoding>utf-8</project.build.sourceencoding>         <java.version>1.8</java.version>     </properties>      <dependencies>         <dependency>             <groupid>org.springframework.boot</groupid>             <artifactid>spring-boot-starter-actuator</artifactid>         </dependency>         <dependency>             <groupid>com.vaadin</groupid>             <artifactid>vaadin-spring-boot-starter</artifactid>             <version>1.0.0.beta3</version>         </dependency>          <dependency>             <groupid>org.springframework.boot</groupid>             <artifactid>spring-boot-starter-tomcat</artifactid>             <version>1.2.4.release</version>         </dependency>         <dependency>             <groupid>org.springframework.boot</groupid>             <artifactid>spring-boot-starter-test</artifactid>             <scope>test</scope>         </dependency>         <dependency>             <groupid>org.vaadin.spring</groupid>             <artifactid>spring-vaadin-eventbus</artifactid>             <version>0.0.5.release</version>         </dependency>         <dependency>             <groupid>org.atmosphere</groupid>             <artifactid>atmosphere-runtime</artifactid>             <version>2.4.0-rc1</version>         </dependency>     </dependencies>      <dependencymanagement>         <dependencies>             <dependency>                 <groupid>com.vaadin</groupid>                 <artifactid>vaadin-bom</artifactid>                 <version>7.4.5</version>                 <type>pom</type>                 <scope>import</scope>             </dependency>         </dependencies>     </dependencymanagement>      <build>         <plugins>             <plugin>                 <groupid>org.springframework.boot</groupid>                 <artifactid>spring-boot-maven-plugin</artifactid>             </plugin>         </plugins>     </build>   </project> 

below springboot application class

    package connect2x;  import com.vaadin.spring.internal.vaadinsessionscope; import org.atmosphere.cpr.sessionsupport; import org.springframework.beans.factory.annotation.autowired; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.boot.context.embedded.embeddedservletcontainerfactory; import org.springframework.boot.context.embedded.tomcat.tomcatembeddedservletcontainerfactory; import org.springframework.context.annotation.bean; import org.vaadin.spring.events.eventbus; import org.vaadin.spring.events.annotation.enablevaadineventbus; import org.vaadin.spring.events.support.applicationcontexteventbroker;  @springbootapplication @enablevaadineventbus public class connect2xapplication {      @autowired     eventbus.applicationeventbus applicationeventbus;       @bean     applicationcontexteventbroker applicationcontexteventbroker() {         return new applicationcontexteventbroker(applicationeventbus);     }      @bean     public sessionsupport atmospheresessionsupport() {         return new sessionsupport();     }      @bean     static vaadinsessionscope vaadinsessionscope() {         return new vaadinsessionscope();     }      @bean     public embeddedservletcontainerfactory servletcontainer() {         tomcatembeddedservletcontainerfactory factory = new tomcatembeddedservletcontainerfactory();         return factory;     }      public static void main(string[] args) {         springapplication.run(connect2xapplication.class, args);     } } 

below main ui class, there no null pointer eventbus

package connect2x;  import com.vaadin.annotations.theme; import com.vaadin.server.responsive; import com.vaadin.server.vaadinrequest; import com.vaadin.spring.annotation.springui; import com.vaadin.ui.ui; import com.vaadin.ui.themes.valotheme; import connect2x.com.pk.connect2x.view.login; import connect2x.com.pk.connect2x.view.mainview; import org.springframework.beans.factory.annotation.autowired; import org.vaadin.spring.events.eventbus; import org.vaadin.spring.events.eventbuslistener;  import java.util.locale;  /**  * created karthikmarupeddi on 7/18/15.  */ @springui @theme("valo") public class connect2xui extends ui implements eventbuslistener<object> {       @autowired     eventbus.uieventbus eventbus;      @autowired     login login;      @override     protected void init(vaadinrequest vaadinrequest) {          setlocale(locale.us);          responsive.makeresponsive(this);         addstylename(valotheme.ui_with_menu);          updatecontent();      }      /**      * updates correct content ui based on current user status.      * if user logged in appropriate privileges, main view shown.      * otherwise login view shown.      */     private void updatecontent() { //        user user = (user) vaadinsession.getcurrent().getattribute( //                user.class.getname()); //        if (user != null && "admin".equals(user.getrole())) { //            // authenticated user //            setcontent(new mainview()); //            removestylename("loginview"); //            getnavigator().navigateto(getnavigator().getstate()); //        } else { //            //setcontent(loginview); //            setcontent(new mainview()); //            addstylename("loginview"); //        }         setcontent(login);         addstylename("loginview");     }         /**      * called when event has been received.      *      * @param event event, never {@code null}.      */     @override     public void onevent(org.vaadin.spring.events.event<object> event) {          system.out.println("****************printing data***************" );         setcontent(new mainview());         removestylename("loginview");         getnavigator().navigateto(getnavigator().getstate());       } } 

login java class getting null pointer eventbus

    package connect2x.com.pk.connect2x.view;  import com.vaadin.event.shortcutaction; import com.vaadin.server.fontawesome; import com.vaadin.server.responsive; import com.vaadin.spring.annotation.springcomponent; import com.vaadin.spring.annotation.uiscope; import com.vaadin.ui.*; import com.vaadin.ui.themes.valotheme; import org.springframework.beans.factory.annotation.autowired; import org.vaadin.spring.events.eventbus; import org.vaadin.spring.events.eventbuslistener;  /**  * created karthikmarupeddi on 7/18/15.  */ @uiscope @springcomponent public class login extends verticallayout implements eventbuslistener<object> {       @autowired     eventbus.uieventbus eventbus;       public login() {         eventbus.subscribe(this);         setsizefull();          component loginform = buildloginform();         addcomponent(loginform);         setcomponentalignment(loginform, alignment.middle_center);     }       private component buildloginform() {         final verticallayout loginpanel = new verticallayout();         loginpanel.setsizeundefined();         loginpanel.setspacing(true);         responsive.makeresponsive(loginpanel);         loginpanel.addstylename("login-panel");          loginpanel.addcomponent(buildlabels());         loginpanel.addcomponent(buildfields());         loginpanel.addcomponent(new checkbox("remember me", true));         return loginpanel;     }       private component buildlabels() {         csslayout labels = new csslayout();         labels.addstylename("labels");          label welcome = new label("welcome");         welcome.setsizeundefined();         welcome.addstylename(valotheme.label_h4);         welcome.addstylename(valotheme.label_colored);         labels.addcomponent(welcome);          label title = new label("connect2x");         title.setsizeundefined();         title.addstylename(valotheme.label_h3);         title.addstylename(valotheme.label_light);         labels.addcomponent(title);         return labels;     }       private component buildfields() {         horizontallayout fields = new horizontallayout();         fields.setspacing(true);         fields.addstylename("fields");          final textfield username = new textfield("username");         username.seticon(fontawesome.user);         username.addstylename(valotheme.textfield_inline_icon);          final passwordfield password = new passwordfield("password");         password.seticon(fontawesome.lock);         password.addstylename(valotheme.textfield_inline_icon);          final button signin = new button("sign in");         signin.addstylename(valotheme.button_primary);         signin.setclickshortcut(shortcutaction.keycode.enter);         signin.focus();          fields.addcomponents(username, password, signin);         fields.setcomponentalignment(signin, alignment.bottom_left);          signin.addclicklistener(new button.clicklistener() {             @override             public void buttonclick(final button.clickevent event) {                 system.out.println("*************click listener **************");                 eventbus.publish(login.this, "hello world ui");                 removestylename("loginview");              }         });          return fields;      }      /**      * called when event has been received.      *      * @param event event, never {@code null}.      */     @override     public void onevent(org.vaadin.spring.events.event<object> event) {         system.out.println("*************click listener **************");     } } 

i think should implementing initializingbean interface , override afterpropertiesset method subscribe eventbus.

@override public void afterpropertiesset() throws exception {      this.eventbus.subscribe(this); } 

please check out code too: https://github.com/joshlong/vaadin-and-spring-talk/


Comments