Skip to content

Commit 2297f95

Browse files
committed
- moves utility import generation method into page class
- fixes an issue where interfaces would generate too many imports - adds a method to get imports for method parameters - adds casting of ctor parameters in call to disambiguous - multiple fixes to namespace and types generation methods - refactors type prefxising method for clarity - removes star imports
1 parent 4249fc1 commit 2297f95

File tree

2 files changed

+81
-82
lines changed

2 files changed

+81
-82
lines changed

Templates/Java/BaseJavaModel.template.tt

Lines changed: 81 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -372,21 +372,38 @@
372372
return typeString;
373373
}
374374

375-
public string CreatePackageDefForBaseEntityRequestBuilder(CustomT4Host host)
375+
public string CreatePackageDefForBaseEntityRequest(CustomT4Host host)
376376
{
377377
var sb = new StringBuilder();
378378
sb.Append(CreatePackageDefinition(host));
379-
380-
var importFormat = @"import {0}.{1}.{2};";
379+
var importFormat = "import {0}.{1}.{2};\n";
381380
sb.AppendFormat(importFormat,
382381
host.CurrentModel.NamespaceName(),
383382
"requests.extensions",
384383
ITypeRequest(host.CurrentType));
385-
sb.Append("\n");
384+
386385
sb.AppendFormat(importFormat,
387386
host.CurrentModel.NamespaceName(),
388387
"requests.extensions",
389388
TypeRequest(host.CurrentType));
389+
390+
sb.AppendFormat(importFormat,
391+
host.CurrentModel.NamespaceName(),
392+
"models.extensions",
393+
TypeName(host.CurrentType));
394+
return sb.ToString();
395+
}
396+
397+
public string CreatePackageDefForBaseEntityRequestBuilder(CustomT4Host host)
398+
{
399+
var sb = new StringBuilder();
400+
sb.Append(CreatePackageDefinition(host));
401+
402+
var importFormat = @"import {0}.{1}.{2};";
403+
sb.AppendFormat(importFormat,
404+
host.CurrentModel.NamespaceName(),
405+
"requests.extensions",
406+
ITypeRequest(host.CurrentType));
390407
sb.Append("\n");
391408
var c = host.CurrentType;
392409
if (c.AsOdcmClass() != null)
@@ -529,6 +546,27 @@
529546
}
530547
return parameterSignatureBuilder.ToString();
531548
}
549+
550+
public string MethodParametersImports(OdcmMethod method) {
551+
var parameterSignatureBuilder = new StringBuilder();
552+
foreach (var p in method.Parameters)
553+
{
554+
if(!(p.Type is OdcmPrimitiveType)) {
555+
var typeName = ParamType(p);
556+
if(typeName.Contains("<")) {
557+
typeName = typeName.Substring(typeName.IndexOf("<")+1).TrimEnd('>');
558+
}
559+
if(typeName.Contains(".")) {
560+
parameterSignatureBuilder.AppendFormat("import {0};\n", typeName);
561+
} else {
562+
var namespacePart = ((p.Type is OdcmEnum) || (p.Type is OdcmComplexClass) || (p.Type is OdcmProjection) || (p.Type is OdcmEntityClass)) ? "models" : "requests";
563+
var namespaceEnd = (p.Type is OdcmEnum) ? "generated" : "extensions";
564+
parameterSignatureBuilder.AppendFormat("import com.microsoft.graph.{0}.{1}.{2};\r\n", namespacePart, namespaceEnd, typeName);
565+
}
566+
}
567+
}
568+
return parameterSignatureBuilder.ToString();
569+
}
532570

533571
public string MethodParametersSignature(OdcmMethod method) {
534572
var parameterSignatureBuilder = new StringBuilder();
@@ -561,8 +599,7 @@
561599
var pageValuesBuilder = new StringBuilder();
562600
foreach (var param in c.AsOdcmMethod().Parameters)
563601
{
564-
var paramName = param.Name.ToLowerFirstChar();
565-
pageValuesBuilder.AppendFormat(", /* {0} */ null", paramName);
602+
pageValuesBuilder.AppendFormat(", ({0}) null", ParamType(param));
566603
}
567604
return pageValuesBuilder.ToString();
568605
}
@@ -618,13 +655,25 @@
618655
return method.ReturnType is OdcmPrimitiveType
619656
? method.ReturnType.GetTypeString() : method.ReturnType.Name.ToCheckedCase();
620657
}
658+
public string OdcmMethodReturnNamespaceSection(OdcmMethod method) {
659+
return method.ReturnType is OdcmEnum
660+
? "generated" : "extensions";
661+
}
621662

622-
public string CollectionPageGeneric(OdcmObject c) {
663+
public bool ShouldIncludeCollectionTypeReference(OdcmObject c) {
664+
return !(c is OdcmMethod && (c as OdcmMethod).ReturnType is OdcmPrimitiveType);
665+
}
666+
667+
public string TargetCollectionType(OdcmObject c) {
623668
if (c is OdcmMethod) {
624-
string returnType = OdcmMethodReturnType(c as OdcmMethod);
625-
return "<" + returnType + ", " + ITypeCollectionRequestBuilder(c) + ">";
669+
return OdcmMethodReturnType(c as OdcmMethod);
670+
} else {
671+
return TypeName(c);
626672
}
627-
return "<" + TypeName(c) + ", " + ITypeCollectionRequestBuilder(c) + ">";
673+
}
674+
675+
public string CollectionPageGeneric(OdcmObject c) {
676+
return "<" + TargetCollectionType(c) + ", " + ITypeCollectionRequestBuilder(c) + ">";
628677
}
629678

630679
public string CollectionPageWithReferencesGeneric(OdcmObject c) {
@@ -679,36 +728,28 @@
679728
return "requests.extensions";
680729
}
681730

682-
//Get package prefix using OdcmProperty for model classes
683-
public string getPackagePrefix(OdcmProperty property)
731+
public string getPackagePrefix(OdcmObject obj)
684732
{
685-
var propertyType = property.GetTypeString();
686-
687-
if(property.Type is OdcmEnum)
688-
return "models.generated";
689-
690-
return getPrefixForModels(propertyType);
691-
}
692-
693-
//Get package prefix using OdcmProperty for model classes
694-
public string getPackagePrefix(OdcmParameter property)
695-
{
696-
var propertyType = property.GetTypeString();
697-
698-
if(property.Type is OdcmEnum)
699-
return "models.generated";
700-
701-
return getPrefixForModels(propertyType);
733+
if(obj is OdcmEnum) {
734+
return "models.generated";
735+
} else if(obj is OdcmType) {
736+
return getPrefixForModels((obj as OdcmType).GetTypeString());
737+
} else if(obj is OdcmParameter) {
738+
return getPackagePrefix((obj as OdcmParameter).Type);
739+
} else if(obj is OdcmProperty) {
740+
return getPackagePrefix((obj as OdcmProperty).Type);
741+
} else {
742+
throw new ArgumentException("obj");
743+
}
702744
}
703745

704746
public string CreatePackageDefinition(CustomT4Host host)
705747
{
706748
var sb = new StringBuilder();
707-
var packageFormat = @"package {0}.{1};";
749+
var packageFormat = "package {0}.{1};\n";
708750
sb.AppendFormat(packageFormat,
709751
host.CurrentModel.NamespaceName(),
710752
host.TemplateInfo.OutputParentDirectory.Replace("_", "."));
711-
sb.Append("\n");
712753
return sb.ToString();
713754
}
714755

@@ -729,23 +770,21 @@
729770
{
730771
var sb = new StringBuilder();
731772
sb.Append(CreatePackageDefinition(host));
732-
var importFormat = @"import {0}.{1}.{2};";
773+
var importFormat = "import {0}.{1}.{2};\n";
733774

734775
var returnType = ReturnType(host.CurrentType);
735776
if(returnType != "Void" && !(host.CurrentType.AsOdcmMethod().ReturnType is OdcmPrimitiveType))
736777
{
737778
sb.AppendFormat(importFormat,
738779
host.CurrentModel.NamespaceName(),
739-
"models.extensions",
780+
(host.CurrentType.AsOdcmMethod().ReturnType is OdcmEnum ? "models.generated" : "models.extensions"),
740781
ReturnType(host.CurrentType));
741-
sb.Append("\n");
742782
}
743783

744784
sb.AppendFormat(importFormat,
745785
host.CurrentModel.NamespaceName(),
746786
"requests.extensions",
747787
ITypeRequest(host.CurrentType));
748-
sb.Append("\n");
749788
return sb.ToString();
750789
}
751790

@@ -851,21 +890,19 @@
851890
{
852891
var sb = new StringBuilder();
853892
sb.Append(CreatePackageDefinition(host));
854-
var importFormat = @"import {0}.{1}.{2};";
893+
var importFormat = "import {0}.{1}.{2};\n";
855894

856895
sb.AppendFormat(importFormat,
857896
host.CurrentModel.NamespaceName(),
858-
"models.extensions",
897+
(host.CurrentType.AsOdcmMethod().ReturnType is OdcmEnum ? "models.generated" : "models.extensions"),
859898
TypeBody(host.CurrentType));
860-
sb.Append("\n");
861899
var returnType = ReturnType(host.CurrentType);
862900
if(returnType != "Void" && !(host.CurrentType.AsOdcmMethod().ReturnType is OdcmPrimitiveType))
863901
{
864902
sb.AppendFormat(importFormat,
865903
host.CurrentModel.NamespaceName(),
866904
"models.extensions",
867905
ReturnType(host.CurrentType));
868-
sb.Append("\n");
869906
}
870907

871908
if(host.CurrentType.AsOdcmMethod().IsCollection)
@@ -874,27 +911,23 @@
874911
host.CurrentModel.NamespaceName(),
875912
"requests.extensions",
876913
ITypeCollectionRequest(host.CurrentType));
877-
sb.Append("\n");
878914

879915
sb.AppendFormat(importFormat,
880916
host.CurrentModel.NamespaceName(),
881917
"requests.extensions",
882918
TypeCollectionRequest(host.CurrentType));
883-
sb.Append("\n");
884919
}
885920
else
886921
{
887922
sb.AppendFormat(importFormat,
888923
host.CurrentModel.NamespaceName(),
889924
"requests.extensions",
890925
ITypeRequest(host.CurrentType));
891-
sb.Append("\n");
892926

893927
sb.AppendFormat(importFormat,
894928
host.CurrentModel.NamespaceName(),
895929
"requests.extensions",
896930
TypeRequest(host.CurrentType));
897-
sb.Append("\n");
898931
}
899932
return sb.ToString();
900933
}
@@ -949,11 +982,9 @@
949982
host.TemplateInfo.OutputParentDirectory.Replace("_", "."));
950983
sb.Append("\n");
951984

952-
sb.AppendFormat(@"import {0}.concurrency.*;
953-
import {0}.core.*;
954-
import {0}.http.*;
955-
import {0}.options.*;
956-
import {0}.serializer.*;
985+
sb.AppendFormat(@"import {0}.serializer.ISerializer;
986+
import {0}.serializer.IJsonBackedObject;
987+
import {0}.serializer.AdditionalDataManager;
957988
import java.util.Arrays;
958989
import java.util.EnumSet;", host.CurrentModel.NamespaceName());
959990

@@ -1064,15 +1095,8 @@ import java.util.EnumSet;", host.CurrentModel.NamespaceName());
10641095
{
10651096
var format = @"package {0}.{1};
10661097

1067-
import {0}.concurrency.*;
1068-
import {0}.core.*;
1069-
import {0}.models.extensions.*;
1070-
import {0}.models.generated.*;{2}
1071-
import {0}.http.*;
1072-
import {0}.requests.extensions.*;
1073-
import {0}.options.*;
1074-
import {0}.serializer.*;
1075-
1098+
import com.microsoft.graph.http.IRequestBuilder;
1099+
import com.microsoft.graph.concurrency.ICallback;
10761100
import java.util.Arrays;
10771101
import java.util.EnumSet;";
10781102

Templates/Java/requests_extensions/BaseEntityRequest.java.tt

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -229,29 +229,4 @@ classDeclaration += TypeName(c);
229229
";
230230
return string.Format(formatString, TypeName(odcmObject));
231231
}
232-
233-
public string CreatePackageDefForBaseEntityRequest(CustomT4Host host)
234-
{
235-
var sb = new StringBuilder();
236-
sb.Append(CreatePackageDefinition(host));
237-
var importFormat = @"import {0}.{1}.{2};";
238-
sb.AppendFormat(importFormat,
239-
host.CurrentModel.NamespaceName(),
240-
"requests.extensions",
241-
ITypeRequest(host.CurrentType));
242-
sb.Append("\n");
243-
244-
sb.AppendFormat(importFormat,
245-
host.CurrentModel.NamespaceName(),
246-
"requests.extensions",
247-
TypeRequest(host.CurrentType));
248-
sb.Append("\n");
249-
250-
sb.AppendFormat(importFormat,
251-
host.CurrentModel.NamespaceName(),
252-
"models.extensions",
253-
TypeName(host.CurrentType.AsOdcmClass()));
254-
sb.Append("\n");
255-
return sb.ToString();
256-
}
257232
#>

0 commit comments

Comments
 (0)