@@ -36,32 +36,13 @@ public class JavaSwiftProcessor extends AbstractProcessor {
3636 private Filer filer ;
3737 private Messager messager ;
3838
39- private File sourcePath ;
40-
4139 @ Override
4240 public synchronized void init (ProcessingEnvironment processingEnv ) {
4341 super .init (processingEnv );
4442 typeUtils = processingEnv .getTypeUtils ();
4543 elementUtils = processingEnv .getElementUtils ();
4644 filer = processingEnv .getFiler ();
4745 messager = processingEnv .getMessager ();
48-
49- // TODO: try to find better way to get GeneratedSources path
50- try {
51- Filer filer = processingEnv .getFiler ();
52- FileObject resource = filer .createResource (StandardLocation .SOURCE_OUTPUT , "" , "tmp" , (Element []) null );
53- String projectPath = resource .toUri ().getPath ();
54- projectPath = projectPath .substring (0 , projectPath .lastIndexOf ("/build/" ));
55- resource .delete ();
56- sourcePath = new File (projectPath , "/src/main/swift/.build/generated" );
57-
58- if (sourcePath .mkdirs ()) {
59- messager .printMessage (Diagnostic .Kind .NOTE , "GeneratedSources was created" );
60- }
61- }
62- catch (Exception e ) {
63- messager .printMessage (Diagnostic .Kind .ERROR , "Can't get source dir: " + e .getMessage ());
64- }
6546 }
6647
6748 @ Override
@@ -80,7 +61,7 @@ public SourceVersion getSupportedSourceVersion() {
8061
8162 @ Override
8263 public boolean process (Set <? extends TypeElement > annotations , RoundEnvironment roundEnv ) {
83-
64+ Filer filer = processingEnv . getFiler ();
8465 messager .printMessage (Diagnostic .Kind .NOTE , "Start SwiftJava code generation:" );
8566
8667 Map <String , SwiftValueDescriptor > swiftValues = new HashMap <>();
@@ -98,7 +79,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
9879 TypeElement typeElement = (TypeElement ) annotatedElement ;
9980
10081 try {
101- SwiftValueDescriptor swiftValueDescriptor = new SwiftValueDescriptor (typeElement );
82+ SwiftValueDescriptor swiftValueDescriptor = new SwiftValueDescriptor (typeElement , filer );
10283 swiftValues .put (swiftValueDescriptor .getSwiftType (), swiftValueDescriptor );
10384 }
10485 catch (IllegalArgumentException e ) {
@@ -118,7 +99,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
11899 TypeElement typeElement = (TypeElement ) annotatedElement ;
119100
120101 try {
121- SwiftReferenceDescriptor swiftReferenceDescriptor = new SwiftReferenceDescriptor (typeElement );
102+ SwiftReferenceDescriptor swiftReferenceDescriptor = new SwiftReferenceDescriptor (typeElement , filer );
122103 swiftReferences .put (swiftReferenceDescriptor .getSwiftType (), swiftReferenceDescriptor );
123104 }
124105 catch (IllegalArgumentException e ) {
@@ -138,7 +119,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
138119 TypeElement typeElement = (TypeElement ) annotatedElement ;
139120
140121 try {
141- SwiftDelegateDescriptor delegateDescriptor = new SwiftDelegateDescriptor (typeElement );
122+ SwiftDelegateDescriptor delegateDescriptor = new SwiftDelegateDescriptor (typeElement , filer );
142123 swiftDelegates .put (delegateDescriptor .simpleTypeName , delegateDescriptor );
143124 }
144125 catch (IllegalArgumentException e ) {
@@ -154,7 +135,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
154135 }
155136
156137 try {
157- File file = valueDescriptor .generateCode (sourcePath );
138+ File file = valueDescriptor .generateCode ();
158139 messager .printMessage (Diagnostic .Kind .NOTE , file .getName () + " generated" );
159140 } catch (IOException e ) {
160141 error (null , "Can't write to file: " + e .getMessage ());
@@ -169,7 +150,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
169150 }
170151
171152 try {
172- File file = referenceDescriptor .generateCode (sourcePath );
153+ File file = referenceDescriptor .generateCode ();
173154 messager .printMessage (Diagnostic .Kind .NOTE , file .getName () + " generated" );
174155 } catch (IOException e ) {
175156 error (null , "Can't write to file: " + e .getMessage ());
@@ -184,7 +165,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
184165 }
185166
186167 try {
187- File file = delegateDescriptor .generateCode (sourcePath );
168+ File file = delegateDescriptor .generateCode ();
188169 messager .printMessage (Diagnostic .Kind .NOTE , file .getName () + " generated" );
189170 } catch (IOException e ) {
190171 error (null , "Can't write to file: " + e .getMessage ());
@@ -193,7 +174,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
193174 }
194175
195176 try {
196- generateJavaSwift (sourcePath );
177+ generateJavaSwift (filer );
197178 } catch (IOException e ) {
198179 error (null , "Can't write to file: " + e .getMessage ());
199180 return true ; // Exit processing
@@ -204,9 +185,9 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
204185 return false ;
205186 }
206187
207- void generateJavaSwift (File dirPath ) throws IOException {
208- // TODO: check if already generated
209- File swiftExtensionFile = new File (dirPath , "JavaSwift.swift" );
188+ private void generateJavaSwift (Filer filer ) throws IOException {
189+ String swiftFilePath = filer . createResource ( StandardLocation . SOURCE_OUTPUT , "SwiftGenerated" , "SwiftJava.swift" , ( Element []) null ). toUri (). getPath ();
190+ File swiftExtensionFile = new File (swiftFilePath );
210191 SwiftWriter swiftWriter = new SwiftWriter (swiftExtensionFile );
211192 swiftWriter .emitImports (new String [0 ]);
212193 swiftWriter .emitEmptyLine ();
0 commit comments