private void initParam(Param param, RestParamProperty prop) { prop.setDefaultValue(param.getDefault()); prop.setValue(param.getDefault()); ParamStyle.Enum paramStyle = param.getStyle(); if (paramStyle == null) { paramStyle = ParamStyle.QUERY; } prop.setStyle(ParameterStyle.valueOf(paramStyle.toString().toUpperCase())); prop.setRequired(param.getRequired()); QName paramType = param.getType(); prop.setType(paramType); String[] options = new String[param.sizeOfOptionArray()]; for (int c = 0; c < options.length; c++) { options[c] = param.getOptionArray(c).getValue(); } if (options.length > 0) { prop.setOptions(options); } }
public static String extractParams(URL param, RestParamsPropertyHolder params) { String path = param.getPath(); String[] items = path.split("/"); int templateParamCount = 0; StringBuffer resultPath = new StringBuffer(); for (int i = 0; i < items.length; i++) { String item = items[i]; try { String[] matrixParams = item.split(";"); if (matrixParams.length > 0) { item = matrixParams[0]; for (int c = 1; c < matrixParams.length; c++) { String matrixParam = matrixParams[c]; int ix = matrixParam.indexOf('='); if (ix == -1) { params .addProperty(URLDecoder.decode(matrixParam, "Utf-8")) .setStyle(ParameterStyle.MATRIX); } else { String name = matrixParam.substring(0, ix); RestParamProperty property = params.addProperty(URLDecoder.decode(name, "Utf-8")); property.setStyle(ParameterStyle.MATRIX); property.setValue(URLDecoder.decode(matrixParam.substring(ix + 1), "Utf-8")); } } } Integer.parseInt(item); RestParamProperty prop = params.addProperty("param" + templateParamCount++); prop.setStyle(ParameterStyle.TEMPLATE); prop.setValue(item); item = "{" + prop.getName() + "}"; } catch (Exception e) { } if (StringUtils.hasContent(item)) { resultPath.append('/').append(item); } } String query = ((URL) param).getQuery(); if (StringUtils.hasContent(query)) { items = query.split("&"); for (String item : items) { try { int ix = item.indexOf('='); if (ix == -1) { params.addProperty(URLDecoder.decode(item, "Utf-8")).setStyle(ParameterStyle.QUERY); } else { String name = item.substring(0, ix); RestParamProperty property = params.addProperty(URLDecoder.decode(name, "Utf-8")); property.setStyle(ParameterStyle.QUERY); property.setValue(URLDecoder.decode(item.substring(ix + 1), "Utf-8")); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } return resultPath.toString(); }