com.vaadin.flow.server.

Class DevModeHandler

  • All Implemented Interfaces:

    Serializable


    public final class DevModeHandler
    extends Object
    implements Serializable

    Handles getting resources from webpack-dev-server.

    This class is meant to be used during developing time. For a production mode site webpack generates the static bundles that will be served directly from the servlet (using a default servlet if such exists) or through a stand alone static file server. By default it keeps updated npm dependencies and node imports before running webpack server

    Since:

    2.0

    See Also:

    Serialized Form

    • Field Detail

      • WEBPACK_SERVER

        public static final String WEBPACK_SERVER

        The local installation path of the webpack-dev-server node script.

        See Also:

        Constant Field Values

    • Method Detail

      • start

        public static DevModeHandler start(DeploymentConfiguration configuration,
                                           File npmFolder)

        Start the dev mode handler if none has been started yet.

        Parameters:

        configuration - deployment configuration

        npmFolder - folder with npm configuration files

        Returns:

        the instance in case everything is alright, null otherwise

      • start

        public static DevModeHandler start(int runningPort,
                                           DeploymentConfiguration configuration,
                                           File npmFolder)

        Start the dev mode handler if none has been started yet.

        Parameters:

        runningPort - port on which Webpack is listening.

        configuration - deployment configuration

        npmFolder - folder with npm configuration files

        Returns:

        the instance in case everything is alright, null otherwise

      • getDevModeHandler

        public static DevModeHandler getDevModeHandler()

        Get the instantiated DevModeHandler.

        Returns:

        devModeHandler or null if not started

      • isDevModeRequest

        public boolean isDevModeRequest(HttpServletRequest request)

        Returns true if it's a request that should be handled by webpack.

        Parameters:

        request - the servlet request

        Returns:

        true if the request should be forwarded to webpack

      • serveDevModeRequest

        public boolean serveDevModeRequest(HttpServletRequest request,
                                           HttpServletResponse response)
                                    throws IOException

        Serve a file by proxying to webpack.

        Note: it considers the HttpServletRequest#getPathInfo that will be the path passed to the 'webpack-dev-server' which is running in the context root folder of the application.

        Parameters:

        request - the servlet request

        response - the servlet response

        Returns:

        false if webpack returned a not found, true otherwise

        Throws:

        IOException - in the case something went wrong like connection refused

      • prepareConnection

        public HttpURLConnection prepareConnection(String path,
                                                   String method)
                                            throws IOException

        Prepare a HTTP connection against webpack-dev-server.

        Parameters:

        path - the file to request

        method - the http method to use

        Returns:

        the connection

        Throws:

        IOException - on connection error

      • getFailedOutput

        public String getFailedOutput()

        Return webpack console output when a compilation error happened.

        Returns:

        console output if error or null otherwise.

      • removeRunningDevServerPort

        public void removeRunningDevServerPort()

        Remove the running port from the vaadinContext and temporary file.

      • getPort

        public int getPort()

        Get the listening port of the 'webpack-dev-server'.

        Returns:

        the listening port of webpack

      • reuseDevServer

        public boolean reuseDevServer()

        Whether the 'webpack-dev-server' should be reused on servlet reload. Default true.

        Returns:

        true in case of reusing the server.

      • stop

        public void stop()

        Stop the webpack-dev-server.