mirror of
https://github.com/google/nomulus.git
synced 2025-05-14 08:27:14 +02:00
Move backported JUnit file to third_party
------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=177637931
This commit is contained in:
parent
82382aaca6
commit
8ef4fbe9d5
22 changed files with 248 additions and 138 deletions
|
@ -12,6 +12,7 @@ java_library(
|
||||||
srcs = glob(["*.java"]),
|
srcs = glob(["*.java"]),
|
||||||
deps = [
|
deps = [
|
||||||
"//java/google/registry/monitoring/metrics",
|
"//java/google/registry/monitoring/metrics",
|
||||||
|
"//third_party/junit",
|
||||||
"@com_google_guava",
|
"@com_google_guava",
|
||||||
"@com_google_truth",
|
"@com_google_truth",
|
||||||
"@com_google_truth_extensions_truth_java8_extension",
|
"@com_google_truth_extensions_truth_java8_extension",
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
package google.registry.monitoring.metrics;
|
package google.registry.monitoring.metrics;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.expectThrows;
|
import static google.registry.testing.JUnitBackports.expectThrows;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
package google.registry.monitoring.metrics;
|
package google.registry.monitoring.metrics;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.expectThrows;
|
import static google.registry.testing.JUnitBackports.expectThrows;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.google.common.collect.ImmutableSortedSet;
|
import com.google.common.collect.ImmutableSortedSet;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
package google.registry.monitoring.metrics;
|
package google.registry.monitoring.metrics;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.expectThrows;
|
import static google.registry.testing.JUnitBackports.expectThrows;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.collect.ImmutableRangeMap;
|
import com.google.common.collect.ImmutableRangeMap;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
package google.registry.monitoring.metrics;
|
package google.registry.monitoring.metrics;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.expectThrows;
|
import static google.registry.testing.JUnitBackports.expectThrows;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
package google.registry.monitoring.metrics;
|
package google.registry.monitoring.metrics;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.expectThrows;
|
import static google.registry.testing.JUnitBackports.expectThrows;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
|
@ -1,122 +0,0 @@
|
||||||
package google.registry.monitoring.metrics;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A testing utility class that contains backports of useful but not yet released JUnit methods.
|
|
||||||
*
|
|
||||||
* <p>All of this code was taken directly from
|
|
||||||
* https://github.com/junit-team/junit4/blob/a832c5afe5b0e7c2590d057a1a49a344d207f8a0/src/main/java/org/junit/Assert.java
|
|
||||||
*/
|
|
||||||
public class JUnitBackports {
|
|
||||||
// TODO(b/68257761): Delete these and switch over to JUnit 4.13 methods upon release.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This interface facilitates the use of expectThrows from Java 8. It allows method references to
|
|
||||||
* void methods (that declare checked exceptions) to be passed directly into expectThrows without
|
|
||||||
* wrapping. It is not meant to be implemented directly.
|
|
||||||
*
|
|
||||||
* @since 4.13
|
|
||||||
*/
|
|
||||||
public interface ThrowingRunnable {
|
|
||||||
void run() throws Throwable;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Asserts that {@code runnable} throws an exception of type {@code expectedThrowable} when
|
|
||||||
* executed. If it does not throw an exception, an {@link AssertionError} is thrown. If it throws
|
|
||||||
* the wrong type of exception, an {@code AssertionError} is thrown describing the mismatch; the
|
|
||||||
* exception that was actually thrown can be obtained by calling {@link AssertionError#getCause}.
|
|
||||||
*
|
|
||||||
* @param expectedThrowable the expected type of the exception
|
|
||||||
* @param runnable a function that is expected to throw an exception when executed
|
|
||||||
* @since 4.13
|
|
||||||
*/
|
|
||||||
public static void assertThrows(
|
|
||||||
Class<? extends Throwable> expectedThrowable, ThrowingRunnable runnable) {
|
|
||||||
expectThrows(expectedThrowable, runnable);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Asserts that {@code runnable} throws an exception of type {@code expectedThrowable} when
|
|
||||||
* executed. If it does, the exception object is returned. If it does not throw an exception, an
|
|
||||||
* {@link AssertionError} is thrown. If it throws the wrong type of exception, an {@code
|
|
||||||
* AssertionError} is thrown describing the mismatch; the exception that was actually thrown can
|
|
||||||
* be obtained by calling {@link AssertionError#getCause}.
|
|
||||||
*
|
|
||||||
* @param expectedThrowable the expected type of the exception
|
|
||||||
* @param runnable a function that is expected to throw an exception when executed
|
|
||||||
* @return the exception thrown by {@code runnable}
|
|
||||||
* @since 4.13
|
|
||||||
*/
|
|
||||||
public static <T extends Throwable> T expectThrows(
|
|
||||||
Class<T> expectedThrowable, ThrowingRunnable runnable) {
|
|
||||||
try {
|
|
||||||
runnable.run();
|
|
||||||
} catch (Throwable actualThrown) {
|
|
||||||
if (expectedThrowable.isInstance(actualThrown)) {
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
T retVal = (T) actualThrown;
|
|
||||||
return retVal;
|
|
||||||
} else {
|
|
||||||
String expected = formatClass(expectedThrowable);
|
|
||||||
Class<? extends Throwable> actualThrowable = actualThrown.getClass();
|
|
||||||
String actual = formatClass(actualThrowable);
|
|
||||||
if (expected.equals(actual)) {
|
|
||||||
// There must be multiple class loaders. Add the identity hash code so the message
|
|
||||||
// doesn't say "expected: java.lang.String<my.package.MyException> ..."
|
|
||||||
expected += "@" + Integer.toHexString(System.identityHashCode(expectedThrowable));
|
|
||||||
actual += "@" + Integer.toHexString(System.identityHashCode(actualThrowable));
|
|
||||||
}
|
|
||||||
String mismatchMessage = format("unexpected exception type thrown;", expected, actual);
|
|
||||||
|
|
||||||
// The AssertionError(String, Throwable) ctor is only available on JDK7.
|
|
||||||
AssertionError assertionError = new AssertionError(mismatchMessage);
|
|
||||||
assertionError.initCause(actualThrown);
|
|
||||||
throw assertionError;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String message =
|
|
||||||
String.format(
|
|
||||||
"expected %s to be thrown, but nothing was thrown", formatClass(expectedThrowable));
|
|
||||||
throw new AssertionError(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
static String format(String message, Object expected, Object actual) {
|
|
||||||
String formatted = "";
|
|
||||||
if (message != null && !"".equals(message)) {
|
|
||||||
formatted = message + " ";
|
|
||||||
}
|
|
||||||
String expectedString = String.valueOf(expected);
|
|
||||||
String actualString = String.valueOf(actual);
|
|
||||||
if (equalsRegardingNull(expectedString, actualString)) {
|
|
||||||
return formatted
|
|
||||||
+ "expected: "
|
|
||||||
+ formatClassAndValue(expected, expectedString)
|
|
||||||
+ " but was: "
|
|
||||||
+ formatClassAndValue(actual, actualString);
|
|
||||||
} else {
|
|
||||||
return formatted + "expected:<" + expectedString + "> but was:<" + actualString + ">";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String formatClass(Class<?> value) {
|
|
||||||
String className = value.getCanonicalName();
|
|
||||||
return className == null ? value.getName() : className;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String formatClassAndValue(Object value, String valueString) {
|
|
||||||
String className = value == null ? "null" : value.getClass().getName();
|
|
||||||
return className + "<" + valueString + ">";
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean equalsRegardingNull(Object expected, Object actual) {
|
|
||||||
if (expected == null) {
|
|
||||||
return actual == null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return isEquals(expected, actual);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean isEquals(Object expected, Object actual) {
|
|
||||||
return expected.equals(actual);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -15,7 +15,7 @@
|
||||||
package google.registry.monitoring.metrics;
|
package google.registry.monitoring.metrics;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.expectThrows;
|
import static google.registry.testing.JUnitBackports.expectThrows;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
package google.registry.monitoring.metrics;
|
package google.registry.monitoring.metrics;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.expectThrows;
|
import static google.registry.testing.JUnitBackports.expectThrows;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
package google.registry.monitoring.metrics;
|
package google.registry.monitoring.metrics;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.expectThrows;
|
import static google.registry.testing.JUnitBackports.expectThrows;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
package google.registry.monitoring.metrics;
|
package google.registry.monitoring.metrics;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.expectThrows;
|
import static google.registry.testing.JUnitBackports.expectThrows;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import google.registry.monitoring.metrics.MetricSchema.Kind;
|
import google.registry.monitoring.metrics.MetricSchema.Kind;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
package google.registry.monitoring.metrics;
|
package google.registry.monitoring.metrics;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.expectThrows;
|
import static google.registry.testing.JUnitBackports.expectThrows;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableRangeMap;
|
import com.google.common.collect.ImmutableRangeMap;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
package google.registry.monitoring.metrics;
|
package google.registry.monitoring.metrics;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.expectThrows;
|
import static google.registry.testing.JUnitBackports.expectThrows;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
|
|
@ -13,7 +13,7 @@ java_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//java/google/registry/monitoring/metrics",
|
"//java/google/registry/monitoring/metrics",
|
||||||
"//java/google/registry/monitoring/metrics/contrib",
|
"//java/google/registry/monitoring/metrics/contrib",
|
||||||
"//javatests/google/registry/monitoring/metrics",
|
"//third_party/junit",
|
||||||
"@com_google_guava",
|
"@com_google_guava",
|
||||||
"@com_google_truth",
|
"@com_google_truth",
|
||||||
"@com_google_truth_extensions_truth_java8_extension",
|
"@com_google_truth_extensions_truth_java8_extension",
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
package google.registry.monitoring.metrics.contrib;
|
package google.registry.monitoring.metrics.contrib;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.expectThrows;
|
|
||||||
import static google.registry.monitoring.metrics.contrib.DistributionMetricSubject.assertThat;
|
import static google.registry.monitoring.metrics.contrib.DistributionMetricSubject.assertThat;
|
||||||
|
import static google.registry.testing.JUnitBackports.expectThrows;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import google.registry.monitoring.metrics.EventMetric;
|
import google.registry.monitoring.metrics.EventMetric;
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
package google.registry.monitoring.metrics.contrib;
|
package google.registry.monitoring.metrics.contrib;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.expectThrows;
|
|
||||||
import static google.registry.monitoring.metrics.contrib.LongMetricSubject.assertThat;
|
import static google.registry.monitoring.metrics.contrib.LongMetricSubject.assertThat;
|
||||||
|
import static google.registry.testing.JUnitBackports.expectThrows;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import google.registry.monitoring.metrics.IncrementableMetric;
|
import google.registry.monitoring.metrics.IncrementableMetric;
|
||||||
|
|
|
@ -13,7 +13,7 @@ java_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//java/google/registry/monitoring/metrics",
|
"//java/google/registry/monitoring/metrics",
|
||||||
"//java/google/registry/monitoring/metrics/stackdriver",
|
"//java/google/registry/monitoring/metrics/stackdriver",
|
||||||
"//javatests/google/registry/monitoring/metrics",
|
"//third_party/junit",
|
||||||
"@com_google_api_client",
|
"@com_google_api_client",
|
||||||
"@com_google_apis_google_api_services_monitoring",
|
"@com_google_apis_google_api_services_monitoring",
|
||||||
"@com_google_guava",
|
"@com_google_guava",
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
package google.registry.monitoring.metrics.stackdriver;
|
package google.registry.monitoring.metrics.stackdriver;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.monitoring.metrics.JUnitBackports.assertThrows;
|
import static google.registry.testing.JUnitBackports.assertThrows;
|
||||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
import static org.mockito.Matchers.anyString;
|
import static org.mockito.Matchers.anyString;
|
||||||
|
|
|
@ -19,6 +19,7 @@ java_library(
|
||||||
"//java/google/registry:env/common/default/WEB-INF/datastore-indexes.xml",
|
"//java/google/registry:env/common/default/WEB-INF/datastore-indexes.xml",
|
||||||
"//java/google/registry:env/common/default/WEB-INF/queue.xml",
|
"//java/google/registry:env/common/default/WEB-INF/queue.xml",
|
||||||
] + glob(["*.csv"]) + glob(["testdata/*"]),
|
] + glob(["*.csv"]) + glob(["testdata/*"]),
|
||||||
|
exports = ["//third_party/junit"],
|
||||||
deps = [
|
deps = [
|
||||||
"//java/google/registry/config",
|
"//java/google/registry/config",
|
||||||
"//java/google/registry/dns:constants",
|
"//java/google/registry/dns:constants",
|
||||||
|
|
16
third_party/junit/BUILD
vendored
Normal file
16
third_party/junit/BUILD
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
package(
|
||||||
|
default_visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
|
|
||||||
|
licenses(["reciprocal"]) # EPL 1.0
|
||||||
|
|
||||||
|
exports_files(["LICENSE"])
|
||||||
|
|
||||||
|
java_library(
|
||||||
|
name = "junit",
|
||||||
|
srcs = glob(["**/*.java"]),
|
||||||
|
visibility = [
|
||||||
|
"//javatests/google/registry/monitoring/metrics:__subpackages__",
|
||||||
|
"//javatests/google/registry/testing:__pkg__",
|
||||||
|
],
|
||||||
|
)
|
214
third_party/junit/LICENSE
vendored
Normal file
214
third_party/junit/LICENSE
vendored
Normal file
|
@ -0,0 +1,214 @@
|
||||||
|
JUnit
|
||||||
|
|
||||||
|
Eclipse Public License - v 1.0
|
||||||
|
|
||||||
|
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
|
||||||
|
LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
|
||||||
|
CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
|
||||||
|
|
||||||
|
1. DEFINITIONS
|
||||||
|
|
||||||
|
"Contribution" means:
|
||||||
|
|
||||||
|
a) in the case of the initial Contributor, the initial code and
|
||||||
|
documentation distributed under this Agreement, and
|
||||||
|
b) in the case of each subsequent Contributor:
|
||||||
|
|
||||||
|
i) changes to the Program, and
|
||||||
|
|
||||||
|
ii) additions to the Program;
|
||||||
|
|
||||||
|
where such changes and/or additions to the Program originate from and are
|
||||||
|
distributed by that particular Contributor. A Contribution 'originates' from a
|
||||||
|
Contributor if it was added to the Program by such Contributor itself or anyone
|
||||||
|
acting on such Contributor's behalf. Contributions do not include additions to
|
||||||
|
the Program which: (i) are separate modules of software distributed in
|
||||||
|
conjunction with the Program under their own license agreement, and (ii) are
|
||||||
|
not derivative works of the Program.
|
||||||
|
|
||||||
|
"Contributor" means any person or entity that distributes the Program.
|
||||||
|
|
||||||
|
"Licensed Patents " mean patent claims licensable by a Contributor which are
|
||||||
|
necessarily infringed by the use or sale of its Contribution alone or when
|
||||||
|
combined with the Program.
|
||||||
|
|
||||||
|
"Program" means the Contributions distributed in accordance with this Agreement.
|
||||||
|
|
||||||
|
"Recipient" means anyone who receives the Program under this Agreement,
|
||||||
|
including all Contributors.
|
||||||
|
|
||||||
|
2. GRANT OF RIGHTS
|
||||||
|
|
||||||
|
a) Subject to the terms of this Agreement, each Contributor hereby grants
|
||||||
|
Recipient a non-exclusive, worldwide, royalty-free copyright license to
|
||||||
|
reproduce, prepare derivative works of, publicly display, publicly perform,
|
||||||
|
distribute and sublicense the Contribution of such Contributor, if any, and
|
||||||
|
such derivative works, in source code and object code form.
|
||||||
|
|
||||||
|
b) Subject to the terms of this Agreement, each Contributor hereby grants
|
||||||
|
Recipient a non-exclusive, worldwide, royalty-free patent license under
|
||||||
|
Licensed Patents to make, use, sell, offer to sell, import and otherwise
|
||||||
|
transfer the Contribution of such Contributor, if any, in source code and
|
||||||
|
object code form. This patent license shall apply to the combination of the
|
||||||
|
Contribution and the Program if, at the time the Contribution is added by the
|
||||||
|
Contributor, such addition of the Contribution causes such combination to be
|
||||||
|
covered by the Licensed Patents. The patent license shall not apply to any
|
||||||
|
other combinations which include the Contribution. No hardware per se is
|
||||||
|
licensed hereunder.
|
||||||
|
|
||||||
|
c) Recipient understands that although each Contributor grants the
|
||||||
|
licenses to its Contributions set forth herein, no assurances are provided by
|
||||||
|
any Contributor that the Program does not infringe the patent or other
|
||||||
|
intellectual property rights of any other entity. Each Contributor disclaims
|
||||||
|
any liability to Recipient for claims brought by any other entity based on
|
||||||
|
infringement of intellectual property rights or otherwise. As a condition to
|
||||||
|
exercising the rights and licenses granted hereunder, each Recipient hereby
|
||||||
|
assumes sole responsibility to secure any other intellectual property rights
|
||||||
|
needed, if any. For example, if a third party patent license is required to
|
||||||
|
allow Recipient to distribute the Program, it is Recipient's responsibility to
|
||||||
|
acquire that license before distributing the Program.
|
||||||
|
|
||||||
|
d) Each Contributor represents that to its knowledge it has sufficient
|
||||||
|
copyright rights in its Contribution, if any, to grant the copyright license
|
||||||
|
set forth in this Agreement.
|
||||||
|
|
||||||
|
3. REQUIREMENTS
|
||||||
|
|
||||||
|
A Contributor may choose to distribute the Program in object code form under
|
||||||
|
its own license agreement, provided that:
|
||||||
|
|
||||||
|
a) it complies with the terms and conditions of this Agreement; and
|
||||||
|
|
||||||
|
b) its license agreement:
|
||||||
|
|
||||||
|
i) effectively disclaims on behalf of all Contributors all warranties and
|
||||||
|
conditions, express and implied, including warranties or conditions of title
|
||||||
|
and non-infringement, and implied warranties or conditions of merchantability
|
||||||
|
and fitness for a particular purpose;
|
||||||
|
|
||||||
|
ii) effectively excludes on behalf of all Contributors all liability for
|
||||||
|
damages, including direct, indirect, special, incidental and consequential
|
||||||
|
damages, such as lost profits;
|
||||||
|
|
||||||
|
iii) states that any provisions which differ from this Agreement are
|
||||||
|
offered by that Contributor alone and not by any other party; and
|
||||||
|
|
||||||
|
iv) states that source code for the Program is available from such
|
||||||
|
Contributor, and informs licensees how to obtain it in a reasonable manner on
|
||||||
|
or through a medium customarily used for software exchange
|
||||||
|
|
||||||
|
When the Program is made available in source code form:
|
||||||
|
|
||||||
|
a) it must be made available under this Agreement; and
|
||||||
|
|
||||||
|
b) a copy of this Agreement must be included with each copy of the
|
||||||
|
Program.
|
||||||
|
|
||||||
|
Contributors may not remove or alter any copyright notices contained within the
|
||||||
|
Program.
|
||||||
|
|
||||||
|
Each Contributor must identify itself as the originator of its Contribution, if
|
||||||
|
any, in a manner that reasonably allows subsequent Recipients to identify the
|
||||||
|
originator of the Contribution.
|
||||||
|
|
||||||
|
4. COMMERCIAL DISTRIBUTION
|
||||||
|
|
||||||
|
Commercial distributors of software may accept certain responsibilities with
|
||||||
|
respect to end users, business partners and the like. While this license is
|
||||||
|
intended to facilitate the commercial use of the Program, the Contributor who
|
||||||
|
includes the Program in a commercial product offering should do so in a manner
|
||||||
|
which does not create potential liability for other Contributors. Therefore, if
|
||||||
|
a Contributor includes the Program in a commercial product offering, such
|
||||||
|
Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
|
||||||
|
every other Contributor ("Indemnified Contributor") against any losses, damages
|
||||||
|
and costs (collectively "Losses") arising from claims, lawsuits and other legal
|
||||||
|
actions brought by a third party against the Indemnified Contributor to the
|
||||||
|
extent caused by the acts or omissions of such Commercial Contributor in
|
||||||
|
connection with its distribution of the Program in a commercial product
|
||||||
|
offering. The obligations in this section do not apply to any claims or Losses
|
||||||
|
relating to any actual or alleged intellectual property infringement. In order
|
||||||
|
to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
|
||||||
|
Contributor in writing of such claim, and b) allow the Commercial Contributor
|
||||||
|
to control, and cooperate with the Commercial Contributor in, the defense and
|
||||||
|
any related settlement negotiations. The Indemnified Contributor may
|
||||||
|
participate in any such claim at its own expense.
|
||||||
|
|
||||||
|
For example, a Contributor might include the Program in a commercial product
|
||||||
|
offering, Product X. That Contributor is then a Commercial Contributor. If that
|
||||||
|
Commercial Contributor then makes performance claims, or offers warranties
|
||||||
|
related to Product X, those performance claims and warranties are such
|
||||||
|
Commercial Contributor's responsibility alone. Under this section, the
|
||||||
|
Commercial Contributor would have to defend claims against the other
|
||||||
|
Contributors related to those performance claims and warranties, and if a court
|
||||||
|
requires any other Contributor to pay any damages as a result, the Commercial
|
||||||
|
Contributor must pay those damages.
|
||||||
|
|
||||||
|
5. NO WARRANTY
|
||||||
|
|
||||||
|
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
|
||||||
|
IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
|
||||||
|
NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
|
||||||
|
Recipient is solely responsible for determining the appropriateness of using
|
||||||
|
and distributing the Program and assumes all risks associated with its exercise
|
||||||
|
of rights under this Agreement, including but not limited to the risks and
|
||||||
|
costs of program errors, compliance with applicable laws, damage to or loss of
|
||||||
|
data, programs or equipment, and unavailability or interruption of operations.
|
||||||
|
|
||||||
|
6. DISCLAIMER OF LIABILITY
|
||||||
|
|
||||||
|
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
|
||||||
|
CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
|
||||||
|
PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
|
||||||
|
WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
|
||||||
|
GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
7. GENERAL
|
||||||
|
|
||||||
|
If any provision of this Agreement is invalid or unenforceable under applicable
|
||||||
|
law, it shall not affect the validity or enforceability of the remainder of the
|
||||||
|
terms of this Agreement, and without further action by the parties hereto, such
|
||||||
|
provision shall be reformed to the minimum extent necessary to make such
|
||||||
|
provision valid and enforceable.
|
||||||
|
|
||||||
|
If Recipient institutes patent litigation against any
|
||||||
|
entity (including a cross-claim or counterclaim in a lawsuit) alleging that the
|
||||||
|
Program itself (excluding combinations of the Program with other software or
|
||||||
|
hardware) infringes such Recipient's patent(s), then such Recipient's rights
|
||||||
|
granted under Section 2(b) shall terminate as of the date such litigation is
|
||||||
|
filed.
|
||||||
|
|
||||||
|
All Recipient's rights under this Agreement shall terminate if it fails to
|
||||||
|
comply with any of the material terms or conditions of this Agreement and does
|
||||||
|
not cure such failure in a reasonable period of time after becoming aware of
|
||||||
|
such noncompliance. If all Recipient's rights under this Agreement terminate,
|
||||||
|
Recipient agrees to cease use and distribution of the Program as soon as
|
||||||
|
reasonably practicable. However, Recipient's obligations under this Agreement
|
||||||
|
and any licenses granted by Recipient relating to the Program shall continue
|
||||||
|
and survive.
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute copies of this Agreement, but in
|
||||||
|
order to avoid inconsistency the Agreement is copyrighted and may only be
|
||||||
|
modified in the following manner. The Agreement Steward reserves the right to
|
||||||
|
publish new versions (including revisions) of this Agreement from time to time.
|
||||||
|
No one other than the Agreement Steward has the right to modify this Agreement.
|
||||||
|
The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to
|
||||||
|
serve as the Agreement Steward to a suitable separate entity. Each new version
|
||||||
|
of the Agreement will be given a distinguishing version number. The Program
|
||||||
|
(including Contributions) may always be distributed subject to the version of
|
||||||
|
the Agreement under which it was received. In addition, after a new version of
|
||||||
|
the Agreement is published, Contributor may elect to distribute the Program
|
||||||
|
(including its Contributions) under the new version. Except as expressly stated
|
||||||
|
in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
|
||||||
|
the intellectual property of any Contributor under this Agreement, whether
|
||||||
|
expressly, by implication, estoppel or otherwise. All rights in the Program not
|
||||||
|
expressly granted under this Agreement are reserved.
|
||||||
|
|
||||||
|
This Agreement is governed by the laws of the State of New York and the
|
||||||
|
intellectual property laws of the United States of America. No party to this
|
||||||
|
Agreement will bring a legal action under this Agreement more than one year
|
||||||
|
after the cause of action arose. Each party waives its rights to a jury trial
|
||||||
|
in any resulting litigation.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue