Skip to content

Commit 4288147

Browse files
committed
Added support for Odata actions bound to entitiy collections, refactored GetMethodProperties
1 parent 138be79 commit 4288147

8 files changed

+249
-239
lines changed

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

Lines changed: 0 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -162,40 +162,6 @@ public string GetNonCollectionRequestBuilderProperty(OdcmProperty odcmProperty)
162162
return this.GetRequestBuilderProperty(propertyName, propertyRequestBuilder);
163163
}
164164

165-
166-
// -------------------------------------------------------------
167-
// Methods to create an OData method property definition within an entity class
168-
// -------------------------------------------------------------
169-
public string GetMethodRequestBuilderMethod(
170-
string methodName,
171-
string requestBuilderBaseString,
172-
string methodParamaterString,
173-
string requestBuilderInitializerString)
174-
{
175-
var requestBuilderTypeName = this.GetRequestBuilderString(requestBuilderBaseString);
176-
var stringBuilder = new StringBuilder();
177-
178-
stringBuilder.Append("/// <summary>");
179-
stringBuilder.Append(Environment.NewLine);
180-
stringBuilder.AppendFormat(" /// Gets the request builder for {0}.", requestBuilderBaseString);
181-
stringBuilder.Append(Environment.NewLine);
182-
stringBuilder.Append(" /// </summary>");
183-
stringBuilder.Append(Environment.NewLine);
184-
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"I{0}\"/>.</returns>", requestBuilderTypeName);
185-
stringBuilder.Append(Environment.NewLine);
186-
stringBuilder.AppendFormat(" public I{0} {1}({2})", requestBuilderTypeName, methodName, methodParamaterString);
187-
stringBuilder.Append(Environment.NewLine);
188-
stringBuilder.Append(
189-
@" {
190-
");
191-
stringBuilder.AppendFormat(" return new {0}({1});", requestBuilderTypeName, requestBuilderInitializerString);
192-
stringBuilder.Append(
193-
@"
194-
}");
195-
196-
return stringBuilder.ToString();
197-
}
198-
199165
// Creates the set of property definitions for navigation properties on the entity
200166
public string GetNavigationProperties(OdcmClass entity)
201167
{
@@ -261,103 +227,4 @@ public string GetStreamProperties(OdcmClass entity)
261227

262228
return stringBuilder.ToString();
263229
}
264-
265-
// Creates the set of property definitions for OData method properties on the entity
266-
public string GetMethodProperties(OdcmClass entity)
267-
{
268-
var allMethods = new List<OdcmMethod>();
269-
foreach (var method in entity.Methods)
270-
{
271-
allMethods.Add(method);
272-
allMethods.AddRange(method.Overloads);
273-
}
274-
275-
var methodPropertiesStringBuilder = new StringBuilder();
276-
foreach(var method in allMethods)
277-
{
278-
var methodName = this.GetMethodName(method);
279-
var baseName = string.Concat(this.GetEntityNameString(method.Class), methodName);
280-
281-
var paramStringBuilder = new System.Text.StringBuilder();
282-
var builderInitializerStringBuilder = new StringBuilder();
283-
284-
builderInitializerStringBuilder.Append(Environment.NewLine);
285-
builderInitializerStringBuilder.Append(" ");
286-
builderInitializerStringBuilder.AppendFormat("this.AppendSegmentToRequestUrl(\"{0}.{1}\"),", method.Namespace.Name, method.Name);
287-
builderInitializerStringBuilder.Append(Environment.NewLine);
288-
builderInitializerStringBuilder.Append(" ");
289-
builderInitializerStringBuilder.Append("this.Client,");
290-
291-
var hasParameters = method.Parameters != null && method.Parameters.Any();
292-
293-
if (hasParameters)
294-
{
295-
var requiredParameters = method.Parameters.Where(param => !param.IsNullable);
296-
var optionalParameters = method.Parameters.Where(param => param.IsNullable);
297-
298-
foreach (var param in requiredParameters)
299-
{
300-
var paramVariableName = param.Name.GetSanitizedParameterName();
301-
var paramTypeString = param.Type.GetTypeString();
302-
303-
if (param.IsCollection)
304-
{
305-
paramTypeString = string.Format("IEnumerable<{0}>", paramTypeString);
306-
}
307-
308-
paramStringBuilder.Append(Environment.NewLine);
309-
paramStringBuilder.Append(" ");
310-
paramStringBuilder.AppendFormat("{0} {1},", paramTypeString, paramVariableName);
311-
312-
builderInitializerStringBuilder.Append(Environment.NewLine);
313-
builderInitializerStringBuilder.Append(" ");
314-
builderInitializerStringBuilder.AppendFormat("{0},", paramVariableName);
315-
}
316-
317-
foreach (var param in optionalParameters)
318-
{
319-
var paramVariableName = param.Name.GetSanitizedParameterName();
320-
var paramTypeString = param.Type.GetTypeString();
321-
322-
if (param.IsCollection)
323-
{
324-
paramTypeString = string.Format("IEnumerable<{0}>", paramTypeString);
325-
}
326-
else if(!param.Type.IsTypeNullable())
327-
{
328-
paramTypeString = string.Format("{0}?", paramTypeString);
329-
}
330-
331-
paramStringBuilder.Append(Environment.NewLine);
332-
paramStringBuilder.Append(" ");
333-
paramStringBuilder.AppendFormat("{0} {1} = null,", paramTypeString, paramVariableName);
334-
335-
builderInitializerStringBuilder.Append(Environment.NewLine);
336-
builderInitializerStringBuilder.Append(" ");
337-
builderInitializerStringBuilder.AppendFormat("{0},", paramVariableName);
338-
}
339-
340-
paramStringBuilder.Remove(paramStringBuilder.Length - 1, 1);
341-
}
342-
343-
builderInitializerStringBuilder.Remove(builderInitializerStringBuilder.Length - 1, 1);
344-
345-
if (methodPropertiesStringBuilder.Length > 0)
346-
{
347-
methodPropertiesStringBuilder.Append(Environment.NewLine);
348-
methodPropertiesStringBuilder.Append(Environment.NewLine);
349-
methodPropertiesStringBuilder.Append(" ");
350-
}
351-
352-
methodPropertiesStringBuilder.Append(
353-
this.GetMethodRequestBuilderMethod(
354-
methodName,
355-
baseName,
356-
paramStringBuilder.ToString(),
357-
builderInitializerStringBuilder.ToString()));
358-
}
359-
360-
return methodPropertiesStringBuilder.ToString();
361-
}
362-
363230
#>

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

Lines changed: 0 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -119,30 +119,6 @@ public string GetNonCollectionRequestBuilderProperty(OdcmProperty odcmProperty)
119119
return this.GetRequestBuilderProperty(propertyName, propertyRequestBuilder);
120120
}
121121

122-
123-
// -------------------------------------------------------------
124-
// Methods to create an OData method property definition within an entity class
125-
// -------------------------------------------------------------
126-
public string GetMethodRequestBuilderMethod(
127-
string methodName,
128-
string requestBuilderBaseString,
129-
string methodParamaterString)
130-
{
131-
var requestBuilderTypeName = this.GetRequestBuilderString(requestBuilderBaseString);
132-
var stringBuilder = new StringBuilder();
133-
134-
stringBuilder.Append("/// <summary>");
135-
stringBuilder.Append(Environment.NewLine);
136-
stringBuilder.AppendFormat(" /// Gets the request builder for {0}.", requestBuilderBaseString);
137-
stringBuilder.Append(Environment.NewLine);
138-
stringBuilder.Append(" /// </summary>");
139-
stringBuilder.Append(Environment.NewLine);
140-
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"I{0}\"/>.</returns>", requestBuilderTypeName);
141-
stringBuilder.Append(Environment.NewLine);
142-
stringBuilder.AppendFormat(" I{0} {1}({2});", requestBuilderTypeName, methodName, methodParamaterString);
143-
return stringBuilder.ToString();
144-
}
145-
146122
// Creates the set of property definitions for navigation properties on the entity
147123
public string GetNavigationProperties(OdcmClass entity)
148124
{
@@ -208,84 +184,4 @@ public string GetStreamProperties(OdcmClass entity)
208184

209185
return stringBuilder.ToString();
210186
}
211-
212-
// Creates the set of property definitions for OData method properties on the entity
213-
public string GetMethodProperties(OdcmClass entity)
214-
{
215-
var allMethods = new List<OdcmMethod>();
216-
foreach (var method in entity.Methods)
217-
{
218-
allMethods.Add(method);
219-
allMethods.AddRange(method.Overloads);
220-
}
221-
222-
var methodPropertiesStringBuilder = new StringBuilder();
223-
foreach(var method in allMethods)
224-
{
225-
var methodName = this.GetMethodName(method);
226-
var baseName = string.Concat(this.GetEntityNameString(method.Class), methodName);
227-
228-
var paramStringBuilder = new System.Text.StringBuilder();
229-
230-
var hasParameters = method.Parameters != null && method.Parameters.Any();
231-
232-
if (hasParameters)
233-
{
234-
var requiredParameters = method.Parameters.Where(param => !param.IsNullable);
235-
var optionalParameters = method.Parameters.Where(param => param.IsNullable);
236-
237-
foreach (var param in requiredParameters)
238-
{
239-
var paramVariableName = param.Name.GetSanitizedParameterName();
240-
var paramTypeString = param.Type.GetTypeString();
241-
242-
if (param.IsCollection)
243-
{
244-
paramTypeString = string.Format("IEnumerable<{0}>", paramTypeString);
245-
}
246-
247-
paramStringBuilder.Append(Environment.NewLine);
248-
paramStringBuilder.Append(" ");
249-
paramStringBuilder.AppendFormat("{0} {1},", paramTypeString, paramVariableName);
250-
}
251-
252-
foreach (var param in optionalParameters)
253-
{
254-
var paramVariableName = param.Name.GetSanitizedParameterName();
255-
var paramTypeString = param.Type.GetTypeString();
256-
257-
if (param.IsCollection)
258-
{
259-
paramTypeString = string.Format("IEnumerable<{0}>", paramTypeString);
260-
}
261-
else if(!param.Type.IsTypeNullable())
262-
{
263-
paramTypeString = string.Format("{0}?", paramTypeString);
264-
}
265-
266-
paramStringBuilder.Append(Environment.NewLine);
267-
paramStringBuilder.Append(" ");
268-
paramStringBuilder.AppendFormat("{0} {1} = null,", paramTypeString, paramVariableName);
269-
}
270-
271-
paramStringBuilder.Remove(paramStringBuilder.Length - 1, 1);
272-
}
273-
274-
if (methodPropertiesStringBuilder.Length > 0)
275-
{
276-
methodPropertiesStringBuilder.Append(Environment.NewLine);
277-
methodPropertiesStringBuilder.Append(Environment.NewLine);
278-
methodPropertiesStringBuilder.Append(" ");
279-
}
280-
281-
methodPropertiesStringBuilder.Append(
282-
this.GetMethodRequestBuilderMethod(
283-
methodName,
284-
baseName,
285-
paramStringBuilder.ToString()));
286-
}
287-
288-
return methodPropertiesStringBuilder.ToString();
289-
}
290-
291187
#>

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

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,111 @@ public string GetRequestMethodWithOptions(string requestTypeName, bool includeNe
8181
return stringBuilder.ToString();
8282
}
8383

84+
85+
// Creates the set of property definitions for OData method properties on the entity
86+
public string GetMethodProperties(OdcmClass entity, bool isCollection)
87+
{
88+
var allMethods = new List<OdcmMethod>();
89+
foreach (var method in entity.Methods)
90+
{
91+
allMethods.Add(method);
92+
allMethods.AddRange(method.Overloads);
93+
}
94+
95+
var methodPropertiesStringBuilder = new StringBuilder();
96+
foreach(var method in allMethods)
97+
{
98+
if (method.IsBoundToCollection != isCollection)
99+
{
100+
continue;
101+
}
102+
103+
var methodName = this.GetMethodName(method);
104+
var baseName = string.Concat(this.GetEntityNameString(method.Class), methodName);
105+
106+
var paramStringBuilder = new System.Text.StringBuilder();
107+
108+
var hasParameters = method.Parameters != null && method.Parameters.Any();
109+
110+
if (hasParameters)
111+
{
112+
var requiredParameters = method.Parameters.Where(param => !param.IsNullable);
113+
var optionalParameters = method.Parameters.Where(param => param.IsNullable);
114+
115+
foreach (var param in requiredParameters)
116+
{
117+
var paramVariableName = param.Name.GetSanitizedParameterName();
118+
var paramTypeString = param.Type.GetTypeString();
119+
120+
if (param.IsCollection)
121+
{
122+
paramTypeString = string.Format("IEnumerable<{0}>", paramTypeString);
123+
}
124+
125+
paramStringBuilder.Append(Environment.NewLine);
126+
paramStringBuilder.Append(" ");
127+
paramStringBuilder.AppendFormat("{0} {1},", paramTypeString, paramVariableName);
128+
}
129+
130+
foreach (var param in optionalParameters)
131+
{
132+
var paramVariableName = param.Name.GetSanitizedParameterName();
133+
var paramTypeString = param.Type.GetTypeString();
134+
135+
if (param.IsCollection)
136+
{
137+
paramTypeString = string.Format("IEnumerable<{0}>", paramTypeString);
138+
}
139+
else if(!param.Type.IsTypeNullable())
140+
{
141+
paramTypeString = string.Format("{0}?", paramTypeString);
142+
}
143+
144+
paramStringBuilder.Append(Environment.NewLine);
145+
paramStringBuilder.Append(" ");
146+
paramStringBuilder.AppendFormat("{0} {1} = null,", paramTypeString, paramVariableName);
147+
}
148+
149+
paramStringBuilder.Remove(paramStringBuilder.Length - 1, 1);
150+
}
151+
152+
if (methodPropertiesStringBuilder.Length > 0)
153+
{
154+
methodPropertiesStringBuilder.Append(Environment.NewLine);
155+
methodPropertiesStringBuilder.Append(Environment.NewLine);
156+
methodPropertiesStringBuilder.Append(" ");
157+
}
158+
159+
methodPropertiesStringBuilder.Append(
160+
this.GetMethodRequestBuilderMethod(
161+
methodName,
162+
baseName,
163+
paramStringBuilder.ToString()));
164+
}
165+
166+
return methodPropertiesStringBuilder.ToString();
167+
}
168+
169+
// -------------------------------------------------------------
170+
// Methods to create an OData method property definition within an entity class
171+
// -------------------------------------------------------------
172+
public string GetMethodRequestBuilderMethod(
173+
string methodName,
174+
string requestBuilderBaseString,
175+
string methodParamaterString)
176+
{
177+
var requestBuilderTypeName = this.GetRequestBuilderString(requestBuilderBaseString);
178+
var stringBuilder = new StringBuilder();
179+
180+
stringBuilder.Append("/// <summary>");
181+
stringBuilder.Append(Environment.NewLine);
182+
stringBuilder.AppendFormat(" /// Gets the request builder for {0}.", requestBuilderBaseString);
183+
stringBuilder.Append(Environment.NewLine);
184+
stringBuilder.Append(" /// </summary>");
185+
stringBuilder.Append(Environment.NewLine);
186+
stringBuilder.AppendFormat(" /// <returns>The <see cref=\"I{0}\"/>.</returns>", requestBuilderTypeName);
187+
stringBuilder.Append(Environment.NewLine);
188+
stringBuilder.AppendFormat(" I{0} {1}({2});", requestBuilderTypeName, methodName, methodParamaterString);
189+
return stringBuilder.ToString();
190+
}
84191
#>

0 commit comments

Comments
 (0)