You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gora.apache.org by le...@apache.org on 2017/05/26 18:32:53 UTC
[2/2] gora git commit: Generate license to the compiled files
Generate license to the compiled files
Project: http://git-wip-us.apache.org/repos/asf/gora/repo
Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/1242a61d
Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/1242a61d
Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/1242a61d
Branch: refs/heads/master
Commit: 1242a61db95dd10786a50caec1877544ad95e332
Parents: 3a4f139
Author: nishadi <nd...@gmail.com>
Authored: Fri May 26 20:10:17 2017 +0530
Committer: nishadi <nd...@gmail.com>
Committed: Fri May 26 20:49:38 2017 +0530
----------------------------------------------------------------------
.../gora/compiler/cli/GoraCompilerCLI.java | 39 ++++++++++++++++++--
.../org/apache/gora/compiler/GoraCompiler.java | 18 ++++++++-
.../gora/compiler/utils/LicenseHeaders.java | 13 +++++++
3 files changed, 66 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/gora/blob/1242a61d/gora-compiler-cli/src/main/java/org/apache/gora/compiler/cli/GoraCompilerCLI.java
----------------------------------------------------------------------
diff --git a/gora-compiler-cli/src/main/java/org/apache/gora/compiler/cli/GoraCompilerCLI.java b/gora-compiler-cli/src/main/java/org/apache/gora/compiler/cli/GoraCompilerCLI.java
index 39cd5a6..ca4b0ee 100644
--- a/gora-compiler-cli/src/main/java/org/apache/gora/compiler/cli/GoraCompilerCLI.java
+++ b/gora-compiler-cli/src/main/java/org/apache/gora/compiler/cli/GoraCompilerCLI.java
@@ -20,8 +20,9 @@ package org.apache.gora.compiler.cli;
import java.io.File;
import java.io.IOException;
+import org.apache.commons.lang.ArrayUtils;
import org.apache.gora.compiler.GoraCompiler;
-
+import org.apache.gora.compiler.utils.LicenseHeaders;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,6 +41,28 @@ public class GoraCompilerCLI {
printHelp();
System.exit(1);
}
+ // Setting the default license header to ASLv2
+ LicenseHeaders licenseHeader = new LicenseHeaders("ASLv2");
+ // Checking for user provided license
+ for (int i = 0; i < args.length; i++) {
+ if ("-license".equals(args[i])) {
+ if (i == args.length - 1) {
+ LOG.error("Must supply a valid license id.");
+ printHelp();
+ System.exit(1);
+ }
+ if (licenseHeader.isValidLicense(args[i + 1])) {
+ licenseHeader.setLicenseName(args[i + 1]);
+ args = (String[]) ArrayUtils.removeElement(args, args[i + 1]);
+ args = (String[]) ArrayUtils.removeElement(args, args[i]);
+ } else {
+ LOG.error("Must supply a valid license id.");
+ printHelp();
+ System.exit(1);
+ }
+ }
+ }
+
File outputDir = new File(args[args.length-1]);
if(!outputDir.isDirectory()){
LOG.error("Must supply a directory for output");
@@ -70,7 +93,7 @@ public class GoraCompilerCLI {
}
}
try {
- GoraCompiler.compileSchema(inputFiles, outputDir);
+ GoraCompiler.compileSchema(inputFiles, outputDir, licenseHeader);
LOG.info("Compiler executed SUCCESSFULL.");
} catch (IOException e) {
LOG.error("Error while compiling schema files. Check that the schemas are properly formatted.");
@@ -80,6 +103,16 @@ public class GoraCompilerCLI {
}
private static void printHelp() {
- LOG.info("Usage: gora-compiler ( -h | --help ) | (<input> [<input>...] <output>)");
+ LOG.info("Usage: gora-compiler ( -h | --help ) | (<input> [<input>...] <output> [-license <id>])");
+ LOG.error("License header options include;\n" +
+ "\t\t ASLv2 (Apache Software License v2.0) \n" +
+ "\t\t AGPLv3 (GNU Affero General Public License) \n" +
+ "\t\t CDDLv1 (Common Development and Distribution License v1.0) \n" +
+ "\t\t FDLv13 (GNU Free Documentation License v1.3) \n" +
+ "\t\t GPLv1 (GNU General Public License v1.0) \n" +
+ "\t\t GPLv2 (GNU General Public License v2.0) \n" +
+ "\t\t GPLv3 (GNU General Public License v3.0) \n" +
+ "\t\t LGPLv21 (GNU Lesser General Public License v2.1) \n" +
+ "\t\t LGPLv3 (GNU Lesser General Public License v2.1)");
}
}
http://git-wip-us.apache.org/repos/asf/gora/blob/1242a61d/gora-compiler/src/main/java/org/apache/gora/compiler/GoraCompiler.java
----------------------------------------------------------------------
diff --git a/gora-compiler/src/main/java/org/apache/gora/compiler/GoraCompiler.java b/gora-compiler/src/main/java/org/apache/gora/compiler/GoraCompiler.java
index 469bec2..b313bd4 100644
--- a/gora-compiler/src/main/java/org/apache/gora/compiler/GoraCompiler.java
+++ b/gora-compiler/src/main/java/org/apache/gora/compiler/GoraCompiler.java
@@ -19,6 +19,10 @@ package org.apache.gora.compiler;
import java.io.File;
import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
@@ -31,6 +35,7 @@ import org.apache.avro.Schema.Field;
import org.apache.avro.Schema.Type;
import org.apache.avro.SchemaNormalization;
import org.apache.avro.compiler.specific.SpecificCompiler;
+import org.apache.gora.compiler.utils.LicenseHeaders;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.node.JsonNodeFactory;
@@ -57,7 +62,7 @@ public class GoraCompiler extends SpecificCompiler {
GORA_HIDDEN_FIELD_NAMES.add(DIRTY_BYTES_FIELD_NAME);
}
- public static void compileSchema(File[] srcFiles, File dest)
+ public static void compileSchema(File[] srcFiles, File dest, LicenseHeaders licenseHeader)
throws IOException {
Schema.Parser parser = new Schema.Parser();
@@ -70,6 +75,13 @@ public class GoraCompiler extends SpecificCompiler {
GoraCompiler compiler = new GoraCompiler(newSchema);
compiler.setTemplateDir("/org/apache/gora/compiler/templates/");
compiler.compileToDestination(src, dest);
+
+ //Adding the license to the compiled file
+ Path path = Paths.get(generateDestinationFileName(dest.toString(), newSchema));
+ String content = new String(Files.readAllBytes(path), StandardCharsets.UTF_8);
+ content = licenseHeader.getLicense() + content.substring(content.indexOf("package"));
+ Files.write(path, content.getBytes(StandardCharsets.UTF_8));
+
LOG.info("Compiled into: {}", dest.getAbsolutePath());
}
}
@@ -284,4 +296,8 @@ public class GoraCompiler extends SpecificCompiler {
return SchemaNormalization.parsingFingerprint64(schema);
}
+ public static String generateDestinationFileName(String destDir, Schema schema) {
+ return destDir + File.separatorChar + schema.getNamespace().replace('.', File.separatorChar)
+ + File.separatorChar + schema.getName() + ".java";
+ }
}
http://git-wip-us.apache.org/repos/asf/gora/blob/1242a61d/gora-compiler/src/main/java/org/apache/gora/compiler/utils/LicenseHeaders.java
----------------------------------------------------------------------
diff --git a/gora-compiler/src/main/java/org/apache/gora/compiler/utils/LicenseHeaders.java b/gora-compiler/src/main/java/org/apache/gora/compiler/utils/LicenseHeaders.java
index 155e2d2..54e9676 100644
--- a/gora-compiler/src/main/java/org/apache/gora/compiler/utils/LicenseHeaders.java
+++ b/gora-compiler/src/main/java/org/apache/gora/compiler/utils/LicenseHeaders.java
@@ -263,4 +263,17 @@ public class LicenseHeaders {
public String getLicenseName(){
return licenseName;
}
+
+ /**
+ * Validate a given license name against the supported license
+ * @param licenseName name of the license
+ * @return a booolean whether the license is supported or not
+ */
+ public boolean isValidLicense(String licenseName) {
+ for (int i = 0; i < supportedLicenses.length; i++) {
+ if (supportedLicenses[i].equals(licenseName))
+ return true;
+ }
+ return false;
+ }
}