Skip to content

Commit

Permalink
Add a decoder for PrimitiveTypeProto and an option to disable android…
Browse files Browse the repository at this point in the history
… constraints in BUILD. (#4793)
  • Loading branch information
bgogul committed Mar 3, 2020
1 parent 678fc81 commit ba7a107
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 3 deletions.
36 changes: 36 additions & 0 deletions java/arcs/core/data/proto/BUILD
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
load(
"//third_party/java/arcs/build_defs:build_defs.bzl",
"arcs_kt_library",
)
load(
"//third_party/java/arcs/build_defs:native.oss.bzl",
"android_proto_library",
"java_proto_library",
"proto_library",
)
Expand All @@ -8,11 +13,42 @@ licenses(["notice"])

package(default_visibility = ["//visibility:public"])

arcs_kt_library(
name = "proto",
srcs = glob(
["*.kt"],
),
deps = [
":recipe_java_proto_lite",
"//java/arcs/core/data",
],
)

# This target pulls in the java protobuf library, as opposed to the *java_lite*
# protobuf library. The regular protobuf library is needed for tests.
arcs_kt_library(
name = "proto_for_test",
testonly = 1,
srcs = glob(
["*.kt"],
),
add_android_constraints = False,
deps = [
":recipe_java_proto",
"//java/arcs/core/data",
],
)

proto_library(
name = "recipe_proto",
srcs = ["recipe.proto"],
)

android_proto_library(
name = "recipe_java_proto_lite",
deps = [":recipe_proto"],
)

java_proto_library(
name = "recipe_java_proto",
deps = [":recipe_proto"],
Expand Down
26 changes: 26 additions & 0 deletions java/arcs/core/data/proto/TypeProtoDecoders.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* Copyright 2020 Google LLC.
*
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt
*
* Code distributed by Google as part of this project is also subject to an additional IP rights
* grant found at
* http://polymer.github.io/PATENTS.txt
*/

package arcs.core.data.proto

import arcs.core.data.PrimitiveType

/**
* Converts a [PrimitiveTypeProto] protobuf instance into a native kotlin [PrimitiveType] instance.
*/
fun PrimitiveTypeProto.decode(): PrimitiveType =
when (this) {
PrimitiveTypeProto.TEXT -> PrimitiveType.Text
PrimitiveTypeProto.NUMBER -> PrimitiveType.Number
PrimitiveTypeProto.BOOLEAN -> PrimitiveType.Boolean
PrimitiveTypeProto.UNRECOGNIZED ->
throw IllegalArgumentException("Unknown PrimitiveTypeProto value.")
}
3 changes: 3 additions & 0 deletions javatests/arcs/core/data/proto/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@ arcs_kt_jvm_test_suite(
data = ["//java/arcs/core/data/testdata:examples"],
package = "arcs.core.data.proto",
deps = [
"//java/arcs/core/data",
"//java/arcs/core/data/proto:proto_for_test",
"//java/arcs/core/data/proto:recipe_java_proto",
"//java/arcs/core/testutil",
"//java/arcs/repoutils",
"//third_party/java/arcs/deps:protobuf_java",
"//third_party/java/junit:junit-android",
Expand Down
26 changes: 26 additions & 0 deletions javatests/arcs/core/data/proto/TypeProtoDecodersTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package arcs.core.data.proto

import arcs.core.data.PrimitiveType
import arcs.core.testutil.assertThrows
import arcs.repoutils.runfilesDir
import com.google.common.truth.Truth.assertThat
import com.google.protobuf.Message.Builder
import com.google.protobuf.Message
import com.google.protobuf.TextFormat
import java.io.File
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4

@RunWith(JUnit4::class)
class TypeProtoDecodersTest {
@Test
fun decodesPrimitiveTypes() {
assertThat(PrimitiveTypeProto.TEXT.decode()).isEqualTo(PrimitiveType.Text)
assertThat(PrimitiveTypeProto.BOOLEAN.decode()).isEqualTo(PrimitiveType.Boolean)
assertThat(PrimitiveTypeProto.NUMBER.decode()).isEqualTo(PrimitiveType.Number)
assertThrows(IllegalArgumentException::class) {
PrimitiveTypeProto.UNRECOGNIZED.decode()
}
}
}
15 changes: 12 additions & 3 deletions third_party/java/arcs/build_defs/internal/kotlin.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ def arcs_kt_jvm_library(**kwargs):
Args:
**kwargs: Set of args to forward to kt_jvm_library
"""
constraints = kwargs.pop("constraints", ["android"])
add_android_constraints = kwargs.pop("add_android_constraints", True)
constraints = kwargs.pop("constraints", ["android"] if add_android_constraints else [])
disable_lint_checks = kwargs.pop("disable_lint_checks", [])
exports = kwargs.pop("exports", [])
kotlincopts = kwargs.pop("kotlincopts", [])
Expand Down Expand Up @@ -134,7 +135,9 @@ def arcs_kt_library(
deps = [],
platforms = DEFAULT_LIBRARY_PLATFORMS,
exports = None,
visibility = None):
visibility = None,
testonly = 0,
add_android_constraints = True):
"""Declares Kotlin library targets for multiple platforms.
Args:
Expand All @@ -145,6 +148,8 @@ def arcs_kt_library(
are: "jvm", "js", "wasm". Defaults to "jvm" and "js".
exports: List; Optional list of deps to export from this build rule.
visibility: List; List of visibilities
add_android_constraints: Adds `constraints = ["android"]` to `kt_jvm_library` rule.
testonly: Marks this target to be used only for tests.
"""
_check_platforms(platforms)

Expand All @@ -156,6 +161,7 @@ def arcs_kt_library(
deps = [_to_jvm_dep(dep) for dep in deps],
exports = exports,
visibility = visibility,
add_android_constraints = add_android_constraints,
)

if "js" in platforms:
Expand Down Expand Up @@ -183,7 +189,8 @@ def arcs_kt_particles(
srcs = [],
deps = [],
platforms = DEFAULT_PARTICLE_PLATFORMS,
visibility = None):
visibility = None,
add_android_constraints = True):
"""Performs final compilation of wasm and bundling if necessary.
Args:
Expand All @@ -196,6 +203,7 @@ def arcs_kt_particles(
platforms: List of platforms for which to compile. Valid options
are: "jvm", "js", "wasm". Defaults to "jvm" and "js".
visibility: list of visibilities
add_android_constraints: Adds `constraints = ["android"]` to `kt_jvm_library` rule.
"""
_check_platforms(platforms)

Expand All @@ -210,6 +218,7 @@ def arcs_kt_particles(
srcs = srcs,
deps = deps,
visibility = visibility,
add_android_constraints = add_android_constraints,
)

if "js" in platforms:
Expand Down

0 comments on commit ba7a107

Please sign in to comment.