1313
1414public class SwiftCallbackFuncDescriptor {
1515
16- private String name ;
16+ private String javaMethodName ;
17+ private String swiftMethodName ;
1718
1819 private boolean isStatic ;
1920 private boolean isThrown ;
2021
2122 private SwiftEnvironment .Type returnSwiftType ;
2223 private boolean isReturnTypeOptional ;
2324
24- private String description ;
25-
2625 private String sig ;
2726
2827 private List <SwiftParamDescriptor > params = new LinkedList <>();
2928 private List <String > paramNames = new LinkedList <>();
3029
3130 SwiftCallbackFuncDescriptor (ExecutableElement executableElement ) {
32- this .name = executableElement .getSimpleName ().toString ();
31+ String elementName = executableElement .getSimpleName ().toString ();
32+ this .javaMethodName = elementName ;
33+ this .swiftMethodName = elementName ;
34+
3335 this .isStatic = executableElement .getModifiers ().contains (Modifier .STATIC );
3436 this .isThrown = executableElement .getThrownTypes () != null && executableElement .getThrownTypes ().size () > 0 ;
3537 this .returnSwiftType = SwiftEnvironment .parseJavaType (executableElement .getReturnType ().toString ());
3638 this .isReturnTypeOptional = JavaSwiftProcessor .isNullable (executableElement );
3739
38- this . sig = "(" ;
40+ StringBuilder signatureBuilder = new StringBuilder ( "(" ) ;
3941
4042 for (VariableElement variableElement : executableElement .getParameters ()) {
4143 params .add (new SwiftParamDescriptor (variableElement ));
42- sig += javaClassToSig (variableElement .asType ().toString ());
44+ String javaClass = variableElement .asType ().toString ();
45+ signatureBuilder .append (javaClassToSig (javaClass ));
4346 }
4447
45- sig += ")" ;
48+ signatureBuilder . append ( ")" ) ;
4649
4750 if (returnSwiftType != null ) {
48- sig += javaClassToSig (executableElement .getReturnType ().toString ());
51+ String javaClass = executableElement .getReturnType ().toString ();
52+ signatureBuilder .append (javaClassToSig (javaClass ));
4953 }
5054 else {
51- sig += "V" ;
55+ signatureBuilder . append ( "V" ) ;
5256 }
5357
58+ this .sig = signatureBuilder .toString ();
59+
5460 SwiftCallbackFunc swiftFunc = executableElement .getAnnotation (SwiftCallbackFunc .class );
5561
5662 if (swiftFunc != null && !swiftFunc .value ().isEmpty ()) {
5763 String funcFullName = swiftFunc .value ();
5864 int paramStart = funcFullName .indexOf ("(" );
5965 int paramEnd = funcFullName .indexOf (")" );
60- if (paramStart > 0 && paramEnd > 0 && paramEnd > paramStart ) {
61- this .name = funcFullName .substring (0 , paramStart );
62- String arguments = funcFullName .substring (paramStart + 1 , paramEnd );
63- String [] paramNames = arguments .split (":" );
64- if (paramNames .length == params .size ()) {
65- this .paramNames = Arrays .asList (paramNames );
66- }
67- else {
68- throw new IllegalArgumentException ("Wrong count of arguments in func name" );
69- }
70- }
71- else {
66+
67+ if (paramStart <= 0 || paramEnd <= 0 || paramEnd <= paramStart ) {
7268 throw new IllegalArgumentException ("Wrong func name" );
7369 }
70+
71+ this .swiftMethodName = funcFullName .substring (0 , paramStart );
72+ String arguments = funcFullName .substring (paramStart + 1 , paramEnd );
73+ String [] paramNames = arguments .split (":" );
74+
75+ if (paramNames .length != params .size ()) {
76+ throw new IllegalArgumentException ("Wrong count of arguments in func name" );
77+ }
78+
79+ this .paramNames = Arrays .asList (paramNames );
7480 }
7581 else {
7682 for (int i = 0 ; i < params .size (); i ++) {
@@ -80,16 +86,15 @@ public class SwiftCallbackFuncDescriptor {
8086 }
8187
8288 void generateCode (SwiftWriter swiftWriter , String javaFullName , String swiftType ) throws IOException {
83-
8489 swiftWriter .emitEmptyLine ();
8590 swiftWriter .emitStatement (String .format ("static let javaMethod%1$s = try! JNI.%4$s(forClass:\" %2$s\" , method: \" %1$s\" , sig: \" %3$s\" )" ,
86- name ,
91+ javaMethodName ,
8792 javaFullName ,
8893 sig ,
8994 isStatic ? "getStaticJavaMethod" : "getJavaMethod" ));
9095
9196 swiftWriter .emitEmptyLine ();
92- swiftWriter .emit (String .format ("public %s func %s(" , isStatic ? "static" : "" , name ));
97+ swiftWriter .emit (String .format ("public %s func %s(" , isStatic ? "static" : "" , swiftMethodName ));
9398 for (int i = 0 ; i < params .size (); i ++) {
9499 SwiftParamDescriptor param = params .get (i );
95100 String paramType = param .swiftType .swiftType + (param .isOptional ? "?" : "" );
@@ -166,7 +171,7 @@ else if (isReturnTypeOptional) {
166171 }
167172 }
168173
169- swiftWriter .emit (String .format (jniMethodTemplate , swiftType , name ));
174+ swiftWriter .emit (String .format (jniMethodTemplate , swiftType , javaMethodName ));
170175
171176 for (SwiftParamDescriptor param : params ) {
172177 swiftWriter .emitStatement (String .format (", java%s" , param .name ));
@@ -238,12 +243,12 @@ private String javaClassToSig(String javaClass) {
238243 @ Override
239244 public String toString () {
240245 return "SwiftFuncDescriptor{" +
241- "name='" + name + '\'' +
246+ "javaMethodName='" + javaMethodName + '\'' +
247+ ", swiftMethodName='" + swiftMethodName + '\'' +
242248 ", isStatic=" + isStatic +
243249 ", isThrown=" + isThrown +
244250 ", returnSwiftType='" + returnSwiftType + '\'' +
245251 ", isReturnTypeOptional=" + isReturnTypeOptional +
246- ", description='" + description + '\'' +
247252 ", params=" + params +
248253 '}' ;
249254 }
0 commit comments