# This is a quick hack to make it so that all Java rules build using Java 7.
# TODO(mbolin): Find a less hacky way to do this, likely something in .buckconfig.

original_java_library = java_library
def java_library(
    name,
    srcs=[],
    resources=[],
    export_deps=False,
    source='7',
    target='7',
    proguard_config=None,
    deps=[],
    visibility=[],
    ):
  original_java_library(
    name=name,
    srcs=srcs,
    resources=resources,
    export_deps=export_deps,
    source=source,
    target=target,
    proguard_config=proguard_config,
    deps=deps,
    visibility=visibility,
    )
    
original_java_test = java_test
def java_test(
    name,
    srcs=[],
    labels=[],
    resources=[],
    source='7',
    target='7',
    vm_args=[],
    source_under_test=[],
    deps=[],
    visibility=[],
    ):
  original_java_test(
    name=name,
    srcs=srcs,
    labels=labels,
    resources=resources,
    source=source,
    target=target,
    # Add -XX:-UseSplitVerifier by default to work around:
    # http://arihantwin.blogspot.com/2012/08/getting-error-illegal-local-variable.html
    vm_args=['-XX:-UseSplitVerifier'] + vm_args,
    source_under_test=source_under_test,
    deps=deps,
    visibility=visibility,
    )
