public ConstructorCustomization getConstructor()

in customization-base/src/main/java/com/azure/autorest/customization/ClassCustomization.java [198:241]


    public ConstructorCustomization getConstructor(String constructorNameOrSignature) {
        String constructorName;
        String constructorSignature = null;
        if (constructorNameOrSignature.contains("(")) {
            // method signature
            constructorSignature = BLOCK_OPEN.matcher(constructorNameOrSignature).replaceFirst("");
            constructorSignature = PUBLIC_MODIFIER.matcher(constructorSignature).replaceFirst("");
            constructorSignature = PRIVATE_MODIFIER.matcher(constructorSignature).replaceFirst("");
            String returnTypeAndMethodName = constructorNameOrSignature.split("\\(")[0];
            if (returnTypeAndMethodName.contains(" ")) {
                constructorName = Utils.ANYTHING_THEN_SPACE_PATTERN.matcher(returnTypeAndMethodName).replaceAll("");
            } else {
                constructorName = returnTypeAndMethodName;
            }
        } else {
            constructorName = constructorNameOrSignature;
        }

        List<SymbolInformation> constructorSymbol = languageClient.listDocumentSymbols(fileUri)
            .stream().filter(si -> si.getKind() == SymbolKind.Constructor
                && MEMBER_PARAMS.matcher(si.getName()).replaceFirst("").equals(constructorName))
            .filter(si -> editor.getFileLine(fileName, si.getLocation().getRange().getStart().getLine())
                .contains(constructorNameOrSignature))
            .collect(Collectors.toList());

        if (constructorSymbol.size() > 1) {
            throw new IllegalStateException("Multiple instances of " + constructorNameOrSignature + " exist in the "
                + "class. Use a more specific constructor signature.");
        }

        if (constructorSymbol.isEmpty()) {
            throw new IllegalArgumentException("Constructor " + constructorNameOrSignature + " does not exist in class "
                + className);
        }

        if (constructorSignature == null) {
            constructorSignature = editor.getFileLine(fileName, constructorSymbol.get(0).getLocation().getRange().getStart().getLine());
            constructorSignature = BLOCK_OPEN.matcher(constructorSignature).replaceFirst("");
            constructorSignature = PUBLIC_MODIFIER.matcher(constructorSignature).replaceFirst("");
            constructorSignature = PRIVATE_MODIFIER.matcher(constructorSignature).replaceFirst("");
        }
        return new ConstructorCustomization(editor, languageClient, packageName, className, constructorSignature,
            constructorSymbol.get(0));
    }