Package com.webobjects.appserver

Examples of com.webobjects.appserver.WOContext


   * ERXResponseRewriter uses the ContextObserver to reset the topIndex value at the end
   * of the request. You should not need to invoke this class directly.
   */
  public static class ContextObserver {
    public void didHandleRequest(NSNotification n) {
      WOContext context = (WOContext)n.object();
      NSMutableDictionary<String, Object> pageInfo = ERXResponseRewriter.ajaxPageUserInfo(context);
      pageInfo.removeObjectForKey(TOP_INDEX_KEY);
      pageInfo.removeObjectForKey(CONTEXT_OBSERVER_KEY);
      NSNotificationCenter.defaultCenter().removeObserver(this, WORequestHandler.DidHandleRequestNotification, context);
    }
View Full Code Here


  }
 
  public String process(SeleniumTest test) {
    WORequest request = WOApplication.application().createRequest("GET", WOApplication.application().baseURL(), "HTTP/1.1", new NSDictionary(), new NSData(), new NSDictionary());
    assert(request != null);
    WOContext context = WOApplication.application().createContextForRequest(request);
    assert(context != null);
    WOComponent component = WOApplication.application().pageWithName(_componentName, context);
    assert(component != null);
    WOResponse response = WOApplication.application().createResponseInContext(context);
    assert(response != null);
View Full Code Here

  @Override
  public WOResponse handleRequest(WORequest request) {
    WOApplication application = WOApplication.application();
    application.awake();
    try {
      WOContext context = application.createContextForRequest(request);
      WOResponse response = application.createResponseInContext(context);

      Object output;
      try {
        String inputString = request.contentString();
        JSONObject input = new JSONObject(inputString);
        String sessionIdKey = WOApplication.application().sessionIdKey();
        String sessionId = request.cookieValueForKey(sessionIdKey);
        if (sessionId == null) {
          ERXMutableURL url = new ERXMutableURL();
          url.setQueryParameters(request.queryString());
          sessionId = url.queryParameter(sessionIdKey);
          if (sessionId == null && input.has(sessionIdKey)) {
            sessionId = input.getString(sessionIdKey);
          }
        }
        context._setRequestSessionID(sessionId);
        WOSession session = null;
        if (context._requestSessionID() != null) {
          session = WOApplication.application().restoreSessionWithID(sessionId, context);
        }
        if (session != null) {
          session.awake();
        }
        try {
          JSONComponentCallback componentCallback = null;
         
          WODynamicURL url = request._uriDecomposed();
          String requestHandlerPath = url.requestHandlerPath();
          JSONRPCBridge jsonBridge;
          if (requestHandlerPath != null && requestHandlerPath.length() > 0) {
            String componentNameAndInstance = requestHandlerPath;
            String componentInstance;
            String componentName;
            int slashIndex = componentNameAndInstance.indexOf('/');
            if (slashIndex == -1) {
              componentName = componentNameAndInstance;
              componentInstance = null;
            }
            else {
              componentName = componentNameAndInstance.substring(0, slashIndex);
              componentInstance = componentNameAndInstance.substring(slashIndex + 1);
            }

            if (session == null) {
              session = context.session();
            }

            String bridgesKey = (componentInstance == null) ? "_JSONGlobalBridges" : "_JSONInstanceBridges";
            Map<String, JSONRPCBridge> componentBridges = (Map<String, JSONRPCBridge>) session.objectForKey(bridgesKey);
            if (componentBridges == null) {
              int limit = ERXProperties.intForKeyWithDefault((componentInstance == null) ? "er.ajax.json.globalBacktrackCacheSize" : "er.ajax.json.backtrackCacheSize", WOApplication.application().pageCacheSize());
              componentBridges = new LRUMap<String, JSONRPCBridge>(limit);
              session.setObjectForKey(componentBridges, bridgesKey);
            }
            jsonBridge = componentBridges.get(componentNameAndInstance);
            if (jsonBridge == null) {
              Class componentClass = _NSUtilities.classWithName(componentName);
              JSONComponent component;
              if (JSONComponent.class.isAssignableFrom(componentClass)) {
                component = (JSONComponent) _NSUtilities.instantiateObject(componentClass, new Class[] { WOContext.class }, new Object[] { context }, true, false);
              }
              else {
                throw new SecurityException("There is no JSON component named '" + componentName + "'.");
              }
              jsonBridge = createBridgeForComponent(component, componentName, componentInstance, componentBridges);
            }
           
            componentCallback = new JSONComponentCallback(context);
            jsonBridge.registerCallback(componentCallback, WOContext.class);
          }
          else {
            jsonBridge = _sharedBridge;
          }

          try {
            output = jsonBridge.call(new Object[] { request, response, context }, input);
          }
          finally {
            if (componentCallback != null) {
              jsonBridge.unregisterCallback(componentCallback, WOContext.class);
            }
          }

          if (context._session() != null) {
            WOSession contextSession = context._session();
            // If this is a new session, then we have to force it to be a cookie session
            if (sessionId == null) {
              boolean storesIDsInCookies = contextSession.storesIDsInCookies();
              try {
                contextSession.setStoresIDsInCookies(true);
                contextSession._appendCookieToResponse(response);
              }
              finally {
                contextSession.setStoresIDsInCookies(storesIDsInCookies);
              }
            }
            else {
              contextSession._appendCookieToResponse(response);
            }
          }
          response.appendContentString(output.toString());
          response._finalizeInContext(context);
          response.disableClientCaching();
        }
        finally {
          try {
            if (session != null) {
              session.sleep();
            }
          }
          finally {
            if (context._session() != null) {
              WOApplication.application().saveSessionForContext(context);
            }
          }
        }
      }
View Full Code Here

    return "presentation";
  }
 
  public String process(SeleniumTest test) {
    WORequest request = WOApplication.application().createRequest("GET", WOApplication.application().baseURL(), "HTTP/1.1", new NSDictionary(), new NSData(), new NSDictionary());
    WOContext context = WOApplication.application().createContextForRequest(request);
    WOComponent component = WOApplication.application().pageWithName(PRESENTATION_COMPONENT, context);
    WOResponse response = WOApplication.application().createResponseInContext(context);
    assert(request != null && context != null && component != null && response != null);
   
    component.takeValueForKey(test, PRESENTATION_TEST_BINDING);
View Full Code Here

TOP

Related Classes of com.webobjects.appserver.WOContext

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.