X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fbinding-java-api-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fjava%2Fapi%2Fgenerator%2FGeneratorJavaFile.java;h=a0db8c7b6d500d7b7ea1b420c43a7456c2081a97;hb=d0f1a6162437a9e003e87c7a8b36ea875f8de984;hp=474e4ad0f931f8f9ec0685680db9c07ea440460d;hpb=fbfab4661220d56543ceabbcba5a40b335be1e07;p=controller.git diff --git a/opendaylight/sal/yang-prototype/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/controller/sal/java/api/generator/GeneratorJavaFile.java b/opendaylight/sal/yang-prototype/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/controller/sal/java/api/generator/GeneratorJavaFile.java index 474e4ad0f9..a0db8c7b6d 100644 --- a/opendaylight/sal/yang-prototype/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/controller/sal/java/api/generator/GeneratorJavaFile.java +++ b/opendaylight/sal/yang-prototype/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/controller/sal/java/api/generator/GeneratorJavaFile.java @@ -37,7 +37,7 @@ public class GeneratorJavaFile { final Set types) { this.interfaceGenerator = codeGenerator; this.genTypes = types; - this.genTransferObjects = new HashSet(); + this.genTransferObjects = new HashSet<>(); classGenerator = new ClassCodeGenerator(); } @@ -49,42 +49,10 @@ public class GeneratorJavaFile { this.genTransferObjects = genTransferObjects; } - @Deprecated - public List generateToFile(String path) throws IOException { - final List result = new ArrayList(); - - for (GeneratedType genType : genTypes) { - final String parentPath = generateParentPath(path, - genType.getPackageName()); - - final File directory = new File(parentPath); - final File genFile = generateTypeToJavaFile(directory, genType, - interfaceGenerator); - - if (genFile != null) { - result.add(genFile); - } - } - - for (GeneratedTransferObject transferObject : genTransferObjects) { - final String parentPath = generateParentPath(path, - transferObject.getPackageName()); - - final File directory = new File(parentPath); - final File genFile = generateTypeToJavaFile(directory, - transferObject, classGenerator); - - if (genFile != null) { - result.add(genFile); - } - } - return result; - } - - public List generateToFile(final File directory) throws IOException { - final List result = new ArrayList(); + public List generateToFile(final File parentDirectory) throws IOException { + final List result = new ArrayList<>(); for (GeneratedType type : genTypes) { - final File genFile = generateTypeToJavaFile(directory, type, + final File genFile = generateTypeToJavaFile(parentDirectory, type, interfaceGenerator); if (genFile != null) { @@ -92,7 +60,7 @@ public class GeneratorJavaFile { } } for (GeneratedTransferObject transferObject : genTransferObjects) { - final File genFile = generateTypeToJavaFile(directory, + final File genFile = generateTypeToJavaFile(parentDirectory, transferObject, classGenerator); if (genFile != null) { @@ -102,64 +70,56 @@ public class GeneratorJavaFile { return result; } - private File generateTypeToJavaFile(final File directory, final Type type, + private File generateTypeToJavaFile(final File parentDir, final Type type, final CodeGenerator generator) throws IOException { - if ((directory != null) && (type != null) && (generator != null)) { - - if (!directory.exists()) { - directory.mkdirs(); - } + if (parentDir == null) { + log.warn("Parent Directory not specified, files will be generated " + + "accordingly to generated Type package path."); + } + if (type == null) { + log.error("Cannot generate Type into Java File because " + + "Generated Type is NULL!"); + throw new IllegalArgumentException("Generated Type Cannot be NULL!"); + } + if (generator == null) { + log.error("Cannot generate Type into Java File because " + + "Code Generator instance is NULL!"); + throw new IllegalArgumentException("Code Generator Cannot be NULL!"); + } + final File packageDir = packageToDirectory(parentDir, + type.getPackageName()); - final File file = new File(directory, type.getName() + ".java"); - try (final FileWriter fw = new FileWriter(file)) { - file.createNewFile(); + if (!packageDir.exists()) { + packageDir.mkdirs(); + } + final File file = new File(packageDir, type.getName() + ".java"); + try (final FileWriter fw = new FileWriter(file)) { + file.createNewFile(); - try (final BufferedWriter bw = new BufferedWriter(fw)) { - Writer writer = generator.generate(type); - bw.write(writer.toString()); - } - } catch (IOException e) { - log.error(e.getMessage()); - throw new IOException(e.getMessage()); + try (final BufferedWriter bw = new BufferedWriter(fw)) { + Writer writer = generator.generate(type); + bw.write(writer.toString()); } - - return file; + } catch (IOException e) { + log.error(e.getMessage()); + throw new IOException(e.getMessage()); } - return null; + return file; } - private String generateParentPath(String path, String pkg) { - List dirs = new ArrayList(); - String pkgPath = ""; - if (pkg != null) { - if (pkg.length() > 0) { - if (pkg.contains(".")) { - String[] split = pkg.split("\\."); - for (String dir : split) { - dirs.add(dir); - } - } else { - dirs.add(pkg); - } - for (int i = 0; i < dirs.size(); i++) { - if (i == 0) { - pkgPath += dirs.get(i); - } else { - pkgPath += File.separator + dirs.get(i); - } - } - } + private File packageToDirectory(final File parentDirectory, + final String packageName) { + if (packageName == null) { + throw new IllegalArgumentException("Package Name cannot be NULL!"); } - String fullPath = ""; - if (path != null) { - if (path.endsWith(File.separator)) { - fullPath = path + pkgPath; - } else { - fullPath = path + File.separator + pkgPath; - } - } else { - fullPath = pkgPath; + + final String[] subDirNames = packageName.split("\\."); + final StringBuilder dirPathBuilder = new StringBuilder(); + dirPathBuilder.append(subDirNames[0]); + for (int i = 1; i < subDirNames.length; ++i) { + dirPathBuilder.append(File.separator); + dirPathBuilder.append(subDirNames[i]); } - return fullPath; + return new File(parentDirectory, dirPathBuilder.toString()); } }