public function prepare()
    {

        // prepare the context path
        $contextPath = str_replace($this->getContext()->getAppBase(), '', $this->getContext()->getWebappPath());

        // set the context path
        $this->setContextPath($contextPath);

        // Fixed #735 - Endless Loop for URLs without servlet name
        // Load the request URI and query string from the server vars, because we have to
        // take care about changes from other modules like directory or rewrite module!
        $uri = $this->getRequestUri();
        $queryString = $this->getQueryString();

        // get uri without querystring
        $uriWithoutQueryString = str_replace('?' . $queryString, '', $uri);

        // initialize the path information and the directory to start with
        list ($dirname, $basename, $extension) = array_values(pathinfo($uriWithoutQueryString));

        // make the registered handlers local
        $handlers = $this->getHandlers();

        // descent the directory structure down to find the (almost virtual) servlet file
        do {
            // bingo we found a (again: almost virtual) servlet file
            if (isset($handlers[".$extension"])) {
                // prepare the servlet path (we've to take care, because the
                // pathinfo() function converts / to \ on Windows OS
                if ($dirname === DIRECTORY_SEPARATOR) {
                    $servletPath = '/' . $basename;
                } else {
                    $servletPath = $dirname . '/' . $basename;
                }

                // we set the basename, because this is the servlet path
                $this->setServletPath($servletPath);

                // we set the path info, what is the request URI with stripped dir- and basename
                $this->setPathInfo(str_replace($servletPath, '', $uriWithoutQueryString));

                // we've found what we were looking for, so break here
                break;
            }

            // break if we finally can't find a servlet to handle the request
            if ($dirname === '/') {
                throw new ServletException(
                    sprintf('Can\'t find a handler for URI %s, either ', $uri)
                );
            }

            // descend down the directory tree
            list ($dirname, $basename, $extension) = array_values(pathinfo($dirname));

        } while ($dirname !== false); // stop until we reached the root of the URI

        // prepare and set the servlet path
        $this->setServletPath(str_replace($contextPath, '', $this->getServletPath()));

        // prepare the base modifier which allows our apps to provide a base URL
        $webappsDir = str_replace($this->getContext()->getBaseDirectory(), '', $this->getContext()->getAppBase());
        $relativeRequestPath = strstr($this->getDocumentRoot(), $webappsDir);
        $proposedBaseModifier = str_replace(DIRECTORY_SEPARATOR, '/', str_replace($webappsDir, '', $relativeRequestPath));

        //  prepare the base modifier
        if (strpos($proposedBaseModifier, $contextPath) === 0) {
            $this->setBaseModifier('');
        } else {
            $this->setBaseModifier($contextPath);
        }
    }
public function prepare()
    {

        // prepare the context path
        $contextPath = str_replace($this->getContext()->getAppBase(), '', $this->getContext()->getWebappPath());

        // set the context path
        $this->setContextPath($contextPath);

        // Fixed #735 - Endless Loop for URLs without servlet name
        // Load the request URI and query string from the server vars, because we have to
        // take care about changes from other modules like directory or rewrite module!
        $uri = $this->getRequestUri();
        $queryString = $this->getQueryString();

        // get uri without querystring
        $uriWithoutQueryString = str_replace('?' . $queryString, '', $uri);

        // initialize the path information and the directory to start with
        list ($dirname, $basename, $extension) = array_values(pathinfo($uriWithoutQueryString));

        // make the registered handlers local
        $handlers = $this->getHandlers();

        // descent the directory structure down to find the (almost virtual) servlet file
        do {
            // bingo we found a (again: almost virtual) servlet file
            if (isset($handlers[".$extension"])) {
                // prepare the servlet path (we've to take care, because the
                // pathinfo() function converts / to \ on Windows OS
                if ($dirname === DIRECTORY_SEPARATOR) {
                    $servletPath = '/' . $basename;
                } else {
                    $servletPath = $dirname . '/' . $basename;
                }

                // we set the basename, because this is the servlet path
                $this->setServletPath($servletPath);

                // we set the path info, what is the request URI with stripped dir- and basename
                $this->setPathInfo(str_replace($servletPath, '', $uriWithoutQueryString));

                // we've found what we were looking for, so break here
                break;
            }

            // break if we finally can't find a servlet to handle the request
            if ($dirname === '/') {
                throw new ServletException(
                    sprintf('Can\'t find a handler for URI %s, either ', $uri)
                );
            }

            // descend down the directory tree
            list ($dirname, $basename, $extension) = array_values(pathinfo($dirname));

        } while ($dirname !== false); // stop until we reached the root of the URI

        // prepare and set the servlet path
        $this->setServletPath(str_replace($contextPath, '', $this->getServletPath()));

        // prepare the base modifier which allows our apps to provide a base URL
        $webappsDir = str_replace($this->getContext()->getBaseDirectory(), '', $this->getContext()->getAppBase());
        $relativeRequestPath = strstr($this->getDocumentRoot(), $webappsDir);
        $proposedBaseModifier = str_replace(DIRECTORY_SEPARATOR, '/', str_replace($webappsDir, '', $relativeRequestPath));

        //  prepare the base modifier
        if (strpos($proposedBaseModifier, $contextPath) === 0) {
            $this->setBaseModifier('');
        } else {
            $this->setBaseModifier($contextPath);
        }
    }
public function prepare ( ) { // prepare the context path $ contextPath = str_replace ( $ this -> getContext ( ) -> getAppBase ( ) , '' , $ this -> getContext ( ) -> getWebappPath ( ) ) ; // set the context path $ this -> setContextPath ( $ contextPath ) ; // Fixed #735 - Endless Loop for URLs without servlet name // Load the request URI and query string from the server vars, because we have to // take care about changes from other modules like directory or rewrite module! $ uri = $ this -> getRequestUri ( ) ; $ queryString = $ this -> getQueryString ( ) ; // get uri without querystring $ uriWithoutQueryString = str_replace ( '?' . $ queryString , '' , $ uri ) ; // initialize the path information and the directory to start with list ( $ dirname , $ basename , $ extension ) = array_values ( pathinfo ( $ uriWithoutQueryString ) ) ; // make the registered handlers local $ handlers = $ this -> getHandlers ( ) ; // descent the directory structure down to find the (almost virtual) servlet file do { // bingo we found a (again: almost virtual) servlet file if ( isset ( $ handlers [ ".$extension" ] ) ) { // prepare the servlet path (we've to take care, because the // pathinfo() function converts / to \ on Windows OS if ( $ dirname === DIRECTORY_SEPARATOR ) { $ servletPath = '/' . $ basename ; } else { $ servletPath = $ dirname . '/' . $ basename ; } // we set the basename, because this is the servlet path $ this -> setServletPath ( $ servletPath ) ; // we set the path info, what is the request URI with stripped dir- and basename $ this -> setPathInfo ( str_replace ( $ servletPath , '' , $ uriWithoutQueryString ) ) ; // we've found what we were looking for, so break here break ; } // break if we finally can't find a servlet to handle the request if ( $ dirname === '/' ) { throw new ServletException ( sprintf ( 'Can\'t find a handler for URI %s, either ' , $ uri ) ) ; } // descend down the directory tree list ( $ dirname , $ basename , $ extension ) = array_values ( pathinfo ( $ dirname ) ) ; } while ( $ dirname !== false ) ; // stop until we reached the root of the URI // prepare and set the servlet path $ this -> setServletPath ( str_replace ( $ contextPath , '' , $ this -> getServletPath ( ) ) ) ; // prepare the base modifier which allows our apps to provide a base URL $ webappsDir = str_replace ( $ this -> getContext ( ) -> getBaseDirectory ( ) , '' , $ this -> getContext ( ) -> getAppBase ( ) ) ; $ relativeRequestPath = strstr ( $ this -> getDocumentRoot ( ) , $ webappsDir ) ; $ proposedBaseModifier = str_replace ( DIRECTORY_SEPARATOR , '/' , str_replace ( $ webappsDir , '' , $ relativeRequestPath ) ) ; //  prepare the base modifier if ( strpos ( $ proposedBaseModifier , $ contextPath ) === 0 ) { $ this -> setBaseModifier ( '' ) ; } else { $ this -> setBaseModifier ( $ contextPath ) ; } }
Prepares the request instance.

@return void
@throws \AppserverIo\Psr\Servlet\ServletException Is thrown if the request can't be prepared, because no file handle exists
Prepares the request instance .