Skip to content

Commit 6465577

Browse files
committed
Improve getting type parameters
1 parent 119609e commit 6465577

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

dts-generator/src/main/java/com/telerik/dts/DtsApi.java

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Collection;
2121
import java.util.HashMap;
2222
import java.util.HashSet;
23+
import java.util.Iterator;
2324
import java.util.LinkedList;
2425
import java.util.List;
2526
import java.util.Map;
@@ -31,6 +32,7 @@
3132
import java.util.stream.Stream;
3233

3334
import edu.umd.cs.findbugs.ba.generic.GenericObjectType;
35+
import edu.umd.cs.findbugs.ba.generic.GenericSignatureParser;
3436
import edu.umd.cs.findbugs.ba.generic.GenericUtilities;
3537

3638
/**
@@ -214,6 +216,7 @@ private String replaceIgnoredNamespaces(String content) {
214216

215217
public static String serializeGenerics() {
216218
StringBuilder sb = new StringBuilder();
219+
sb.append("//Generics information:\n");
217220
for(Tuple<String, Integer> generic: generics) {
218221
sb.append(String.format("//%s:%s\n", generic.x, generic.y));
219222
}
@@ -378,7 +381,7 @@ private String mangleRootClassname(String className) {
378381
String[] parts = className.split("\\.");
379382
String rootNamespace = parts[0];
380383
if(globalAliases.containsKey(parts[0])) {
381-
String aliasedNamespace = this.globalAliases.get(rootNamespace);
384+
String aliasedNamespace = DtsApi.globalAliases.get(rootNamespace);
382385
String aliasedType = aliasedTypes.get(rootNamespace);
383386
if(aliasedType == null) {
384387
aliasedTypes.put(rootNamespace, aliasedNamespace);
@@ -698,7 +701,7 @@ private Type[] getArgumentTypes(Method m) {
698701
return m.getArgumentTypes();
699702
}
700703
try {
701-
List<ReferenceType> referenceTypes = GenericUtilities.getTypeParameters(argumentsSignature);
704+
List<Type> referenceTypes = DtsApi.getTypeParameters(argumentsSignature);
702705
Type[] types = new Type[referenceTypes.size()];
703706
types = referenceTypes.toArray(types);
704707
return types;
@@ -710,6 +713,24 @@ private Type[] getArgumentTypes(Method m) {
710713
return m.getArgumentTypes();
711714
}
712715

716+
private static List<Type> getTypeParameters(String signature) {
717+
GenericSignatureParser parser = new GenericSignatureParser("(" + signature + ")V");
718+
List<Type> types = new ArrayList<>();
719+
Iterator<String> iter = parser.parameterSignatureIterator();
720+
721+
while(iter.hasNext()) {
722+
String parameterString = iter.next();
723+
Type t = GenericUtilities.getType(parameterString);
724+
if (t == null) {
725+
return null;
726+
}
727+
728+
types.add(t);
729+
}
730+
731+
return types;
732+
}
733+
713734
// gets the full field type including generic types
714735
private Type getFieldType(Field f) {
715736
Signature signature = this.getSignature(f);
@@ -1135,9 +1156,9 @@ private void setOverrides() {
11351156

11361157
private void setExtendsOverrides() {
11371158
// here we put extends overrides to avoid manual work to fix the generated .d.ts file
1138-
// this.extendsOverrides.put("android.renderscript.ProgramFragmentFixedFunction$Builder", "android.renderscript.Program.BaseProgramBuilder"); // android-17
1139-
// this.extendsOverrides.put("android.renderscript.ProgramVertexFixedFunction$Builder", "android.renderscript.ProgramVertex.Builder"); // android-17
1140-
// this.extendsOverrides.put("android.support.v4.app.JobIntentService$JobServiceEngineImpl", "android.support.v4.app.JobIntentService.CompatJobEngine"); // android-support
1159+
this.extendsOverrides.put("android.renderscript.ProgramFragmentFixedFunction$Builder", "android.renderscript.Program.BaseProgramBuilder"); // android-17
1160+
this.extendsOverrides.put("android.renderscript.ProgramVertexFixedFunction$Builder", "android.renderscript.ProgramVertex.Builder"); // android-17
1161+
this.extendsOverrides.put("android.support.v4.app.JobIntentService$JobServiceEngineImpl", "android.support.v4.app.JobIntentService.CompatJobEngine"); // android-support
11411162
}
11421163

11431164
private void setTypeOverrides() {
@@ -1162,6 +1183,7 @@ private List<String> getIgnoredNamespaces(){
11621183
result.add("android.graphics.drawable.Icon");
11631184
result.add("android.graphics.Outline");
11641185
result.add("android.view.SearchEvent");
1186+
result.add("android.view.KeyboardShortcutGroup");
11651187
result.add("android.view.ViewStructure");
11661188
result.add("android.media.browse");
11671189
result.add("android.media.session");

dts-generator/src/main/java/com/telerik/dts/Generator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class Generator {
2323
private String declarationsFileName;
2424

2525
public void start(InputParameters inputParameters) throws Exception {
26-
this.inputGenericsFile = inputParameters.getInputGenerics();
26+
Generator.inputGenericsFile = inputParameters.getInputGenerics();
2727
this.generateGenericImplements = inputParameters.isGenerateGenericImplementsEnabled();
2828
this.fileHelper = new FileHelper(inputParameters.getOutputDir());
2929
this.dtsApi = new DtsApi(generateGenericImplements);
@@ -69,7 +69,7 @@ private void generateDts() throws Exception {
6969
}
7070

7171
private void writeDeclarations() {
72-
List<String> imports = this.dtsApi.imports;
72+
List<String> imports = DtsApi.imports;
7373
imports.add(0, "declare module native {\texport class Array<T> {\tconstructor(); length: number; [index: number]: T; } }\n");
7474

7575
String existingContent = this.fileHelper.readFileContent(this.declarationsFileName);

0 commit comments

Comments
 (0)