Add models for Apache StringUtils isEmpty methods (#264)


diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle
index d422e58..a48a882 100755
--- a/gradle/dependencies.gradle
+++ b/gradle/dependencies.gradle
@@ -67,6 +67,8 @@
     // freeze at 2.5.5 since it's not supported afterward
     cfCompatQual            : "org.checkerframework:checker-compat-qual:2.5.5",
     rxjava2                 : "io.reactivex.rxjava2:rxjava:2.1.2",
+    commonsLang3             : "org.apache.commons:commons-lang3:3.8.1",
+    commonsLang             : "commons-lang:commons-lang:2.6",
 ]
 
 ext.deps = [
diff --git a/nullaway/build.gradle b/nullaway/build.gradle
index 063259d..1a5f414 100644
--- a/nullaway/build.gradle
+++ b/nullaway/build.gradle
@@ -54,6 +54,8 @@
     testCompile deps.test.inferAnnotations
     testCompile deps.apt.javaxInject
     testCompile deps.test.rxjava2
+    testCompile deps.test.commonsLang
+    testCompile deps.test.commonsLang3
 }
 
 javadoc {
diff --git a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java
index bd0f800..d0af1cb 100644
--- a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java
+++ b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java
@@ -294,6 +294,11 @@
             .put(methodRef(Strings.class, "isNullOrEmpty(java.lang.String)"), 0)
             .put(methodRef(Objects.class, "isNull(java.lang.Object)"), 0)
             .put(methodRef("android.text.TextUtils", "isEmpty(java.lang.CharSequence)"), 0)
+            .put(methodRef("org.apache.commons.lang.StringUtils", "isEmpty(java.lang.String)"), 0)
+            .put(
+                methodRef(
+                    "org.apache.commons.lang3.StringUtils", "isEmpty(java.lang.CharSequence)"),
+                0)
             .build();
 
     private static final ImmutableSet<MethodRef> NULLABLE_RETURNS =
diff --git a/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNativeModels.java b/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNativeModels.java
index 773e4b8..14aa878 100644
--- a/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNativeModels.java
+++ b/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNativeModels.java
@@ -310,4 +310,17 @@
       s.hashCode();
     }
   }
+
+  static void apacheCommonsStuff() {
+    String s = null;
+    if (!org.apache.commons.lang.StringUtils.isEmpty(s)) {
+      // no warning due to isEmpty check
+      s.hashCode();
+    }
+    String t = null;
+    if (!org.apache.commons.lang3.StringUtils.isEmpty(t)) {
+      // no warning due to isEmpty check
+      t.hashCode();
+    }
+  }
 }