# Copyright (C) 2013 The Android Open Source Project
#
# 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.

original_java_library = java_library
def java_library(
    name,
    srcs=[],
    resources=[],
    source='7',
    target='7',
    proguard_config=None,
    deps=[],
    exported_deps=[],
    visibility=[],
    ):
  original_java_library(
    name=name,
    srcs=srcs,
    resources=resources,
    source=source,
    target=target,
    proguard_config=proguard_config,
    deps=deps,
    exported_deps=exported_deps,
    visibility=visibility,
  )

original_java_test = java_test
def java_test(
    name,
    srcs=[],
    labels=[],
    resources=[],
    source='7',
    target='7',
    vm_args=[],
    source_under_test=[],
    contacts=[],
    deps=[],
    visibility=[],
    ):
  original_java_test(
    name=name,
    srcs=srcs,
    labels=labels,
    resources=resources,
    source=source,
    target=target,
    vm_args=vm_args,
    source_under_test=source_under_test,
    contacts=contacts,
    deps=deps,
    visibility=visibility,
  )
