# Copyright 2019 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.
"""Starlark rules for building Java projects."""

def java_binary(**attrs):
    """Bazel java_binary rule.

    https://docs.bazel.build/versions/master/be/java.html#java_binary

    Args:
      **attrs: Rule attributes
    """
    native.java_binary(**attrs)

def java_import(**attrs):
    """Bazel java_import rule.

    https://docs.bazel.build/versions/master/be/java.html#java_import

    Args:
      **attrs: Rule attributes
    """
    native.java_import(**attrs)

def java_library(**attrs):
    """Bazel java_library rule.

    https://docs.bazel.build/versions/master/be/java.html#java_library

    Args:
      **attrs: Rule attributes
    """
    native.java_library(**attrs)

def java_lite_proto_library(**attrs):
    """Bazel java_lite_proto_library rule.

    https://docs.bazel.build/versions/master/be/java.html#java_lite_proto_library

    Args:
      **attrs: Rule attributes
    """
    native.java_lite_proto_library(**attrs)

def java_proto_library(**attrs):
    """Bazel java_proto_library rule.

    https://docs.bazel.build/versions/master/be/java.html#java_proto_library

    Args:
      **attrs: Rule attributes
    """
    native.java_proto_library(**attrs)

def java_test(**attrs):
    """Bazel java_test rule.

    https://docs.bazel.build/versions/master/be/java.html#java_test

    Args:
      **attrs: Rule attributes
    """
    native.java_test(**attrs)

def java_package_configuration(**attrs):
    """Bazel java_package_configuration rule.

    https://docs.bazel.build/versions/master/be/java.html#java_package_configuration

    Args:
      **attrs: Rule attributes
    """
    native.java_package_configuration(**attrs)

def java_plugin(**attrs):
    """Bazel java_plugin rule.

    https://docs.bazel.build/versions/master/be/java.html#java_plugin

    Args:
      **attrs: Rule attributes
    """
    native.java_plugin(**attrs)

def java_runtime(**attrs):
    """Bazel java_runtime rule.

    https://docs.bazel.build/versions/master/be/java.html#java_runtime

    Args:
      **attrs: Rule attributes
    """
    native.java_runtime(**attrs)

def java_toolchain(**attrs):
    """Bazel java_toolchain rule.

    https://docs.bazel.build/versions/master/be/java.html#java_toolchain

    Args:
      **attrs: Rule attributes
    """
    native.java_toolchain(**attrs)

@@ -645,16 +645,281 @@
 ts.%22%22%22%0A%0A
+_MIGRATION_TAG = %22__JAVA_RULES_MIGRATION_DO_NOT_USE_WILL_BREAK__%22%0A%0Adef _add_tags(attrs):%0A    if %22tags%22 in attrs and attrs%5B%22tags%22%5D != None:%0A        attrs%5B%22tags%22%5D = attrs%5B%22tags%22%5D + %5B_MIGRATION_TAG%5D%0A    else:%0A        attrs%5B%22tags%22%5D = %5B_MIGRATION_TAG%5D%0A    return attrs%0A%0A
 def java
@@ -1109,30 +1109,41 @@
 va_binary(**
+_add_tags(
 attrs)
+)
 %0A%0Adef java_i
@@ -1331,30 +1331,41 @@
 va_import(**
+_add_tags(
 attrs)
+)
 %0A%0Adef java_l
@@ -1553,38 +1553,49 @@
 .java_library(**
+_add_tags(
 attrs)
+)
 %0A%0Adef java_lite_
@@ -1823,38 +1823,49 @@
 proto_library(**
+_add_tags(
 attrs)
+)
 %0A%0Adef java_proto
@@ -2081,22 +2081,33 @@
 brary(**
+_add_tags(
 attrs)
+)
 %0A%0Adef ja
@@ -2295,22 +2295,33 @@
 _test(**
+_add_tags(
 attrs)
+)
 %0A%0Adef ja
@@ -2573,30 +2573,41 @@
 iguration(**
+_add_tags(
 attrs)
+)
 %0A%0Adef java_p
@@ -2799,22 +2799,33 @@
 lugin(**
+_add_tags(
 attrs)
+)
 %0A%0Adef ja
@@ -3025,22 +3025,33 @@
 ntime(**
+_add_tags(
 attrs)
+)
 %0A%0Adef ja
@@ -3259,15 +3259,26 @@
 chain(**
+_add_tags(
 attrs)
+)
 %0A

Add incompatible flag to forbid loading the native Java rules.