Package org.junithelper.core.parser.convert

Examples of org.junithelper.core.parser.convert.TypeNameConverter


  public void doExtract(String argsAreaString) {
    if (classMeta == null) {
      throw new IllegalStateException("class meta object required");
    }
    TypeNameConverter typeNameConverter = new TypeNameConverter(config);
    // -----------------
    // args
    String[] argArr = ArgExtractorHelper.getArgListFromArgsDefAreaString(
        argsAreaString).toArray(new String[0]);
    int argArrLen = argArr.length;
    for (int i = 0; i < argArrLen; i++) {
      ArgTypeMeta argTypeMeta = new ArgTypeMeta();
      String argTypeFull = argArr[i];
      // -----------------
      // generics of arg
      Matcher toGenericsMatcherForArg = Pattern.compile(RegExp.Generics_Group).matcher(argTypeFull);
      while (toGenericsMatcherForArg.find()) {
        String[] generics = toGenericsMatcherForArg.group()
            .replaceAll("<", StringValue.Empty)
            .replaceAll(">", StringValue.Empty)
            .split(StringValue.Comma);
        // convert to java.lang.Object if self class is included
        for (String generic : generics) {
          generic = typeNameConverter.toCompilableType(
              generic, classMeta.importedList, classMeta.packageName);
          argTypeMeta.generics.add(generic);
        }
      }
      // -----------------
      // arg type
      String argTypeName = argTypeFull
          .replaceAll("final ", StringValue.Empty)
          .replaceAll(RegExp.Generics, StringValue.Empty)
          .split("\\s+")[0].trim();
      if (argTypeName != null && !"".equals(argTypeName)) {
        argTypeMeta.name = typeNameConverter.toCompilableType(
            argTypeName, argTypeMeta.generics, classMeta.importedList, classMeta.packageName);
        argTypeMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(argTypeMeta.name);
        extractedMetaList.add(argTypeMeta);
      }
      // -----------------
      // arg name string
      Matcher argNameMatcher = RegExp.PatternObject.MethodArg_Group.matcher(argTypeFull);
      if (argNameMatcher.find()) {
        String argName = argNameMatcher.group(1);
        if (argName.matches(".+\\[\\s*\\]")) {
          // ex. String strArr[] = null;
          String arrayPart = "";
          Matcher mat = Pattern.compile("\\[\\s*\\]").matcher(argName);
          while (mat.find()) {
            arrayPart += "[]";
          }
          argName = argName.replaceAll("\\[\\s*\\]", StringValue.Empty);
          argTypeMeta.name = argTypeMeta.name + arrayPart;
          argTypeMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(argTypeMeta.name);
        }
        extractedNameList.add(argName);
      } else if (extractedMetaList.size() > 0) {
        extractedNameList.add("arg" + i);
      }
View Full Code Here


  public List<MethodMeta> extract(String sourceCodeString) {

    List<MethodMeta> dest = new ArrayList<MethodMeta>();

    TypeNameConverter typeNameConverter = new TypeNameConverter(config);

    sourceCodeString = TrimFilterUtil.doAllFilters(sourceCodeString);

    // -----------------
    // for method signature
    Matcher mat = RegExp.PatternObject.MethodSignatureArea.matcher(sourceCodeString);
    while (mat.find()) {
      MethodMeta meta = new MethodMeta();
      String methodSignatureArea = mat.group(0)
          .replaceAll(StringValue.CarriageReturn, StringValue.Empty)
          .replaceAll(StringValue.LineFeed, StringValue.Space);

      // -----------------
      // skip constructors
      if (methodSignatureArea.matches(RegExp.Anything_ZeroOrMore_Min
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max
          + classMeta.name + "\\(" + RegExp.Anything_ZeroOrMore_Min
          + "\\)" + RegExp.Anything_ZeroOrMore_Min)) {
        continue;
      }

      // -----------------
      // skip not method signature
      String trimmedMethodSignatureArea = methodSignatureArea
          .replaceAll("\\s*,\\s*", ",")
          .replaceAll("\\s*<\\s*", "<")
          .replaceAll("\\s*>", ">");
      String methodSignatureAreaWithoutAccessModifier
          = trimAccessModifierFromMethodSignatureArea(trimmedMethodSignatureArea);
      Matcher matcherGrouping =
          RegExp.PatternObject.MethodSignatureWithoutAccessModifier_Group.matcher(
              StringValue.Space + methodSignatureAreaWithoutAccessModifier);
      if (!matcherGrouping.find()) {
        continue;
      }

      // -----------------
      // is static method
      if (methodSignatureArea.matches(RegExp.Anything_ZeroOrMore_Min
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max + "static"
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max
          + RegExp.Anything_ZeroOrMore_Min)) {
        meta.isStatic = true;
      }
      // -----------------
      // access modifier
      meta.accessModifier = getAccessModifier(methodSignatureArea);

      // -----------------
      // return type
      String grouped = matcherGrouping.group(1);
      String returnTypeFull = grouped.replaceAll("final ", StringValue.Empty).split("\\s+")[0].trim();
      // generics

      // remove generics if nested
      returnTypeFull = trimGenericsIfNested(returnTypeFull);
      Matcher toGenericsMatcherForReturn = Pattern.compile(RegExp.Generics_Group).matcher(returnTypeFull);
      while (toGenericsMatcherForReturn.find()) {
        String[] generics = toGenericsMatcherForReturn.group()
            .replaceAll("<", StringValue.Empty)
            .replaceAll(">", StringValue.Empty)
            .split(StringValue.Comma);
        for (String generic : generics) {
          generic = typeNameConverter.toCompilableType(
              generic, classMeta.importedList, classMeta.packageName).trim();
          meta.returnType.generics.add(generic);
        }
      }
      String returnTypeName = returnTypeFull.replace(RegExp.Generics, StringValue.Empty);
      if (!returnTypeName.equals("void")) {
        meta.returnType.name = typeNameConverter.toCompilableType(returnTypeName,
            meta.returnType.generics, classMeta.importedList, classMeta.packageName).trim();
        meta.returnType.nameInMethodName = typeNameConverter.toAvailableInMethodName(meta.returnType.name);
      }
      // -----------------
      // method name
      meta.name = matcherGrouping.group(2);
      // -----------------
      // args
      String argsAreaString = matcherGrouping.group(3);
      ArgTypeMetaExtractor argTypeMetaExtractor = new ArgTypeMetaExtractor(config);
      argTypeMetaExtractor.initialize(classMeta).doExtract(argsAreaString);
      meta.argNames = argTypeMetaExtractor.getExtractedNameList();
      meta.argTypes = argTypeMetaExtractor.getExtractedMetaList();
      // -----------------
      // is accessor method or not
      String fieldName = null;
      String fieldType = null;
      if (meta.name.matches("^set.+")) {
        // target field name
        fieldName = meta.name.substring(3);
        if (meta.argTypes.size() > 0) {
          fieldType = meta.argTypes.get(0).name;
        }
      } else if (meta.name.matches("^get.+")) {
        // target field name
        fieldName = meta.name.substring(3);
        fieldType = meta.returnType.name;
      } else if (meta.name.matches("^is.+")) {
        // target field name
        fieldName = meta.name.substring(2);
        fieldType = meta.returnType.name;
      }
      if (fieldName != null && fieldType != null) {
        meta.isAccessor = isPrivateFieldExists(fieldType, fieldName, sourceCodeString);
      }
      // -----------------
      // throws exception
      String throwsExceptions = matcherGrouping.group(4);
      if (throwsExceptions != null) {
        String[] exceptions = throwsExceptions.replaceAll(
            "throws" + RegExp.WhiteSpace.Consecutive_OneOrMore_Max,
            StringValue.Empty).split(StringValue.Comma);
        for (String exception : exceptions) {
          exception = exception.trim();
          ExceptionMeta exceptionMeta = new ExceptionMeta();
          exceptionMeta.name = exception;
          exceptionMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(exception);
          meta.throwsExceptions.add(exceptionMeta);
        }
      }
      dest.add(meta);
    }
View Full Code Here

  public List<ConstructorMeta> extract(String sourceCodeString) {

    List<ConstructorMeta> dest = new ArrayList<ConstructorMeta>();

    TypeNameConverter typeNameConverter = new TypeNameConverter(config);

    sourceCodeString = sourceCodeString
        .replaceAll("\\s+?" + StringValue.Comma, StringValue.Comma)
        .replaceAll(StringValue.Comma + "\\s+?", StringValue.Comma)
        .replaceAll("<\\s+?", "<")
        .replaceAll("\\s+?>", ">");

    Matcher matcherGrouping = RegExp.PatternObject.MethodSignatureArea.matcher(sourceCodeString);
    while (matcherGrouping.find()) {

      ConstructorMeta meta = new ConstructorMeta();
      String methodSignatureArea = matcherGrouping.group(0)
          .replaceAll(StringValue.CarriageReturn, StringValue.Empty)
          .replaceAll(StringValue.LineFeed, StringValue.Space);

      // -----------------
      // access modifier
      meta.accessModifier = getAccessModifier(methodSignatureArea);

      // -----------------
      // method signature area without access modifier
      String methodSignatureAreaWithoutAccessModifier
          = trimAccessModifierFromMethodSignatureArea(methodSignatureArea);
      String matchesConstructors = RegExp.Anything_ZeroOrMore_Min
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max
          + classMeta.name + "\\(" + RegExp.Anything_ZeroOrMore_Min
          + "\\)" + RegExp.Anything_ZeroOrMore_Min;
      if (!methodSignatureAreaWithoutAccessModifier
          .matches(matchesConstructors)) {
        continue;
      }

      // -----------------
      // is constructor
      String constructorString = StringValue.Space
          + methodSignatureAreaWithoutAccessModifier;
      String groupConstructor = RegExp.WhiteSpace.Consecutive_ZeroOrMore_Max
          + classMeta.name
          + "\\(([^\\)]*?)\\)"
          + RegExp.WhiteSpace.Consecutive_ZeroOrMore_Max
          + "(throws .+)*.*?"
          + RegExp.WhiteSpace.Consecutive_ZeroOrMore_Max + "\\{.*";
      Matcher constructorMatcher = Pattern.compile(groupConstructor).matcher(constructorString);
      if (!constructorMatcher.find()) {
        continue;
      }

      // -----------------
      // args
      String argsDefAreaString = constructorMatcher.group(1);
      List<String> argArr = ArgExtractorHelper.getArgListFromArgsDefAreaString(argsDefAreaString);
      int argArrLen = argArr.size();
      for (int i = 0; i < argArrLen; i++) {
        ArgTypeMeta argTypeMeta = new ArgTypeMeta();
        String argTypeFull = argArr.get(i);
        Matcher toGenericsMatcher = Pattern.compile(RegExp.Generics_Group).matcher(argTypeFull);
        while (toGenericsMatcher.find()) {
          String[] generics = toGenericsMatcher.group()
              .replaceAll("<", StringValue.Empty)
              .replaceAll(">", StringValue.Empty)
              .split(StringValue.Comma);
          // convert to java.lang.Object if self class is included
          for (String generic : generics) {
            generic = typeNameConverter.toCompilableType(generic,
                classMeta.importedList,
                classMeta.packageName);
            argTypeMeta.generics.add(generic);
          }
        }
        String argTypeName = argTypeFull
            .replaceAll(RegExp.Generics, StringValue.Empty)
            .replaceAll("final ", StringValue.Empty)
            .split("\\s+")[0]
            .trim();
        if (argTypeName != null && !argTypeName.equals("")) {
          argTypeMeta.name = typeNameConverter.toCompilableType(
              argTypeName,
              argTypeMeta.generics,
              classMeta.importedList,
              classMeta.packageName);
          argTypeMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(argTypeMeta.name);
          meta.argTypes.add(argTypeMeta);
          Matcher nameMatcher = RegExp.PatternObject.MethodArg_Group.matcher(argTypeFull);
          if (nameMatcher.find()) {
            String argName = nameMatcher.group(1);
            if (argName.matches(".+\\[\\s*\\]")) {
              // ex. String strArr[] = null;
              String arrayPart = "";
              Matcher mat = Pattern.compile("\\[\\s*\\]").matcher(argName);
              while (mat.find()) {
                arrayPart += "[]";
              }
              argName = argName.replaceAll("\\[\\s*\\]", StringValue.Empty);
              argTypeMeta.name = argTypeMeta.name + arrayPart;
              argTypeMeta.nameInMethodName
                  = typeNameConverter.toAvailableInMethodName(argTypeMeta.name);
            }
            meta.argNames.add(argName);
          } else {
            meta.argNames.add("constructorArg" + i);
          }
View Full Code Here

  public void doExtract(String argsAreaString) {
    if (classMeta == null) {
      throw new IllegalStateException("class meta object required");
    }
    TypeNameConverter typeNameConverter = new TypeNameConverter(config);
    // -----------------
    // args
    String[] argArr = ArgExtractorHelper.getArgListFromArgsDefAreaString(
        argsAreaString).toArray(new String[0]);
    int argArrLen = argArr.length;
    for (int i = 0; i < argArrLen; i++) {
      ArgTypeMeta argTypeMeta = new ArgTypeMeta();
      String argTypeFull = argArr[i];
      // -----------------
      // generics of arg
      Matcher toGenericsMatcherForArg = Pattern.compile(RegExp.Generics_Group).matcher(argTypeFull);
      while (toGenericsMatcherForArg.find()) {
        String[] generics = toGenericsMatcherForArg.group()
            .replaceAll("<", StringValue.Empty)
            .replaceAll(">", StringValue.Empty)
            .split(StringValue.Comma);
        // convert to java.lang.Object if self class is included
        for (String generic : generics) {
          generic = typeNameConverter.toCompilableType(
              generic, classMeta.importedList, classMeta.packageName);
          argTypeMeta.generics.add(generic);
        }
      }
      // -----------------
      // arg type
      String argTypeName = argTypeFull
          .replaceAll("final ", StringValue.Empty)
          .replaceAll(RegExp.Generics, StringValue.Empty)
          .split("\\s+")[0].trim();
      if (argTypeName != null && !"".equals(argTypeName)) {
        argTypeMeta.name = typeNameConverter.toCompilableType(
            argTypeName, argTypeMeta.generics, classMeta.importedList, classMeta.packageName);
        argTypeMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(argTypeMeta.name);
        extractedMetaList.add(argTypeMeta);
      }
      // -----------------
      // arg name string
      Matcher argNameMatcher = RegExp.PatternObject.MethodArg_Group.matcher(argTypeFull);
      if (argNameMatcher.find()) {
        String argName = argNameMatcher.group(1);
        if (argName.matches(".+\\[\\s*\\]")) {
          // ex. String strArr[] = null;
          String arrayPart = "";
          Matcher mat = Pattern.compile("\\[\\s*\\]").matcher(argName);
          while (mat.find()) {
            arrayPart += "[]";
          }
          argName = argName.replaceAll("\\[\\s*\\]", StringValue.Empty);
          argTypeMeta.name = argTypeMeta.name + arrayPart;
          argTypeMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(argTypeMeta.name);
        }
        extractedNameList.add(argName);
      } else if (extractedMetaList.size() > 0) {
        extractedNameList.add("arg" + i);
      }
View Full Code Here

  public List<MethodMeta> extract(String sourceCodeString) {

    List<MethodMeta> dest = new ArrayList<MethodMeta>();

    TypeNameConverter typeNameConverter = new TypeNameConverter(config);

    sourceCodeString = TrimFilterUtil.doAllFilters(sourceCodeString);

    // -----------------
    // for method signature
    Matcher mat = RegExp.PatternObject.MethodSignatureArea.matcher(sourceCodeString);
    while (mat.find()) {
      MethodMeta meta = new MethodMeta();
      String methodSignatureArea = mat.group(0)
          .replaceAll(StringValue.CarriageReturn, StringValue.Empty)
          .replaceAll(StringValue.LineFeed, StringValue.Space);

      // -----------------
      // skip constructors
      if (methodSignatureArea.matches(RegExp.Anything_ZeroOrMore_Min
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max
          + classMeta.name + "\\(" + RegExp.Anything_ZeroOrMore_Min
          + "\\)" + RegExp.Anything_ZeroOrMore_Min)) {
        continue;
      }

      // -----------------
      // skip not method signature
      String trimmedMethodSignatureArea = methodSignatureArea
          .replaceAll("\\s*,\\s*", ",")
          .replaceAll("\\s*<\\s*", "<")
          .replaceAll("\\s*>", ">");
      String methodSignatureAreaWithoutAccessModifier
          = trimAccessModifierFromMethodSignatureArea(trimmedMethodSignatureArea);
      Matcher matcherGrouping =
          RegExp.PatternObject.MethodSignatureWithoutAccessModifier_Group.matcher(
              StringValue.Space + methodSignatureAreaWithoutAccessModifier);
      if (!matcherGrouping.find()) {
        continue;
      }

      // -----------------
      // is static method
      if (methodSignatureArea.matches(RegExp.Anything_ZeroOrMore_Min
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max + "static"
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max
          + RegExp.Anything_ZeroOrMore_Min)) {
        meta.isStatic = true;
      }
      // -----------------
      // access modifier
      meta.accessModifier = getAccessModifier(methodSignatureArea);

      // -----------------
      // return type
      String grouped = matcherGrouping.group(1);
      String returnTypeFull = grouped.replaceAll("final ", StringValue.Empty).split("\\s+")[0].trim();
      // generics

      // remove generics if nested
      returnTypeFull = trimGenericsIfNested(returnTypeFull);
      Matcher toGenericsMatcherForReturn = Pattern.compile(RegExp.Generics_Group).matcher(returnTypeFull);
      while (toGenericsMatcherForReturn.find()) {
        String[] generics = toGenericsMatcherForReturn.group()
            .replaceAll("<", StringValue.Empty)
            .replaceAll(">", StringValue.Empty)
            .split(StringValue.Comma);
        for (String generic : generics) {
          generic = typeNameConverter.toCompilableType(
              generic, classMeta.importedList, classMeta.packageName).trim();
          meta.returnType.generics.add(generic);
        }
      }
      String returnTypeName = returnTypeFull.replace(RegExp.Generics, StringValue.Empty);
      if (!returnTypeName.equals("void")) {
        meta.returnType.name = typeNameConverter.toCompilableType(returnTypeName,
            meta.returnType.generics, classMeta.importedList, classMeta.packageName).trim();
        meta.returnType.nameInMethodName = typeNameConverter.toAvailableInMethodName(meta.returnType.name);
      }
      // -----------------
      // method name
      meta.name = matcherGrouping.group(2);
      // -----------------
      // args
      String argsAreaString = matcherGrouping.group(3);
      ArgTypeMetaExtractor argTypeMetaExtractor = new ArgTypeMetaExtractor(config);
      argTypeMetaExtractor.initialize(classMeta).doExtract(argsAreaString);
      meta.argNames = argTypeMetaExtractor.getExtractedNameList();
      meta.argTypes = argTypeMetaExtractor.getExtractedMetaList();
      // -----------------
      // is accessor method or not
      String fieldName = null;
      String fieldType = null;
      if (meta.name.matches("^set.+")) {
        // target field name
        fieldName = meta.name.substring(3);
        if (meta.argTypes.size() > 0) {
          fieldType = meta.argTypes.get(0).name;
        }
      } else if (meta.name.matches("^get.+")) {
        // target field name
        fieldName = meta.name.substring(3);
        fieldType = meta.returnType.name;
      } else if (meta.name.matches("^is.+")) {
        // target field name
        fieldName = meta.name.substring(2);
        fieldType = meta.returnType.name;
      }
      if (fieldName != null && fieldType != null) {
        meta.isAccessor = isPrivateFieldExists(fieldType, fieldName, sourceCodeString);
      }
      // -----------------
      // throws exception
      String throwsExceptions = matcherGrouping.group(4);
      if (throwsExceptions != null) {
        String[] exceptions = throwsExceptions.replaceAll(
            "throws" + RegExp.WhiteSpace.Consecutive_OneOrMore_Max,
            StringValue.Empty).split(StringValue.Comma);
        for (String exception : exceptions) {
          exception = exception.trim();
          ExceptionMeta exceptionMeta = new ExceptionMeta();
          exceptionMeta.name = exception;
          exceptionMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(exception);
          meta.throwsExceptions.add(exceptionMeta);
        }
      }
      dest.add(meta);
    }
View Full Code Here

  public List<ConstructorMeta> extract(String sourceCodeString) {

    List<ConstructorMeta> dest = new ArrayList<ConstructorMeta>();

    TypeNameConverter typeNameConverter = new TypeNameConverter(config);

    sourceCodeString = sourceCodeString
        .replaceAll("\\s+?" + StringValue.Comma, StringValue.Comma)
        .replaceAll(StringValue.Comma + "\\s+?", StringValue.Comma)
        .replaceAll("<\\s+?", "<")
        .replaceAll("\\s+?>", ">");

    Matcher matcherGrouping = RegExp.PatternObject.MethodSignatureArea.matcher(sourceCodeString);
    while (matcherGrouping.find()) {

      ConstructorMeta meta = new ConstructorMeta();
      String methodSignatureArea = matcherGrouping.group(0)
          .replaceAll(StringValue.CarriageReturn, StringValue.Empty)
          .replaceAll(StringValue.LineFeed, StringValue.Space);

      // -----------------
      // access modifier
      meta.accessModifier = getAccessModifier(methodSignatureArea);

      // -----------------
      // method signature area without access modifier
      String methodSignatureAreaWithoutAccessModifier
          = trimAccessModifierFromMethodSignatureArea(methodSignatureArea);
      String matchesConstructors = RegExp.Anything_ZeroOrMore_Min
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max
          + classMeta.name + "\\(" + RegExp.Anything_ZeroOrMore_Min
          + "\\)" + RegExp.Anything_ZeroOrMore_Min;
      if (!methodSignatureAreaWithoutAccessModifier
          .matches(matchesConstructors)) {
        continue;
      }

      // -----------------
      // is constructor
      String constructorString = StringValue.Space
          + methodSignatureAreaWithoutAccessModifier;
      String groupConstructor = RegExp.WhiteSpace.Consecutive_ZeroOrMore_Max
          + classMeta.name
          + "\\(([^\\)]*?)\\)"
          + RegExp.WhiteSpace.Consecutive_ZeroOrMore_Max
          + "(throws .+)*.*?"
          + RegExp.WhiteSpace.Consecutive_ZeroOrMore_Max + "\\{.*";
      Matcher constructorMatcher = Pattern.compile(groupConstructor).matcher(constructorString);
      if (!constructorMatcher.find()) {
        continue;
      }

      // -----------------
      // args
      String argsDefAreaString = constructorMatcher.group(1);
      List<String> argArr = ArgExtractorHelper.getArgListFromArgsDefAreaString(argsDefAreaString);
      int argArrLen = argArr.size();
      for (int i = 0; i < argArrLen; i++) {
        ArgTypeMeta argTypeMeta = new ArgTypeMeta();
        String argTypeFull = argArr.get(i);
        Matcher toGenericsMatcher = Pattern.compile(RegExp.Generics_Group).matcher(argTypeFull);
        while (toGenericsMatcher.find()) {
          String[] generics = toGenericsMatcher.group()
              .replaceAll("<", StringValue.Empty)
              .replaceAll(">", StringValue.Empty)
              .split(StringValue.Comma);
          // convert to java.lang.Object if self class is included
          for (String generic : generics) {
            generic = typeNameConverter.toCompilableType(generic,
                classMeta.importedList,
                classMeta.packageName);
            argTypeMeta.generics.add(generic);
          }
        }
        String argTypeName = argTypeFull
            .replaceAll(RegExp.Generics, StringValue.Empty)
            .replaceAll("final ", StringValue.Empty)
            .split("\\s+")[0]
            .trim();
        if (argTypeName != null && !argTypeName.equals("")) {
          argTypeMeta.name = typeNameConverter.toCompilableType(
              argTypeName,
              argTypeMeta.generics,
              classMeta.importedList,
              classMeta.packageName);
          argTypeMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(argTypeMeta.name);
          meta.argTypes.add(argTypeMeta);
          Matcher nameMatcher = RegExp.PatternObject.MethodArg_Group.matcher(argTypeFull);
          if (nameMatcher.find()) {
            String argName = nameMatcher.group(1);
            if (argName.matches(".+\\[\\s*\\]")) {
              // ex. String strArr[] = null;
              String arrayPart = "";
              Matcher mat = Pattern.compile("\\[\\s*\\]").matcher(argName);
              while (mat.find()) {
                arrayPart += "[]";
              }
              argName = argName.replaceAll("\\[\\s*\\]", StringValue.Empty);
              argTypeMeta.name = argTypeMeta.name + arrayPart;
              argTypeMeta.nameInMethodName
                  = typeNameConverter.toAvailableInMethodName(argTypeMeta.name);
            }
            meta.argNames.add(argName);
          } else {
            meta.argNames.add("constructorArg" + i);
          }
View Full Code Here

  public void doExtract(String argsAreaString) {

    Assertion.mustNotBeNull(classMeta, "classMeta");

    TypeNameConverter typeNameConverter = new TypeNameConverter(config);
    // -----------------
    // args
    String[] argArr = ArgExtractorHelper.getArgListFromArgsDefAreaString(argsAreaString).toArray(new String[0]);
    int argArrLen = argArr.length;
    for (int i = 0; i < argArrLen; i++) {
      ArgTypeMeta argTypeMeta = new ArgTypeMeta();
      String argTypeFull = argArr[i];
      // -----------------
      // generics of arg
      Matcher toGenericsMatcherForArg = Pattern.compile(RegExp.Generics_Group).matcher(argTypeFull);
      while (toGenericsMatcherForArg.find()) {
        String[] generics = toGenericsMatcherForArg.group().replaceAll("<", StringValue.Empty)
            .replaceAll(">", StringValue.Empty).split(StringValue.Comma);
        // convert to java.lang.Object if self class is included
        for (String generic : generics) {
          generic = typeNameConverter
              .toCompilableType(generic, classMeta.importedList, classMeta.packageName);
          argTypeMeta.generics.add(generic);
        }
      }
      // -----------------
      // arg type
      String argTypeName = argTypeFull.replaceAll("final ", StringValue.Empty)
          .replaceAll(RegExp.Generics, StringValue.Empty).split("\\s+")[0].trim();
      if (argTypeName != null && !"".equals(argTypeName)) {
        argTypeMeta.name = typeNameConverter.toCompilableType(argTypeName, argTypeMeta.generics,
            classMeta.importedList, classMeta.packageName);
        argTypeMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(argTypeMeta.name);
        extractedMetaList.add(argTypeMeta);
      }
      // -----------------
      // arg name string
      Matcher argNameMatcher = RegExp.PatternObject.MethodArg_Group.matcher(argTypeFull);
      if (argNameMatcher.find()) {
        String argName = argNameMatcher.group(1);
        if (argName.matches(".+\\[\\s*\\]")) {
          // ex. String strArr[] = null;
          String arrayPart = "";
          Matcher mat = Pattern.compile("\\[\\s*\\]").matcher(argName);
          while (mat.find()) {
            arrayPart += "[]";
          }
          argName = argName.replaceAll("\\[\\s*\\]", StringValue.Empty);
          argTypeMeta.name = argTypeMeta.name + arrayPart;
          argTypeMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(argTypeMeta.name);
        }
        extractedNameList.add(argName);
      } else if (extractedMetaList.size() > 0) {
        extractedNameList.add("arg" + i);
      }
View Full Code Here

  public void doExtract(String argsAreaString) {

    Assertion.on("classMeta").mustNotBeNull(classMeta);

    TypeNameConverter typeNameConverter = new TypeNameConverter(config);
    // -----------------
    // args
    String[] argArr = ArgExtractorHelper.getArgListFromArgsDefAreaString(argsAreaString).toArray(new String[0]);
    int argArrLen = argArr.length;
    for (int i = 0; i < argArrLen; i++) {
      ArgTypeMeta argTypeMeta = new ArgTypeMeta();
      String argTypeFull = argArr[i];
      // -----------------
      // generics of arg
      Matcher toGenericsMatcherForArg = Pattern.compile(RegExp.Generics_Group).matcher(argTypeFull);
      while (toGenericsMatcherForArg.find()) {
        String[] generics = toGenericsMatcherForArg.group().replaceAll("<", StringValue.Empty)
            .replaceAll(">", StringValue.Empty).split(StringValue.Comma);
        // convert to java.lang.Object if self class is included
        for (String generic : generics) {
          generic = typeNameConverter
              .toCompilableType(generic, classMeta.importedList, classMeta.packageName);
          argTypeMeta.generics.add(generic);
        }
      }
      // -----------------
      // arg type
      String argTypeName = argTypeFull.replaceAll("final ", StringValue.Empty)
          .replaceAll(RegExp.Generics, StringValue.Empty).split("\\s+")[0].trim();
      if (argTypeName != null && !"".equals(argTypeName)) {
        argTypeMeta.name = typeNameConverter.toCompilableType(argTypeName, argTypeMeta.generics,
            classMeta.importedList, classMeta.packageName);
        argTypeMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(argTypeMeta.name);
        extractedMetaList.add(argTypeMeta);
      }
      // -----------------
      // arg name string
      Matcher argNameMatcher = RegExp.PatternObject.MethodArg_Group.matcher(argTypeFull);
      if (argNameMatcher.find()) {
        String argName = argNameMatcher.group(1);
        if (argName.matches(".+\\[\\s*\\]")) {
          // ex. String strArr[] = null;
          String arrayPart = "";
          Matcher mat = Pattern.compile("\\[\\s*\\]").matcher(argName);
          while (mat.find()) {
            arrayPart += "[]";
          }
          argName = argName.replaceAll("\\[\\s*\\]", StringValue.Empty);
          argTypeMeta.name = argTypeMeta.name + arrayPart;
          argTypeMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(argTypeMeta.name);
        }
        extractedNameList.add(argName);
      } else if (extractedMetaList.size() > 0) {
        extractedNameList.add("arg" + i);
      }
View Full Code Here

    Assertion.mustNotBeNull(sourceCodeString, "sourceCodeString");

    List<MethodMeta> dest = new ArrayList<MethodMeta>();

    TypeNameConverter typeNameConverter = new TypeNameConverter(config);

    sourceCodeString = TrimFilterUtil.doAllFilters(sourceCodeString);

    // -----------------
    // for method signature
    Matcher mat = RegExp.PatternObject.MethodSignatureArea.matcher(sourceCodeString);
    while (mat.find()) {
      MethodMeta meta = new MethodMeta();
      String methodSignatureArea = mat.group(0).replaceAll(StringValue.CarriageReturn, StringValue.Empty)
          .replaceAll(StringValue.LineFeed, StringValue.Space);

      // -----------------
      // skip constructors
      if (methodSignatureArea.matches(RegExp.Anything_ZeroOrMore_Min
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max + classMeta.name + "\\("
          + RegExp.Anything_ZeroOrMore_Min + "\\)" + RegExp.Anything_ZeroOrMore_Min)) {
        continue;
      }

      // -----------------
      // skip not method signature
      String trimmedMethodSignatureArea = methodSignatureArea.replaceAll("\\s*,\\s*", ",")
          .replaceAll("\\s*<\\s*", "<").replaceAll("\\s*>", ">");
      String methodSignatureAreaWithoutAccessModifier = trimAccessModifierFromMethodSignatureArea(trimmedMethodSignatureArea);
      Matcher matcherGrouping = RegExp.PatternObject.MethodSignatureWithoutAccessModifier_Group
          .matcher(StringValue.Space + methodSignatureAreaWithoutAccessModifier);
      if (!matcherGrouping.find()) {
        continue;
      }

      // -----------------
      // is static method
      if (methodSignatureArea.matches(RegExp.Anything_ZeroOrMore_Min
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max + "static"
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max + RegExp.Anything_ZeroOrMore_Min)) {
        meta.isStatic = true;
      }
      // -----------------
      // access modifier
      meta.accessModifier = getAccessModifier(methodSignatureArea);

      // -----------------
      // return type
      String grouped = matcherGrouping.group(1);
      String returnTypeFull = grouped.replaceAll("final ", StringValue.Empty).split("\\s+")[0].trim();
      // generics

      // remove generics if nested
      returnTypeFull = trimGenericsIfNested(returnTypeFull);
      Matcher toGenericsMatcherForReturn = Pattern.compile(RegExp.Generics_Group).matcher(returnTypeFull);
      while (toGenericsMatcherForReturn.find()) {
        String[] generics = toGenericsMatcherForReturn.group().replaceAll("<", StringValue.Empty)
            .replaceAll(">", StringValue.Empty).split(StringValue.Comma);
        for (String generic : generics) {
          generic = typeNameConverter
              .toCompilableType(generic, classMeta.importedList, classMeta.packageName).trim();
          meta.returnType.generics.add(generic);
        }
      }
      String returnTypeName = returnTypeFull.replace(RegExp.Generics, StringValue.Empty);
      if (!returnTypeName.equals("void")) {
        meta.returnType.name = typeNameConverter.toCompilableType(returnTypeName, meta.returnType.generics,
            classMeta.importedList, classMeta.packageName).trim();
        meta.returnType.nameInMethodName = typeNameConverter.toAvailableInMethodName(meta.returnType.name);
      }
      // -----------------
      // method name
      meta.name = matcherGrouping.group(2);
      // -----------------
      // args
      String argsAreaString = matcherGrouping.group(3);
      ArgTypeMetaExtractor argTypeMetaExtractor = new ArgTypeMetaExtractor(config);
      argTypeMetaExtractor.initialize(classMeta).doExtract(argsAreaString);
      meta.argNames = argTypeMetaExtractor.getExtractedNameList();
      meta.argTypes = argTypeMetaExtractor.getExtractedMetaList();
      // -----------------
      // is accessor method or not
      String fieldName = null;
      String fieldType = null;
      if (meta.name.matches("^set.+")) {
        // target field name
        fieldName = meta.name.substring(3);
        if (meta.argTypes.size() > 0) {
          fieldType = meta.argTypes.get(0).name;
        }
      } else if (meta.name.matches("^get.+")) {
        // target field name
        fieldName = meta.name.substring(3);
        fieldType = meta.returnType.name;
      } else if (meta.name.matches("^is.+")) {
        // target field name
        fieldName = meta.name.substring(2);
        fieldType = meta.returnType.name;
      }
      if (fieldName != null && fieldType != null) {
        meta.isAccessor = isPrivateFieldExists(fieldType, fieldName, sourceCodeString);
      }
      // -----------------
      // throws exception
      String throwsExceptions = matcherGrouping.group(4);
      if (throwsExceptions != null) {
        String[] exceptions = throwsExceptions.replaceAll(
            "throws" + RegExp.WhiteSpace.Consecutive_OneOrMore_Max, StringValue.Empty).split(
            StringValue.Comma);
        for (String exception : exceptions) {
          exception = exception.trim();
          ExceptionMeta exceptionMeta = new ExceptionMeta();
          exceptionMeta.name = exception;
          exceptionMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(exception);
          meta.throwsExceptions.add(exceptionMeta);
        }
      }
      dest.add(meta);
    }
View Full Code Here

    Assertion.on("sourceCodeString").mustNotBeNull(sourceCodeString);

    List<MethodMeta> dest = new ArrayList<MethodMeta>();

    TypeNameConverter typeNameConverter = new TypeNameConverter(config);

    sourceCodeString = TrimFilterUtil.doAllFilters(sourceCodeString);

    // -----------------
    // for method signature
    Matcher mat = RegExp.PatternObject.MethodSignatureArea.matcher(sourceCodeString);
    while (mat.find()) {
      MethodMeta meta = new MethodMeta();
      String methodSignatureArea = mat.group(0).replaceAll(StringValue.CarriageReturn, StringValue.Empty)
          .replaceAll(StringValue.LineFeed, StringValue.Space);

      // -----------------
      // skip constructors
      if (methodSignatureArea.matches(RegExp.Anything_ZeroOrMore_Min
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max + classMeta.name + "\\("
          + RegExp.Anything_ZeroOrMore_Min + "\\)" + RegExp.Anything_ZeroOrMore_Min)) {
        continue;
      }

      // -----------------
      // skip not method signature
      String trimmedMethodSignatureArea = methodSignatureArea.replaceAll("\\s*,\\s*", ",")
          .replaceAll("\\s*<\\s*", "<").replaceAll("\\s*>", ">");
      String methodSignatureAreaWithoutAccessModifier = trimAccessModifierFromMethodSignatureArea(trimmedMethodSignatureArea);
      Matcher matcherGrouping = RegExp.PatternObject.MethodSignatureWithoutAccessModifier_Group
          .matcher(StringValue.Space + methodSignatureAreaWithoutAccessModifier);
      if (!matcherGrouping.find()) {
        continue;
      }

      // -----------------
      // is static method
      if (methodSignatureArea.matches(RegExp.Anything_ZeroOrMore_Min
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max + "static"
          + RegExp.WhiteSpace.Consecutive_OneOrMore_Max + RegExp.Anything_ZeroOrMore_Min)) {
        meta.isStatic = true;
      }
      // -----------------
      // access modifier
      meta.accessModifier = getAccessModifier(methodSignatureArea);

      // -----------------
      // return type
      String grouped = matcherGrouping.group(1);
      String returnTypeFull = grouped.replaceAll("final ", StringValue.Empty).split("\\s+")[0].trim();
      // generics

      // remove generics if nested
      returnTypeFull = trimGenericsIfNested(returnTypeFull);
      Matcher toGenericsMatcherForReturn = Pattern.compile(RegExp.Generics_Group).matcher(returnTypeFull);
      while (toGenericsMatcherForReturn.find()) {
        String[] generics = toGenericsMatcherForReturn.group().replaceAll("<", StringValue.Empty)
            .replaceAll(">", StringValue.Empty).split(StringValue.Comma);
        for (String generic : generics) {
          generic = typeNameConverter
              .toCompilableType(generic, classMeta.importedList, classMeta.packageName).trim();
          meta.returnType.generics.add(generic);
        }
      }
      String returnTypeName = returnTypeFull.replace(RegExp.Generics, StringValue.Empty);
      if (!returnTypeName.equals("void")) {
        meta.returnType.name = typeNameConverter.toCompilableType(returnTypeName, meta.returnType.generics,
            classMeta.importedList, classMeta.packageName).trim();
        meta.returnType.nameInMethodName = typeNameConverter.toAvailableInMethodName(meta.returnType.name);
      }
      // -----------------
      // method name
      meta.name = matcherGrouping.group(2);
      // -----------------
      // args
      String argsAreaString = matcherGrouping.group(3);
      ArgTypeMetaExtractor argTypeMetaExtractor = new ArgTypeMetaExtractor(config);
      argTypeMetaExtractor.initialize(classMeta).doExtract(argsAreaString);
      meta.argNames = argTypeMetaExtractor.getExtractedNameList();
      meta.argTypes = argTypeMetaExtractor.getExtractedMetaList();
      // -----------------
      // is accessor method or not
      String fieldName = null;
      String fieldType = null;
      if (meta.name.matches("^set.+")) {
        // target field name
        fieldName = meta.name.substring(3);
        if (meta.argTypes.size() > 0) {
          fieldType = meta.argTypes.get(0).name;
        }
      } else if (meta.name.matches("^get.+")) {
        // target field name
        fieldName = meta.name.substring(3);
        fieldType = meta.returnType.name;
      } else if (meta.name.matches("^is.+")) {
        // target field name
        fieldName = meta.name.substring(2);
        fieldType = meta.returnType.name;
      }
      if (fieldName != null && fieldType != null) {
        meta.isAccessor = isPrivateFieldExists(fieldType, fieldName, sourceCodeString);
      }
      // -----------------
      // throws exception
      String throwsExceptions = matcherGrouping.group(4);
      if (throwsExceptions != null) {
        String[] exceptions = throwsExceptions.replaceAll(
            "throws" + RegExp.WhiteSpace.Consecutive_OneOrMore_Max, StringValue.Empty).split(
            StringValue.Comma);
        for (String exception : exceptions) {
          exception = exception.trim();
          ExceptionMeta exceptionMeta = new ExceptionMeta();
          exceptionMeta.name = exception;
          exceptionMeta.nameInMethodName = typeNameConverter.toAvailableInMethodName(exception);
          meta.throwsExceptions.add(exceptionMeta);
        }
      }
      dest.add(meta);
    }
View Full Code Here

TOP

Related Classes of org.junithelper.core.parser.convert.TypeNameConverter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.