Skip to content

Commit 6288852

Browse files
author
emmanue1
committed
Refactoring
1 parent 674774a commit 6288852

File tree

6 files changed

+398
-344
lines changed

6 files changed

+398
-344
lines changed

src/main/java/org/jd/core/v1/service/converter/classfiletojavasyntax/model/javasyntax/expression/ClassFileMethodInvocationExpression.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@
1313
import org.jd.core.v1.model.javasyntax.type.BaseType;
1414
import org.jd.core.v1.model.javasyntax.type.BaseTypeParameter;
1515
import org.jd.core.v1.model.javasyntax.type.Type;
16-
import org.jd.core.v1.service.converter.classfiletojavasyntax.util.TypeParametersToTypeArgumentsBinder;
16+
import org.jd.core.v1.service.converter.classfiletojavasyntax.util.AbstractTypeParametersToTypeArgumentsBinder;
1717

1818
public class ClassFileMethodInvocationExpression extends MethodInvocationExpression {
19-
protected TypeParametersToTypeArgumentsBinder binder;
19+
protected AbstractTypeParametersToTypeArgumentsBinder binder;
2020
protected BaseTypeParameter typeParameters;
2121
protected BaseType parameterTypes;
2222

2323
public ClassFileMethodInvocationExpression(
24-
TypeParametersToTypeArgumentsBinder binder,
24+
AbstractTypeParametersToTypeArgumentsBinder binder,
2525
int lineNumber, BaseTypeParameter typeParameters, Type type, Expression expression,
2626
String internalTypeName, String name, String descriptor, BaseType parameterTypes, BaseExpression parameters) {
2727
super(lineNumber, type, expression, internalTypeName, name, descriptor, parameters);
@@ -30,7 +30,7 @@ public ClassFileMethodInvocationExpression(
3030
this.parameterTypes = parameterTypes;
3131
}
3232

33-
public TypeParametersToTypeArgumentsBinder getBinder() {
33+
public AbstractTypeParametersToTypeArgumentsBinder getBinder() {
3434
return binder;
3535
}
3636

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*
2+
* Copyright (c) 2008, 2019 Emmanuel Dupuy.
3+
* This project is distributed under the GPLv3 license.
4+
* This is a Copyleft license that gives the user the right to use,
5+
* copy and modify the code freely for non-commercial purposes.
6+
*/
7+
8+
package org.jd.core.v1.service.converter.classfiletojavasyntax.util;
9+
10+
import org.jd.core.v1.model.javasyntax.expression.*;
11+
import org.jd.core.v1.model.javasyntax.type.*;
12+
import org.jd.core.v1.service.converter.classfiletojavasyntax.model.javasyntax.expression.*;
13+
14+
public abstract class AbstractTypeParametersToTypeArgumentsBinder {
15+
public abstract ClassFileConstructorInvocationExpression newConstructorInvocationExpression(
16+
int lineNumber, ObjectType objectType, String descriptor,
17+
TypeMaker.MethodTypes methodTypes, BaseExpression parameters);
18+
19+
public abstract ClassFileSuperConstructorInvocationExpression newSuperConstructorInvocationExpression(
20+
int lineNumber, ObjectType objectType, String descriptor,
21+
TypeMaker.MethodTypes methodTypes, BaseExpression parameters);
22+
23+
public abstract ClassFileMethodInvocationExpression newMethodInvocationExpression(
24+
int lineNumber, Expression expression, ObjectType objectType, String name, String descriptor,
25+
TypeMaker.MethodTypes methodTypes, BaseExpression parameters);
26+
27+
public abstract FieldReferenceExpression newFieldReferenceExpression(
28+
int lineNumber, Type type, Expression expression, ObjectType objectType, String name, String descriptor);
29+
30+
public abstract void bindParameterTypesWithArgumentTypes(Type type, Expression expression);
31+
32+
public void updateNewExpression(ClassFileNewExpression ne, String descriptor, TypeMaker.MethodTypes methodTypes, BaseExpression parameters) {
33+
ne.set(descriptor, clone(methodTypes.parameterTypes), parameters);
34+
}
35+
36+
public static void staticBindParameterTypesWithArgumentTypes(Type type, Expression expression) {
37+
if (expression.isMethodInvocationExpression()) {
38+
ClassFileMethodInvocationExpression mie = (ClassFileMethodInvocationExpression)expression;
39+
AbstractTypeParametersToTypeArgumentsBinder binder = mie.getBinder();
40+
41+
if (binder != null) {
42+
binder.bindParameterTypesWithArgumentTypes(type, mie);
43+
}
44+
}
45+
}
46+
47+
protected static BaseType clone(BaseType parameterTypes) {
48+
if ((parameterTypes != null) && parameterTypes.isList()) {
49+
switch (parameterTypes.size()) {
50+
case 0: parameterTypes = null; break;
51+
case 1: parameterTypes = parameterTypes.getFirst(); break;
52+
default: parameterTypes = new Types(parameterTypes.getList()); break;
53+
}
54+
}
55+
56+
return parameterTypes;
57+
}
58+
}

0 commit comments

Comments
 (0)