Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove Class Name Prefix from Nested Classes #1980

Merged
merged 22 commits into from
Dec 1, 2022
Merged
Changes from 2 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
4292b85
remove parent name prefix from inner classes
ramsessanchez Nov 15, 2022
d6b645c
Config/query class refrences match new name
ramsessanchez Nov 17, 2022
a000107
- removes add inner classes that noops with default settings
baywet Nov 17, 2022
de0d1bf
- moves add inner class unit test to Go
baywet Nov 17, 2022
6ed9b49
Update src/Kiota.Builder/Refiners/JavaRefiner.cs
ramsessanchez Nov 17, 2022
159ff0b
Apply suggestions from code review
ramsessanchez Nov 17, 2022
89a5022
change the way we set httpMethod
ramsessanchez Nov 18, 2022
82f5146
refactor put statements
ramsessanchez Nov 18, 2022
ea8de1a
missing semicolon
ramsessanchez Nov 18, 2022
12eed73
remove more anonymous methods and comments
ramsessanchez Nov 19, 2022
a5e18ab
semicolon
ramsessanchez Nov 19, 2022
8a70a84
test update
ramsessanchez Nov 21, 2022
1f7dd26
remove equals sign
ramsessanchez Nov 21, 2022
59d91be
Merge pull request #1982 from microsoft/java/requestInfoInstantiation…
ramsessanchez Nov 21, 2022
f4582f2
consolidate loops
ramsessanchez Nov 21, 2022
4c38061
Update src/Kiota.Builder/Writers/Java/CodeMethodWriter.cs
ramsessanchez Nov 22, 2022
cad9de4
Update src/Kiota.Builder/Writers/Java/CodeMethodWriter.cs
ramsessanchez Nov 22, 2022
be57a57
Update CHANGELOG.md
ramsessanchez Nov 22, 2022
578563f
Merge branch 'main' into removeParentNamePrefix-Java
ramsessanchez Nov 22, 2022
122784e
Merge branch 'main' into removeParentNamePrefix-Java
baywet Nov 29, 2022
241e1e7
Merge branch 'main' into removeParentNamePrefix-Java
baywet Nov 30, 2022
2041c3c
- fixes unit test for java executor method
baywet Nov 30, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 66 additions & 2 deletions src/Kiota.Builder/Refiners/JavaRefiner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public override Task Refine(CodeNamespace generatedCode, CancellationToken cance
cancellationToken.ThrowIfCancellationRequested();
LowerCaseNamespaceNames(generatedCode);
AddInnerClasses(generatedCode, false, string.Empty);
RemoveClassNamePrefixFromNestedClasses(generatedCode);
InsertOverrideMethodForRequestExecutorsAndBuildersAndConstructors(generatedCode);
ReplaceIndexersByMethodsWithParameter(generatedCode, generatedCode, true);
cancellationToken.ThrowIfCancellationRequested();
Expand Down Expand Up @@ -298,9 +299,72 @@ private void InsertOverrideMethodForRequestExecutorsAndBuildersAndConstructors(C

CrawlTree(currentElement, InsertOverrideMethodForRequestExecutorsAndBuildersAndConstructors);
}
private static void RemoveClassNamePrefixFromNestedClasses(CodeElement currentElement) {
if(currentElement is CodeClass currentClass) {
var prefix = currentClass.Name;
var innerClasses = currentClass
.Methods
.SelectMany(static x => x.Parameters)
.Where(static x => x.Type.ActionOf && x.IsOfKind(CodeParameterKind.RequestConfiguration))
.SelectMany(static x => x.Type.AllTypes)
.Select(static x => x.TypeDefinition)
.OfType<CodeClass>();

// ensure we do not miss out the types present in request configuration objects i.e. the query parameters
var nestedQueryParameters = innerClasses
.SelectMany(static x => x.Properties)
.Where(static x => x.IsOfKind(CodePropertyKind.QueryParameters))
.SelectMany(static x => x.Type.AllTypes)
.Select(static x => x.TypeDefinition)
.OfType<CodeClass>();

var nestedClasses = new List<CodeClass>();
nestedClasses.AddRange(innerClasses);
nestedClasses.AddRange(nestedQueryParameters);

foreach(var innerClass in nestedClasses) {
if(innerClass.Name.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
innerClass.Name = innerClass.Name[prefix.Length..];

if(innerClass.IsOfKind(CodeClassKind.RequestConfiguration))
RemovePrefixFromQueryProperties(innerClass, prefix);
}
RemovePrefixFromRequestConfigParameters(currentClass, prefix);
}
CrawlTree(currentElement, x => RemoveClassNamePrefixFromNestedClasses(x));
}
private static void RemovePrefixFromQueryProperties(CodeElement currentElement, String prefix) {
if(currentElement is CodeClass currentClass) {
var queryProperty = currentClass
.Properties
.Where(static x=> x.IsOfKind(CodePropertyKind.QueryParameters))
.Select(static x => x.Type)
.OfType<CodeTypeBase>();

// Namespaces in Java by convention are all lower case, like:
// com.microsoft.kiota.serialization
foreach(var property in queryProperty) {
if(property.Name.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
property.Name = property.Name[prefix.Length..];
}
}
}
private static void RemovePrefixFromRequestConfigParameters(CodeElement currentElement, String prefix) {
if(currentElement is CodeClass currentClass) {
var parameters = currentClass
.Methods
.SelectMany(static x => x.Parameters)
.Where(static x => x.Type.ActionOf && x.IsOfKind(CodeParameterKind.RequestConfiguration))
.Select(static x=> x.Type)
.OfType<CodeTypeBase>();

var paramList = new List<CodeTypeBase>();
paramList.AddRange(parameters);

foreach(var parameter in paramList ) {
if(parameter.Name.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
parameter.Name = parameter.Name[prefix.Length..];
}
}
}
private static void LowerCaseNamespaceNames(CodeElement currentElement) {
if (currentElement is CodeNamespace codeNamespace)
{
Expand Down