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));
}