From 53cc589822ef0395297d3120dec795737c698829 Mon Sep 17 00:00:00 2001 From: plamen5kov Date: Thu, 19 Jan 2017 14:53:32 +0200 Subject: [PATCH] added message if two classes will be generated with the same name this problem is explained in detail in issue #692 also did a clean of generated bindings --- .../staticbindinggenerator/Generator.java | 12 +++++++++--- .../nativescript/staticbindinggenerator/Main.java | 7 ++----- build-artifacts/project-template-gradle/build.gradle | 7 ++++++- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/android-static-binding-generator/project/staticbindinggenerator/src/main/java/org/nativescript/staticbindinggenerator/Generator.java b/android-static-binding-generator/project/staticbindinggenerator/src/main/java/org/nativescript/staticbindinggenerator/Generator.java index b610376ae..1286cca77 100644 --- a/android-static-binding-generator/project/staticbindinggenerator/src/main/java/org/nativescript/staticbindinggenerator/Generator.java +++ b/android-static-binding-generator/project/staticbindinggenerator/src/main/java/org/nativescript/staticbindinggenerator/Generator.java @@ -47,10 +47,16 @@ public Generator(String outputDir, String[] libs, boolean throwOnError) throws I public void writeBindings(String filename) throws IOException { Binding[] bindings = generateBindings(filename); - + List writenFiles = new ArrayList(); for (Binding b : bindings) { - try (PrintStream ps = new PrintStream(b.getFile())) { - ps.append(b.getContent()); + if(!writenFiles.contains(b.getFile())) { + writenFiles.add(b.getFile()); + try (PrintStream ps = new PrintStream(b.getFile())) { + ps.append(b.getContent()); + } + } + else { + throw new IOException("Trying to write already written file. Both files will have the same file name, which will lead to undefined behavior.\nPlease change the name of one of those classes.\n" + b.getFile()); } } } diff --git a/android-static-binding-generator/project/staticbindinggenerator/src/main/java/org/nativescript/staticbindinggenerator/Main.java b/android-static-binding-generator/project/staticbindinggenerator/src/main/java/org/nativescript/staticbindinggenerator/Main.java index 7a2ec6344..d5d28e202 100644 --- a/android-static-binding-generator/project/staticbindinggenerator/src/main/java/org/nativescript/staticbindinggenerator/Main.java +++ b/android-static-binding-generator/project/staticbindinggenerator/src/main/java/org/nativescript/staticbindinggenerator/Main.java @@ -1,10 +1,10 @@ package org.nativescript.staticbindinggenerator; +import java.io.IOException; import java.util.Arrays; public class Main { - public static void main(String[] args) { - try { + public static void main(String[] args) throws IOException { if (args.length < 3) { throw new IllegalArgumentException("Expects at least three arguments"); } @@ -13,8 +13,5 @@ public static void main(String[] args) { String[] libs = Arrays.copyOfRange(args, 2, args.length); new Generator(outputDir, libs).writeBindings(inputBindingFilename); - } catch (Exception e) { - e.printStackTrace(); - } } } diff --git a/build-artifacts/project-template-gradle/build.gradle b/build-artifacts/project-template-gradle/build.gradle index 58a374bf0..cc2e43209 100644 --- a/build-artifacts/project-template-gradle/build.gradle +++ b/build-artifacts/project-template-gradle/build.gradle @@ -721,7 +721,12 @@ task deleteConfigurations (type: Delete) { delete "$projectDir/configurations" } +task deleteGeneratedBindings(type: Delete) { + delete "$projectDir/src/main/java/com/tns/gen" +} + deleteMetadata.dependsOn(":asbg:clean") deleteFlavors.dependsOn(deleteMetadata) deleteConfigurations.dependsOn(deleteFlavors) -clean.dependsOn(deleteConfigurations) +deleteGeneratedBindings.dependsOn(deleteConfigurations) +clean.dependsOn(deleteGeneratedBindings)