Skip to content

Commit 99c8390

Browse files
authored
Merge pull request #140 from microsoftgraph/java-memory-fix
Java template fix to reduce memory footprint - continued
2 parents a4c5796 + b6e190b commit 99c8390

File tree

3 files changed

+259
-3
lines changed

3 files changed

+259
-3
lines changed

Templates/Java/requests_generated/BaseEntityRequest.java.tt

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@
44
<#@ output extension="\\" #>
55
<#host.TemplateName = BaseTypeRequest(c);#>
66
<#=writer.WriteHeader()#>
7-
<#=CreatePackageDef(host)#>
7+
<#=CreatePackageDefForBaseEntityRequest(host)#>
8+
import com.microsoft.graph.concurrency.ICallback;
9+
import com.microsoft.graph.core.ClientException;
10+
import com.microsoft.graph.core.IBaseClient;
11+
import com.microsoft.graph.http.BaseRequest;
12+
import com.microsoft.graph.http.HttpMethod;
13+
import com.microsoft.graph.options.Option;
14+
import com.microsoft.graph.options.QueryOption;
815
<#
916
String classDeclaration = "";
1017
if (c.AsOdcmClass().Derived.Any() && c.AsOdcmClass().Base != null)
@@ -209,4 +216,29 @@ classDeclaration += TypeName(c);
209216
";
210217
return string.Format(formatString, TypeName(odcmObject));
211218
}
219+
220+
public string CreatePackageDefForBaseEntityRequest(CustomT4Host host)
221+
{
222+
var sb = new StringBuilder();
223+
sb.Append(CreatePackageDefinition(host));
224+
var importFormat = @"import {0}.{1}.{2};";
225+
sb.AppendFormat(importFormat,
226+
host.CurrentModel.NamespaceName(),
227+
"requests.extensions",
228+
ITypeRequest(host.CurrentType));
229+
sb.Append("\n");
230+
231+
sb.AppendFormat(importFormat,
232+
host.CurrentModel.NamespaceName(),
233+
"requests.extensions",
234+
TypeRequest(host.CurrentType));
235+
sb.Append("\n");
236+
237+
sb.AppendFormat(importFormat,
238+
host.CurrentModel.NamespaceName(),
239+
"models.extensions",
240+
TypeName(host.CurrentType.AsOdcmClass()));
241+
sb.Append("\n");
242+
return sb.ToString();
243+
}
212244
#>

Templates/Java/requests_generated/BaseEntityRequestBuilder.java.tt

Lines changed: 131 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
<#@ output extension="\\" #>
55
<#host.TemplateName = BaseTypeRequestBuilder(c);#>
66
<#=writer.WriteHeader()#>
7-
<#=CreatePackageDef(host)#>
7+
<#=CreatePackageDefForBaseEntityRequestBuilder(host)#>
8+
import com.microsoft.graph.core.IBaseClient;
9+
import com.microsoft.graph.http.BaseRequestBuilder;
10+
import com.microsoft.graph.options.Option;
811

912
<#=CreateClassDef(BaseTypeRequestBuilder(c), "BaseRequestBuilder", IBaseTypeRequestBuilder(c))#>
1013

@@ -133,3 +136,130 @@ if (c.AsOdcmClass() != null)
133136
}
134137
#>
135138
}
139+
140+
<#+
141+
public string CreatePackageDefForBaseEntityRequestBuilder(CustomT4Host host)
142+
{
143+
var sb = new StringBuilder();
144+
sb.Append(CreatePackageDefinition(host));
145+
146+
var importFormat = @"import {0}.{1}.{2};";
147+
sb.AppendFormat(importFormat,
148+
host.CurrentModel.NamespaceName(),
149+
"requests.extensions",
150+
ITypeRequest(host.CurrentType));
151+
sb.Append("\n");
152+
sb.AppendFormat(importFormat,
153+
host.CurrentModel.NamespaceName(),
154+
"requests.extensions",
155+
TypeRequest(host.CurrentType));
156+
sb.Append("\n");
157+
var c = host.CurrentType;
158+
if (c.AsOdcmClass() != null)
159+
{
160+
foreach(var prop in c.AsOdcmClass().NavigationProperties())
161+
{
162+
if (prop.IsCollection()) {
163+
164+
sb.AppendFormat(importFormat,
165+
host.CurrentModel.NamespaceName(),
166+
"requests.extensions",
167+
ITypeCollectionRequestBuilder(prop));
168+
sb.Append("\n");
169+
170+
sb.AppendFormat(importFormat,
171+
host.CurrentModel.NamespaceName(),
172+
"requests.extensions",
173+
TypeCollectionRequestBuilder(prop));
174+
sb.Append("\n");
175+
}
176+
sb.AppendFormat(importFormat,
177+
host.CurrentModel.NamespaceName(),
178+
"requests.extensions",
179+
ITypeRequestBuilder(prop));
180+
sb.Append("\n");
181+
182+
sb.AppendFormat(importFormat,
183+
host.CurrentModel.NamespaceName(),
184+
"requests.extensions",
185+
TypeRequestBuilder(prop));
186+
sb.Append("\n");
187+
}
188+
189+
foreach (var prop in c.AsOdcmClass().GetProperties(typeName:"Stream"))
190+
{
191+
var propRequestBuilder = TypeRequestBuilder(prop);
192+
sb.AppendFormat(importFormat,
193+
host.CurrentModel.NamespaceName(),
194+
"requests.extensions",
195+
"I" + propRequestBuilder);
196+
sb.Append("\n");
197+
198+
sb.AppendFormat(importFormat,
199+
host.CurrentModel.NamespaceName(),
200+
"requests.extensions",
201+
propRequestBuilder);
202+
sb.Append("\n");
203+
}
204+
205+
if (c is OdcmMediaClass)
206+
{
207+
sb.AppendFormat(importFormat,
208+
host.CurrentModel.NamespaceName(),
209+
"requests.extensions",
210+
ITypeStreamRequestBuilder(host.CurrentType));
211+
sb.Append("\n");
212+
213+
sb.AppendFormat(importFormat,
214+
host.CurrentModel.NamespaceName(),
215+
"requests.extensions",
216+
TypeStreamRequestBuilder(host.CurrentType));
217+
sb.Append("\n");
218+
}
219+
220+
foreach (var method in c.AsOdcmClass().MethodsAndOverloads()) {
221+
if (method.IsBoundToCollection) {
222+
continue;
223+
}
224+
225+
foreach (var p in method.Parameters)
226+
{
227+
if(!(p.Type is OdcmPrimitiveType) && p.Type.GetTypeString() != "com.google.gson.JsonElement") {
228+
sb.AppendFormat(importFormat,
229+
host.CurrentModel.NamespaceName(),
230+
getPackagePrefix(p),
231+
p.Type.GetTypeString());
232+
sb.Append("\n");
233+
}
234+
}
235+
236+
if (method.IsCollection) {
237+
sb.AppendFormat(importFormat,
238+
host.CurrentModel.NamespaceName(),
239+
"requests.extensions",
240+
ITypeCollectionRequestBuilder(method));
241+
sb.Append("\n");
242+
243+
sb.AppendFormat(importFormat,
244+
host.CurrentModel.NamespaceName(),
245+
"requests.extensions",
246+
TypeCollectionRequestBuilder(method));
247+
sb.Append("\n");
248+
} else {
249+
sb.AppendFormat(importFormat,
250+
host.CurrentModel.NamespaceName(),
251+
"requests.extensions",
252+
ITypeRequestBuilder(method));
253+
sb.Append("\n");
254+
255+
sb.AppendFormat(importFormat,
256+
host.CurrentModel.NamespaceName(),
257+
"requests.extensions",
258+
TypeRequestBuilder(method));
259+
sb.Append("\n");
260+
}
261+
}
262+
}
263+
return sb.ToString();
264+
}
265+
#>

Templates/Java/requests_generated/IBaseEntityRequestBuilder.java.tt

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
<#@ output extension="\\" #>
55
<#host.TemplateName = IBaseTypeRequestBuilder(c);#>
66
<#=writer.WriteHeader()#>
7-
<#=CreatePackageDef(host)#>
7+
<#=CreatePackageDefForIBaseEntityRequestBuilder(host)#>
8+
import com.microsoft.graph.http.IRequestBuilder;
9+
import com.microsoft.graph.options.Option;
810

911
<#=CreateInterfaceDef(IBaseTypeRequestBuilder(c), "IRequestBuilder")#>
1012
/**
@@ -104,3 +106,95 @@ if (c.AsOdcmClass() != null)
104106
#>
105107

106108
}
109+
<#+
110+
public string CreatePackageDefForIBaseEntityRequestBuilder(CustomT4Host host)
111+
{
112+
var sb = new StringBuilder();
113+
sb.Append(CreatePackageDefinition(host));
114+
var importFormat = @"import {0}.{1}.{2};";
115+
sb.AppendFormat(importFormat,
116+
host.CurrentModel.NamespaceName(),
117+
"requests.extensions",
118+
ITypeRequest(host.CurrentType));
119+
sb.Append("\n");
120+
var c = host.CurrentType;
121+
if (c.AsOdcmClass() != null)
122+
{
123+
foreach(var prop in c.AsOdcmClass().NavigationProperties())
124+
{
125+
if (prop.IsCollection()) {
126+
127+
sb.AppendFormat(importFormat,
128+
host.CurrentModel.NamespaceName(),
129+
"requests.extensions",
130+
ITypeCollectionRequestBuilder(prop));
131+
sb.Append("\n");
132+
133+
sb.AppendFormat(importFormat,
134+
host.CurrentModel.NamespaceName(),
135+
"requests.extensions",
136+
ITypeRequestBuilder(prop));
137+
sb.Append("\n");
138+
} else {
139+
sb.AppendFormat(importFormat,
140+
host.CurrentModel.NamespaceName(),
141+
"requests.extensions",
142+
ITypeRequestBuilder(prop));
143+
sb.Append("\n");
144+
}
145+
}
146+
147+
foreach (var prop in c.AsOdcmClass().GetProperties(typeName:"Stream"))
148+
{
149+
var propRequestBuilder = TypeRequestBuilder(prop);
150+
sb.AppendFormat(importFormat,
151+
host.CurrentModel.NamespaceName(),
152+
"requests.extensions",
153+
"I" + propRequestBuilder);
154+
sb.Append("\n");
155+
}
156+
157+
if (c is OdcmMediaClass)
158+
{
159+
sb.AppendFormat(importFormat,
160+
host.CurrentModel.NamespaceName(),
161+
"requests.extensions",
162+
ITypeStreamRequestBuilder(host.CurrentType));
163+
sb.Append("\n");
164+
}
165+
166+
foreach (var method in c.AsOdcmClass().MethodsAndOverloads()) {
167+
if (method.IsBoundToCollection) {
168+
continue;
169+
}
170+
171+
foreach (var p in method.Parameters)
172+
{
173+
if(!(p.Type is OdcmPrimitiveType) && p.Type.GetTypeString() != "com.google.gson.JsonElement") {
174+
sb.AppendFormat(importFormat,
175+
host.CurrentModel.NamespaceName(),
176+
getPackagePrefix(p),
177+
p.Type.GetTypeString());
178+
sb.Append("\n");
179+
}
180+
}
181+
182+
if (method.IsCollection) {
183+
sb.AppendFormat(importFormat,
184+
host.CurrentModel.NamespaceName(),
185+
"requests.extensions",
186+
ITypeCollectionRequestBuilder(method));
187+
sb.Append("\n");
188+
} else {
189+
sb.AppendFormat(importFormat,
190+
host.CurrentModel.NamespaceName(),
191+
"requests.extensions",
192+
ITypeRequestBuilder(method));
193+
sb.Append("\n");
194+
}
195+
}
196+
}
197+
return sb.ToString();
198+
}
199+
200+
#>

0 commit comments

Comments
 (0)