package org.frameworkset.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.frameworkset.util.annotations.AnnotationUtils; import org.junit.Test; import com.frameworkset.util.SimpleStringUtil; public class PathDataTest { @Test public void test() { List<String> datas = AnnotationUtils.parserPathdata("/rest//people//"); System.out.println(); //第一级路径是不能作为变量的 String path = "/rest/{a}/people/{b}/{c}"; int len = path.length(); int index = path.indexOf('/'); List<Integer> poses = new ArrayList<Integer>(); List<String> variables = new ArrayList<String>(); int count = -1; while(index != -1) { if(index == len - 1) break; count ++; if(path.charAt(index+1) == '{') { poses.add(count); int endps = path.indexOf("}",index + 1); variables.add(path.substring(index + 1 + 1, endps)); } index = path.indexOf("/", index + 1); } String[] pathVariables = null; Integer[] pathVariablePositions = null; if(poses.size() > 0) { pathVariables = SimpleStringUtil.toStringArray(variables); pathVariablePositions = SimpleStringUtil.toIntArray(poses); } Map retdatas = new HashMap(); for(int i = 0; i < pathVariablePositions.length; i ++) { int pos = pathVariablePositions[i].intValue(); String key = pathVariables[i]; String value = datas.get(pos); retdatas.put(key, value); } System.out.println(); } @Test public void testValue() { List<String> datas = AnnotationUtils.parserPathdata("/rest/sunshine/people/2_6_204/yinbp"); System.out.println(); //第一级路径是不能作为变量的 String path = "/rest/{a}/people/{b}/{c}"; int len = path.length(); int index = path.indexOf('/'); List<Integer> poses = new ArrayList<Integer>(); List<String> variables = new ArrayList<String>(); int count = -1; while(index != -1) { if(index == len - 1) break; count ++; if(path.charAt(index+1) == '{') { poses.add(count); int endps = path.indexOf("}",index + 1); variables.add(path.substring(index + 1 + 1, endps)); } index = path.indexOf("/", index + 1); } String[] pathVariables = null; Integer[] pathVariablePositions = null; if(poses.size() > 0) { pathVariables = SimpleStringUtil.toStringArray(variables); pathVariablePositions = SimpleStringUtil.toIntArray(poses); } Map retdatas = new HashMap(); for(int i = 0; i < pathVariablePositions.length; i ++) { int pos = pathVariablePositions[i].intValue(); String key = pathVariables[i]; String value = datas.get(pos); retdatas.put(key, value); } System.out.println(); } private void parserVariables() { String path = "/rest/{a}/people/{b}/{c}"; int len = path.length(); int index = path.indexOf('/'); List<Integer> poses = new ArrayList<Integer>(); List<String> variables = new ArrayList<String>(); int count = -1; while(index != -1) { if(index == len - 1) break; count ++; if(path.charAt(index+1) == '{') { poses.add(count); int endps = path.indexOf("}",index + 1); variables.add(path.substring(index + 1 + 1, endps)); } index = path.indexOf("/", index + 1); } if(poses.size() > 0) { String[] pathVariables = SimpleStringUtil.toStringArray(variables); Integer[] pathVariablePositions = SimpleStringUtil.toIntArray(poses); } } }