You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by pa...@apache.org on 2016/10/18 23:45:22 UTC
[02/11] drill git commit: DRILL-4203: Fix DrillVersionInfo to make it
provide a valid version number even during the unit tests.
DRILL-4203: Fix DrillVersionInfo to make it provide a valid version number even during the unit tests.
This is now a build-time generated class, rather than one that looks on the
classpath for META-INF files.
This pattern for file generation with parameters passed from the POM files
was borrowed from parquet-mr.
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/2f4b5ef7
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/2f4b5ef7
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/2f4b5ef7
Branch: refs/heads/master
Commit: 2f4b5ef717ed78a1ebb65687af9688a902e02041
Parents: 17b9648
Author: Jason Altekruse <al...@gmail.com>
Authored: Wed Jan 27 10:20:01 2016 -0800
Committer: Parth Chandra <pa...@apache.org>
Committed: Fri Oct 14 11:07:38 2016 -0700
----------------------------------------------------------------------
.../drill/common/util/DrillVersionInfo.java | 58 -------------
.../org/apache/drill/version/Generator.java | 90 ++++++++++++++++++++
exec/vector/pom.xml | 22 +++++
3 files changed, 112 insertions(+), 58 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/2f4b5ef7/common/src/main/java/org/apache/drill/common/util/DrillVersionInfo.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/util/DrillVersionInfo.java b/common/src/main/java/org/apache/drill/common/util/DrillVersionInfo.java
deleted file mode 100644
index 5fb0d41..0000000
--- a/common/src/main/java/org/apache/drill/common/util/DrillVersionInfo.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.util;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.jar.Manifest;
-
-/**
- * Get access to the Drill Version
- */
-public class DrillVersionInfo {
-
- /**
- * Get the Drill version from the Manifest file
- * @return the version number as x.y.z
- */
- public static String getVersion() {
- String appName = "";
- String appVersion = "Unknown";
- try {
- Enumeration<URL> resources = DrillVersionInfo.class.getClassLoader()
- .getResources("META-INF/MANIFEST.MF");
- while (resources.hasMoreElements()) {
- Manifest manifest = new Manifest(resources.nextElement().openStream());
- // check that this is your manifest and do what you need or
- // get the next one
- appName = manifest.getMainAttributes()
- .getValue("Implementation-Title");
- if (appName != null && appName.toLowerCase().contains("drill")) {
- appVersion = manifest.getMainAttributes()
- .getValue("Implementation-Version");
- }
- }
- } catch (IOException except) {
- appVersion = "Unknown";
- }
- return appVersion;
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/2f4b5ef7/common/src/main/java/org/apache/drill/version/Generator.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/version/Generator.java b/common/src/main/java/org/apache/drill/version/Generator.java
new file mode 100644
index 0000000..66607ed
--- /dev/null
+++ b/common/src/main/java/org/apache/drill/version/Generator.java
@@ -0,0 +1,90 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.drill.version;
+
+import com.google.common.base.Preconditions;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
+/**
+ * This class is called from the exec->vector module using Maven-exec.
+ * To make use of the class, it needs to be compiled in an earlier module.
+ * For the configuration see the pom.xml file in that module.
+ */
+public class Generator {
+
+ public static void main(String[] args) {
+ String toReplace = "REPLACE_WITH_DRILL_VERSION";
+ String template =
+ "/**\n" +
+ " * Licensed to the Apache Software Foundation (ASF) under one\n" +
+ " * or more contributor license agreements. See the NOTICE file\n" +
+ " * distributed with this work for additional information\n" +
+ " * regarding copyright ownership. The ASF licenses this file\n" +
+ " * to you under the Apache License, Version 2.0 (the\n" +
+ " * \"License\"); you may not use this file except in compliance\n" +
+ " * with the License. You may obtain a copy of the License at\n" +
+ " *\n" +
+ " * http://www.apache.org/licenses/LICENSE-2.0\n" +
+ " *\n" +
+ " * Unless required by applicable law or agreed to in writing, software\n" +
+ " * distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
+ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
+ " * See the License for the specific language governing permissions and\n" +
+ " * limitations under the License.\n" +
+ " */\n" +
+ "package org.apache.drill.common.util;\n" +
+ "\n" +
+ "/**\n" +
+ " * Get access to the Drill Version\n" +
+ " */\n" +
+ "// File generated during build, DO NOT EDIT!!\n" +
+ "public class DrillVersionInfo {\n" +
+ "\n" +
+ " /**\n" +
+ " * Get the Drill version from the Manifest file\n" +
+ " * @return the version number as x.y.z\n" +
+ " */\n" +
+ " public static String getVersion() {\n" +
+ " return \"" + toReplace + "\";\n" +
+ " }\n" +
+ "}\n";
+ Preconditions.checkArgument(args.length == 2,
+ "Two arguments expected, the first is the target java source directory for the generated file" +
+ " and the second is the Drill version.");
+ File srcFile = new File(args[0] + "/org/apache/drill/common/util/DrillVersionInfo.java");
+ srcFile = srcFile.getAbsoluteFile();
+ File parent = srcFile.getParentFile();
+ if (!parent.exists()) {
+ if (!parent.mkdirs()) {
+ throw new RuntimeException("Error generating Drill version info class. Couldn't mkdirs for " + parent);
+ }
+ }
+ final FileWriter writer;
+ try {
+ writer = new FileWriter(srcFile);
+ writer.write(template.replace(toReplace, args[1]));
+ writer.close();
+ } catch (IOException e) {
+ throw new RuntimeException("Error generating Drill version info class. " +
+ "Couldn't open source file for writing: " + srcFile);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/drill/blob/2f4b5ef7/exec/vector/pom.xml
----------------------------------------------------------------------
diff --git a/exec/vector/pom.xml b/exec/vector/pom.xml
index 861ac79..5e5e3ed 100644
--- a/exec/vector/pom.xml
+++ b/exec/vector/pom.xml
@@ -120,6 +120,28 @@
</execution>
</executions>
</plugin>
+ <plugin> <!-- generate class to provide current version number -->
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>1.2.1</version>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>java</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <mainClass>org.apache.drill.version.Generator</mainClass>
+ <includePluginDependencies>true</includePluginDependencies>
+ <arguments>
+ <argument>${basedir}/target/generated-sources</argument>
+ <argument>${project.version}</argument>
+ </arguments>
+ <sourceRoot>${basedir}/target/generated-sources</sourceRoot>
+ </configuration>
+ </plugin>
</plugins>
<pluginManagement>
<plugins>