Package ch.ralscha.extdirectspring.bean

Examples of ch.ralscha.extdirectspring.bean.ExtDirectResponse


  @RequestMapping(value = "/router", method = RequestMethod.POST, params = "extAction")
  public String router(HttpServletRequest request, HttpServletResponse response,
      @RequestParam("extAction") String extAction, @RequestParam("extMethod") String extMethod)
      throws IOException {

    ExtDirectResponse directResponse = new ExtDirectResponse(request);
    MethodInfo methodInfo = MethodInfoCache.INSTANCE.get(extAction, extMethod);
    boolean streamResponse;

    if (methodInfo != null && methodInfo.getForwardPath() != null) {
      return methodInfo.getForwardPath();
    } else if (methodInfo != null && methodInfo.getHandlerMethod() != null) {
      streamResponse = configuration.isStreamResponse() || methodInfo.isStreamResponse();

      HandlerMethod handlerMethod = methodInfo.getHandlerMethod();
      try {

        ModelAndView modelAndView = null;

        if (configuration.isSynchronizeOnSession() || methodInfo.isSynchronizeOnSession()) {
          HttpSession session = request.getSession(false);
          if (session != null) {
            Object mutex = WebUtils.getSessionMutex(session);
            synchronized (mutex) {
              modelAndView = handlerAdapter.handle(request, response, handlerMethod);
            }
          } else {
            modelAndView = handlerAdapter.handle(request, response, handlerMethod);
          }
        } else {
          modelAndView = handlerAdapter.handle(request, response, handlerMethod);
        }

        ExtDirectFormPostResult formPostResult = (ExtDirectFormPostResult) modelAndView.getModel().get(
            "extDirectFormPostResult");
        directResponse.setResult(formPostResult.getResult());
      } catch (Exception e) {
        log.error("Error calling method: " + extMethod, e.getCause() != null ? e.getCause() : e);
        handleException(directResponse, e);
        Map<String, Object> result = new HashMap<String, Object>();
        result.put("success", false);
        directResponse.setResult(result);
      }
    } else {
      streamResponse = configuration.isStreamResponse();
      log.error("Error invoking method '" + extAction + "." + extMethod + "'. Method  or Bean not found");
      handleMethodNotFoundError(directResponse, extAction, extMethod);
View Full Code Here


    List<ExtDirectResponse> directResponses = new ArrayList<ExtDirectResponse>(directRequests.size());
    boolean streamResponse = configuration.isStreamResponse();
    for (Future<ExtDirectResponse> future : futures) {
      try {
        ExtDirectResponse directResponse = future.get();
        streamResponse = streamResponse || directResponse.isStreamResponse();
        directResponses.add(directResponse);
      } catch (InterruptedException e) {
        log.error("Error invoking method", e);
      } catch (ExecutionException e) {
        log.error("Error invoking method", e);
View Full Code Here

      IOException {
    List<ExtDirectResponse> directResponses = new ArrayList<ExtDirectResponse>(directRequests.size());
    boolean streamResponse = configuration.isStreamResponse();

    for (ExtDirectRequest directRequest : directRequests) {
      ExtDirectResponse directResponse = handleMethodCall(directRequest, request, response, locale);
      streamResponse = streamResponse || directResponse.isStreamResponse();
      directResponses.add(directResponse);
    }

    writeJsonResponse(response, directResponses, streamResponse);
  }
View Full Code Here

  }

  @SuppressWarnings({ "rawtypes", "unchecked" })
  ExtDirectResponse handleMethodCall(ExtDirectRequest directRequest, HttpServletRequest request,
      HttpServletResponse response, Locale locale) {
    ExtDirectResponse directResponse = new ExtDirectResponse(directRequest);

    MethodInfo methodInfo = MethodInfoCache.INSTANCE.get(directRequest.getAction(), directRequest.getMethod());

    if (methodInfo != null) {

      try {
        directResponse.setStreamResponse(methodInfo.isStreamResponse());

        Object result = processRemotingRequest(request, response, locale, directRequest, methodInfo);

        if (result != null) {

          if (methodInfo.isType(ExtDirectMethodType.FORM_LOAD)
              && !ExtDirectFormLoadResult.class.isAssignableFrom(result.getClass())) {
            result = new ExtDirectFormLoadResult(result);
          } else if ((methodInfo.isType(ExtDirectMethodType.STORE_MODIFY) || methodInfo
              .isType(ExtDirectMethodType.STORE_READ))
              && !ExtDirectStoreReadResult.class.isAssignableFrom(result.getClass())
              && configuration.isAlwaysWrapStoreResponse()) {
            if (result instanceof Collection) {
              result = new ExtDirectStoreReadResult((Collection) result);
            } else {
              result = new ExtDirectStoreReadResult(result);
            }
          }

          directResponse.setResult(result);
        } else {
          if (methodInfo.isType(ExtDirectMethodType.STORE_MODIFY)
              || methodInfo.isType(ExtDirectMethodType.STORE_READ)) {
            directResponse.setResult(Collections.emptyList());
          }
        }

      } catch (Exception e) {
        log.error("Error calling method: " + directRequest.getMethod(), e.getCause() != null ? e.getCause() : e);
View Full Code Here

    List<ExtDirectResponse> directResponses = new ArrayList<ExtDirectResponse>();

    for (ExtDirectRequest directRequest : directRequests) {

      ExtDirectResponse directResponse = new ExtDirectResponse(directRequest);

      try {
        MethodInfo methodInfo = ExtDirectSpringUtil.findMethodInfo(context, directRequest.getAction(),
            directRequest.getMethod());

        Object result = processRemotingRequest(request, response, locale, directRequest, methodInfo);

        if (result != null) {

          if (methodInfo.isType(ExtDirectMethodType.FORM_LOAD)
              && !ExtDirectFormLoadResult.class.isAssignableFrom(result.getClass())) {
            result = new ExtDirectFormLoadResult(result);
          } else if ((methodInfo.isType(ExtDirectMethodType.STORE_MODIFY) || methodInfo
              .isType(ExtDirectMethodType.STORE_READ))
              && !ExtDirectStoreResponse.class.isAssignableFrom(result.getClass())
              && configuration.isAlwaysWrapStoreResponse()) {
            result = new ExtDirectStoreResponse((Collection) result);
          }

          directResponse.setResult(result);
        } else {
          if (methodInfo.isType(ExtDirectMethodType.STORE_MODIFY)
              || methodInfo.isType(ExtDirectMethodType.STORE_READ)) {
            directResponse.setResult(Collections.emptyList());
          }
        }

      } catch (Exception e) {
        log.error("Error calling method: " + directRequest.getMethod(), e.getCause() != null ? e.getCause() : e);
View Full Code Here

    if (methodInfo != null && methodInfo.getForwardPath() != null) {
      return methodInfo.getForwardPath();
    }

    log.error("Error invoking method '" + extAction + "." + extMethod + "'. Method  or Bean not found");
    ExtDirectResponse directResponse = new ExtDirectResponse(request);
    handleMethodNotFoundError(directResponse, extAction, extMethod);
    writeJsonResponse(response, directResponse, configuration.isStreamResponse());

    return null;
  }
View Full Code Here

    List<ExtDirectResponse> directResponses = new ArrayList<ExtDirectResponse>();
    boolean streamResponse = configuration.isStreamResponse();

    for (ExtDirectRequest directRequest : directRequests) {

      ExtDirectResponse directResponse = new ExtDirectResponse(directRequest);

      MethodInfo methodInfo = MethodInfoCache.INSTANCE.get(directRequest.getAction(), directRequest.getMethod());

      if (methodInfo != null) {

        try {
          streamResponse = streamResponse || methodInfo.isStreamResponse();

          Object result = processRemotingRequest(request, response, locale, directRequest, methodInfo);

          if (result != null) {

            if (methodInfo.isType(ExtDirectMethodType.FORM_LOAD)
                && !ExtDirectFormLoadResult.class.isAssignableFrom(result.getClass())) {
              result = new ExtDirectFormLoadResult(result);
            } else if ((methodInfo.isType(ExtDirectMethodType.STORE_MODIFY) || methodInfo
                .isType(ExtDirectMethodType.STORE_READ))
                && !ExtDirectStoreResponse.class.isAssignableFrom(result.getClass())
                && configuration.isAlwaysWrapStoreResponse()) {
              if (result instanceof Collection) {
                result = new ExtDirectStoreResponse((Collection) result);
              } else {
                result = new ExtDirectStoreResponse(result);
              }
            }

            directResponse.setResult(result);
          } else {
            if (methodInfo.isType(ExtDirectMethodType.STORE_MODIFY)
                || methodInfo.isType(ExtDirectMethodType.STORE_READ)) {
              directResponse.setResult(Collections.emptyList());
            }
          }

        } catch (Exception e) {
          log.error("Error calling method: " + directRequest.getMethod(), e.getCause() != null ? e.getCause()
View Full Code Here

    if (methodInfo != null && methodInfo.getForwardPath() != null) {
      return methodInfo.getForwardPath();
    }

    log.error("Error invoking method '" + extAction + "." + extMethod + "'. Method  or Bean not found");
    ExtDirectResponse directResponse = new ExtDirectResponse(request);
    handleMethodNotFoundError(directResponse, extAction, extMethod);
    writeJsonResponse(response, directResponse, configuration.isStreamResponse());

    return null;
  }
View Full Code Here

    List<ExtDirectResponse> directResponses = new ArrayList<ExtDirectResponse>();
    boolean streamResponse = configuration.isStreamResponse();

    for (ExtDirectRequest directRequest : directRequests) {

      ExtDirectResponse directResponse = new ExtDirectResponse(directRequest);

      MethodInfo methodInfo = MethodInfoCache.INSTANCE.get(directRequest.getAction(), directRequest.getMethod());

      if (methodInfo != null) {

        try {
          streamResponse = streamResponse || methodInfo.isStreamResponse();

          Object result = processRemotingRequest(request, response, locale, directRequest, methodInfo);

          if (result != null) {

            if (methodInfo.isType(ExtDirectMethodType.FORM_LOAD)
                && !ExtDirectFormLoadResult.class.isAssignableFrom(result.getClass())) {
              result = new ExtDirectFormLoadResult(result);
            } else if ((methodInfo.isType(ExtDirectMethodType.STORE_MODIFY) || methodInfo
                .isType(ExtDirectMethodType.STORE_READ))
                && !ExtDirectStoreResponse.class.isAssignableFrom(result.getClass())
                && configuration.isAlwaysWrapStoreResponse()) {
              if (result instanceof Collection) {
                result = new ExtDirectStoreResponse((Collection) result);
              } else {
                List responses = new ArrayList();
                responses.add(result);
                result = new ExtDirectStoreResponse(responses);
              }
            }

            directResponse.setResult(result);
          } else {
            if (methodInfo.isType(ExtDirectMethodType.STORE_MODIFY)
                || methodInfo.isType(ExtDirectMethodType.STORE_READ)) {
              directResponse.setResult(Collections.emptyList());
            }
          }

        } catch (Exception e) {
          log.error("Error calling method: " + directRequest.getMethod(), e.getCause() != null ? e.getCause()
View Full Code Here

    List<ExtDirectRequest> directRequests = getExtDirectRequests(rawRequestString);
    List<ExtDirectResponse> directResponses = new ArrayList<ExtDirectResponse>();

    for (ExtDirectRequest directRequest : directRequests) {

      ExtDirectResponse directResponse = new ExtDirectResponse(directRequest);

      try {
        MethodInfo methodInfo = ExtDirectSpringUtil.findMethodInfo(context, directRequest.getAction(),
            directRequest.getMethod());

        Object result = processRemotingRequest(request, response, locale, directRequest, methodInfo);

        if (result != null) {

          if (methodInfo.isType(ExtDirectMethodType.FORM_LOAD)
              && !ExtDirectFormLoadResult.class.isAssignableFrom(result.getClass())) {
            result = new ExtDirectFormLoadResult(result);
          } else if ((methodInfo.isType(ExtDirectMethodType.STORE_MODIFY) || methodInfo
              .isType(ExtDirectMethodType.STORE_READ))
              && !ExtDirectStoreResponse.class.isAssignableFrom(result.getClass())) {
            result = new ExtDirectStoreResponse((Collection) result);
          }

          directResponse.setResult(result);
        }

      } catch (Exception e) {
        log.error("Error calling method: " + directRequest.getMethod(), e.getCause() != null ? e.getCause() : e);
        handleException(directResponse, e);
View Full Code Here

TOP

Related Classes of ch.ralscha.extdirectspring.bean.ExtDirectResponse

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.