azkaban-aplcache

Merge pull request #508 from davidzchen/error-prone Use

10/2/2015 7:14:42 PM

Details

diff --git a/azkaban-common/src/main/java/azkaban/executor/ExecutorManager.java b/azkaban-common/src/main/java/azkaban/executor/ExecutorManager.java
index c86648e..7fb61bd 100644
--- a/azkaban-common/src/main/java/azkaban/executor/ExecutorManager.java
+++ b/azkaban-common/src/main/java/azkaban/executor/ExecutorManager.java
@@ -74,7 +74,7 @@ public class ExecutorManager extends EventHandler implements
   private ExecutingManagerUpdaterThread executingManager;
 
   private static final long DEFAULT_EXECUTION_LOGS_RETENTION_MS = 3 * 4 * 7
-      * 24 * 60 * 60 * 1000l;
+      * 24 * 60 * 60 * 1000L;
   private long lastCleanerThreadCheckTime = -1;
 
   private long lastThreadCheckTime = -1;
diff --git a/azkaban-common/src/main/java/azkaban/executor/JdbcExecutorLoader.java b/azkaban-common/src/main/java/azkaban/executor/JdbcExecutorLoader.java
index 8d230ba..25e61c3 100644
--- a/azkaban-common/src/main/java/azkaban/executor/JdbcExecutorLoader.java
+++ b/azkaban-common/src/main/java/azkaban/executor/JdbcExecutorLoader.java
@@ -101,7 +101,7 @@ public class JdbcExecutorLoader extends AbstractJdbcLoader implements
           runner.query(connection, LastInsertID.LAST_INSERT_ID,
               new LastInsertID());
 
-      if (id == -1l) {
+      if (id == -1L) {
         throw new ExecutorManagerException(
             "Execution id is not properly created.");
       }
@@ -779,7 +779,7 @@ public class JdbcExecutorLoader extends AbstractJdbcLoader implements
     @Override
     public Long handle(ResultSet rs) throws SQLException {
       if (!rs.next()) {
-        return -1l;
+        return -1L;
       }
       long id = rs.getLong(1);
       return id;
diff --git a/azkaban-common/src/main/java/azkaban/project/ProjectManager.java b/azkaban-common/src/main/java/azkaban/project/ProjectManager.java
index 0f09b9c..1e5e522 100644
--- a/azkaban-common/src/main/java/azkaban/project/ProjectManager.java
+++ b/azkaban-common/src/main/java/azkaban/project/ProjectManager.java
@@ -269,7 +269,7 @@ public class ProjectManager {
           "Project names must start with a letter, followed by any number of letters, digits, '-' or '_'.");
     }
 
-    if (projectsByName.contains(projectName)) {
+    if (projectsByName.containsKey(projectName)) {
       throw new ProjectManagerException("Project already exists.");
     }
 
diff --git a/azkaban-common/src/main/java/azkaban/server/session/SessionCache.java b/azkaban-common/src/main/java/azkaban/server/session/SessionCache.java
index fc4d64f..1237678 100644
--- a/azkaban-common/src/main/java/azkaban/server/session/SessionCache.java
+++ b/azkaban-common/src/main/java/azkaban/server/session/SessionCache.java
@@ -58,7 +58,7 @@ public class SessionCache {
    * @return
    */
   public Session getSession(String sessionId) {
-    Session elem = cache.<Session> get(sessionId);
+    Session elem = cache.get(Session.class, sessionId);
 
     return elem;
   }
diff --git a/azkaban-common/src/main/java/azkaban/trigger/JdbcTriggerLoader.java b/azkaban-common/src/main/java/azkaban/trigger/JdbcTriggerLoader.java
index 99b32f9..007d872 100644
--- a/azkaban-common/src/main/java/azkaban/trigger/JdbcTriggerLoader.java
+++ b/azkaban-common/src/main/java/azkaban/trigger/JdbcTriggerLoader.java
@@ -178,7 +178,7 @@ public class JdbcTriggerLoader extends AbstractJdbcLoader implements
           runner.query(connection, LastInsertID.LAST_INSERT_ID,
               new LastInsertID());
 
-      if (id == -1l) {
+      if (id == -1L) {
         logger.error("trigger id is not properly created.");
         throw new TriggerLoaderException("trigger id is not properly created.");
       }
@@ -257,7 +257,7 @@ public class JdbcTriggerLoader extends AbstractJdbcLoader implements
     @Override
     public Long handle(ResultSet rs) throws SQLException {
       if (!rs.next()) {
-        return -1l;
+        return -1L;
       }
 
       long id = rs.getLong(1);
diff --git a/azkaban-common/src/main/java/azkaban/utils/cache/Cache.java b/azkaban-common/src/main/java/azkaban/utils/cache/Cache.java
index a2ddc60..231d419 100644
--- a/azkaban-common/src/main/java/azkaban/utils/cache/Cache.java
+++ b/azkaban-common/src/main/java/azkaban/utils/cache/Cache.java
@@ -38,17 +38,16 @@ public class Cache {
     LRU, FIFO
   }
 
-  /* package */Cache(CacheManager manager) {
+  /* package */ Cache(CacheManager manager) {
     this.manager = manager;
   }
 
-  @SuppressWarnings("unchecked")
-  public <T> T get(Object key) {
+  public <T> T get(Class<T> clazz, Object key) {
     Element<?> element = elementMap.get(key);
     if (element == null) {
       return null;
     }
-    return (T) element.getElement();
+    return clazz.cast(element.getElement());
   }
 
   public <T> void put(Object key, T item) {
diff --git a/azkaban-common/src/main/java/azkaban/utils/TypedMapWrapper.java b/azkaban-common/src/main/java/azkaban/utils/TypedMapWrapper.java
index 7118e8c..62208f3 100644
--- a/azkaban-common/src/main/java/azkaban/utils/TypedMapWrapper.java
+++ b/azkaban-common/src/main/java/azkaban/utils/TypedMapWrapper.java
@@ -71,7 +71,7 @@ public class TypedMapWrapper<K, V> {
   }
 
   public Long getLong(K key) {
-    return getLong(key, -1l);
+    return getLong(key, -1L);
   }
 
   public Long getLong(K key, Long defaultVal) {
diff --git a/azkaban-common/src/test/java/azkaban/executor/JavaJobRunnerMain.java b/azkaban-common/src/test/java/azkaban/executor/JavaJobRunnerMain.java
index 67d0284..cf46637 100644
--- a/azkaban-common/src/test/java/azkaban/executor/JavaJobRunnerMain.java
+++ b/azkaban-common/src/test/java/azkaban/executor/JavaJobRunnerMain.java
@@ -196,7 +196,7 @@ public class JavaJobRunnerMain {
       }
       writer.write("}".getBytes());
     } catch (Exception e) {
-      new RuntimeException("Unable to store output properties to: "
+      throw new RuntimeException("Unable to store output properties to: "
           + outputFileStr);
     } finally {
       try {
diff --git a/azkaban-common/src/test/java/azkaban/jobExecutor/PythonJobTest.java b/azkaban-common/src/test/java/azkaban/jobExecutor/PythonJobTest.java
index ee767de..7320c15 100644
--- a/azkaban-common/src/test/java/azkaban/jobExecutor/PythonJobTest.java
+++ b/azkaban-common/src/test/java/azkaban/jobExecutor/PythonJobTest.java
@@ -24,6 +24,7 @@ import org.apache.log4j.Logger;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import azkaban.utils.Props;
@@ -82,6 +83,7 @@ public class PythonJobTest {
     Utils.removeFile(scriptFile);
   }
 
+  @Ignore("Test appears to hang.")
   @Test
   public void testPythonJob() {
 
diff --git a/azkaban-common/src/test/java/azkaban/project/ProjectTest.java b/azkaban-common/src/test/java/azkaban/project/ProjectTest.java
index da36d46..63c19f0 100644
--- a/azkaban-common/src/test/java/azkaban/project/ProjectTest.java
+++ b/azkaban-common/src/test/java/azkaban/project/ProjectTest.java
@@ -28,8 +28,8 @@ public class ProjectTest {
   @Test
   public void testToAndFromObject() throws Exception {
     Project project = new Project(1, "tesTing");
-    project.setCreateTimestamp(1l);
-    project.setLastModifiedTimestamp(2l);
+    project.setCreateTimestamp(1L);
+    project.setLastModifiedTimestamp(2L);
     project.setDescription("I am a test");
     project.setUserPermission("user1", new Permission(new Type[] { Type.ADMIN,
         Type.EXECUTE }));
diff --git a/azkaban-common/src/test/java/azkaban/utils/cache/CacheTest.java b/azkaban-common/src/test/java/azkaban/utils/cache/CacheTest.java
index 905cf5e..c01d3f8 100644
--- a/azkaban-common/src/test/java/azkaban/utils/cache/CacheTest.java
+++ b/azkaban-common/src/test/java/azkaban/utils/cache/CacheTest.java
@@ -34,19 +34,19 @@ public class CacheTest {
     cache.insertElement("key3", "val3");
     cache.insertElement("key4", "val4");
 
-    Assert.assertEquals(cache.get("key2"), "val2");
-    Assert.assertEquals(cache.get("key3"), "val3");
-    Assert.assertEquals(cache.get("key4"), "val4");
-    Assert.assertEquals(cache.get("key1"), "val1");
+    Assert.assertEquals(cache.get(String.class, "key2"), "val2");
+    Assert.assertEquals(cache.get(String.class, "key3"), "val3");
+    Assert.assertEquals(cache.get(String.class, "key4"), "val4");
+    Assert.assertEquals(cache.get(String.class, "key1"), "val1");
     Assert.assertEquals(4, cache.getSize());
 
     cache.insertElement("key5", "val5");
     Assert.assertEquals(4, cache.getSize());
-    Assert.assertEquals(cache.get("key3"), "val3");
-    Assert.assertEquals(cache.get("key4"), "val4");
-    Assert.assertEquals(cache.get("key1"), "val1");
-    Assert.assertEquals(cache.get("key5"), "val5");
-    Assert.assertNull(cache.get("key2"));
+    Assert.assertEquals(cache.get(String.class, "key3"), "val3");
+    Assert.assertEquals(cache.get(String.class, "key4"), "val4");
+    Assert.assertEquals(cache.get(String.class, "key1"), "val1");
+    Assert.assertEquals(cache.get(String.class, "key5"), "val5");
+    Assert.assertNull(cache.get(String.class, "key2"));
   }
 
   @Test
@@ -67,19 +67,19 @@ public class CacheTest {
     cache.insertElement("key3", "val3");
     cache.insertElement("key4", "val4");
 
-    Assert.assertEquals(cache.get("key2"), "val2");
-    Assert.assertEquals(cache.get("key3"), "val3");
-    Assert.assertEquals(cache.get("key4"), "val4");
-    Assert.assertEquals(cache.get("key1"), "val1");
+    Assert.assertEquals(cache.get(String.class, "key2"), "val2");
+    Assert.assertEquals(cache.get(String.class, "key3"), "val3");
+    Assert.assertEquals(cache.get(String.class, "key4"), "val4");
+    Assert.assertEquals(cache.get(String.class, "key1"), "val1");
     Assert.assertEquals(4, cache.getSize());
 
     cache.insertElement("key5", "val5");
     Assert.assertEquals(4, cache.getSize());
-    Assert.assertEquals(cache.get("key3"), "val3");
-    Assert.assertEquals(cache.get("key4"), "val4");
-    Assert.assertEquals(cache.get("key2"), "val2");
-    Assert.assertEquals(cache.get("key5"), "val5");
-    Assert.assertNull(cache.get("key1"));
+    Assert.assertEquals(cache.get(String.class, "key3"), "val3");
+    Assert.assertEquals(cache.get(String.class, "key4"), "val4");
+    Assert.assertEquals(cache.get(String.class, "key2"), "val2");
+    Assert.assertEquals(cache.get(String.class, "key5"), "val5");
+    Assert.assertNull(cache.get(String.class, "key1"));
   }
 
   @Test
@@ -99,7 +99,7 @@ public class CacheTest {
       } catch (InterruptedException e) {
       }
     }
-    Assert.assertEquals(cache.get("key1"), "val1");
+    Assert.assertEquals(cache.get(String.class, "key1"), "val1");
     cache.insertElement("key2", "val2");
     synchronized (this) {
       try {
@@ -107,8 +107,8 @@ public class CacheTest {
       } catch (InterruptedException e) {
       }
     }
-    Assert.assertNull(cache.get("key1"));
-    Assert.assertEquals("val2", cache.get("key2"));
+    Assert.assertNull(cache.get(String.class, "key1"));
+    Assert.assertEquals("val2", cache.get(String.class, "key2"));
 
     synchronized (this) {
       try {
@@ -117,7 +117,7 @@ public class CacheTest {
       }
     }
 
-    Assert.assertNull(cache.get("key2"));
+    Assert.assertNull(cache.get(String.class, "key2"));
   }
 
   @Test
@@ -137,7 +137,7 @@ public class CacheTest {
       } catch (InterruptedException e) {
       }
     }
-    Assert.assertEquals(cache.get("key1"), "val1");
+    Assert.assertEquals(cache.get(String.class, "key1"), "val1");
     cache.insertElement("key2", "val2");
     synchronized (this) {
       try {
@@ -145,8 +145,8 @@ public class CacheTest {
       } catch (InterruptedException e) {
       }
     }
-    Assert.assertEquals("val1", cache.get("key1"));
-    Assert.assertNull(cache.get("key3"));
+    Assert.assertEquals("val1", cache.get(String.class, "key1"));
+    Assert.assertNull(cache.get(String.class, "key3"));
     synchronized (this) {
       try {
         wait(1000);
@@ -154,6 +154,6 @@ public class CacheTest {
       }
     }
 
-    Assert.assertNull(cache.get("key2"));
+    Assert.assertNull(cache.get(String.class, "key2"));
   }
 }

build.gradle 26(+23 -3)

diff --git a/build.gradle b/build.gradle
index 6219bf0..7a5db1e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,10 +1,14 @@
 buildscript {
   repositories {
     mavenCentral()
+    maven {
+      url 'https://plugins.gradle.org/m2/'
+    }
   }
   dependencies {
     classpath 'com.linkedin:gradle-dustjs-plugin:1.0.0'
     classpath 'de.obqo.gradle:gradle-lesscss-plugin:1.0-1.3.3'
+    classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.8'
   }
 }
 
@@ -32,6 +36,11 @@ def cmdCaller = { commandln ->
 subprojects {
   apply plugin: 'java'
   apply plugin: 'eclipse'
+  apply plugin: 'net.ltgt.errorprone'
+
+  configurations.errorprone {
+    resolutionStrategy.force 'com.google.errorprone:error_prone_core:2.0.5'
+  }
 
   /**
    * Gets the version name from the latest Git tag
@@ -78,6 +87,9 @@ project(':azkaban-common') {
     all {
       transitive = false
     }
+    errorprone {
+      transitive = true
+    }
   }
 
   dependencies {
@@ -114,11 +126,11 @@ project(':azkaban-common') {
     testCompile('junit:junit:4.11')
     testCompile('org.hamcrest:hamcrest-all:1.3')
   }
-  
+
   tasks.withType(JavaCompile) {
     options.encoding = "UTF-8"
   }
-  
+
 }
 
 project(':azkaban-migration') {
@@ -126,6 +138,9 @@ project(':azkaban-migration') {
     all {
       transitive = false
     }
+    errorprone {
+      transitive = true
+    }
   }
 
   dependencies {
@@ -174,6 +189,9 @@ project(':azkaban-webserver') {
     generateRestli {
       transitive = true
     }
+    errorprone {
+      transitive = true
+    }
   }
 
   dependencies {
@@ -297,6 +315,9 @@ project(':azkaban-execserver') {
     all {
       transitive = false
     }
+    errorprone {
+      transitive = true
+    }
   }
 
   dependencies {
@@ -312,7 +333,6 @@ project(':azkaban-execserver') {
     compile('org.mortbay.jetty:jetty-util:6.1.26')
     compile('org.codehaus.jackson:jackson-core-asl:1.9.5')
     compile('org.codehaus.jackson:jackson-mapper-asl:1.9.5')
-    
 
     testCompile('junit:junit:4.11')
     testCompile('org.hamcrest:hamcrest-all:1.3')