Using AppFoundation and Navigator 7 together?

I’m trying to use both AppFoundation(for authentication and authorization) and Navigator 7 together, but I’m having trouble.

I’ve gotten this simple Nav 7 example to run successfully:
Nav 7 Basic Usage
.

My problem right now is a runtime error I’m getting from this class:


public class MyNavigableApplication extends NavigableApplication {

    public MyNavigableApplication() {
	    SessionHandler.initialize(this);
    }

    @Override
    public NavigableAppLevelWindow createNewNavigableAppLevelWindow() {
        return new MyAppLevelWindow();
    }
}

…specifically the SessionHandler.initialize(this) line.

This is the exception:


SEVERE: Servlet.service() for servlet [Feb1demo Application]
 in context with path 
[/Feb1Demo] threw exception [java.lang.NullPointerException]
 with root cause
java.lang.NullPointerException
	at org.vaadin.appfoundation.authentication.SessionHandler.initialize(SessionHandler.java:115)
	at com.example.feb1demo.MyNavigableApplication.<init>(MyNavigableApplication.java:29)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at java.lang.Class.newInstance0(Class.java:355)
	at java.lang.Class.newInstance(Class.java:308)
	at com.vaadin.terminal.gwt.server.ApplicationServlet.getNewApplication(ApplicationServlet.java:82)
	at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.createApplication(AbstractApplicationServlet.java:942)
	at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.findApplicationInstance(AbstractApplicationServlet.java:770)
	at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:433)
	at org.vaadin.navigator7.NavigableApplicationServlet.service(NavigableApplicationServlet.java:46)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:550)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)

If anyone could either tell me how to fix this or show me a simple example with AppFoundation and Nav 7 successfully working together, I’d really appreciate it.

This is because application’s getContext() returns null if you try to initialize the SessionHandler in the constructor. The solution is to move the initialization to the init method.


@Override
public void init() {
    super.init();
    SessionHandler.initialize(this);
}

Kim,

Thank you! Glad this was a simple solution!

By the way, is IT Mill planning to implement the concepts from AppFoundation into the next release of Vaadin? If so, will you simply integrate the AppFoundation API into Vaadin as it is, or is it likely to change?

Thanks again.

I doubt that anything will be integrated to the core product, as Vaadin is quite strictly a UI component library, while AppFoundation provides help for backend logic.