Search in sources :

Example 1 with PWebServer

use of org.develnext.jphp.ext.webserver.classes.PWebServer in project jphp by jphp-compiler.

the class WebServerController method get.

@RequestMapping
public void get(OutputStream stream, HttpServletRequest request, HttpServletResponse response) throws Throwable {
    PWebServer webServer = webServerMap.get(serverId);
    Environment environment = webServer.getEnvironment();
    CompileScope scope = environment.getScope();
    Environment requestEnvironment;
    if (!webServer.isIsolated()) {
        requestEnvironment = new Environment(environment);
    } else {
        if (webServer.isHotReload()) {
            scope = new CompileScope(scope);
        }
        requestEnvironment = new Environment(scope);
    }
    requestEnvironment.getDefaultBuffer().setOutput(stream);
    if (webServer.isImportAutoloaders()) {
        for (SplClassLoader loader : environment.getClassLoaders()) {
            requestEnvironment.registerAutoloader(loader.forEnvironment(requestEnvironment), false);
        }
    }
    Invoker onRequest = webServer.getOnRequest().forEnvironment(requestEnvironment);
    PWebRequest webRequest = new PWebRequest(requestEnvironment, request);
    PWebResponse webResponse = new PWebResponse(requestEnvironment, response);
    requestEnvironment.setUserValue(webServer);
    requestEnvironment.setUserValue(webRequest);
    requestEnvironment.setUserValue(webResponse);
    try {
        onRequest.call(ObjectMemory.valueOf(webRequest), ObjectMemory.valueOf(webResponse));
    } catch (Throwable throwable) {
        Environment.catchThrowable(throwable, requestEnvironment);
    } finally {
        requestEnvironment.doFinal();
    }
}
Also used : PWebServer(org.develnext.jphp.ext.webserver.classes.PWebServer) CompileScope(php.runtime.env.CompileScope) SplClassLoader(php.runtime.env.SplClassLoader) Invoker(php.runtime.invoke.Invoker) Environment(php.runtime.env.Environment) PWebRequest(org.develnext.jphp.ext.webserver.classes.PWebRequest) PWebResponse(org.develnext.jphp.ext.webserver.classes.PWebResponse) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

PWebRequest (org.develnext.jphp.ext.webserver.classes.PWebRequest)1 PWebResponse (org.develnext.jphp.ext.webserver.classes.PWebResponse)1 PWebServer (org.develnext.jphp.ext.webserver.classes.PWebServer)1 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)1 CompileScope (php.runtime.env.CompileScope)1 Environment (php.runtime.env.Environment)1 SplClassLoader (php.runtime.env.SplClassLoader)1 Invoker (php.runtime.invoke.Invoker)1