示例#1
0
  protected static String generateHandlerTemplate(
      String methodName, String signature, String sourceClass) {
    Type[] argTypes = Type.getArgumentTypes(signature);

    StringBuilder tpl = new StringBuilder();
    tpl.append("    public static void ").append(methodName).append('(');
    for (int var = 0; var < argTypes.length; var++) {
      if (EventProxy.appendTypeName(tpl, argTypes[var], sourceClass)) tpl.append("[]");
      if (var == 0) tpl.append(" e");
      if (var > 0) tpl.append(" arg").append(String.valueOf(var));
      if (var < argTypes.length - 1) tpl.append(", ");
    }
    tpl.append(")\n\t    {\n\t        // handler code here\n\t    }");

    return tpl.toString();
  }
示例#2
0
  private static boolean appendTypeName(StringBuilder tpl, Type type, String sourceClass) {
    switch (type.getSort()) {
      case Type.BOOLEAN:
        tpl.append("boolean");
        return false;
      case Type.CHAR:
        tpl.append("char");
        return false;
      case Type.BYTE:
        tpl.append("byte");
        return false;
      case Type.SHORT:
        tpl.append("short");
        return false;
      case Type.INT:
        tpl.append("int");
        return false;
      case Type.FLOAT:
        tpl.append("float");
        return false;
      case Type.LONG:
        tpl.append("long");
        return false;
      case Type.DOUBLE:
        tpl.append("double");
        return false;
      case Type.ARRAY:
        EventProxy.appendTypeName(tpl, type.getElementType(), sourceClass);
        return true;
      case Type.OBJECT:
        String typeName = type.getClassName();
        typeName = typeName.substring(typeName.lastIndexOf('.') + 1);
        tpl.append(typeName);
        if (typeName.endsWith("ReturnEventInfo"))
          tpl.append('<').append(sourceClass).append(", ?>");
        else if (typeName.endsWith("EventInfo")) tpl.append('<').append(sourceClass).append('>');
        return false;
    }

    tpl.append("Object");

    return false;
  }