Example #1
0
 private void handleCookies(
     Method m,
     Object[] params,
     MultivaluedMap<String, String> headers,
     List<Parameter> beanParams,
     MultivaluedMap<ParameterType, Parameter> map) {
   List<Parameter> cs = getParameters(map, ParameterType.COOKIE);
   for (Parameter p : cs) {
     if (params[p.getIndex()] != null) {
       headers.add(
           HttpHeaders.COOKIE,
           p.getName()
               + '='
               + convertParamValue(params[p.getIndex()].toString(), getParamAnnotations(m, p)));
     }
   }
   for (Parameter p : beanParams) {
     Map<String, BeanPair> values =
         getValuesFromBeanParam(params[p.getIndex()], CookieParam.class);
     for (Map.Entry<String, BeanPair> entry : values.entrySet()) {
       if (entry.getValue() != null) {
         headers.add(
             HttpHeaders.COOKIE,
             entry.getKey()
                 + "="
                 + convertParamValue(entry.getValue().getValue(), entry.getValue().getAnns()));
       }
     }
   }
 }
Example #2
0
 private void handleHeaders(
     Method m,
     Object[] params,
     MultivaluedMap<String, String> headers,
     List<Parameter> beanParams,
     MultivaluedMap<ParameterType, Parameter> map) {
   List<Parameter> hs = getParameters(map, ParameterType.HEADER);
   for (Parameter p : hs) {
     if (params[p.getIndex()] != null) {
       headers.add(
           p.getName(), convertParamValue(params[p.getIndex()], getParamAnnotations(m, p)));
     }
   }
   for (Parameter p : beanParams) {
     Map<String, BeanPair> values =
         getValuesFromBeanParam(params[p.getIndex()], HeaderParam.class);
     for (Map.Entry<String, BeanPair> entry : values.entrySet()) {
       if (entry.getValue() != null) {
         headers.add(
             entry.getKey(),
             convertParamValue(entry.getValue().getValue(), entry.getValue().getAnns()));
       }
     }
   }
 }
Example #3
0
 private void handleMatrixes(
     Method m,
     Object[] params,
     MultivaluedMap<ParameterType, Parameter> map,
     List<Parameter> beanParams,
     UriBuilder ub) {
   List<Parameter> mx = getParameters(map, ParameterType.MATRIX);
   for (Parameter p : mx) {
     if (params[p.getIndex()] != null) {
       addMatrixQueryParamsToBuilder(
           ub, p.getName(), ParameterType.MATRIX, getParamAnnotations(m, p), params[p.getIndex()]);
     }
   }
   for (Parameter p : beanParams) {
     Map<String, BeanPair> values =
         getValuesFromBeanParam(params[p.getIndex()], MatrixParam.class);
     for (Map.Entry<String, BeanPair> entry : values.entrySet()) {
       if (entry.getValue() != null) {
         addMatrixQueryParamsToBuilder(
             ub,
             entry.getKey(),
             ParameterType.MATRIX,
             entry.getValue().getAnns(),
             entry.getValue().getValue());
       }
     }
   }
 }
Example #4
0
  private MultivaluedMap<String, String> handleForm(
      Method m,
      Object[] params,
      MultivaluedMap<ParameterType, Parameter> map,
      List<Parameter> beanParams) {

    MultivaluedMap<String, String> form = new MetadataMap<String, String>();

    List<Parameter> fm = getParameters(map, ParameterType.FORM);
    for (Parameter p : fm) {
      addFormValue(form, p.getName(), params[p.getIndex()], getParamAnnotations(m, p));
    }
    for (Parameter p : beanParams) {
      Map<String, BeanPair> values = getValuesFromBeanParam(params[p.getIndex()], FormParam.class);
      for (Map.Entry<String, BeanPair> entry : values.entrySet()) {
        addFormValue(form, entry.getKey(), entry.getValue().getValue(), entry.getValue().getAnns());
      }
    }

    return form;
  }
Example #5
0
  private List<Object> getPathParamValues(
      Method m,
      Object[] params,
      MultivaluedMap<ParameterType, Parameter> map,
      List<Parameter> beanParams,
      OperationResourceInfo ori,
      int bodyIndex) {
    List<Object> list = new LinkedList<Object>();

    List<String> methodVars = ori.getURITemplate().getVariables();
    List<Parameter> paramsList = getParameters(map, ParameterType.PATH);
    Map<String, BeanPair> beanParamValues = new HashMap<String, BeanPair>(beanParams.size());
    for (Parameter p : beanParams) {
      beanParamValues.putAll(getValuesFromBeanParam(params[p.getIndex()], PathParam.class));
    }
    if (!beanParamValues.isEmpty() && !methodVars.containsAll(beanParamValues.keySet())) {
      List<String> classVars = ori.getClassResourceInfo().getURITemplate().getVariables();
      for (String classVar : classVars) {
        BeanPair pair = beanParamValues.get(classVar);
        if (pair != null) {
          Object paramValue = convertParamValue(pair.getValue(), pair.getAnns());
          if (isRoot) {
            valuesMap.put(classVar, paramValue);
          } else {
            list.add(paramValue);
          }
        }
      }
    }
    if (isRoot) {
      list.addAll(valuesMap.values());
    }

    Map<String, Parameter> paramsMap = new LinkedHashMap<String, Parameter>();
    for (Parameter p : paramsList) {
      if (p.getName().length() == 0) {
        MultivaluedMap<String, Object> values =
            InjectionUtils.extractValuesFromBean(params[p.getIndex()], "");
        for (String var : methodVars) {
          list.addAll(values.get(var));
        }
      } else {
        paramsMap.put(p.getName(), p);
      }
    }

    Object requestBody = bodyIndex == -1 ? null : params[bodyIndex];
    for (String varName : methodVars) {
      Parameter p = paramsMap.remove(varName);
      if (p != null) {
        list.add(convertParamValue(params[p.getIndex()], getParamAnnotations(m, p)));
      } else if (beanParamValues.containsKey(varName)) {
        BeanPair pair = beanParamValues.get(varName);
        list.add(convertParamValue(pair.getValue(), pair.getAnns()));
      } else if (requestBody != null) {
        try {
          Method getter =
              requestBody
                  .getClass()
                  .getMethod("get" + StringUtils.capitalize(varName), new Class<?>[] {});
          list.add(getter.invoke(requestBody, new Object[] {}));
        } catch (Exception ex) {
          // continue
        }
      }
    }

    for (Parameter p : paramsMap.values()) {
      if (valuesMap.containsKey(p.getName())) {
        int index = 0;
        for (Iterator<String> it = valuesMap.keySet().iterator(); it.hasNext(); index++) {
          if (it.next().equals(p.getName()) && index < list.size()) {
            list.remove(index);
            list.add(index, convertParamValue(params[p.getIndex()], null));
            break;
          }
        }
      }
    }

    return list;
  }