diff --git a/bazel_tools/java.bzl b/bazel_tools/java.bzl
index 57a22aae6d..1b420583a0 100644
--- a/bazel_tools/java.bzl
+++ b/bazel_tools/java.bzl
@@ -2,6 +2,8 @@
# SPDX-License-Identifier: Apache-2.0
load("//bazel_tools:pom_file.bzl", "pom_file")
+load("@os_info//:os_info.bzl", "is_windows")
+load("@com_github_google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library")
_java_home_runtime_build_template = """
java_runtime(
@@ -29,14 +31,53 @@ java_home_runtime = repository_rule(
def _wrap_rule(rule, name = "", **kwargs):
rule(name = name, **kwargs)
-def da_java_library(name, **kwargs):
- _wrap_rule(native.java_library, name, **kwargs)
+def da_java_library(
+ name,
+ deps,
+ srcs,
+ data = [],
+ resources = [],
+ resource_jars = [],
+ resource_strip_prefix = None,
+ tags = [],
+ visibility = None,
+ exports = [],
+ **kwargs):
+ root_packages = None
+ for tag in tags:
+ if tag.startswith("javadoc_root_packages="):
+ root_packages = tag[len("javadoc_root_packages="):].split(":")
+
+ native.java_library(
+ name = name,
+ deps = deps,
+ srcs = srcs,
+ data = data,
+ resources = resources,
+ resource_jars = resource_jars,
+ resource_strip_prefix = resource_strip_prefix,
+ tags = tags,
+ visibility = visibility,
+ exports = exports,
+ **kwargs
+ )
pom_file(
name = name + "_pom",
+ tags = tags,
target = ":" + name,
visibility = ["//visibility:public"],
)
+ # Disable the building of Javadoc on Windows as the rule fails to
+ # find the sources under Windows.
+ if root_packages and is_windows == False:
+ javadoc_library(
+ name = name + "_javadoc",
+ deps = deps + [name],
+ srcs = srcs,
+ root_packages = root_packages,
+ )
+
def da_java_binary(name, **kwargs):
_wrap_rule(native.java_binary, name, **kwargs)
pom_file(
diff --git a/bazel_tools/pom_template.xml b/bazel_tools/pom_template.xml
index 2b1c917594..2df87c9898 100644
--- a/bazel_tools/pom_template.xml
+++ b/bazel_tools/pom_template.xml
@@ -7,6 +7,34 @@
{artifactId}
{version}
jar
+
+ {artifactId}
+ TBD
+ https://github.com/digital-asset/daml
+
+
+
+ Apache License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+
+ Digital Asset SDK Feedback
+ sdk-feedback@digitalasset.com
+ Digital Asset (Switzerland) GmbH
+ http://www.daml.com
+
+
+
+
+ scm:git:git://github.com/digital-asset/daml.git
+ scm:git:ssh://github.com:digital-asset/daml.git
+ http://github.com/digital-asset/daml/tree/master
+
+
{generated_bzl_deps}
diff --git a/deps.bzl b/deps.bzl
index 73b43fc46d..e502ec7662 100644
--- a/deps.bzl
+++ b/deps.bzl
@@ -232,3 +232,11 @@ java_import(
name = "gson",
actual = "@com_google_code_gson_gson//jar",
)
+
+ if "com_github_google_bazel_common" not in native.existing_rules():
+ http_archive(
+ name = "com_github_google_bazel_common",
+ sha256 = "ccdd09559b49c7efd9e4b0b617b18e2a4bbdb2142fc30dfd3501eb5fa1294dcc",
+ strip_prefix = "bazel-common-f3dc1a775d21f74fc6f4bbcf076b8af2f6261a69",
+ urls = ["https://github.com/google/bazel-common/archive/f3dc1a775d21f74fc6f4bbcf076b8af2f6261a69.zip"],
+ )
diff --git a/docs/BUILD.bazel b/docs/BUILD.bazel
index f1c0a159a4..66ff34f7e7 100644
--- a/docs/BUILD.bazel
+++ b/docs/BUILD.bazel
@@ -157,7 +157,7 @@ genrule(
":theme",
"//daml-foundations/daml-ghc:daml-base-rst-docs",
"//daml-foundations/daml-ghc:daml-base-hoogle-docs",
- "//language-support/java:javadocs",
+ "//language-support/java:javadoc",
],
outs = ["html-only.tar.gz"],
cmd = ("""
@@ -186,8 +186,8 @@ genrule(
exit 1
fi
- # Copy Javadoc
- tar -zxf ../$(locations //language-support/java:javadocs) -C html/app-dev/bindings-java
+ # Copy Javadoc using unzip to avoid having to know the path to the 'jar' binary.
+ unzip -f ../$(locations //language-support/java:javadoc) -d html/app-dev/bindings-java
# Copy in hoogle DB
mkdir -p html/hoogle_db
diff --git a/docs/source/support/release-notes.rst b/docs/source/support/release-notes.rst
index 10f7ab3c93..f516ffee56 100644
--- a/docs/source/support/release-notes.rst
+++ b/docs/source/support/release-notes.rst
@@ -118,6 +118,19 @@ Java Bindings
- **Ledger API**: Added three new methods to the :ref:`CommandService `:
- ``SubmitAndWaitForTransactionId`` returns the transaction ID.
+- Beta release of the Windows SDK:
+ You can download the installer from
+ `GitHub releases `_.
+ The Windows SDK ships with the new `daml` installer which will soon also
+ become the default on Linux and MacOS. Documentation is still in progress,
+ take a look at the `Migration guide `_
+ and the `updated documentation `_.
+- Add ``fromListWith`` and ``merge`` to ``DA.TextMap``.
+- Release Javadoc artifacts as part of the SDK. See more `here https://github.com/digital-asset/daml/pull/896`
+- Add ``DA.Next.Map`` and ``DA.Next.Set`` and deprecate ``DA.Map`` and ``DA.Set`` in favor of those.
+- Ledger API: Added three new methods to :ref:`CommandService `:
+
+ - ``SubmitAndWaitForTransactionId`` returns the transaction id.
- ``SubmitAndWaitForTransaction`` returns the transaction.
- ``SubmitAndWaitForTransactionTree`` returns the transaction tree.
diff --git a/language-support/java/BUILD.bazel b/language-support/java/BUILD.bazel
index 57f1f662b9..745d8e91ee 100644
--- a/language-support/java/BUILD.bazel
+++ b/language-support/java/BUILD.bazel
@@ -1,50 +1,35 @@
# Copyright (c) 2019 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
-load("@os_info//:os_info.bzl", "is_windows")
+load("@com_github_google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library")
-genrule(
- name = "javadocs",
+javadoc_library(
+ name = "javadoc",
srcs = [
- "//language-support/java/bindings-rxjava:sources",
"//language-support/java/bindings:sources",
- "//language-support/java/bindings-rxjava",
- "//language-support/java/bindings:bindings-java",
- "//external:jar/org/slf4j/slf4j_api",
- "//ledger-api/rs-grpc-bridge",
- "//external:jar/io/reactivex/rxjava2/rxjava",
- "//external:jar/com/google/protobuf/protobuf_java",
- "//external:jar/org/pcollections/pcollections",
- "//external:jar/org/checkerframework/checker",
- "//external:jar/io/grpc/grpc_netty",
- "//external:jar/io/grpc/grpc_core",
- "//external:jar/io/grpc/grpc_stub",
- "//external:jar/io/netty/netty_handler",
- "//external:jar/com/google/code/findbugs/jsr305",
+ "//language-support/java/bindings-rxjava:sources",
+ ],
+ root_packages = [
+ "com.daml.ledger.javaapi.data",
+ "com.daml.ledger.rxjava",
+ "com.digitalasset.ledger.api.v1",
],
- outs = ["javadocs.tar.gz"],
- cmd = """
- CP=$(location //external:jar/org/slf4j/slf4j_api)
- CP=$$CP{delim}$(location //language-support/java/bindings-rxjava:bindings-rxjava)
- CP=$$CP{delim}$(location //language-support/java/bindings:bindings-java)
- CP=$$CP{delim}$(location //ledger-api/rs-grpc-bridge:rs-grpc-bridge)
- CP=$$CP{delim}$(location //external:jar/io/reactivex/rxjava2/rxjava)
- CP=$$CP{delim}$(location //external:jar/com/google/protobuf/protobuf_java)
- CP=$$CP{delim}$(location //external:jar/org/pcollections/pcollections)
- CP=$$CP{delim}$(location //external:jar/org/checkerframework/checker)
- CP=$$CP{delim}$(location //external:jar/io/grpc/grpc_netty)
- CP=$$CP{delim}$(location //external:jar/io/grpc/grpc_core)
- CP=$$CP{delim}$(location //external:jar/io/grpc/grpc_stub)
- CP=$$CP{delim}$(location //external:jar/io/netty/netty_handler)
- CP=$$CP{delim}$(location //external:jar/com/google/code/findbugs/jsr305)
- echo $$CP
- $(location @javadoc_dev_env//:javadoc) -quiet -d javadocs -classpath $$CP $(locations //language-support/java/bindings-rxjava:sources) $(locations //language-support/java/bindings:sources)
- tar -zcf $(location javadocs.tar.gz) javadocs
- """.format(
- delim = "\;" if is_windows else ":",
- ),
- tools = ["@javadoc_dev_env//:javadoc"],
visibility = [
"//visibility:public",
],
+ deps = [
+ "//external:jar/com/google/code/findbugs/jsr305",
+ "//external:jar/com/google/protobuf/protobuf_java",
+ "//external:jar/io/grpc/grpc_core",
+ "//external:jar/io/grpc/grpc_netty",
+ "//external:jar/io/grpc/grpc_stub",
+ "//external:jar/io/netty/netty_handler",
+ "//external:jar/io/reactivex/rxjava2/rxjava",
+ "//external:jar/org/checkerframework/checker",
+ "//external:jar/org/pcollections/pcollections",
+ "//external:jar/org/slf4j/slf4j_api",
+ "//language-support/java/bindings:bindings-java",
+ "//language-support/java/bindings-rxjava",
+ "//ledger-api/rs-grpc-bridge",
+ ],
)
diff --git a/language-support/java/bindings-rxjava/BUILD.bazel b/language-support/java/bindings-rxjava/BUILD.bazel
index 4ab67421c3..b69c34e31b 100644
--- a/language-support/java/bindings-rxjava/BUILD.bazel
+++ b/language-support/java/bindings-rxjava/BUILD.bazel
@@ -7,11 +7,15 @@ load(
"da_scala_test_suite",
)
load("//bazel_tools:pom_file.bzl", "pom_file")
+load("//bazel_tools:java.bzl", "da_java_library")
-java_library(
+da_java_library(
name = "bindings-rxjava",
srcs = glob(["src/main/java/**/*.java"]),
- tags = ["maven_coordinates=com.daml.ledger:bindings-rxjava:__VERSION__"],
+ tags = [
+ "javadoc_root_packages=com.daml.ledger.rxjava",
+ "maven_coordinates=com.daml.ledger:bindings-rxjava:__VERSION__",
+ ],
visibility = [
"//visibility:public",
],
@@ -31,12 +35,6 @@ java_library(
],
)
-pom_file(
- name = "bindings-rxjava_pom",
- target = ":bindings-rxjava",
- visibility = ["//visibility:public"],
-)
-
testDependencies = [
"//3rdparty/jvm/io/grpc:grpc_core",
"//3rdparty/jvm/io/grpc:grpc_netty",
diff --git a/language-support/java/bindings/BUILD.bazel b/language-support/java/bindings/BUILD.bazel
index aeb5c8d099..e26022b84d 100644
--- a/language-support/java/bindings/BUILD.bazel
+++ b/language-support/java/bindings/BUILD.bazel
@@ -52,7 +52,10 @@ da_java_library(
":ledger-api-java",
":ledger-api-java-grpc",
],
- tags = ["maven_coordinates=com.daml.ledger:bindings-java:__VERSION__"],
+ tags = [
+ "javadoc_root_packages=com.daml.ledger.javaapi.data",
+ "maven_coordinates=com.daml.ledger:bindings-java:__VERSION__",
+ ],
visibility = [
"//visibility:public",
],
diff --git a/ledger-api/rs-grpc-bridge/BUILD.bazel b/ledger-api/rs-grpc-bridge/BUILD.bazel
index 6b99a38d89..ad74f8d59a 100644
--- a/ledger-api/rs-grpc-bridge/BUILD.bazel
+++ b/ledger-api/rs-grpc-bridge/BUILD.bazel
@@ -7,7 +7,10 @@ load("//bazel_tools:java.bzl", "da_java_library")
da_java_library(
name = "rs-grpc-bridge",
srcs = glob(["src/main/java/**/*.java"]),
- tags = ["maven_coordinates=com.digitalasset.ledger-api:rs-grpc-bridge:__VERSION__"],
+ tags = [
+ "javadoc_root_packages=com.digitalasset.grpc.adapter",
+ "maven_coordinates=com.digitalasset.ledger-api:rs-grpc-bridge:__VERSION__",
+ ],
visibility = [
"//visibility:public",
],
diff --git a/release/src/Util.hs b/release/src/Util.hs
index 289eaa390e..b0731bccc7 100644
--- a/release/src/Util.hs
+++ b/release/src/Util.hs
@@ -128,7 +128,8 @@ buildTargets art@Artifact{..} =
(directory, _) = splitBazelTarget artTarget
in [jarTarget, pomTar] <>
[BazelTarget ("//" <> directory <> ":" <> srcJar) | Just srcJar <- pure (sourceJarName art)] <>
- [BazelTarget ("//" <> directory <> ":" <> srcJar) | Just srcJar <- pure (scalaSourceJarName art)]
+ [BazelTarget ("//" <> directory <> ":" <> srcJar) | Just srcJar <- pure (scalaSourceJarName art)] <>
+ [BazelTarget ("//" <> directory <> ":" <> javadocJar) | Just javadocJar <- pure (javadocJarName art)]
Zip -> [artTarget]
TarGz -> [artTarget]
@@ -216,6 +217,11 @@ scalaSourceJarName Artifact{..}
| Jar Scala <- artReleaseType = Just $ snd (splitBazelTarget artTarget) <> "_src.jar"
| otherwise = Nothing
+javadocJarName :: Artifact a -> Maybe Text
+javadocJarName Artifact{..}
+ | Jar Lib <- artReleaseType = Just $ snd (splitBazelTarget artTarget) <> "_javadoc.jar"
+ | otherwise = Nothing
+
-- | Given an artifact, produce a list of pairs of an input file and the corresponding output file.
artifactFiles :: E.MonadThrow m => AllArtifacts -> Artifact PomData -> m [(Path Rel File, Path Rel File)]
artifactFiles allArtifacts art@Artifact{..} = do
@@ -238,11 +244,15 @@ artifactFiles allArtifacts art@Artifact{..} = do
mbScalaSourceJarIn <- traverse (parseRelFile . unpack) (scalaSourceJarName art)
scalaSourceJarOut <- parseRelFile (unpack (pomArtifactId #"-"# pomVersion # ostxt # "-sources" # mainExt artReleaseType))
+ mbJavadocJarIn <- traverse (parseRelFile . unpack) (javadocJarName art)
+ javadocJarOut <- parseRelFile (unpack (pomArtifactId #"-"# pomVersion # ostxt # "-javadoc" # mainExt artReleaseType))
+
pure $
[(directory > mainArtifactIn, outDir > mainArtifactOut) | shouldRelease allArtifacts artPlatformDependent] <>
[(directory > pomFileIn, outDir > pomFileOut) | isJar artReleaseType, shouldRelease allArtifacts (PlatformDependent False)] <>
[(directory > sourceJarIn, outDir > sourceJarOut) | shouldRelease allArtifacts (PlatformDependent False), Just sourceJarIn <- pure mbSourceJarIn] <>
- [(directory > scalaSourceJarIn, outDir > scalaSourceJarOut) | shouldRelease allArtifacts (PlatformDependent False), Just scalaSourceJarIn <- pure mbScalaSourceJarIn]
+ [(directory > scalaSourceJarIn, outDir > scalaSourceJarOut) | shouldRelease allArtifacts (PlatformDependent False), Just scalaSourceJarIn <- pure mbScalaSourceJarIn] <>
+ [(directory > javadocJarIn, outDir > javadocJarOut) | shouldRelease allArtifacts (PlatformDependent False), Just javadocJarIn <- pure mbJavadocJarIn]
shouldRelease :: AllArtifacts -> PlatformDependent -> Bool
shouldRelease (AllArtifacts allArtifacts) (PlatformDependent platformDependent) =