Skip to content

Commit 1aac6c3

Browse files
committed
cross namespace interface names in indexers and fix in IEntityClient
1 parent 582ba36 commit 1aac6c3

9 files changed

+36
-21
lines changed

Templates/CSharp/Base/CollectionRequestBuilder.Base.template.tt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,16 +139,16 @@ public string GetCollectionIndexRequestBuilder(OdcmProperty odcmProperty)
139139

140140
stringBuilder.Append("/// <summary>");
141141
stringBuilder.Append(Environment.NewLine);
142-
stringBuilder.AppendFormat(" /// Gets an <see cref=\"I{0}\"/> for the specified {1}.", entityRequestBuilder, propTypeName);
142+
stringBuilder.AppendFormat(" /// Gets an <see cref=\"{0}\"/> for the specified {1}.", entityRequestBuilder.ClassToInterface(), propTypeName);
143143
stringBuilder.Append(Environment.NewLine);
144144
stringBuilder.Append(" /// </summary>");
145145
stringBuilder.Append(Environment.NewLine);
146146
stringBuilder.AppendFormat(" /// <param name=\"id\">The ID for the {0}.</param>", propTypeName);
147147
stringBuilder.Append(Environment.NewLine);
148-
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"I{0}\"/>.</returns>", entityRequestBuilder);
148+
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"{0}\"/>.</returns>", entityRequestBuilder.ClassToInterface());
149149
stringBuilder.Append(renameItem);
150150
stringBuilder.Append(Environment.NewLine);
151-
stringBuilder.AppendFormat(" public I{0} this[string id]", entityRequestBuilder);
151+
stringBuilder.AppendFormat(" public {0} this[string id]", entityRequestBuilder.ClassToInterface());
152152
stringBuilder.Append(Environment.NewLine);
153153
stringBuilder.Append(
154154
@" {

Templates/CSharp/Base/EntityRequestBuilder.Base.template.tt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ public string GetEntityReferenceRequestBuilderProperty(OdcmClass odcmClass)
6161
stringBuilder.Append(Environment.NewLine);
6262
stringBuilder.Append(" /// </summary>");
6363
stringBuilder.Append(Environment.NewLine);
64-
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"I{0}\"/>.</returns>", requestBuilderTypeName);
64+
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"{0}\"/>.</returns>", requestBuilderTypeName.ClassToInterface());
6565
stringBuilder.Append(Environment.NewLine);
66-
stringBuilder.AppendFormat(" public I{0} Reference", requestBuilderTypeName);
66+
stringBuilder.AppendFormat(" public {0} Reference", requestBuilderTypeName.ClassToInterface());
6767
stringBuilder.Append(Environment.NewLine);
6868
stringBuilder.Append(
6969
@" {
@@ -122,9 +122,9 @@ public string GetRequestBuilderProperty(string propertyName, string urlValue, st
122122
stringBuilder.Append(Environment.NewLine);
123123
stringBuilder.Append(" /// </summary>");
124124
stringBuilder.Append(Environment.NewLine);
125-
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"I{0}\"/>.</returns>", requestBuilderTypeName);
125+
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"{0}\"/>.</returns>", requestBuilderTypeName.ClassToInterface());
126126
stringBuilder.Append(Environment.NewLine);
127-
stringBuilder.AppendFormat(" public I{0} {1}", requestBuilderTypeName, propertyName);
127+
stringBuilder.AppendFormat(" public {0} {1}", requestBuilderTypeName.ClassToInterface(), propertyName);
128128
stringBuilder.Append(Environment.NewLine);
129129
stringBuilder.Append(
130130
@" {

Templates/CSharp/Base/ICollectionRequestBuilder.Base.template.tt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,20 +90,20 @@ public string GetIndexRequestBuilder(string propertyName, string requestBuilderT
9090

9191
stringBuilder.Append("/// <summary>");
9292
stringBuilder.Append(Environment.NewLine);
93-
stringBuilder.AppendFormat(" /// Gets an <see cref=\"I{0}\"/> for the specified {1}.", requestBuilderTypeName, propertyName);
93+
stringBuilder.AppendFormat(" /// Gets an <see cref=\"{0}\"/> for the specified {1}.", requestBuilderTypeName.ClassToInterface(), propertyName);
9494
stringBuilder.Append(Environment.NewLine);
9595
stringBuilder.Append(" /// </summary>");
9696
stringBuilder.Append(Environment.NewLine);
9797
stringBuilder.AppendFormat(" /// <param name=\"id\">The ID for the {0}.</param>", propertyName);
9898
stringBuilder.Append(Environment.NewLine);
99-
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"I{0}\"/>.</returns>", requestBuilderTypeName);
99+
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"{0}\"/>.</returns>", requestBuilderTypeName.ClassToInterface());
100100
stringBuilder.Append(Environment.NewLine);
101101
if (hasItemMethod)
102102
{
103103
stringBuilder.AppendFormat(" [System.Runtime.CompilerServices.IndexerName(\"ThisItem\")]"); // Special case for methods named Item.
104104
stringBuilder.Append(Environment.NewLine);
105105
}
106-
stringBuilder.AppendFormat(" I{0} this[string id] {{ get; }}", requestBuilderTypeName);
106+
stringBuilder.AppendFormat(" {0} this[string id] {{ get; }}", requestBuilderTypeName.ClassToInterface());
107107

108108
return stringBuilder.ToString();
109109
}

Templates/CSharp/Base/IEntityRequestBuilder.Base.template.tt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,9 @@ public string GetRequestBuilderProperty(string propertyName, string requestBuild
9191
stringBuilder.Append(Environment.NewLine);
9292
stringBuilder.Append(" /// </summary>");
9393
stringBuilder.Append(Environment.NewLine);
94-
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"I{0}\"/>.</returns>", requestBuilderTypeName);
94+
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"{0}\"/>.</returns>", requestBuilderTypeName.ClassToInterface());
9595
stringBuilder.Append(Environment.NewLine);
96-
stringBuilder.AppendFormat(" I{0} {1} {{ get; }}", requestBuilderTypeName, propertyName);
96+
stringBuilder.AppendFormat(" {0} {1} {{ get; }}", requestBuilderTypeName.ClassToInterface(), propertyName);
9797
return stringBuilder.ToString();
9898
}
9999

Templates/CSharp/Base/IRequestBuilder.Base.template.tt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public string GetMethodProperties(OdcmClass entity, bool isCollection)
117117
foreach (var param in requiredParameters)
118118
{
119119
var paramVariableName = param.Name.GetSanitizedParameterName();
120-
var paramTypeString = param.Type.GetTypeString();
120+
var paramTypeString = param.Type.GetTypeString(entity.GetNamespaceName());
121121

122122
// Adds support for classes ending in "Request" that have been dismabiguated.
123123
if (paramTypeString.EndsWith("Request"))
@@ -195,9 +195,9 @@ public string GetMethodRequestBuilderMethod(
195195
stringBuilder.Append(Environment.NewLine);
196196
stringBuilder.Append(" /// </summary>");
197197
stringBuilder.Append(Environment.NewLine);
198-
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"I{0}\"/>.</returns>", requestBuilderTypeName);
198+
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"{0}\"/>.</returns>", requestBuilderTypeName.ClassToInterface());
199199
stringBuilder.Append(Environment.NewLine);
200-
stringBuilder.AppendFormat(" I{0} {1}({2});", requestBuilderTypeName, methodName, methodParamaterString);
200+
stringBuilder.AppendFormat(" {0} {1}({2});", requestBuilderTypeName.ClassToInterface(), methodName, methodParamaterString);
201201
return stringBuilder.ToString();
202202
}
203203
#>

Templates/CSharp/Base/RequestBuilder.Base.template.tt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ public string GetMethodProperties(OdcmClass entity, bool isCollection)
169169
foreach (var param in requiredParameters)
170170
{
171171
var paramVariableName = param.Name.GetSanitizedParameterName();
172-
var paramTypeString = param.Type.GetTypeString();
172+
var paramTypeString = param.Type.GetTypeString(entity.GetNamespaceName());
173173

174174
// Adds support for classes ending in "Request" that have been dismabiguated.
175175
if (paramTypeString.EndsWith("Request"))
@@ -260,9 +260,9 @@ public string GetMethodRequestBuilderMethod(
260260
stringBuilder.Append(Environment.NewLine);
261261
stringBuilder.Append(" /// </summary>");
262262
stringBuilder.Append(Environment.NewLine);
263-
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"I{0}\"/>.</returns>", requestBuilderTypeName);
263+
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"{0}\"/>.</returns>", requestBuilderTypeName.ClassToInterface());
264264
stringBuilder.Append(Environment.NewLine);
265-
stringBuilder.AppendFormat(" public I{0} {1}({2})", requestBuilderTypeName, methodName, methodParamaterString);
265+
stringBuilder.AppendFormat(" public {0} {1}({2})", requestBuilderTypeName.ClassToInterface(), methodName, methodParamaterString);
266266
stringBuilder.Append(Environment.NewLine);
267267
stringBuilder.Append(
268268
@" {

Templates/CSharp/Base/SharedCSharp.template.tt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ public string GetPropertyWithReferencesName(OdcmProperty odcmProperty)
191191

192192
public string GetPropertyTypeName(OdcmProperty odcmProperty)
193193
{
194-
return odcmProperty.Projection.Type.Name.ToCheckedCase();
194+
return odcmProperty.GetTypeString(odcmProperty.GetClassNamespace());
195195
}
196196

197197
public string GetPropertyTypeName(OdcmProperty odcmProperty, string namespaceContext)

Templates/CSharp/Requests/IEntityClient.cs.tt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ namespace <#=@namespace#>
3535
else
3636
{
3737

38-
var propType = prop.Projection.Type.Name.ToCheckedCase();
38+
var iRequestBuilder = prop.GetTypeString(@namespace, "I{0}RequestBuilder");
3939
#>
4040

4141
/// <summary>
4242
/// Gets the <#=propName#> request builder.
4343
/// </summary>
44-
I<#=propType#>RequestBuilder <#=sanitizedPropName#> { get; }
44+
<#=iRequestBuilder#>> <#=sanitizedPropName#> { get; }
4545
<#
4646
}
4747
}

src/GraphODataTemplateWriter/CodeHelpers/CSharp/TypeHelperCSharp.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Microsoft.Graph.ODataTemplateWriter.CodeHelpers.CSharp
44
{
55
using System;
6+
using System.Text;
67
using System.Collections.Generic;
78
using Microsoft.Graph.ODataTemplateWriter.Extensions;
89
using Vipr.Core.CodeModel;
@@ -192,6 +193,20 @@ public static bool IsTypeNullable(this OdcmProperty property)
192193
return property.Projection.Type.IsTypeNullable();
193194
}
194195

196+
// converts from Microsoft.Graph.CallRecords.Class to Microsoft.Graph.CallRecords.IClass
197+
public static string ClassToInterface(this string @class)
198+
{
199+
var split = @class.Split('.');
200+
var interfaceStringBuilder = new StringBuilder();
201+
for (int i = 0; i < split.Length - 1; i++)
202+
{
203+
interfaceStringBuilder.Append($"{split[i]}.");
204+
}
205+
206+
interfaceStringBuilder.Append($"I{split[split.Length - 1]}");
207+
return interfaceStringBuilder.ToString();
208+
}
209+
195210
public static string GetClassNamespace(this OdcmProperty property)
196211
{
197212
return property.Class.AsOdcmClass().GetNamespaceName();

0 commit comments

Comments
 (0)