test_class.file: support/security/src/test/java/com/meiduimall/password/GatewaySignUtilTest.java
test_class.identifier: GatewaySignUtilTest
test_case.body: @Test
  	public void testSign(){
  		
  		
  		
  	}
test_case.class_method_signature: GatewaySignUtilTest.testSign()
test_case.full_signature: @Test public void testSign()
test_case.identifier: testSign
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testSign()
focal_class.file: support/security/src/main/java/com/meiduimall/password/GatewaySignUtil.java
focal_class.identifier: GatewaySignUtil
focal_class.class_method_signature: GatewaySignUtil.sign(String appKey,Map<String,String> param)
focal_class.full_signature: public static String sign(String appKey,Map<String,String> param)
focal_class.identifier: sign
focal_class.modifiers: public static
focal_class.parameters: (String appKey,Map<String,String> param)
focal_class.return: String
focal_class.signature: String sign(String appKey,Map<String,String> param)
focal_method.body: public static String  sign(String appKey,Map<String,String> param) throws Md5Exception {
  		Map<String, String> map = new TreeMap<String, String>();
  		map.putAll(param);
  		Set<String> keySet = map.keySet();
  		StringBuilder buffer = new StringBuilder();
          Iterator<String> iter = keySet.iterator();
          while (iter.hasNext()) {
              String key = iter.next();
              if ("sign".equals(key)){
              	continue;
              }
              String value = map.get(key);
              if ( value == null || value.length() < 1 ) {
              	continue;
              }
              buffer.append(key);
              buffer.append("=");
              buffer.append(value);
              buffer.append("&");
          }
          buffer.append("key=");
          buffer.append(appKey);
          return MD5.encode(buffer.toString()).toUpperCase();
  	}
focal_method.class_method_signature: GatewaySignUtil.sign(String appKey,Map<String,String> param)
focal_method.full_signature: public static String sign(String appKey,Map<String,String> param)
focal_method.identifier: sign
focal_method.invocations: putAll keySet iterator hasNext next equals get length append append append append append append toUpperCase encode toString
focal_method.modifiers: public static
focal_method.parameters: (String appKey,Map<String,String> param)
focal_method.return: String
focal_method.signature: String sign(String appKey,Map<String,String> param)