Package com.firefly.mvc.web.support

Examples of com.firefly.mvc.web.support.BeanHandle


    String afterIntercept = "a#" + invokeUri;
    Set<BeanHandle> beforeSet = webContext.getBean(beforeIntercept);
    Set<BeanHandle> afterSet = webContext.getBean(afterIntercept);

    log.debug("uri map [{}]", key);
    BeanHandle beanHandle = webContext.getBean(key);
    if (beanHandle != null) {
      Object ret = null;
      Object beforeRet = null; // 前置拦截器的返回值
      BeanHandle lastBefore = null; // 最后得到的前置拦截器
      Object afterRet = null; // 后置拦截器的返回值
      BeanHandle lastAfter = null; // 最后得到的后置拦截器

      // 前置拦截栈调用
      if (beforeSet != null) {
        for (BeanHandle before : beforeSet) {
          Object[] beforeP = getParams(request, response, before);
          beforeRet = before.invoke(beforeP);
          if (beforeRet != null) {
            lastBefore = before;
            break;
          }
        }
      }

      if (beforeRet == null) {
        // controller调用
        Object[] p = getParams(request, response, beanHandle);
        ret = beanHandle.invoke(p);

        // 后置拦截栈调用
        if (afterSet != null) {
          for (BeanHandle after : afterSet) {
            Object[] afterP = getParams(request, response, after);
            afterRet = after.invoke(afterP);
            if (afterRet != null) {
              lastAfter = after;
              break;
            }
          }
        }
      }

      // 视图渲染
      try {
        if (afterRet != null) {
          lastAfter.getViewHandle().render(request, response,
              afterRet);
        } else if (beforeRet != null) {
          lastBefore.getViewHandle().render(request, response,
              beforeRet);
        } else {
View Full Code Here


      final String method = m.getAnnotation(RequestMapping.class)
          .method();
      final String view = m.getAnnotation(RequestMapping.class).view();
      String key = method + "@" + uri;

      BeanHandle beanHandle = new BeanHandle(o, m, getViewHandle(view));
      map.put(key, beanHandle);
      uriList.add(key);
      log.info("register uri [{}]", key);
      if (key.charAt(key.length() - 1) == '/')
        key = key.substring(0, key.length() - 1);
      else
        key += "/";
      map.put(key, beanHandle);
      uriList.add(key);
      log.info("register uri [{}]", key);
    }

    list = getInterceptor(c);
    for (Method m : list) {
      m.setAccessible(true);
      String uriPattern = c.getAnnotation(Interceptor.class).uri();
      final String view = c.getAnnotation(Interceptor.class).view();
      final Integer order = c.getAnnotation(Interceptor.class).order();

      List<String> l = getInterceptUri(uriPattern);
      for (String i : l) {
        String key = m.getName().charAt(0) + "#" + i;
        BeanHandle beanHandle = new BeanHandle(o, m,
            getViewHandle(view));
        beanHandle.setInterceptOrder(order);
        Set<BeanHandle> interceptorSet = (Set<BeanHandle>) map.get(key);
        if (interceptorSet == null) {
          interceptorSet = new TreeSet<BeanHandle>();
          interceptorSet.add(beanHandle);
          map.put(key, interceptorSet);
View Full Code Here

TOP

Related Classes of com.firefly.mvc.web.support.BeanHandle

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.