aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/skydoc
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-06-29 13:20:56 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-29 13:22:22 -0700
commit2fd4828d432876949f884561daf4bd52129866a4 (patch)
tree526a78fd7946451984bff85a1ffd09963b8317c1 /src/main/java/com/google/devtools/build/skydoc
parentd3f7f7ae1369834b5f81d62474d20541d8b1a918 (diff)
Create and integrate JavaBootstrap, and use fake top-level Java skylark objects for Skydoc.
RELNOTES: None. PiperOrigin-RevId: 202697176
Diffstat (limited to 'src/main/java/com/google/devtools/build/skydoc')
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/BUILD3
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/SkydocMain.java8
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD27
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java103
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java131
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaProtoCommon.java52
6 files changed, 324 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/skydoc/BUILD b/src/main/java/com/google/devtools/build/skydoc/BUILD
index 6299f095d4..3573bb5db3 100644
--- a/src/main/java/com/google/devtools/build/skydoc/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/BUILD
@@ -20,6 +20,7 @@ filegroup(
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple:srcs",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config:srcs",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp:srcs",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java:srcs",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform:srcs",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository:srcs",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test:srcs",
@@ -46,6 +47,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test",
@@ -55,6 +57,7 @@ java_library(
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test",
diff --git a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
index 34e98bc0e9..c47a20a0c7 100644
--- a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
+++ b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
@@ -23,6 +23,7 @@ import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidBootstrap;
import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleBootstrap;
import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigBootstrap;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcBootstrap;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaBootstrap;
import com.google.devtools.build.lib.skylarkbuildapi.platform.PlatformBootstrap;
import com.google.devtools.build.lib.skylarkbuildapi.repository.RepositoryBootstrap;
import com.google.devtools.build.lib.skylarkbuildapi.test.TestingBootstrap;
@@ -55,6 +56,9 @@ import com.google.devtools.build.skydoc.fakebuildapi.android.FakeApkInfo.FakeApk
import com.google.devtools.build.skydoc.fakebuildapi.apple.FakeAppleCommon;
import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigSkylarkCommon;
import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcModule;
+import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaInfo.FakeJavaInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaProtoCommon;
import com.google.devtools.build.skydoc.fakebuildapi.platform.FakePlatformCommon;
import com.google.devtools.build.skydoc.fakebuildapi.repository.FakeRepositoryModule;
import com.google.devtools.build.skydoc.fakebuildapi.test.FakeTestingModule;
@@ -252,6 +256,9 @@ public class SkydocMain {
AppleBootstrap appleBootstrap = new AppleBootstrap(new FakeAppleCommon());
ConfigBootstrap configBootstrap = new ConfigBootstrap(new FakeConfigSkylarkCommon());
CcBootstrap ccBootstrap = new CcBootstrap(new FakeCcModule());
+ JavaBootstrap javaBootstrap = new JavaBootstrap(new FakeJavaCommon(),
+ new FakeJavaInfoProvider(),
+ new FakeJavaProtoCommon());
PlatformBootstrap platformBootstrap = new PlatformBootstrap(new FakePlatformCommon());
RepositoryBootstrap repositoryBootstrap = new RepositoryBootstrap(new FakeRepositoryModule());
TestingBootstrap testingBootstrap = new TestingBootstrap(new FakeTestingModule());
@@ -265,6 +272,7 @@ public class SkydocMain {
appleBootstrap.addBindingsToBuilder(envBuilder);
ccBootstrap.addBindingsToBuilder(envBuilder);
configBootstrap.addBindingsToBuilder(envBuilder);
+ javaBootstrap.addBindingsToBuilder(envBuilder);
platformBootstrap.addBindingsToBuilder(envBuilder);
repositoryBootstrap.addBindingsToBuilder(envBuilder);
testingBootstrap.addBindingsToBuilder(envBuilder);
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD
new file mode 100644
index 0000000000..37cb809d02
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD
@@ -0,0 +1,27 @@
+package(
+ default_visibility = ["//src:__subpackages__"],
+)
+
+licenses(["notice"]) # Apache 2.0
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+)
+
+java_library(
+ name = "java",
+ srcs = glob(["*.java"]),
+ deps = [
+ "//src/main/java/com/google/devtools/build/lib:events",
+ "//src/main/java/com/google/devtools/build/lib:skylarkinterface",
+ "//src/main/java/com/google/devtools/build/lib:syntax",
+ "//src/main/java/com/google/devtools/build/lib/cmdline",
+ "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
+ "//third_party:guava",
+ "//third_party:jsr305",
+ ],
+)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java
new file mode 100644
index 0000000000..8ca3718447
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java
@@ -0,0 +1,103 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed 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 com.google.devtools.build.skydoc.fakebuildapi.java;
+
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.SkylarkActionFactoryApi;
+import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
+import com.google.devtools.build.lib.skylarkbuildapi.TransitiveInfoCollectionApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaCommonApi;
+import com.google.devtools.build.lib.syntax.Environment;
+import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.skydoc.fakebuildapi.FakeProviderApi;
+import javax.annotation.Nullable;
+
+/**
+ * Fake implementation of {@link JavaCommonApi}.
+ */
+public class FakeJavaCommon implements JavaCommonApi<FileApi, FakeJavaInfo, SkylarkRuleContextApi,
+ TransitiveInfoCollectionApi, SkylarkActionFactoryApi> {
+
+ @Override
+ public FakeJavaInfo create(@Nullable Object actionsUnchecked, Object compileTimeJars,
+ Object runtimeJars, Boolean useIjar, @Nullable Object javaToolchainUnchecked,
+ Object transitiveCompileTimeJars, Object transitiveRuntimeJars, Object sourceJars,
+ Location location, Environment environment) throws EvalException {
+ return new FakeJavaInfo();
+ }
+
+ @Override
+ public ProviderApi getJavaProvider() {
+ return new FakeProviderApi();
+ }
+
+ @Override
+ public FakeJavaInfo createJavaCompileAction(SkylarkRuleContextApi skylarkRuleContext,
+ SkylarkList<FileApi> sourceJars, SkylarkList<FileApi> sourceFiles, FileApi outputJar,
+ SkylarkList<String> javacOpts, SkylarkList<FakeJavaInfo> deps,
+ SkylarkList<FakeJavaInfo> exports, SkylarkList<FakeJavaInfo> plugins,
+ SkylarkList<FakeJavaInfo> exportedPlugins, String strictDepsMode,
+ TransitiveInfoCollectionApi javaToolchain, TransitiveInfoCollectionApi hostJavabase,
+ SkylarkList<FileApi> sourcepathEntries, SkylarkList<FileApi> resources, Boolean neverlink,
+ Environment environment) throws EvalException, InterruptedException {
+ return new FakeJavaInfo();
+ }
+
+ @Override
+ public FileApi runIjar(SkylarkActionFactoryApi actions, FileApi jar, Object targetLabel,
+ TransitiveInfoCollectionApi javaToolchain) throws EvalException {
+ return null;
+ }
+
+ @Override
+ public FileApi stampJar(SkylarkActionFactoryApi actions, FileApi jar, Label targetLabel,
+ TransitiveInfoCollectionApi javaToolchain) throws EvalException {
+ return null;
+ }
+
+ @Override
+ public FileApi packSources(SkylarkActionFactoryApi actions, FileApi outputJar,
+ SkylarkList<FileApi> sourceFiles, SkylarkList<FileApi> sourceJars,
+ TransitiveInfoCollectionApi javaToolchain, TransitiveInfoCollectionApi hostJavabase)
+ throws EvalException {
+ return null;
+ }
+
+ @Override
+ public ImmutableList<String> getDefaultJavacOpts(SkylarkRuleContextApi skylarkRuleContext,
+ String javaToolchainAttr) throws EvalException {
+ return ImmutableList.of();
+ }
+
+ @Override
+ public FakeJavaInfo mergeJavaProviders(SkylarkList<FakeJavaInfo> providers) {
+ return new FakeJavaInfo();
+ }
+
+ @Override
+ public FakeJavaInfo makeNonStrict(FakeJavaInfo javaInfo) {
+ return new FakeJavaInfo();
+ }
+
+ @Override
+ public ProviderApi getJavaRuntimeProvider() {
+ return new FakeProviderApi();
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java
new file mode 100644
index 0000000000..ee09908be9
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java
@@ -0,0 +1,131 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed 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 com.google.devtools.build.skydoc.fakebuildapi.java;
+
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaAnnotationProcessingApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaCompilationInfoProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaRuleOutputJarsProviderApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.Environment;
+import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
+
+/**
+ * Fake implementation of {@link JavaInfoApi}.
+ */
+public class FakeJavaInfo implements JavaInfoApi<FileApi> {
+
+ @Override
+ public SkylarkNestedSet getTransitiveRuntimeJars() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet getTransitiveCompileTimeJars() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet getCompileTimeJars() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet getFullCompileTimeJars() {
+ return null;
+ }
+
+ @Override
+ public SkylarkList<FileApi> getSourceJars() {
+ return null;
+ }
+
+ @Override
+ public JavaRuleOutputJarsProviderApi<?> getOutputJars() {
+ return null;
+ }
+
+ @Override
+ public JavaAnnotationProcessingApi<?> getGenJarsProvider() {
+ return null;
+ }
+
+ @Override
+ public JavaCompilationInfoProviderApi<?> getCompilationInfoProvider() {
+ return null;
+ }
+
+ @Override
+ public SkylarkList<FileApi> getRuntimeOutputJars() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getTransitiveDeps() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getTransitiveRuntimeDeps() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getTransitiveSourceJars() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<Label> getTransitiveExports() {
+ return null;
+ }
+
+ @Override
+ public String toProto(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public String toJson(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+
+ /**
+ * Fake implementation of {@link JavaInfoProviderApi}.
+ */
+ public static class FakeJavaInfoProvider implements JavaInfoProviderApi {
+
+ @Override
+ public JavaInfoApi<?> javaInfo(FileApi outputJarApi, Object compileJarApi, Object sourceJarApi,
+ Boolean neverlink, SkylarkList<?> deps, SkylarkList<?> runtimeDeps, SkylarkList<?> exports,
+ Object actionsApi, Object sourcesApi, Object sourceJarsApi, Object useIjarApi,
+ Object javaToolchainApi, Object hostJavabaseApi, Object jdepsApi, Location loc,
+ Environment env) throws EvalException {
+ return new FakeJavaInfo();
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaProtoCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaProtoCommon.java
new file mode 100644
index 0000000000..49af5793d6
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaProtoCommon.java
@@ -0,0 +1,52 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed 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 com.google.devtools.build.skydoc.fakebuildapi.java;
+
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
+import com.google.devtools.build.lib.skylarkbuildapi.TransitiveInfoCollectionApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaProtoCommonApi;
+import com.google.devtools.build.lib.syntax.EvalException;
+
+/**
+ * Fake implementation of {@link JavaProtoCommonApi}.
+ */
+public class FakeJavaProtoCommon
+ implements JavaProtoCommonApi<FileApi, SkylarkRuleContextApi, TransitiveInfoCollectionApi> {
+
+ @Override
+ public void createProtoCompileAction(SkylarkRuleContextApi skylarkRuleContext,
+ TransitiveInfoCollectionApi target, FileApi sourceJar, String protoToolchainAttr,
+ String flavour) throws EvalException {}
+
+ @Override
+ public boolean hasProtoSources(TransitiveInfoCollectionApi target) {
+ return false;
+ }
+
+ @Override
+ public JavaInfoApi<FileApi> getRuntimeToolchainProvider(SkylarkRuleContextApi skylarkRuleContext,
+ String protoToolchainAttr) throws EvalException {
+ return new FakeJavaInfo();
+ }
+
+ @Override
+ public ImmutableList<String> getJavacOpts(SkylarkRuleContextApi skylarkRuleContext,
+ String javaToolchainAttr) throws EvalException {
+ return ImmutableList.of();
+ }
+}