diff options
author | cparsons <cparsons@google.com> | 2018-06-29 13:20:56 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-29 13:22:22 -0700 |
commit | 2fd4828d432876949f884561daf4bd52129866a4 (patch) | |
tree | 526a78fd7946451984bff85a1ffd09963b8317c1 /src/main/java/com/google/devtools/build/skydoc | |
parent | d3f7f7ae1369834b5f81d62474d20541d8b1a918 (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')
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(); + } +} |