Merge branch 'stable-2.14' into stable-2.15

* stable-2.14:
  Bazel: Add remaining fixes for --incompatible_disallow_legacy_java_provider

Change-Id: I8b9bddfe077e5c116ae875c0e5038ca1b3d59e5a
diff --git a/tools/classpath.bzl b/tools/classpath.bzl
index 55479c5..682ee3c 100644
--- a/tools/classpath.bzl
+++ b/tools/classpath.bzl
@@ -1,9 +1,9 @@
 def _classpath_collector(ctx):
     all = []
     for d in ctx.attr.deps:
-        if hasattr(d, "java"):
-            all.append(d.java.transitive_runtime_deps)
-            all.append(d.java.compilation_info.runtime_classpath)
+        if JavaInfo in d:
+            all.append(d[JavaInfo].transitive_runtime_deps)
+            all.append(d[JavaInfo].compilation_info.runtime_classpath)
         elif hasattr(d, "files"):
             all.append(d.files)
 
diff --git a/tools/gwt.bzl b/tools/gwt.bzl
index b6f5a07..aada689 100644
--- a/tools/gwt.bzl
+++ b/tools/gwt.bzl
@@ -192,11 +192,11 @@
 def _get_transitive_closure(ctx):
     deps = []
     for dep in ctx.attr.module_deps:
-        deps.append(dep.java.transitive_runtime_deps)
-        deps.append(dep.java.transitive_source_jars)
+        deps.append(dep[JavaInfo].transitive_runtime_deps)
+        deps.append(dep[JavaInfo].transitive_source_jars)
     for dep in ctx.attr.deps:
-        if hasattr(dep, "java"):
-            deps.append(dep.java.transitive_runtime_deps)
+        if JavaInfo in dep:
+            deps.append(dep[JavaInfo].transitive_runtime_deps)
         elif hasattr(dep, "files"):
             deps.append(dep.files)
 
diff --git a/tools/javadoc.bzl b/tools/javadoc.bzl
index 204f569..97986ff 100644
--- a/tools/javadoc.bzl
+++ b/tools/javadoc.bzl
@@ -17,8 +17,10 @@
 def _impl(ctx):
     zip_output = ctx.outputs.zip
 
-    transitive_jars = depset(transitive = [l.java.transitive_deps for l in ctx.attr.libs])
-    source_jars = depset(transitive = [l.java.source_jars for l in ctx.attr.libs])
+    transitive_jars = depset(transitive = [j[JavaInfo].transitive_deps for j in ctx.attr.libs])
+    # TODO(davido): Remove list to depset conversion on source_jars, when this issue is fixed:
+    # https://github.com/bazelbuild/bazel/issues/4221
+    source_jars = depset(transitive = [depset(j[JavaInfo].source_jars) for j in ctx.attr.libs])
 
     transitive_jar_paths = [j.path for j in transitive_jars.to_list()]
     dir = ctx.outputs.zip.path + ".dir"
diff --git a/tools/pkg_war.bzl b/tools/pkg_war.bzl
index ce094ff..931450b 100644
--- a/tools/pkg_war.bzl
+++ b/tools/pkg_war.bzl
@@ -56,8 +56,8 @@
 
     transitive_libs = []
     for l in ctx.attr.libs:
-        if hasattr(l, "java"):
-            transitive_libs.append(l.java.transitive_runtime_deps)
+        if JavaInfo in l:
+            transitive_libs.append(l[JavaInfo].transitive_runtime_deps)
         elif hasattr(l, "files"):
             transitive_libs.append(l.files)
 
@@ -74,8 +74,8 @@
     transitive_context_libs = []
     if ctx.attr.context:
         for jar in ctx.attr.context:
-            if hasattr(jar, "java"):
-                transitive_context_libs.append(jar.java.transitive_runtime_deps)
+            if JavaInfo in jar:
+                transitive_context_libs.append(jar[JavaInfo].transitive_runtime_deps)
             elif hasattr(jar, "files"):
                 transitive_context_libs.append(jar.files)
     transitive_context_deps = depset(transitive = transitive_context_libs)