Sync docs from master to gh-pages
@@ -0,0 +1 @@
|
||||
{"checksum":"23a7e5a52b04e1a55f2d102255d7ea04","width":886,"height":676}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"c9ffba1bc9383435e35a7973e5641dd8","width":1213,"height":1341}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"30b3d3322b3ecb24a6c5346a8571ba98","width":815,"height":618}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"37241bc45c73dbad7383a4733a05d559","width":930,"height":810}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"b137ec966db7960885422f991695d28f","width":783,"height":677}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"a46f733654d99c8861184f0e4e04bb95","width":590,"height":685}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"b1418561d3b01d5d71885b4b7bb1be93","width":1138,"height":1223}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"7a8cb19e9d604071d61e4aa9201ee623","width":688,"height":903}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"27396daead141eee677aa6311403d175","width":986,"height":704}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"89bbfd25e4c214245543ed34208e2afa","width":1588,"height":1421}
|
||||
1
reference/html/.asciidoctor/diagram/rest-docs.png.cache
Normal file
@@ -0,0 +1 @@
|
||||
{"checksum":"e3500a52c420af0a5337450779a25536","width":1237,"height":835}
|
||||
@@ -100,7 +100,7 @@ $(addBlockSwitches);
|
||||
<li><a href="#_spring_cloud_contract_workshops">Spring Cloud Contract workshops</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#_documentation">Documentation</a></li>
|
||||
<li><a href="#_project_page">Project page</a></li>
|
||||
<li><a href="#_contributing">Contributing</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#_sign_the_contributor_license_agreement">Sign the Contributor License Agreement</a></li>
|
||||
@@ -110,7 +110,7 @@ $(addBlockSwitches);
|
||||
<li><a href="#_ide_setup">IDE setup</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#_how_to_build_it">How to build it</a>
|
||||
<li><a href="#_how_to_build_spring_cloud_contract">How to Build Spring Cloud Contract</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#_project_structure">Project structure</a></li>
|
||||
<li><a href="#_commands">Commands</a></li>
|
||||
@@ -121,32 +121,13 @@ $(addBlockSwitches);
|
||||
</div>
|
||||
</div>
|
||||
<div id="content">
|
||||
<div id="preamble">
|
||||
<div class="sectionbody">
|
||||
<div class="imageblock">
|
||||
<div class="content">
|
||||
<a class="image" href="https://gitter.im/spring-cloud/spring-cloud-contract?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"><img src="https://badges.gitter.im/Join%20Chat.svg" alt="Gitter"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="imageblock">
|
||||
<div class="content">
|
||||
<a class="image" href="https://codecov.io/gh/spring-cloud/spring-cloud-contract"><img src="https://codecov.io/gh/spring-cloud/spring-cloud-contract/branch/master/graph/badge.svg" alt="codecov"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="imageblock">
|
||||
<div class="content">
|
||||
<a class="image" href="https://circleci.com/gh/spring-cloud/spring-cloud-contract"><img src="https://circleci.com/gh/spring-cloud/spring-cloud-contract.svg?style=svg" alt="CircleCI"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="_spring_cloud_contract"><a class="link" href="#_spring_cloud_contract">Spring Cloud Contract</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>You always need confidence when pushing new features into a new application or service in
|
||||
a distributed system. To that end, this project provides support for Consumer-driven
|
||||
Contracts and service schemas in Spring applications, covering a range of options for
|
||||
a distributed system. To that end, this project provides support for consumer-driven
|
||||
contracts and service schemas in Spring applications, covering a range of options for
|
||||
writing tests, publishing them as assets, and asserting that a contract is kept by
|
||||
producers and consumers — for both HTTP and message-based interactions.</p>
|
||||
</div>
|
||||
@@ -161,11 +142,10 @@ workshops under
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="_documentation"><a class="link" href="#_documentation">Documentation</a></h2>
|
||||
<h2 id="_project_page"><a class="link" href="#_project_page">Project page</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>You can read more about Spring Cloud Contract Verifier by reading the
|
||||
{documentation_url}[docs]</p>
|
||||
<p>You can read more about Spring Cloud Contract by going to <a href="https://spring.io/projects/spring-cloud-contract">the project page</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -476,7 +456,7 @@ Remember to set the <code>Scan Scope</code> to <code>All sources</code> since we
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="_how_to_build_it"><a class="link" href="#_how_to_build_it">How to build it</a></h2>
|
||||
<h2 id="_how_to_build_spring_cloud_contract"><a class="link" href="#_how_to_build_spring_cloud_contract">How to Build Spring Cloud Contract</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="admonitionblock important">
|
||||
<table>
|
||||
@@ -486,9 +466,9 @@ Remember to set the <code>Scan Scope</code> to <code>All sources</code> since we
|
||||
</td>
|
||||
<td class="content">
|
||||
You need to have all the necessary Groovy plugins
|
||||
installed for your IDE to properly resolve the sources. For example in
|
||||
Intellij IDEA having both Eclipse Groovy Compiler Plugin & GMavenPlus Intellij Plugin
|
||||
results in properly imported project.
|
||||
installed for your IDE to properly resolve the sources. For example, in
|
||||
Intellij IDEA, having both the Eclipse Groovy Compiler Plugin and the GMavenPlus Intellij
|
||||
Plugin results in properly imported project.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -513,7 +493,7 @@ have Docker installed.
|
||||
<i class="fa icon-important" title="Important"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
If you want to run the build in offline mode, you have to have Maven 3.5.2+ installed.
|
||||
If you want to run the build in offline mode, you must have Maven 3.5.2+ installed.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -521,7 +501,7 @@ If you want to run the build in offline mode, you have to have Maven 3.5.2+ inst
|
||||
<div class="sect2">
|
||||
<h3 id="_project_structure"><a class="link" href="#_project_structure">Project structure</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>Here you can find the Spring Cloud Contract folder structure</p>
|
||||
<p>The following listing shows the Spring Cloud Contract folder structure:</p>
|
||||
</div>
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
@@ -541,52 +521,55 @@ If you want to run the build in offline mode, you have to have Maven 3.5.2+ inst
|
||||
└── tests</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>The following list describes each of the top-level folders in the project structure:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>config</code> - folder contains setup for Spring Cloud Release Tools automated release process</p>
|
||||
<p><code>config</code>: Folder contains setup for Spring Cloud Release Tools automated release process</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>docker</code> - folder contains docker images</p>
|
||||
<p><code>docker</code>: Folder contains docker images</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>samples</code> - folder contains test samples together with standalone ones used also to build documentation</p>
|
||||
<p><code>samples</code>: Folder contains test samples together with standalone ones used also to build documentation</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>scripts</code> - contains scripts to build and test <code>Spring Cloud Contract</code> with Maven, Gradle and standalone projects</p>
|
||||
<p><code>scripts</code>: Contains scripts to build and test <code>Spring Cloud Contract</code> with Maven, Gradle and standalone projects</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>specs</code> - contains specifications for the Contract DSL.</p>
|
||||
<p><code>specs</code>: Contains specifications for the Contract DSL.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>spring-cloud-contract-dependencies</code> - contains Spring Cloud Contract BOM</p>
|
||||
<p><code>spring-cloud-contract-dependencies</code>: Contains Spring Cloud Contract BOM</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>spring-cloud-contract-shade</code> - shaded dependencies used by the plugins</p>
|
||||
<p><code>spring-cloud-contract-shade</code>: Shaded dependencies used by the plugins</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>spring-cloud-contract-starters</code> - contains Spring Cloud Contract Starters</p>
|
||||
<p><code>spring-cloud-contract-starters</code>: Contains Spring Cloud Contract Starters</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>spring-cloud-contract-spec</code> - contains specification modules (contains concept of a Contract)</p>
|
||||
<p><code>spring-cloud-contract-spec</code>: Contains specification modules (contains concept of a Contract)</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>spring-cloud-contract-stub-runner</code> - contains Stub Runner related modules</p>
|
||||
<p><code>spring-cloud-contract-stub-runner</code>: Contains Stub Runner related modules</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>spring-cloud-contract-stub-runner-boot</code> - contains Stub Runner Boot app</p>
|
||||
<p><code>spring-cloud-contract-stub-runner-boot</code>: Contains Stub Runner Boot app</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>spring-cloud-contract-tools</code> - Gradle and Maven plugin for <code>Spring Cloud Contract Verifier</code></p>
|
||||
<p><code>spring-cloud-contract-tools</code>: Gradle and Maven plugin for <code>Spring Cloud Contract Verifier</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>spring-cloud-contract-verifier</code> - core of the <code>Spring Cloud Contract Verifier</code> functionality</p>
|
||||
<p><code>spring-cloud-contract-verifier</code>: Core of the <code>Spring Cloud Contract Verifier</code> functionality</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>spring-cloud-contract-wiremock</code> - all WireMock related functionality</p>
|
||||
<p><code>spring-cloud-contract-wiremock</code>: All WireMock related functionality</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>tests</code> - integration tests for different messaging technologies</p>
|
||||
<p><code>tests</code>: Integration tests for different messaging technologies</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -594,7 +577,8 @@ If you want to run the build in offline mode, you have to have Maven 3.5.2+ inst
|
||||
<div class="sect2">
|
||||
<h3 id="_commands"><a class="link" href="#_commands">Commands</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>To build the core functionality together with Maven Plugin you can run</p>
|
||||
<p>To build the core functionality together with the Maven Plugin, you can run the following
|
||||
command:</p>
|
||||
</div>
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
@@ -602,11 +586,12 @@ If you want to run the build in offline mode, you have to have Maven 3.5.2+ inst
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Calling that function will build core, Maven plugin, Gradle plugin and run end to end tests on the
|
||||
standalone samples in proper order (both for Maven and Gradle).</p>
|
||||
<p>Calling that function builds the core, the Maven plugin, and the Gradle plugin and runs
|
||||
end-to_end tests on the
|
||||
standalone samples in the proper order (both for Maven and Gradle).</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>To build the Gradle Plugin only</p>
|
||||
<p>To build only the Gradle Plugin, you can run the following commands:</p>
|
||||
</div>
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
@@ -618,10 +603,11 @@ standalone samples in proper order (both for Maven and Gradle).</p>
|
||||
<div class="sect2">
|
||||
<h3 id="_helpful_scripts"><a class="link" href="#_helpful_scripts">Helpful scripts</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>We’re providing a couple of helpful scripts to build the project.</p>
|
||||
<p>We provide a couple of helpful scripts to build the project.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>To build the project in parallel (by default uses 4 cores but you can change it)</p>
|
||||
<p>To build the project in parallel (by default, it uses four cores, but you can change it),
|
||||
run the following command:</p>
|
||||
</div>
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
@@ -629,7 +615,7 @@ standalone samples in proper order (both for Maven and Gradle).</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>and with 8 cores</p>
|
||||
<p>To use eight 8 cores, run thke following command:</p>
|
||||
</div>
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
@@ -637,7 +623,8 @@ standalone samples in proper order (both for Maven and Gradle).</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>To build the project without any integration tests (by default uses 1 core)</p>
|
||||
<p>To build the project without any integration tests (by default, this uses one core), run
|
||||
the following command:</p>
|
||||
</div>
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
@@ -645,7 +632,7 @@ standalone samples in proper order (both for Maven and Gradle).</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>and with 8 cores</p>
|
||||
<p>To use eight cores, run the following command:</p>
|
||||
</div>
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
@@ -653,7 +640,8 @@ standalone samples in proper order (both for Maven and Gradle).</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>To generate the documentation (both the root one and the maven plugin one)</p>
|
||||
<p>To generate the documentation (for both the root project and the maven plugin), run the
|
||||
following command:</p>
|
||||
</div>
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
|
||||
1197
reference/html/advanced.html
Normal file
585
reference/html/docker-project.html
Normal file
@@ -0,0 +1,585 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="generator" content="Asciidoctor 1.5.7.1">
|
||||
<title>Docker Project</title>
|
||||
<link rel="stylesheet" href="css/spring.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
|
||||
<style>
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.switch {
|
||||
border-width: 1px 1px 0 1px;
|
||||
border-style: solid;
|
||||
border-color: #7a2518;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.switch--item {
|
||||
padding: 10px;
|
||||
background-color: #ffffff;
|
||||
color: #7a2518;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.switch--item:not(:first-child) {
|
||||
border-width: 0 0 0 1px;
|
||||
border-style: solid;
|
||||
border-color: #7a2518;
|
||||
}
|
||||
|
||||
.switch--item.selected {
|
||||
background-color: #7a2519;
|
||||
color: #ffffff;
|
||||
}
|
||||
</style>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/zepto/1.2.0/zepto.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
function addBlockSwitches() {
|
||||
$('.primary').each(function() {
|
||||
primary = $(this);
|
||||
createSwitchItem(primary, createBlockSwitch(primary)).item.addClass("selected");
|
||||
primary.children('.title').remove();
|
||||
});
|
||||
$('.secondary').each(function(idx, node) {
|
||||
secondary = $(node);
|
||||
primary = findPrimary(secondary);
|
||||
switchItem = createSwitchItem(secondary, primary.children('.switch'));
|
||||
switchItem.content.addClass('hidden');
|
||||
findPrimary(secondary).append(switchItem.content);
|
||||
secondary.remove();
|
||||
});
|
||||
}
|
||||
|
||||
function createBlockSwitch(primary) {
|
||||
blockSwitch = $('<div class="switch"></div>');
|
||||
primary.prepend(blockSwitch);
|
||||
return blockSwitch;
|
||||
}
|
||||
|
||||
function findPrimary(secondary) {
|
||||
candidate = secondary.prev();
|
||||
while (!candidate.is('.primary')) {
|
||||
candidate = candidate.prev();
|
||||
}
|
||||
return candidate;
|
||||
}
|
||||
|
||||
function createSwitchItem(block, blockSwitch) {
|
||||
blockName = block.children('.title').text();
|
||||
content = block.children('.content').first().append(block.next('.colist'));
|
||||
item = $('<div class="switch--item">' + blockName + '</div>');
|
||||
item.on('click', '', content, function(e) {
|
||||
$(this).addClass('selected');
|
||||
$(this).siblings().removeClass('selected');
|
||||
e.data.siblings('.content').addClass('hidden');
|
||||
e.data.removeClass('hidden');
|
||||
});
|
||||
blockSwitch.append(item);
|
||||
return {'item': item, 'content': content};
|
||||
}
|
||||
|
||||
$(addBlockSwitches);
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body id="docker" class="book toc2 toc-left">
|
||||
<div id="header">
|
||||
<h1>Docker Project</h1>
|
||||
<div id="toc" class="toc2">
|
||||
<div id="toctitle">Table of Contents</div>
|
||||
<ul class="sectlevel1">
|
||||
<li><a href="#docker-intro">1. A Short Introduction to Maven, JARs and Binary storage</a></li>
|
||||
<li><a href="#docker-how-it-works">2. Generating Tests on the Producer Side</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#docker-env-vars">2.1. Environment Variables</a></li>
|
||||
<li><a href="#docker-example-of-usage">2.2. Example of Usage</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#docker-stubrunner">3. Running Stubs on the Consumer Side</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#docker-stubrunner-env-vars">3.1. Environment Variables</a></li>
|
||||
<li><a href="#docker-stubrunner-example">3.2. Example of Usage</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="content">
|
||||
<div id="preamble">
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>In this section, we publish a <code>springcloud/spring-cloud-contract</code> Docker image
|
||||
that contains a project that generates tests and runs them in <code>EXPLICIT</code> mode
|
||||
against a running application.</p>
|
||||
</div>
|
||||
<div class="admonitionblock tip">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="icon">
|
||||
<i class="fa icon-tip" title="Tip"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
The <code>EXPLICIT</code> mode means that the tests generated from contracts send
|
||||
real requests and not the mocked ones.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>We also publish a <code>spring-cloud/spring-cloud-contract-stub-runner</code> Docker image
|
||||
that starts the standalone version of Stub Runner.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="docker-intro"><a class="anchor" href="#docker-intro"></a><a class="link" href="#docker-intro">1. A Short Introduction to Maven, JARs and Binary storage</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Since non-JVM projects can use the Docker image, it is good to
|
||||
explain the basic terms behind Spring Cloud Contract packaging defaults.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Parts of the following definitions were taken from the <a href="https://maven.apache.org/glossary.html">Maven Glossary</a>:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>Project</code>: Maven thinks in terms of projects. Projects
|
||||
are all you build. Those projects follow a well defined
|
||||
“Project Object Model”. Projects can depend on other projects,
|
||||
in which case the latter are called “dependencies”. A project may
|
||||
consistent of several subprojects. However, these subprojects are still
|
||||
treated equally as projects.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>Artifact</code>: An artifact is something that is either produced or used
|
||||
by a project. Examples of artifacts produced by Maven for a project
|
||||
include JAR files and source and binary distributions. Each artifact
|
||||
is uniquely identified by a group ID and an artifact ID that is
|
||||
unique within a group.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>JAR</code>: JAR stands for Java ARchive. Its format is based on
|
||||
the ZIP file format. Spring Cloud Contract packages the contracts and generated
|
||||
stubs in a JAR file.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>GroupId</code>: A group ID is a universally unique identifier for a project.
|
||||
While this is often just the project name (for example, <code>commons-collections</code>),
|
||||
it is helpful to use a fully-qualified package name to distinguish it
|
||||
from other projects with a similar name (for example, <code>org.apache.maven</code>).
|
||||
Typically, when published to the Artifact Manager, the <code>GroupId</code> gets
|
||||
slash separated and forms part of the URL. For example, for a group ID of <code>com.example</code>
|
||||
and an artifact ID of <code>application</code>, the result would be <code>/com/example/application/</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>Classifier</code>: The Maven dependency notation looks as follows:
|
||||
<code>groupId:artifactId:version:classifier</code>. The classifier is an additional suffix
|
||||
passed to the dependency — for example, <code>stubs</code> or <code>sources</code>. The same dependency
|
||||
(for example, <code>com.example:application</code>) can produce multiple artifacts that
|
||||
differ from each other with the classifier.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>Artifact manager</code>: When you generate binaries, sources, or packages, you would
|
||||
like them to be available for others to download, reference, or reuse. In the case
|
||||
of the JVM world, those artifacts are generally JARs. For Ruby, those artifacts are gems.
|
||||
For Docker, those artifacts are Docker images. You can store those artifacts
|
||||
in a manager. Examples of such managers include <a href="https://jfrog.com/artifactory/">Artifactory</a>
|
||||
or <a href="https://www.sonatype.org/nexus/">Nexus</a>.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="docker-how-it-works"><a class="anchor" href="#docker-how-it-works"></a><a class="link" href="#docker-how-it-works">2. Generating Tests on the Producer Side</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>The image searches for contracts under the <code>/contracts</code> folder.
|
||||
The output from running the tests is available in the
|
||||
<code>/spring-cloud-contract/build</code> folder (useful for debugging
|
||||
purposes).</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>You can mount your contracts and pass the environment variables.
|
||||
The image then:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p>Generates the contract tests</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Runs the tests against the provided URL</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Generates the <a href="https://github.com/tomakehurst/wiremock">WireMock</a> stubs</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Publishes the stubs to a Artifact Manager (optional - turned on by default)</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="docker-env-vars"><a class="anchor" href="#docker-env-vars"></a><a class="link" href="#docker-env-vars">2.1. Environment Variables</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>The Docker image requires some environment variables to point to
|
||||
your running application, to the Artifact manager instance, and so on.
|
||||
The following list describes the environment variables:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>PROJECT_GROUP</code>: Your project’s group ID. Defaults to <code>com.example</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>PROJECT_VERSION</code>: Your project’s version. Defaults to <code>0.0.1-SNAPSHOT</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>PROJECT_NAME</code>: Your project’s artifact id. Defaults to <code>example</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>PRODUCER_STUBS_CLASSIFIER</code>: Archive classifier used for generated producer stubs. Defaults to <code>stubs</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>REPO_WITH_BINARIES_URL</code>: URL of your Artifact Manager. Defaults to <code><a href="http://localhost:8081/artifactory/libs-release-local" class="bare">localhost:8081/artifactory/libs-release-local</a></code>,
|
||||
which is the default URL of <a href="https://jfrog.com/artifactory/">Artifactory</a> running locally.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>REPO_WITH_BINARIES_USERNAME</code>: (optional) Username when the Artifact Manager is secured. Defaults to <code>admin</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>REPO_WITH_BINARIES_PASSWORD</code>: (optional) Password when the Artifact Manager is secured. Defaults to <code>password</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>PUBLISH_ARTIFACTS</code>: If set to <code>true</code>, publishes the artifact to binary storage. Defaults to <code>true</code>.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>These environment variables are used when contracts lay in an external repository. To enable
|
||||
this feature, you must set the <code>EXTERNAL_CONTRACTS_ARTIFACT_ID</code> environment variable.</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>EXTERNAL_CONTRACTS_GROUP_ID</code>: Group ID of the project with contracts. Defaults to <code>com.example</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>EXTERNAL_CONTRACTS_ARTIFACT_ID</code>: Artifact ID of the project with contracts.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>EXTERNAL_CONTRACTS_CLASSIFIER</code>: Classifier of the project with contracts. Empty by default.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>EXTERNAL_CONTRACTS_VERSION</code>: Version of the project with contracts. Defaults to <code>+</code>, equivalent to picking the latest.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>EXTERNAL_CONTRACTS_REPO_WITH_BINARIES_URL</code>: URL of your Artifact Manager. It defaults to
|
||||
the value of <code>REPO_WITH_BINARIES_URL</code> environment variable.
|
||||
If that is not set, it defaults to <code><a href="http://localhost:8081/artifactory/libs-release-local" class="bare">localhost:8081/artifactory/libs-release-local</a></code>,
|
||||
which is the default URL of <a href="https://jfrog.com/artifactory/">Artifactory</a> running locally.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>EXTERNAL_CONTRACTS_REPO_WITH_BINARIES_USERNAME</code>: (optional) Username if the <code>EXTERNAL_CONTRACTS_REPO_WITH_BINARIES_URL</code>
|
||||
requires authentication. It defaults to <code>REPO_WITH_BINARIES_USERNAME</code>. If that is not set, it defaults to <code>admin</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>EXTERNAL_CONTRACTS_REPO_WITH_BINARIES_PASSWORD</code>: (optional) Password if the <code>EXTERNAL_CONTRACTS_REPO_WITH_BINARIES_URL</code>
|
||||
requires authentication. It defaults to <code>REPO_WITH_BINARIES_PASSWORD</code>. If that is not set, it defaults to <code>password</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>EXTERNAL_CONTRACTS_PATH</code>: Path to contracts for the given project, inside the project with contracts.
|
||||
Defaults to slash-separated <code>EXTERNAL_CONTRACTS_GROUP_ID</code> concatenated with <code>/</code> and <code>EXTERNAL_CONTRACTS_ARTIFACT_ID</code>. For example,
|
||||
for group id <code>cat-server-side.dog</code> and artifact id <code>fish</code>, would result in <code>cat/dog/fish</code> for the contracts path.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>EXTERNAL_CONTRACTS_WORK_OFFLINE</code>; If set to <code>true</code>, retrieves the artifact with contracts
|
||||
from the container’s <code>.m2</code>. Mount your local <code>.m2</code> as a volume available at the container’s <code>/root/.m2</code> path.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="admonitionblock warning">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="icon">
|
||||
<i class="fa icon-warning" title="Warning"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
You must not set both <code>EXTERNAL_CONTRACTS_WORK_OFFLINE</code> and <code>EXTERNAL_CONTRACTS_REPO_WITH_BINARIES_URL</code>.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>The following environment variables are used when tests are executed:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>APPLICATION_BASE_URL</code>: URL against which tests should be run.
|
||||
Remember that it has to be accessible from the Docker container (for example, <code>localhost</code>
|
||||
does not work)</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>APPLICATION_USERNAME</code>: (optional) Username for basic authentication to your application.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>APPLICATION_PASSWORD</code>: (optional) Password for basic authentication to your application.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="docker-example-of-usage"><a class="anchor" href="#docker-example-of-usage"></a><a class="link" href="#docker-example-of-usage">2.2. Example of Usage</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>In this section, we explore a simple MVC application. To get started, clone the following
|
||||
git repository and cd to the resulting directory, by running the following commands:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">$ git clone https://github.com/spring-cloud-samples/spring-cloud-contract-nodejs
|
||||
$ cd bookstore</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>The contracts are available in the <code>/contracts</code> folder.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Since we want to run tests, we can run the following command:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">$ npm test</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>However, for learning purposes, we split it into pieces, as follows:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash"># Stop docker infra (nodejs, artifactory)
|
||||
$ ./stop_infra.sh
|
||||
# Start docker infra (nodejs, artifactory)
|
||||
$ ./setup_infra.sh
|
||||
|
||||
# Kill & Run app
|
||||
$ pkill -f "node app"
|
||||
$ nohup node app &
|
||||
|
||||
# Prepare environment variables
|
||||
$ SC_CONTRACT_DOCKER_VERSION="..."
|
||||
$ APP_IP="192.168.0.100"
|
||||
$ APP_PORT="3000"
|
||||
$ ARTIFACTORY_PORT="8081"
|
||||
$ APPLICATION_BASE_URL="http://${APP_IP}:${APP_PORT}"
|
||||
$ ARTIFACTORY_URL="http://${APP_IP}:${ARTIFACTORY_PORT}/artifactory/libs-release-local"
|
||||
$ CURRENT_DIR="$( pwd )"
|
||||
$ CURRENT_FOLDER_NAME=${PWD##*/}
|
||||
$ PROJECT_VERSION="0.0.1.RELEASE"
|
||||
|
||||
# Execute contract tests
|
||||
$ docker run --rm -e "APPLICATION_BASE_URL=${APPLICATION_BASE_URL}" -e "PUBLISH_ARTIFACTS=true" -e "PROJECT_NAME=${CURRENT_FOLDER_NAME}" -e "REPO_WITH_BINARIES_URL=${ARTIFACTORY_URL}" -e "PROJECT_VERSION=${PROJECT_VERSION}" -v "${CURRENT_DIR}/contracts/:/contracts:ro" -v "${CURRENT_DIR}/node_modules/spring-cloud-contract/output:/spring-cloud-contract-output/" springcloud/spring-cloud-contract:"${SC_CONTRACT_DOCKER_VERSION}"
|
||||
|
||||
# Kill app
|
||||
$ pkill -f "node app"</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Through bash scripts, the following happens:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p>The infrastructure (MongoDb and Artifactory) is set up.
|
||||
In a real-life scenario, you would run the NodeJS application
|
||||
with a mocked database. In this example, we want to show how we can
|
||||
benefit from Spring Cloud Contract in very little time.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Due to those constraints, the contracts also represent the
|
||||
stateful situation.</p>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p>The first request is a <code>POST</code> that causes data to get inserted to the database.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>The second request is a <code>GET</code> that returns a list of data with 1 previously inserted element.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<p>The NodeJS application is started (on port <code>3000</code>).</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>The contract tests are generated through Docker, and tests
|
||||
are run against the running application.</p>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p>The contracts are taken from <code>/contracts</code> folder.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>The output of the test execution is available under
|
||||
<code>node_modules/spring-cloud-contract/output</code>.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<p>The stubs are uploaded to Artifactory. You can find them in
|
||||
<a href="http://localhost:8081/artifactory/libs-release-local/com/example/bookstore/0.0.1.RELEASE/" class="bare">localhost:8081/artifactory/libs-release-local/com/example/bookstore/0.0.1.RELEASE/</a> .
|
||||
The stubs are at <a href="http://localhost:8081/artifactory/libs-release-local/com/example/bookstore/0.0.1.RELEASE/bookstore-0.0.1.RELEASE-stubs.jar" class="bare">localhost:8081/artifactory/libs-release-local/com/example/bookstore/0.0.1.RELEASE/bookstore-0.0.1.RELEASE-stubs.jar</a>.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="docker-stubrunner"><a class="anchor" href="#docker-stubrunner"></a><a class="link" href="#docker-stubrunner">3. Running Stubs on the Consumer Side</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>This section describes how to use Docker on the consumer side to fetch and run stubs.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>We publish a <code>spring-cloud/spring-cloud-contract-stub-runner</code> Docker image
|
||||
that starts the standalone version of Stub Runner.</p>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="docker-stubrunner-env-vars"><a class="anchor" href="#docker-stubrunner-env-vars"></a><a class="link" href="#docker-stubrunner-env-vars">3.1. Environment Variables</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>You can run the docker image and pass any of the <a href="project-features.html#features-stub-runner-common-properties-junit-spring">Common Properties for JUnit and Spring</a>
|
||||
as environment variables. The convention is that all the
|
||||
letters should be upper case.
|
||||
The dot (<code>.</code>) should be replaced with underscore (<code>_</code>) characters. For example,
|
||||
the <code>stubrunner.repositoryRoot</code> property should be represented
|
||||
as a <code>STUBRUNNER_REPOSITORY_ROOT</code> environment variable.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="docker-stubrunner-example"><a class="anchor" href="#docker-stubrunner-example"></a><a class="link" href="#docker-stubrunner-example">3.2. Example of Usage</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>We want to use the stubs created in this <a href="#docker-server-side">[docker-server-side]</a> step.
|
||||
Assume that we want to run the stubs on port <code>9876</code>. You can see the NodeJS code
|
||||
by cloning the repository and changing to the directory indicated in the following commands:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">$ git clone https://github.com/spring-cloud-samples/spring-cloud-contract-nodejs
|
||||
$ cd bookstore</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Now we can run the Stub Runner Boot application with the stubs, by running the following
|
||||
commands:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash"># Provide the Spring Cloud Contract Docker version
|
||||
$ SC_CONTRACT_DOCKER_VERSION="..."
|
||||
# The IP at which the app is running and Docker container can reach it
|
||||
$ APP_IP="192.168.0.100"
|
||||
# Spring Cloud Contract Stub Runner properties
|
||||
$ STUBRUNNER_PORT="8083"
|
||||
# Stub coordinates 'groupId:artifactId:version:classifier:port'
|
||||
$ STUBRUNNER_IDS="com.example:bookstore:0.0.1.RELEASE:stubs:9876"
|
||||
$ STUBRUNNER_REPOSITORY_ROOT="http://${APP_IP}:8081/artifactory/libs-release-local"
|
||||
# Run the docker with Stub Runner Boot
|
||||
$ docker run --rm -e "STUBRUNNER_IDS=${STUBRUNNER_IDS}" -e "STUBRUNNER_REPOSITORY_ROOT=${STUBRUNNER_REPOSITORY_ROOT}" -e "STUBRUNNER_STUBS_MODE=REMOTE" -p "${STUBRUNNER_PORT}:${STUBRUNNER_PORT}" -p "9876:9876" springcloud/spring-cloud-contract-stub-runner:"${SC_CONTRACT_DOCKER_VERSION}"</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>When the preceding commands run,</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p>A standalone Stub Runner application gets started.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>It downloads the stub with coordinates <code>com.example:bookstore:0.0.1.RELEASE:stubs</code> on port <code>9876</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>It gets downloads from Artifactory running at <code><a href="http://192.168.0.100:8081/artifactory/libs-release-local" class="bare">192.168.0.100:8081/artifactory/libs-release-local</a></code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>After a whil, Stub Runner is running on port <code>8083</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>The stubs are running at port <code>9876</code>.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>On the server side, we built a stateful stub. We can use curl to assert
|
||||
that the stubs are setup properly. To do so, run the following commands:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash"># let's execute the first request (no response is returned)
|
||||
$ curl -H "Content-Type:application/json" -X POST --data '{ "title" : "Title", "genre" : "Genre", "description" : "Description", "author" : "Author", "publisher" : "Publisher", "pages" : 100, "image_url" : "https://d213dhlpdb53mu.cloudfront.net/assets/pivotal-square-logo-41418bd391196c3022f3cd9f3959b3f6d7764c47873d858583384e759c7db435.svg", "buy_url" : "https://pivotal.io" }' http://localhost:9876/api/books
|
||||
# Now time for the second request
|
||||
$ curl -X GET http://localhost:9876/api/books
|
||||
# You will receive contents of the JSON</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="admonitionblock important">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="icon">
|
||||
<i class="fa icon-important" title="Important"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
If you want use the stubs that you have built locally, on your host,
|
||||
you should set the <code>-e STUBRUNNER_STUBS_MODE=LOCAL</code> environment variable and mount
|
||||
the volume of your local m2 (<code>-v "${HOME}/.m2/:/root/.m2:ro"</code>).
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="js/tocbot/tocbot.min.js"></script>
|
||||
<script type="text/javascript" src="js/toc.js"></script>
|
||||
<link rel="stylesheet" href="js/highlight/styles/atom-one-dark-reasonable.min.css">
|
||||
<script src="js/highlight/highlight.min.js"></script>
|
||||
<script>hljs.initHighlighting()</script>
|
||||
</body>
|
||||
</html>
|
||||
372
reference/html/documentation-overview.html
Normal file
@@ -0,0 +1,372 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="generator" content="Asciidoctor 1.5.7.1">
|
||||
<title>Spring Cloud Contract Documentation</title>
|
||||
<link rel="stylesheet" href="css/spring.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
|
||||
<style>
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.switch {
|
||||
border-width: 1px 1px 0 1px;
|
||||
border-style: solid;
|
||||
border-color: #7a2518;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.switch--item {
|
||||
padding: 10px;
|
||||
background-color: #ffffff;
|
||||
color: #7a2518;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.switch--item:not(:first-child) {
|
||||
border-width: 0 0 0 1px;
|
||||
border-style: solid;
|
||||
border-color: #7a2518;
|
||||
}
|
||||
|
||||
.switch--item.selected {
|
||||
background-color: #7a2519;
|
||||
color: #ffffff;
|
||||
}
|
||||
</style>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/zepto/1.2.0/zepto.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
function addBlockSwitches() {
|
||||
$('.primary').each(function() {
|
||||
primary = $(this);
|
||||
createSwitchItem(primary, createBlockSwitch(primary)).item.addClass("selected");
|
||||
primary.children('.title').remove();
|
||||
});
|
||||
$('.secondary').each(function(idx, node) {
|
||||
secondary = $(node);
|
||||
primary = findPrimary(secondary);
|
||||
switchItem = createSwitchItem(secondary, primary.children('.switch'));
|
||||
switchItem.content.addClass('hidden');
|
||||
findPrimary(secondary).append(switchItem.content);
|
||||
secondary.remove();
|
||||
});
|
||||
}
|
||||
|
||||
function createBlockSwitch(primary) {
|
||||
blockSwitch = $('<div class="switch"></div>');
|
||||
primary.prepend(blockSwitch);
|
||||
return blockSwitch;
|
||||
}
|
||||
|
||||
function findPrimary(secondary) {
|
||||
candidate = secondary.prev();
|
||||
while (!candidate.is('.primary')) {
|
||||
candidate = candidate.prev();
|
||||
}
|
||||
return candidate;
|
||||
}
|
||||
|
||||
function createSwitchItem(block, blockSwitch) {
|
||||
blockName = block.children('.title').text();
|
||||
content = block.children('.content').first().append(block.next('.colist'));
|
||||
item = $('<div class="switch--item">' + blockName + '</div>');
|
||||
item.on('click', '', content, function(e) {
|
||||
$(this).addClass('selected');
|
||||
$(this).siblings().removeClass('selected');
|
||||
e.data.siblings('.content').addClass('hidden');
|
||||
e.data.removeClass('hidden');
|
||||
});
|
||||
blockSwitch.append(item);
|
||||
return {'item': item, 'content': content};
|
||||
}
|
||||
|
||||
$(addBlockSwitches);
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body id="documentation" class="book toc2 toc-left">
|
||||
<div id="header">
|
||||
<h1>Spring Cloud Contract Documentation</h1>
|
||||
<div id="toc" class="toc2">
|
||||
<div id="toctitle">Table of Contents</div>
|
||||
<ul class="sectlevel1">
|
||||
<li><a href="#contract-documentation-about">1. About the Documentation</a></li>
|
||||
<li><a href="#documentation-getting-help">2. Getting Help</a></li>
|
||||
<li><a href="#contract-documentation-first-steps">3. First Steps</a></li>
|
||||
<li><a href="#working-with-spring-cloud-contract">4. Working with Spring Cloud Contract</a></li>
|
||||
<li><a href="#learning-about-spring-cloud-contract-features">5. Learning about Spring Cloud Contract Features</a></li>
|
||||
<li><a href="#advanced-topics">6. Advanced Topics</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="content">
|
||||
<div id="preamble">
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>This section provides a brief overview of Spring Cloud Contract reference documentation. It serves
|
||||
as a map for the rest of the document.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="contract-documentation-about"><a class="anchor" href="#contract-documentation-about"></a><a class="link" href="#contract-documentation-about">1. About the Documentation</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>The Spring Cloud Contract reference guide is available as</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://cloud.spring.io/spring-cloud-contract/${git.branch}//html">Multi-page HTML</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://cloud.spring.io/spring-cloud-contract/${git.branch}//htmlsingle">Single-page HTML</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://cloud.spring.io/spring-cloud-contract/${git.branch}//pdf/spring-cloud-contract.pdf">PDF</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Copies of this document may be made for your own use and for distribution to others,
|
||||
provided that you do not charge any fee for such copies and further provided that each
|
||||
copy contains this Copyright Notice, whether distributed in print or electronically.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="documentation-getting-help"><a class="anchor" href="#documentation-getting-help"></a><a class="link" href="#documentation-getting-help">2. Getting Help</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>If you have trouble with Spring Cloud Contract, we would like to help.</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p>Try the <a href="howto.html#howto">How-to documents</a>. They provide solutions to the most
|
||||
common questions.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Learn the Spring Cloud Contract basics. If you are
|
||||
starting out with Spring Cloud Contract, try one of the <a href="https://spring.io/guides">guides</a>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Ask a question. We monitor <a href="https://stackoverflow.com">stackoverflow.com</a> for questions
|
||||
tagged with <a href="https://stackoverflow.com/tags/spring-cloud-contract"><code>spring-cloud-contract</code></a>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Report bugs with Spring Cloud Contract at <a href="https://github.com/spring-cloud/spring-cloud-contract/issues" class="bare">github.com/spring-cloud/spring-cloud-contract/issues</a>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Chat with us at <a href="http://https://gitter.im/spring-cloud/spring-cloud-contract">Spring Cloud Contract Gitter</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="admonitionblock note">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="icon">
|
||||
<i class="fa icon-note" title="Note"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
All of Spring Cloud Contract is open source, including the documentation. If you find
|
||||
problems with the docs or if you want to improve them, please <a href="https://github.com/spring-cloud/spring-cloud-contract/tree/${github-tag}">get
|
||||
involved</a>.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="contract-documentation-first-steps"><a class="anchor" href="#contract-documentation-first-steps"></a><a class="link" href="#contract-documentation-first-steps">3. First Steps</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>If you are getting started with Spring Cloud Contract or 'Spring' in general, start with
|
||||
<a href="getting-started.html#getting-started">the following topics</a>:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><strong>From scratch:</strong>
|
||||
<a href="getting-started.html#getting-started-introducing-spring-cloud-contract">Overview</a> |
|
||||
<a href="getting-started.html#getting-started-three-second-tour">Three-second Tour</a> |
|
||||
<a href="getting-started.html#getting-started-first-application">First application</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Tutorial:</strong>
|
||||
<a href="getting-started.html#getting-started-cdc">Introduction</a> |
|
||||
<a href="getting-started.html#consumer-side-loan-issuance">Consumer, Part 1</a> |
|
||||
<a href="getting-started.html#producer-side-fraud-detection-server">Producer</a> |
|
||||
<a href="getting-started.html#consumer-side-loan-issuance-final-step">Consumer, Part 2</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="working-with-spring-cloud-contract"><a class="anchor" href="#working-with-spring-cloud-contract"></a><a class="link" href="#working-with-spring-cloud-contract">4. Working with Spring Cloud Contract</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Ready to actually start using Spring Cloud Contract? <a href="using.html#using">We have
|
||||
you covered</a>:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><strong>Provider contract testing:</strong></p>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="using.html#flows-provider-nexus">Provider contract testing with stubs in Nexus or Artifactory</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="using.html#flows-provider-git">Provider contract testing with stubs in Git</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="using.html#flows-provider-non-spring">Provider contract testing with stubs in Artifactory for a non-Spring application</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="using.html#flows-provider-non-jvm">Provider contract testing with stubs in Artifactory in non JVM world</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="using.html#flows-provider-rest-docs">Provider contract testing with REST Docs and stubs in Nexus / Artifactory</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Consumer-Driven contract testing:</strong></p>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="using.html#flows-cdc-contracts-producer">Consumer Driven Contracts with contracts on the producer side</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="using.html#flows-cdc-contracts-external">Consumer Driven Contracts with contracts in external repo</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="using.html#flows-cdc-contracts-stubs-git">Consumer Driven Contracts with contracts on the producer side, pushed to git</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="admonitionblock tip">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="icon">
|
||||
<i class="fa icon-tip" title="Tip"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
We talk about <strong>Provider Contracts</strong> when it is the producer of the API that defines the contracts and
|
||||
publishes it for all its consumers to use. This approach is useful for producers that cannot
|
||||
directly collaborate with their consumers — for example, when there are too many consumers or
|
||||
the consumers are external (do not work within the same company).
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="admonitionblock tip">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="icon">
|
||||
<i class="fa icon-tip" title="Tip"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
We use the term, <strong>Consumer-Driven Contracts</strong>, to refer to workflows where the consumers of an API
|
||||
play a vital role in the process of creating the contracts. We recommended this approach, because it is easy
|
||||
to implement when both producer and consumer teams work for the same organizations and the number
|
||||
of consumers is not extremely large.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="learning-about-spring-cloud-contract-features"><a class="anchor" href="#learning-about-spring-cloud-contract-features"></a><a class="link" href="#learning-about-spring-cloud-contract-features">5. Learning about Spring Cloud Contract Features</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Need more details about Spring Cloud Contract’s core features?
|
||||
<a href="project-features.html#features">The following content is for you</a>:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><strong>Core Features:</strong>
|
||||
<a href="project-features.html#contract-dsl">Contract DSL</a> |
|
||||
<a href="project-features.html#features-http">Contracts for HTTP</a> |
|
||||
<a href="project-features.html#features-messaging">Contracts for Messaging</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Integrations:</strong>
|
||||
<a href="project-features.html#features-jax-rs">JAX-RS</a> |
|
||||
<a href="project-features.html#features-context-paths">Context Paths</a> |
|
||||
<a href="project-features.html#features-rest-docs">RESTDocs</a>
|
||||
<a href="howto.html#how-to-generate-pact-from-scc">Pact</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Modules:</strong>
|
||||
<a href="project-features.html#features-stub-runner">Stub Runner</a> |
|
||||
<a href="project-features.html#features-wiremock">WireMock</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Build Tools:</strong>
|
||||
<a href="maven-project.html">Contract Verifier - Maven</a> |
|
||||
<a href="gradle-project.html">Contract Verifier - Gradle</a> |
|
||||
<a href="docker-project.html">Docker</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="advanced-topics"><a class="anchor" href="#advanced-topics"></a><a class="link" href="#advanced-topics">6. Advanced Topics</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Finally, we have a few topics for more advanced users:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><strong>Customizing the DSL:</strong>
|
||||
<a href="advanced.html#contract-dsl-customization">DSL Customization</a> |
|
||||
<a href="advanced.html#contract-dsl-extending-common-jar">Common JAR</a> |
|
||||
<a href="advanced.html#contract-dsl-test-dep">Test Dependency</a> |
|
||||
<a href="advanced.html#contract-dsl-plugin-dep">Plugin Dependency</a> |
|
||||
<a href="advanced.html#contract-dsl-referencing">Referencing the DSL</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Customizing WireMock:</strong>
|
||||
<a href="advanced.html#customization-wiremock-extension">Extensions</a> |
|
||||
<a href="advanced.html#customization-wiremock-configuration">Configuration</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Customizing Spring Cloud Contract:</strong>
|
||||
<a href="advanced.html#contract-dsl-pluggable-architecture">Pluggable Architecture</a> |
|
||||
<a href="advanced.html#contract-dsl-custom-contract-converter">Contract Converter</a> |
|
||||
<a href="advanced.html#contract-dsl-custom-test-generator">Test Generator</a> |
|
||||
<a href="advanced.html#contract-dsl-custom-stub-generator">Stub Generator</a> |
|
||||
<a href="advanced.html#contract-dsl-custom-stub-runner">Stub Runner</a> |
|
||||
<a href="advanced.html#contract-dsl-custom-stub-downloader">Stub Downloader</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="js/tocbot/tocbot.min.js"></script>
|
||||
<script type="text/javascript" src="js/toc.js"></script>
|
||||
<link rel="stylesheet" href="js/highlight/styles/atom-one-dark-reasonable.min.css">
|
||||
<script src="js/highlight/highlight.min.js"></script>
|
||||
<script>hljs.initHighlighting()</script>
|
||||
</body>
|
||||
</html>
|
||||
2370
reference/html/getting-started.html
Normal file
862
reference/html/gradle-project.html
Normal file
@@ -0,0 +1,862 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="generator" content="Asciidoctor 1.5.7.1">
|
||||
<title>Gradle Project</title>
|
||||
<link rel="stylesheet" href="css/spring.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
|
||||
<style>
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.switch {
|
||||
border-width: 1px 1px 0 1px;
|
||||
border-style: solid;
|
||||
border-color: #7a2518;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.switch--item {
|
||||
padding: 10px;
|
||||
background-color: #ffffff;
|
||||
color: #7a2518;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.switch--item:not(:first-child) {
|
||||
border-width: 0 0 0 1px;
|
||||
border-style: solid;
|
||||
border-color: #7a2518;
|
||||
}
|
||||
|
||||
.switch--item.selected {
|
||||
background-color: #7a2519;
|
||||
color: #ffffff;
|
||||
}
|
||||
</style>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/zepto/1.2.0/zepto.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
function addBlockSwitches() {
|
||||
$('.primary').each(function() {
|
||||
primary = $(this);
|
||||
createSwitchItem(primary, createBlockSwitch(primary)).item.addClass("selected");
|
||||
primary.children('.title').remove();
|
||||
});
|
||||
$('.secondary').each(function(idx, node) {
|
||||
secondary = $(node);
|
||||
primary = findPrimary(secondary);
|
||||
switchItem = createSwitchItem(secondary, primary.children('.switch'));
|
||||
switchItem.content.addClass('hidden');
|
||||
findPrimary(secondary).append(switchItem.content);
|
||||
secondary.remove();
|
||||
});
|
||||
}
|
||||
|
||||
function createBlockSwitch(primary) {
|
||||
blockSwitch = $('<div class="switch"></div>');
|
||||
primary.prepend(blockSwitch);
|
||||
return blockSwitch;
|
||||
}
|
||||
|
||||
function findPrimary(secondary) {
|
||||
candidate = secondary.prev();
|
||||
while (!candidate.is('.primary')) {
|
||||
candidate = candidate.prev();
|
||||
}
|
||||
return candidate;
|
||||
}
|
||||
|
||||
function createSwitchItem(block, blockSwitch) {
|
||||
blockName = block.children('.title').text();
|
||||
content = block.children('.content').first().append(block.next('.colist'));
|
||||
item = $('<div class="switch--item">' + blockName + '</div>');
|
||||
item.on('click', '', content, function(e) {
|
||||
$(this).addClass('selected');
|
||||
$(this).siblings().removeClass('selected');
|
||||
e.data.siblings('.content').addClass('hidden');
|
||||
e.data.removeClass('hidden');
|
||||
});
|
||||
blockSwitch.append(item);
|
||||
return {'item': item, 'content': content};
|
||||
}
|
||||
|
||||
$(addBlockSwitches);
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="book toc2 toc-left">
|
||||
<div id="header">
|
||||
<h1>Gradle Project</h1>
|
||||
<div id="toc" class="toc2">
|
||||
<div id="toctitle">Table of Contents</div>
|
||||
<ul class="sectlevel1">
|
||||
<li><a href="#gradle-prerequisites">1. Prerequisites</a></li>
|
||||
<li><a href="#gradle-add-gradle-plugin">2. Add Gradle Plugin with Dependencies</a></li>
|
||||
<li><a href="#gradle-and-rest-assured">3. Gradle and Rest Assured 2.0</a></li>
|
||||
<li><a href="#gradle-snapshot-versions">4. Snapshot Versions for Gradle</a></li>
|
||||
<li><a href="#gradle-add-stubs">5. Add stubs</a></li>
|
||||
<li><a href="#gradle-run-plugin">6. Running the Plugin</a></li>
|
||||
<li><a href="#gradle-default-setup">7. Default Setup</a></li>
|
||||
<li><a href="#gradle-configure-plugin">8. Configuring the Plugin</a></li>
|
||||
<li><a href="#gradle-configuration-options">9. Configuration Options</a></li>
|
||||
<li><a href="#gradle-single-base-class">10. Single Base Class for All Tests</a></li>
|
||||
<li><a href="#gradle-different-base-classes">11. Different Base Classes for Contracts</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#by-convention">11.1. By Convention</a></li>
|
||||
<li><a href="#by-mapping">11.2. By Mapping</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#gradle-invoking-generated-tests">12. Invoking Generated Tests</a></li>
|
||||
<li><a href="#gradle-pushing-stubs-to-scm">13. Pushing Stubs to SCM</a></li>
|
||||
<li><a href="#gradle-consumer">14. Spring Cloud Contract Verifier on the Consumer Side</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="content">
|
||||
<div id="preamble">
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>To learn how to set up the Gradle project for Spring Cloud Contract Verifier, read the
|
||||
following sections:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="#gradle-prerequisites">Prerequisites</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="#gradle-add-gradle-plugin">Add Gradle Plugin with Dependencies</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="#gradle-and-rest-assured">Gradle and Rest Assured 2.0</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="#gradle-snapshot-versions">Snapshot Versions for Gradle</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="#gradle-add-stubs">Add stubs</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="#gradle-default-setup">Default Setup</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="#gradle-configure-plugin">Configuring the Plugin</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="#gradle-configuration-options">Configuration Options</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="#gradle-single-base-class">Single Base Class for All Tests</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="#gradle-different-base-classes">Different Base Classes for Contracts</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="#gradle-invoking-generated-tests">Invoking Generated Tests</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="#gradle-pushing-stubs-to-scm">Pushing Stubs to SCM</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="#gradle-consumer">Spring Cloud Contract Verifier on the Consumer Side</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-prerequisites"><a class="anchor" href="#gradle-prerequisites"></a><a class="link" href="#gradle-prerequisites">1. Prerequisites</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>In order to use Spring Cloud Contract Verifier with WireMock, you must use either a
|
||||
Gradle or a Maven plugin.</p>
|
||||
</div>
|
||||
<div class="admonitionblock warning">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="icon">
|
||||
<i class="fa icon-warning" title="Warning"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
If you want to use Spock in your projects, you must separately add the
|
||||
<code>spock-core</code> and <code>spock-spring</code> modules. See <a href="https://spockframework.github.io/">Spock’s
|
||||
documnetation for more information</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-add-gradle-plugin"><a class="anchor" href="#gradle-add-gradle-plugin"></a><a class="link" href="#gradle-add-gradle-plugin">2. Add Gradle Plugin with Dependencies</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>To add a Gradle plugin with dependencies, you can use code similar to the following:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock primary">
|
||||
<div class="title">Plugin DSL</div>
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springboot_version}"
|
||||
classpath "org.springframework.cloud:spring-cloud-contract-gradle-plugin:${verifier_version}"
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'groovy'
|
||||
apply plugin: 'spring-cloud-contract'
|
||||
|
||||
dependencyManagement {
|
||||
imports {
|
||||
mavenBom "org.springframework.cloud:spring-cloud-contract-dependencies:${verifier_version}"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
testCompile "org.codehaus.groovy:groovy-all:${groovyVersion}"
|
||||
// example with adding Spock core and Spock Spring
|
||||
testCompile "org.spockframework:spock-core:${spockVersion}"
|
||||
testCompile "org.spockframework:spock-spring:${spockVersion}"
|
||||
testCompile 'org.springframework.cloud:spring-cloud-starter-contract-verifier'
|
||||
}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listingblock secondary">
|
||||
<div class="title">Legacy Plugin Application</div>
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springboot_version}"
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'groovy'
|
||||
|
||||
plugins {
|
||||
id "org.springframework.cloud.contract" version "${GAVerifierVersion}"
|
||||
}
|
||||
|
||||
dependencyManagement {
|
||||
imports {
|
||||
mavenBom "org.springframework.cloud:spring-cloud-contract-dependencies:${verifier_version}"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
testCompile "org.codehaus.groovy:groovy-all:${groovyVersion}"
|
||||
// example with adding Spock core and Spock Spring
|
||||
testCompile "org.spockframework:spock-core:${spockVersion}"
|
||||
testCompile "org.spockframework:spock-spring:${spockVersion}"
|
||||
testCompile 'org.springframework.cloud:spring-cloud-starter-contract-verifier'
|
||||
}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="admonitionblock important">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="icon">
|
||||
<i class="fa icon-important" title="Important"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
The Plugin DSL option will only work for GA (General Availability) releases (i.e. <code>2.2.0.RELEASE</code> etc.).
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-and-rest-assured"><a class="anchor" href="#gradle-and-rest-assured"></a><a class="link" href="#gradle-and-rest-assured">3. Gradle and Rest Assured 2.0</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>By default, Rest Assured 3.x is added to the classpath. However, to use Rest Assured 2.x
|
||||
you can add it to the plugins classpath, as the following listing shows:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springboot_version}"
|
||||
classpath "org.springframework.cloud:spring-cloud-contract-gradle-plugin:${verifier_version}"
|
||||
classpath "com.jayway.restassured:rest-assured:2.5.0"
|
||||
classpath "com.jayway.restassured:spring-mock-mvc:2.5.0"
|
||||
}
|
||||
}
|
||||
|
||||
depenendencies {
|
||||
// all dependencies
|
||||
// you can exclude rest-assured from spring-cloud-contract-verifier
|
||||
testCompile "com.jayway.restassured:rest-assured:2.5.0"
|
||||
testCompile "com.jayway.restassured:spring-mock-mvc:2.5.0"
|
||||
}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>That way, the plugin automatically sees that Rest Assured 2.x is present on the classpath
|
||||
and modifies the imports accordingly.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-snapshot-versions"><a class="anchor" href="#gradle-snapshot-versions"></a><a class="link" href="#gradle-snapshot-versions">4. Snapshot Versions for Gradle</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>You can add the additional snapshot repository to your <code>build.gradle</code> to use snapshot versions,
|
||||
which are automatically uploaded after every successful build, as the following listing shows:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
mavenLocal()
|
||||
maven { url "https://repo.spring.io/snapshot" }
|
||||
maven { url "https://repo.spring.io/milestone" }
|
||||
maven { url "https://repo.spring.io/release" }
|
||||
}
|
||||
}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-add-stubs"><a class="anchor" href="#gradle-add-stubs"></a><a class="link" href="#gradle-add-stubs">5. Add stubs</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>By default, Spring Cloud Contract Verifier looks for stubs in the
|
||||
<code>src/test/resources/contracts</code> directory.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>The directory that contains stub definitions is treated as a class name, and each stub
|
||||
definition is treated as a single test. Spring Cloud Contract Verifier assumes that it
|
||||
contains at least one level of directories that are to be used as the test class name.
|
||||
If more than one level of nested directories is present, all except the last one is used
|
||||
as the package name. Consider the following structure:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">src/test/resources/contracts/myservice/shouldCreateUser.groovy
|
||||
src/test/resources/contracts/myservice/shouldReturnUser.groovy</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Given the preceding structure, Spring Cloud Contract Verifier creates a test class named
|
||||
<code>defaultBasePackage.MyService</code> with two methods:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>shouldCreateUser()</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>shouldReturnUser()</code></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-run-plugin"><a class="anchor" href="#gradle-run-plugin"></a><a class="link" href="#gradle-run-plugin">6. Running the Plugin</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>The plugin registers itself to be invoked before a <code>check</code> task. If you want it to be
|
||||
part of your build process, you need do nothing more. If you just want to generate
|
||||
tests, invoke the <code>generateContractTests</code> task.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-default-setup"><a class="anchor" href="#gradle-default-setup"></a><a class="link" href="#gradle-default-setup">7. Default Setup</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>The default Gradle Plugin setup creates the following Gradle part of the build (in
|
||||
pseudocode):</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">contracts {
|
||||
testFramework ='JUNIT'
|
||||
testMode = 'MockMvc'
|
||||
generatedTestSourcesDir = project.file("${project.buildDir}/generated-test-sources/contracts")
|
||||
generatedTestResourcesDir = project.file("${project.buildDir}/generated-test-resources/contracts")
|
||||
contractsDslDir = "${project.rootDir}/src/test/resources/contracts"
|
||||
basePackageForTests = 'org.springframework.cloud.verifier.tests'
|
||||
stubsOutputDir = project.file("${project.buildDir}/stubs")
|
||||
|
||||
// the following properties are used when you want to provide where the JAR with contract lays
|
||||
contractDependency {
|
||||
stringNotation = ''
|
||||
}
|
||||
contractsPath = ''
|
||||
contractsWorkOffline = false
|
||||
contractRepository {
|
||||
cacheDownloadedContracts(true)
|
||||
}
|
||||
}
|
||||
|
||||
tasks.create(type: Jar, name: 'verifierStubsJar', dependsOn: 'generateClientStubs') {
|
||||
baseName = project.name
|
||||
classifier = contracts.stubsSuffix
|
||||
from contractVerifier.stubsOutputDir
|
||||
}
|
||||
|
||||
project.artifacts {
|
||||
archives task
|
||||
}
|
||||
|
||||
tasks.create(type: Copy, name: 'copyContracts') {
|
||||
from contracts.contractsDslDir
|
||||
into contracts.stubsOutputDir
|
||||
}
|
||||
|
||||
verifierStubsJar.dependsOn 'copyContracts'
|
||||
|
||||
publishing {
|
||||
publications {
|
||||
stubs(MavenPublication) {
|
||||
artifactId project.name
|
||||
artifact verifierStubsJar
|
||||
}
|
||||
}
|
||||
}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-configure-plugin"><a class="anchor" href="#gradle-configure-plugin"></a><a class="link" href="#gradle-configure-plugin">8. Configuring the Plugin</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>To change the default configuration, you can add a <code>contracts</code> snippet to your Gradle
|
||||
configuration, as the following listing shows:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">contracts {
|
||||
testMode = 'MockMvc'
|
||||
baseClassForTests = 'org.mycompany.tests'
|
||||
generatedTestSourcesDir = project.file('src/generatedContract')
|
||||
}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-configuration-options"><a class="anchor" href="#gradle-configuration-options"></a><a class="link" href="#gradle-configuration-options">9. Configuration Options</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>testMode</code>: Defines the mode for acceptance tests. By default, the mode is MockMvc,
|
||||
which is based on Spring’s MockMvc. It can also be changed to WebTestClient, JaxRsClient, or
|
||||
Explicit (for real HTTP calls).</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>imports</code>: Creates an array with imports that should be included in the generated tests
|
||||
(for example, <code>['org.myorg.Matchers']</code>). By default, it creates an empty array.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>staticImports</code>: Creates an array with static imports that should be included in
|
||||
generated tests(for example, <code>['org.myorg.Matchers.*']</code>). By default, it creates an empty
|
||||
array.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>basePackageForTests</code>: Specifies the base package for all generated tests. If not set,
|
||||
the value is picked from the package of <code>baseClassForTests</code> and from <code>packageWithBaseClasses</code>.
|
||||
If neither of these values are set, the value is set to
|
||||
<code>org.springframework.cloud.contract.verifier.tests</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>baseClassForTests</code>: Creates a base class for all generated tests. By default, if you
|
||||
use Spock classes, the class is <code>spock.lang.Specification</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>packageWithBaseClasses</code>: Defines a package where all the base classes reside. This
|
||||
setting takes precedence over <code>baseClassForTests</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>baseClassMappings</code>: Explicitly maps a contract package to a FQN of a base class. This
|
||||
setting takes precedence over <code>packageWithBaseClasses</code> and <code>baseClassForTests</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>ruleClassForTests</code>: Specifies a rule that should be added to the generated test
|
||||
classes.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>ignoredFiles</code>: Uses an <code>Antmatcher</code> to allow defining stub files for which processing
|
||||
should be skipped. By default, it is an empty array.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>contractsDslDir</code>: Specifies the directory that contains contracts written by using the
|
||||
GroovyDSL. By default, its value is <code>$rootDir/src/test/resources/contracts</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>generatedTestSourcesDir</code>: Specifies the test source directory where tests generated
|
||||
from the Groovy DSL should be placed. By default, its value is
|
||||
<code>$buildDir/generated-test-sources/contracts</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>generatedTestResourcesDir</code>: Specifies the test resource directory where resources used by the tests generated
|
||||
from the Groovy DSL should be placed. By default, its value is
|
||||
<code>$buildDir/generated-test-resources/contracts</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>stubsOutputDir</code>: Specifies the directory where the generated WireMock stubs from
|
||||
the Groovy DSL should be placed.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>testFramework</code>: Specifies the target test framework to be used. Currently, Spock, JUnit 4 (<code>TestFramework.JUNIT</code>), and
|
||||
JUnit 5 are supported, with JUnit 4 being the default framework.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>contractsProperties</code>: A map that contains properties to be passed to Spring Cloud Contract
|
||||
components. Those properties might be used by (for example) built-in or custom Stub Downloaders.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>You can use the following properties when you want to specify the location of the JAR
|
||||
that contains the contracts:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>contractDependency</code>: Specifies the Dependency that provides
|
||||
<code>groupid:artifactid:version:classifier</code> coordinates. You can use the <code>contractDependency</code>
|
||||
closure to set it up.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>contractsPath</code>: Specifies the path to the jar. If contract dependencies are
|
||||
downloaded, the path defaults to <code>groupid/artifactid</code> where <code>groupid</code> is slash
|
||||
separated. Otherwise, it scans contracts under the provided directory.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>contractsMode</code>: Specifies the mode for downloading contracts (whether the
|
||||
JAR is available offline, remotely, and so on).</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>deleteStubsAfterTest</code>: If set to <code>false</code>, do not remove any downloaded
|
||||
contracts from temporary directories.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>failOnNoContracts</code>: When enabled, will throw an exception when no contracts were found. Defaults to <code>true</code>.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>There is also the <code>contractRepository { …​ }</code> closure that contains the following properties</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>repositoryUrl</code>: the URL to the repository with contract definitions</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>username</code> : Repository username</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>password</code> : Repository password</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>proxyPort</code> : the port of the proxy</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>proxyHost</code> : the host of the proxy</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>cacheDownloadedContracts</code> : If set to <code>true</code> then will cache the folder where non snapshot contract artifacts got downloaded. Defaults to <code>true</code>.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>You can also turn on the following experimental features in the plugin:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>convertToYaml</code>: Converts all DSLs to the declarative YAML format. This can be extremely
|
||||
useful when you use external libraries in your Groovy DSLs. By turning this feature on
|
||||
(by setting it to <code>true</code>) you need not add the library dependency on the consumer side.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>assertJsonSize</code>: You can check the size of JSON arrays in the generated tests. This
|
||||
feature is disabled by default.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-single-base-class"><a class="anchor" href="#gradle-single-base-class"></a><a class="link" href="#gradle-single-base-class">10. Single Base Class for All Tests</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>When using Spring Cloud Contract Verifier in default MockMvc, you need to create a base
|
||||
specification for all generated acceptance tests. In this class, you need to point to an
|
||||
endpoint, which should be verified. The following example shows how to do so:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">abstract class BaseMockMvcSpec extends Specification {
|
||||
|
||||
def setup() {
|
||||
RestAssuredMockMvc.standaloneSetup(new PairIdController())
|
||||
}
|
||||
|
||||
void isProperCorrelationId(Integer correlationId) {
|
||||
assert correlationId == 123456
|
||||
}
|
||||
|
||||
void isEmpty(String value) {
|
||||
assert value == null
|
||||
}
|
||||
|
||||
}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>If you use <code>Explicit</code> mode, you can use a base class to initialize the whole tested application,
|
||||
as you might see in regular integration tests. If you use the <code>JAXRSCLIENT</code> mode, this
|
||||
base class should also contain a <code>protected WebTarget webTarget</code> field. Right now, the
|
||||
only option to test the JAX-RS API is to start a web server.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-different-base-classes"><a class="anchor" href="#gradle-different-base-classes"></a><a class="link" href="#gradle-different-base-classes">11. Different Base Classes for Contracts</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>If your base classes differ between contracts, you can tell the Spring Cloud Contract
|
||||
plugin which class should get extended by the autogenerated tests. You have two options:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p>Follow a convention by providing the <code>packageWithBaseClasses</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Provide explicit mapping by using <code>baseClassMappings</code></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="by-convention"><a class="anchor" href="#by-convention"></a><a class="link" href="#by-convention">11.1. By Convention</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>The convention is such that if you have a contract in (for example)
|
||||
<code>src/test/resources/contract/foo/bar/baz/</code> and set the value of the
|
||||
<code>packageWithBaseClasses</code> property to <code>com.example.base</code>, then Spring Cloud Contract
|
||||
Verifier assumes that there is a <code>BarBazBase</code> class under the <code>com.example.base</code> package.
|
||||
In other words, the system takes the last two parts of the package, if they exist, and
|
||||
forms a class with a <code>Base</code> suffix. This rule takes precedence over <code>baseClassForTests</code>.
|
||||
The following example shows how it works in the <code>contracts</code> closure:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">packageWithBaseClasses = 'com.example.base'</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="by-mapping"><a class="anchor" href="#by-mapping"></a><a class="link" href="#by-mapping">11.2. By Mapping</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>You can manually map a regular expression of the contract’s package to the fully qualified
|
||||
name of the base class for the matched contract. You have to provide a list called
|
||||
<code>baseClassMappings</code> that consists of <code>baseClassMapping</code> objects that take a
|
||||
<code>contractPackageRegex</code> to <code>baseClassFQN</code> mapping. Consider the following example:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">baseClassForTests = "com.example.FooBase"
|
||||
baseClassMappings {
|
||||
baseClassMapping('.*/com/.*', 'com.example.ComBase')
|
||||
baseClassMapping('.*/bar/.*': 'com.example.BarBase')
|
||||
}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Let’s assume that you have contracts in the following directories:
|
||||
- <code>src/test/resources/contract/com/</code>
|
||||
- <code>src/test/resources/contract/foo/</code></p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>By providing <code>baseClassForTests</code>, we have a fallback in case mapping did not succeed.
|
||||
(You could also provide the <code>packageWithBaseClasses</code> as a fallback.) That way, the tests
|
||||
generated from <code>src/test/resources/contract/com/</code> contracts extend the
|
||||
<code>com.example.ComBase</code>, whereas the rest of the tests extend <code>com.example.FooBase</code>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-invoking-generated-tests"><a class="anchor" href="#gradle-invoking-generated-tests"></a><a class="link" href="#gradle-invoking-generated-tests">12. Invoking Generated Tests</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>To ensure that the provider side is compliant with your defined contracts, you need to run
|
||||
the following command:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">./gradlew generateContractTests test</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-pushing-stubs-to-scm"><a class="anchor" href="#gradle-pushing-stubs-to-scm"></a><a class="link" href="#gradle-pushing-stubs-to-scm">13. Pushing Stubs to SCM</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>If you use the SCM repository to keep the contracts and
|
||||
stubs, you might want to automate the step of pushing stubs to
|
||||
the repository. To do that, you can call the <code>pushStubsToScm</code>
|
||||
task by running the following command:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">$ ./gradlew pushStubsToScm</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Under <a href="#scm-stub-downloader">[scm-stub-downloader]</a> you can find all possible
|
||||
configuration options that you can pass either through
|
||||
the <code>contractsProperties</code> field (for example, <code>contracts { contractsProperties = [foo:"bar"] }</code>),
|
||||
through the <code>contractsProperties</code> method (for example, <code>contracts { contractsProperties([foo:"bar"]) }</code>),
|
||||
or through a system property or an environment variable.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="gradle-consumer"><a class="anchor" href="#gradle-consumer"></a><a class="link" href="#gradle-consumer">14. Spring Cloud Contract Verifier on the Consumer Side</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>In a consuming service, you need to configure the Spring Cloud Contract Verifier plugin
|
||||
in exactly the same way as in the case of a provider. If you do not want to use Stub Runner,
|
||||
you need to copy the contracts stored in <code>src/test/resources/contracts</code> and generate
|
||||
WireMock JSON stubs by using the following command:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">./gradlew generateClientStubs</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="admonitionblock note">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="icon">
|
||||
<i class="fa icon-note" title="Note"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
The <code>stubsOutputDir</code> option has to be set for stub generation to work.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>When present, JSON stubs can be used in automated tests to consume a service. The
|
||||
following example shows how to do so:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">@ContextConfiguration(loader == SpringApplicationContextLoader, classes == Application)
|
||||
class LoanApplicationServiceSpec extends Specification {
|
||||
|
||||
@ClassRule
|
||||
@Shared
|
||||
WireMockClassRule wireMockRule == new WireMockClassRule()
|
||||
|
||||
@Autowired
|
||||
LoanApplicationService sut
|
||||
|
||||
def 'should successfully apply for loan'() {
|
||||
given:
|
||||
LoanApplication application =
|
||||
new LoanApplication(client: new Client(clientPesel: '12345678901'), amount: 123.123)
|
||||
when:
|
||||
LoanApplicationResult loanApplication == sut.loanApplication(application)
|
||||
then:
|
||||
loanApplication.loanApplicationStatus == LoanApplicationStatus.LOAN_APPLIED
|
||||
loanApplication.rejectionReason == null
|
||||
}
|
||||
}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>In the preceding example, <code>LoanApplication</code> makes a call to the <code>FraudDetection</code> service.
|
||||
This request is handled by a WireMock server configured with stubs that were generated by
|
||||
Spring Cloud Contract Verifier.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="js/tocbot/tocbot.min.js"></script>
|
||||
<script type="text/javascript" src="js/toc.js"></script>
|
||||
<link rel="stylesheet" href="js/highlight/styles/atom-one-dark-reasonable.min.css">
|
||||
<script src="js/highlight/highlight.min.js"></script>
|
||||
<script>hljs.initHighlighting()</script>
|
||||
</body>
|
||||
</html>
|
||||
2508
reference/html/howto.html
Normal file
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 77 KiB |
BIN
reference/html/images/flows-provider-non-jvm-consumer.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
reference/html/images/flows-provider-non-jvm-producer.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
reference/html/images/flows-provider-rest-docs-producer.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
reference/html/images/getting-started-cdc-client-final.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
reference/html/images/getting-started-cdc-client.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
reference/html/images/getting-started-cdc-server.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
reference/html/images/getting-started-three-second.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
reference/html/images/how-to-common-repo.png
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
reference/html/images/rest-docs.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
121
reference/html/legal.html
Normal file
@@ -0,0 +1,121 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="generator" content="Asciidoctor 1.5.7.1">
|
||||
<title>Legal</title>
|
||||
<link rel="stylesheet" href="css/spring.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
|
||||
<style>
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.switch {
|
||||
border-width: 1px 1px 0 1px;
|
||||
border-style: solid;
|
||||
border-color: #7a2518;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.switch--item {
|
||||
padding: 10px;
|
||||
background-color: #ffffff;
|
||||
color: #7a2518;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.switch--item:not(:first-child) {
|
||||
border-width: 0 0 0 1px;
|
||||
border-style: solid;
|
||||
border-color: #7a2518;
|
||||
}
|
||||
|
||||
.switch--item.selected {
|
||||
background-color: #7a2519;
|
||||
color: #ffffff;
|
||||
}
|
||||
</style>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/zepto/1.2.0/zepto.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
function addBlockSwitches() {
|
||||
$('.primary').each(function() {
|
||||
primary = $(this);
|
||||
createSwitchItem(primary, createBlockSwitch(primary)).item.addClass("selected");
|
||||
primary.children('.title').remove();
|
||||
});
|
||||
$('.secondary').each(function(idx, node) {
|
||||
secondary = $(node);
|
||||
primary = findPrimary(secondary);
|
||||
switchItem = createSwitchItem(secondary, primary.children('.switch'));
|
||||
switchItem.content.addClass('hidden');
|
||||
findPrimary(secondary).append(switchItem.content);
|
||||
secondary.remove();
|
||||
});
|
||||
}
|
||||
|
||||
function createBlockSwitch(primary) {
|
||||
blockSwitch = $('<div class="switch"></div>');
|
||||
primary.prepend(blockSwitch);
|
||||
return blockSwitch;
|
||||
}
|
||||
|
||||
function findPrimary(secondary) {
|
||||
candidate = secondary.prev();
|
||||
while (!candidate.is('.primary')) {
|
||||
candidate = candidate.prev();
|
||||
}
|
||||
return candidate;
|
||||
}
|
||||
|
||||
function createSwitchItem(block, blockSwitch) {
|
||||
blockName = block.children('.title').text();
|
||||
content = block.children('.content').first().append(block.next('.colist'));
|
||||
item = $('<div class="switch--item">' + blockName + '</div>');
|
||||
item.on('click', '', content, function(e) {
|
||||
$(this).addClass('selected');
|
||||
$(this).siblings().removeClass('selected');
|
||||
e.data.siblings('.content').addClass('hidden');
|
||||
e.data.removeClass('hidden');
|
||||
});
|
||||
blockSwitch.append(item);
|
||||
return {'item': item, 'content': content};
|
||||
}
|
||||
|
||||
$(addBlockSwitches);
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="book">
|
||||
<div id="header">
|
||||
<h1>Legal</h1>
|
||||
</div>
|
||||
<div id="content">
|
||||
<div id="preamble">
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>2.2.0.BUILD-SNAPSHOT</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Copyright © 2012-2019</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Copies of this document may be made for your own use and for distribution to
|
||||
others, provided that you do not charge any fee for such copies and further
|
||||
provided that each copy contains this Copyright Notice, whether distributed in
|
||||
print or electronically.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="js/tocbot/tocbot.min.js"></script>
|
||||
<script type="text/javascript" src="js/toc.js"></script>
|
||||
<link rel="stylesheet" href="js/highlight/styles/atom-one-dark-reasonable.min.css">
|
||||
<script src="js/highlight/highlight.min.js"></script>
|
||||
<script>hljs.initHighlighting()</script>
|
||||
</body>
|
||||
</html>
|
||||
1039
reference/html/maven-project.html
Normal file
8980
reference/html/project-features.html
Normal file
@@ -5,7 +5,7 @@
|
||||
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="generator" content="Asciidoctor 1.5.7.1">
|
||||
<title>Untitled</title>
|
||||
<title>Adding Sleuth to Your Classpath:</title>
|
||||
<link rel="stylesheet" href="css/spring.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
|
||||
@@ -90,18 +90,35 @@ $(addBlockSwitches);
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="book">
|
||||
<body class="book toc2 toc-left">
|
||||
<div id="header">
|
||||
<div id="toc" class="toc2">
|
||||
<div id="toctitle">Table of Contents</div>
|
||||
<ul class="sectlevel1">
|
||||
<li><a href="#_adding_sleuth_to_your_classpath">Adding Sleuth to Your Classpath:</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#_maven">Maven</a></li>
|
||||
<li><a href="#_gradle">Gradle</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="content">
|
||||
<div id="preamble">
|
||||
<div class="sect1">
|
||||
<h2 id="_adding_sleuth_to_your_classpath"><a class="link" href="#_adding_sleuth_to_your_classpath">Adding Sleuth to Your Classpath:</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Add Sleuth to your classpath:</p>
|
||||
<p>This section details how to add Sleuth to your class path for both Maven and Gradle</p>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_maven"><a class="link" href="#_maven">Maven</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>Maven</p>
|
||||
<p>To add Sleuth to your classpath with Maven, add the following elements
|
||||
to your <code>pom.xml</code> file:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependencyManagement>
|
||||
@@ -123,12 +140,20 @@ $(addBlockSwitches);
|
||||
</dependencies></code></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Gradle</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_gradle"><a class="link" href="#_gradle">Gradle</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>To add Sleuth to your classpath with Gradle, add the following
|
||||
to your <code>build.gradle</code> file:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">buildscript {
|
||||
<pre>buildscript {
|
||||
dependencies {
|
||||
classpath "io.spring.gradle:dependency-management-plugin:0.5.2.RELEASE"
|
||||
}
|
||||
@@ -143,15 +168,20 @@ dependencyManagement {
|
||||
}
|
||||
dependencies {
|
||||
compile 'org.springframework.cloud:spring-cloud-starter-sleuth'
|
||||
}</code></pre>
|
||||
}</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>As long as Spring Cloud Sleuth is on the classpath any Spring Boot application will generate trace data:</p>
|
||||
<p>As long as Spring Cloud Sleuth is on the classpath, any Spring Boot application can
|
||||
generate trace data. The following example shows how to do so:</p>
|
||||
</div>
|
||||
<div class="exampleblock">
|
||||
<div class="content">
|
||||
<div class="listingblock">
|
||||
<div class="content">
|
||||
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">@SpringBootApplication
|
||||
<pre>@SpringBootApplication
|
||||
@RestController
|
||||
public class Application {
|
||||
|
||||
@@ -167,11 +197,16 @@ public class Application {
|
||||
SpringApplication.run(Application.class, args);
|
||||
}
|
||||
|
||||
}</code></pre>
|
||||
}</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Run this app and then hit the home page. You will see traceId and spanId populated in the logs. If this app calls out to another one (e.g. with <code>RestTemplate</code>) it will send the trace data in headers and if the receiver is another Sleuth app you will see the trace continue there.</p>
|
||||
<p>Now you can run this application and visit the home page. In the logs, you can see
|
||||
<code>traceId</code> and <code>spanId</code> populated. If this application calls out to another one (for
|
||||
example, with <code>RestTemplate</code>), it sends the trace data in headers, and, if the receiver is
|
||||
another Sleuth application, you can see the trace continue there.</p>
|
||||
</div>
|
||||
<div class="admonitionblock important">
|
||||
<table>
|
||||
@@ -180,7 +215,8 @@ public class Application {
|
||||
<i class="fa icon-important" title="Important"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
instead of logging the request in the handler explicitly, you could set <code>logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG</code>
|
||||
instead of logging the request in the handler explicitly, you could set
|
||||
<code>logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG</code>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -192,7 +228,10 @@ instead of logging the request in the handler explicitly, you could set <code>lo
|
||||
<i class="fa icon-important" title="Important"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
If you use Zipkin, configure the probability of spans exported by setting (for <code>2.0.x</code>) <code>spring.sleuth.sampler.probability</code> or (up till <code>2.0.x</code>)<code>spring.sleuth.sampler.percentage</code> (default: 0.1, which is 10 percent). Otherwise, you might think that Sleuth is not working because it omits some spans.
|
||||
If you use Zipkin, you can configure the probability of spans being exported by
|
||||
setting (for <code>2.0.x</code>) <code>spring.sleuth.sampler.probability</code> or (up till <code>2.0.x</code>)
|
||||
<code>spring.sleuth.sampler.percentage</code> (default: 0.1, which is 10 percent). Otherwise, you
|
||||
might think that Sleuth is not working because it omits some spans.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -204,7 +243,8 @@ If you use Zipkin, configure the probability of spans exported by setting (for <
|
||||
<i class="fa icon-important" title="Important"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
Set <code>spring.application.name=bar</code> (for instance) to see the service name as well as the trace and span ids.
|
||||
Set <code>spring.application.name=bar</code> (for instance) to see the service name as
|
||||
well as the trace and span IDs.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -212,6 +252,7 @@ Set <code>spring.application.name=bar</code> (for instance) to see the service n
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="js/tocbot/tocbot.min.js"></script>
|
||||
<script type="text/javascript" src="js/toc.js"></script>
|
||||
<link rel="stylesheet" href="js/highlight/styles/atom-one-dark-reasonable.min.css">
|
||||
|
||||
@@ -103,7 +103,11 @@ $(addBlockSwitches);
|
||||
<div id="preamble">
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Spring Cloud Sleuth implements a distributed tracing solution for Spring Cloud, borrowing heavily from <a href="https://research.google.com/pubs/pub36356.html">Dapper</a>, <a href="https://github.com/openzipkin/zipkin">Zipkin</a> and HTrace. For most users Sleuth should be invisible, and all your interactions with external systems should be instrumented automatically. You can capture data simply in logs, or by sending it to a remote collector service.</p>
|
||||
<p>Spring Cloud Sleuth implements a distributed tracing solution for Spring Cloud, borrowing
|
||||
heavily from <a href="https://research.google.com/pubs/pub36356.html">Dapper</a>,
|
||||
<a href="https://github.com/openzipkin/zipkin">Zipkin</a>, and HTrace. For most users, Sleuth should be
|
||||
invisible, and all your interactions with external systems should be instrumented
|
||||
automatically. You can capture data in logs or by sending it to a remote collector service.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -111,24 +115,38 @@ $(addBlockSwitches);
|
||||
<h2 id="_features"><a class="link" href="#_features">Features</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>A Span is the basic unit of work. For example, sending an RPC is a new span, as is sending a response to an RPC. Span’s are identified by a unique 64-bit ID for the span and another 64-bit ID for the trace the span is a part of. Spans also have other data, such as descriptions, key-value annotations, the ID of the span that caused them, and process ID’s (normally IP address). Spans are started and stopped, and they keep track of their timing information. Once you create a span, you must stop it at some point in the future. A set of spans forming a tree-like structure called a Trace. For example, if you are running a distributed big-data store, a trace might be formed by a put request.</p>
|
||||
<p>A span is the basic unit of work. For example, sending an RPC is a new span, as is sending
|
||||
a response to an RPC. Spans are identified by a unique 64-bit ID for the span and another
|
||||
64-bit ID for the trace of which the span is a part. Spans also have other data, such as
|
||||
descriptions, key-value annotations, the ID of the span that caused them, and process IDs
|
||||
(normally IP addresses). Spans are started and stopped, and they keep track of their
|
||||
timing information. Once you create a span, you must stop it at some point in the future.
|
||||
A set of spans (which form a tree-like structure) is called a trace. For example, if you
|
||||
run a distributed big-data store, a trace might be formed by a <code>PUT</code> request.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Spring Cloud Sleuth features:</p>
|
||||
<p>Spring Cloud Sleuth:</p>
|
||||
</div>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p>Adds trace and span ids to the Slf4J MDC, so you can extract all the logs from a given trace or span in a log aggregator.</p>
|
||||
<p>Adds trace and span IDs to the Slf4J MDC so that you can extract all the logs from a
|
||||
given trace or span in a log aggregator.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Provides an abstraction over common distributed tracing data models: traces, spans (forming a DAG), annotations, key-value annotations. Loosely based on HTrace, but Zipkin (Dapper) compatible.</p>
|
||||
<p>Provides an abstraction over common distributed tracing data models: traces, spans
|
||||
(forming a DAG), annotations, and key-value annotations. This is loosely based on HTrace
|
||||
but is Zipkin (Dapper) compatible.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Instruments common ingress and egress points from Spring applications (servlet filter, rest template, scheduled actions, message channels, zuul filters, feign client).</p>
|
||||
<p>Instruments common ingress and egress points from Spring applications (servlet filter,
|
||||
rest template, scheduled actions, message channels, zuul filters, and the feign client).</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>If <code>spring-cloud-sleuth-zipkin</code> is available then the app will generate and collect Zipkin-compatible traces via HTTP. By default it sends them to a Zipkin collector service on localhost (port 9411). Configure the location of the service using <code>spring.zipkin.baseUrl</code>.</p>
|
||||
<p>If <code>spring-cloud-sleuth-zipkin</code> is available, the app generates and collects
|
||||
Zipkin-compatible traces over HTTP. By default, it sends them to a Zipkin collector
|
||||
service on localhost (port 9411). You can configure the location of the service using
|
||||
<code>spring.zipkin.baseUrl</code>.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
1217
reference/html/using.html
Normal file
@@ -0,0 +1 @@
|
||||
{"checksum":"23a7e5a52b04e1a55f2d102255d7ea04","width":886,"height":676}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"c9ffba1bc9383435e35a7973e5641dd8","width":1213,"height":1341}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"30b3d3322b3ecb24a6c5346a8571ba98","width":815,"height":618}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"37241bc45c73dbad7383a4733a05d559","width":930,"height":810}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"b137ec966db7960885422f991695d28f","width":783,"height":677}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"a46f733654d99c8861184f0e4e04bb95","width":590,"height":685}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"b1418561d3b01d5d71885b4b7bb1be93","width":1138,"height":1223}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"7a8cb19e9d604071d61e4aa9201ee623","width":688,"height":903}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"27396daead141eee677aa6311403d175","width":986,"height":704}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"89bbfd25e4c214245543ed34208e2afa","width":1588,"height":1421}
|
||||
@@ -0,0 +1 @@
|
||||
{"checksum":"e3500a52c420af0a5337450779a25536","width":1237,"height":835}
|
||||
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 77 KiB |
BIN
reference/htmlsingle/images/flows-provider-non-jvm-consumer.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
reference/htmlsingle/images/flows-provider-non-jvm-producer.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 37 KiB |
BIN
reference/htmlsingle/images/getting-started-cdc-client-final.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
reference/htmlsingle/images/getting-started-cdc-client.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
reference/htmlsingle/images/getting-started-cdc-server.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
reference/htmlsingle/images/getting-started-three-second.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
reference/htmlsingle/images/how-to-common-repo.png
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
reference/htmlsingle/images/rest-docs.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
14911
reference/htmlsingle/index.html
Normal file
@@ -2,7 +2,7 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_201) on Wed Aug 07 09:56:21 UTC 2019 -->
|
||||
<!-- Generated by javadoc (1.8.0_192) on Wed Aug 07 23:13:24 CEST 2019 -->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>All Classes (Spring Cloud Contract Maven Plugin 2.2.0.BUILD-SNAPSHOT API)</title>
|
||||
<meta name="date" content="2019-08-07">
|
||||
|
||||
225
spring-cloud-contract-maven-plugin/apidocs/allclasses-index.html
Normal file
@@ -0,0 +1,225 @@
|
||||
<!DOCTYPE HTML>
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (11.0.2) on Wed Aug 07 23:11:49 CEST 2019 -->
|
||||
<title>All Classes (Spring Cloud Contract Maven Plugin 2.2.0.BUILD-SNAPSHOT API)</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="dc.created" content="2019-08-07">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
||||
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
|
||||
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
|
||||
<!--[if IE]>
|
||||
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="jquery/jquery-3.3.1.js"></script>
|
||||
<script type="text/javascript" src="jquery/jquery-migrate-3.0.1.js"></script>
|
||||
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript"><!--
|
||||
try {
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="All Classes (Spring Cloud Contract Maven Plugin 2.2.0.BUILD-SNAPSHOT API)";
|
||||
}
|
||||
}
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var pathtoroot = "./";
|
||||
var useModuleDirectories = true;
|
||||
loadScripts(document, 'script');</script>
|
||||
<noscript>
|
||||
<div>JavaScript is disabled on your browser.</div>
|
||||
</noscript>
|
||||
<header role="banner">
|
||||
<nav role="navigation">
|
||||
<div class="fixedNav">
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<div class="topNav"><a id="navbar.top">
|
||||
<!-- -->
|
||||
</a>
|
||||
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
|
||||
<a id="navbar.top.firstrow">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="navList" title="Navigation">
|
||||
<li><a href="index.html">Overview</a></li>
|
||||
<li>Package</li>
|
||||
<li>Class</li>
|
||||
<li>Use</li>
|
||||
<li><a href="overview-tree.html">Tree</a></li>
|
||||
<li><a href="deprecated-list.html">Deprecated</a></li>
|
||||
<li><a href="index-all.html">Index</a></li>
|
||||
<li><a href="help-doc.html">Help</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="subNav">
|
||||
<ul class="navList" id="allclasses_navbar_top">
|
||||
<li><a href="allclasses.html">All Classes</a></li>
|
||||
</ul>
|
||||
<ul class="navListSearch">
|
||||
<li><label for="search">SEARCH:</label>
|
||||
<input type="text" id="search" value="search" disabled="disabled">
|
||||
<input type="reset" id="reset" value="reset" disabled="disabled">
|
||||
</li>
|
||||
</ul>
|
||||
<div>
|
||||
<script type="text/javascript"><!--
|
||||
allClassesLink = document.getElementById("allclasses_navbar_top");
|
||||
if(window==top) {
|
||||
allClassesLink.style.display = "block";
|
||||
}
|
||||
else {
|
||||
allClassesLink.style.display = "none";
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
<noscript>
|
||||
<div>JavaScript is disabled on your browser.</div>
|
||||
</noscript>
|
||||
</div>
|
||||
<a id="skip.navbar.top">
|
||||
<!-- -->
|
||||
</a></div>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
</div>
|
||||
<div class="navPadding"> </div>
|
||||
<script type="text/javascript"><!--
|
||||
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
||||
//-->
|
||||
</script>
|
||||
</nav>
|
||||
</header>
|
||||
<main role="main">
|
||||
<div class="header">
|
||||
<h1 title="All&nbsp;Classes" class="title">All Classes</h1>
|
||||
</div>
|
||||
<div class="allClassesContainer">
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<table class="typeSummary">
|
||||
<caption><span>Class Summary</span><span class="tabEnd"> </span></caption>
|
||||
<tr>
|
||||
<th class="colFirst" scope="col">Class</th>
|
||||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tr id="i0" class="altColor">
|
||||
<td class="colFirst"><a href="org/springframework/cloud/contract/maven/verifier/stubrunner/AetherStubDownloaderFactory.html" title="class in org.springframework.cloud.contract.maven.verifier.stubrunner">AetherStubDownloaderFactory</a></td>
|
||||
<th class="colLast" scope="row">
|
||||
<div class="block">Builds <code>StubDownloaderBuilder</code> for a Maven project.</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr id="i1" class="rowColor">
|
||||
<td class="colFirst"><a href="org/springframework/cloud/contract/maven/verifier/BaseClassMapping.html" title="class in org.springframework.cloud.contract.maven.verifier">BaseClassMapping</a></td>
|
||||
<th class="colLast" scope="row">
|
||||
<div class="block">Represents a single mapping of regex on package where contracts reside to the FQN of
|
||||
the base test class.</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr id="i2" class="altColor">
|
||||
<td class="colFirst"><a href="org/springframework/cloud/contract/maven/verifier/ConvertMojo.html" title="class in org.springframework.cloud.contract.maven.verifier">ConvertMojo</a></td>
|
||||
<th class="colLast" scope="row">
|
||||
<div class="block">Convert Spring Cloud Contract Verifier contracts into stubs mappings.</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<td class="colFirst"><a href="org/springframework/cloud/contract/maven/verifier/GenerateStubsMojo.html" title="class in org.springframework.cloud.contract.maven.verifier">GenerateStubsMojo</a></td>
|
||||
<th class="colLast" scope="row">
|
||||
<div class="block">Picks the converted .json files and creates a jar.</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
<td class="colFirst"><a href="org/springframework/cloud/contract/maven/verifier/GenerateTestsMojo.html" title="class in org.springframework.cloud.contract.maven.verifier">GenerateTestsMojo</a></td>
|
||||
<th class="colLast" scope="row">
|
||||
<div class="block">From the provided directory with contracts generates the acceptance tests on the
|
||||
producer side.</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<td class="colFirst"><a href="org/springframework/cloud/contract/maven/verifier/HelpMojo.html" title="class in org.springframework.cloud.contract.maven.verifier">HelpMojo</a></td>
|
||||
<th class="colLast" scope="row">
|
||||
<div class="block">Display help information on spring-cloud-contract-maven-plugin.<br>
|
||||
Call <code>mvn spring-cloud-contract:help -Ddetail=true -Dgoal=<goal-name></code> to display parameter details.</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr id="i6" class="altColor">
|
||||
<td class="colFirst"><a href="org/springframework/cloud/contract/maven/verifier/stubrunner/LocalStubRunner.html" title="class in org.springframework.cloud.contract.maven.verifier.stubrunner">LocalStubRunner</a></td>
|
||||
<th class="colLast" scope="row">
|
||||
<div class="block">Allows running stubs from the given directory.</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr id="i7" class="rowColor">
|
||||
<td class="colFirst"><a href="org/springframework/cloud/contract/maven/verifier/PushStubsToScmMojo.html" title="class in org.springframework.cloud.contract.maven.verifier">PushStubsToScmMojo</a></td>
|
||||
<th class="colLast" scope="row">
|
||||
<div class="block">The generated stubs get committed to the SCM repo and pushed to origin.</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr id="i8" class="altColor">
|
||||
<td class="colFirst"><a href="org/springframework/cloud/contract/maven/verifier/stubrunner/RemoteStubRunner.html" title="class in org.springframework.cloud.contract.maven.verifier.stubrunner">RemoteStubRunner</a></td>
|
||||
<th class="colLast" scope="row">
|
||||
<div class="block">Fetches stubs from a remote location.</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr id="i9" class="rowColor">
|
||||
<td class="colFirst"><a href="org/springframework/cloud/contract/maven/verifier/RunMojo.html" title="class in org.springframework.cloud.contract.maven.verifier">RunMojo</a></td>
|
||||
<th class="colLast" scope="row">
|
||||
<div class="block">Mojo for running stubs.</div>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</main>
|
||||
<footer role="contentinfo">
|
||||
<nav role="navigation">
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<div class="bottomNav"><a id="navbar.bottom">
|
||||
<!-- -->
|
||||
</a>
|
||||
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
|
||||
<a id="navbar.bottom.firstrow">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="navList" title="Navigation">
|
||||
<li><a href="index.html">Overview</a></li>
|
||||
<li>Package</li>
|
||||
<li>Class</li>
|
||||
<li>Use</li>
|
||||
<li><a href="overview-tree.html">Tree</a></li>
|
||||
<li><a href="deprecated-list.html">Deprecated</a></li>
|
||||
<li><a href="index-all.html">Index</a></li>
|
||||
<li><a href="help-doc.html">Help</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="subNav">
|
||||
<ul class="navList" id="allclasses_navbar_bottom">
|
||||
<li><a href="allclasses.html">All Classes</a></li>
|
||||
</ul>
|
||||
<div>
|
||||
<script type="text/javascript"><!--
|
||||
allClassesLink = document.getElementById("allclasses_navbar_bottom");
|
||||
if(window==top) {
|
||||
allClassesLink.style.display = "block";
|
||||
}
|
||||
else {
|
||||
allClassesLink.style.display = "none";
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
<noscript>
|
||||
<div>JavaScript is disabled on your browser.</div>
|
||||
</noscript>
|
||||
</div>
|
||||
<a id="skip.navbar.bottom">
|
||||
<!-- -->
|
||||
</a></div>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
</nav>
|
||||
<p class="legalCopy"><small>Copyright © 2016–2019 <a href="https://spring.io/">Spring</a>. All rights reserved.</small></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_201) on Wed Aug 07 09:56:21 UTC 2019 -->
|
||||
<!-- Generated by javadoc (1.8.0_192) on Wed Aug 07 23:13:24 CEST 2019 -->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>All Classes (Spring Cloud Contract Maven Plugin 2.2.0.BUILD-SNAPSHOT API)</title>
|
||||
<meta name="date" content="2019-08-07">
|
||||
|
||||
38
spring-cloud-contract-maven-plugin/apidocs/allclasses.html
Normal file
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE HTML>
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (11.0.2) on Wed Aug 07 23:11:49 CEST 2019 -->
|
||||
<title>All Classes (Spring Cloud Contract Maven Plugin 2.2.0.BUILD-SNAPSHOT API)</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="dc.created" content="2019-08-07">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
||||
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
|
||||
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
|
||||
<!--[if IE]>
|
||||
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="jquery/jquery-3.3.1.js"></script>
|
||||
<script type="text/javascript" src="jquery/jquery-migrate-3.0.1.js"></script>
|
||||
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1 class="bar">All Classes</h1>
|
||||
<main role="main" class="indexContainer">
|
||||
<ul>
|
||||
<li><a href="org/springframework/cloud/contract/maven/verifier/stubrunner/AetherStubDownloaderFactory.html" title="class in org.springframework.cloud.contract.maven.verifier.stubrunner">AetherStubDownloaderFactory</a></li>
|
||||
<li><a href="org/springframework/cloud/contract/maven/verifier/BaseClassMapping.html" title="class in org.springframework.cloud.contract.maven.verifier">BaseClassMapping</a></li>
|
||||
<li><a href="org/springframework/cloud/contract/maven/verifier/ConvertMojo.html" title="class in org.springframework.cloud.contract.maven.verifier">ConvertMojo</a></li>
|
||||
<li><a href="org/springframework/cloud/contract/maven/verifier/GenerateStubsMojo.html" title="class in org.springframework.cloud.contract.maven.verifier">GenerateStubsMojo</a></li>
|
||||
<li><a href="org/springframework/cloud/contract/maven/verifier/GenerateTestsMojo.html" title="class in org.springframework.cloud.contract.maven.verifier">GenerateTestsMojo</a></li>
|
||||
<li><a href="org/springframework/cloud/contract/maven/verifier/HelpMojo.html" title="class in org.springframework.cloud.contract.maven.verifier">HelpMojo</a></li>
|
||||
<li><a href="org/springframework/cloud/contract/maven/verifier/stubrunner/LocalStubRunner.html" title="class in org.springframework.cloud.contract.maven.verifier.stubrunner">LocalStubRunner</a></li>
|
||||
<li><a href="org/springframework/cloud/contract/maven/verifier/PushStubsToScmMojo.html" title="class in org.springframework.cloud.contract.maven.verifier">PushStubsToScmMojo</a></li>
|
||||
<li><a href="org/springframework/cloud/contract/maven/verifier/stubrunner/RemoteStubRunner.html" title="class in org.springframework.cloud.contract.maven.verifier.stubrunner">RemoteStubRunner</a></li>
|
||||
<li><a href="org/springframework/cloud/contract/maven/verifier/RunMojo.html" title="class in org.springframework.cloud.contract.maven.verifier">RunMojo</a></li>
|
||||
</ul>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,172 @@
|
||||
<!DOCTYPE HTML>
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (11.0.2) on Wed Aug 07 23:11:49 CEST 2019 -->
|
||||
<title>All Packages (Spring Cloud Contract Maven Plugin 2.2.0.BUILD-SNAPSHOT API)</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="dc.created" content="2019-08-07">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
||||
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
|
||||
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
|
||||
<!--[if IE]>
|
||||
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="jquery/jquery-3.3.1.js"></script>
|
||||
<script type="text/javascript" src="jquery/jquery-migrate-3.0.1.js"></script>
|
||||
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript"><!--
|
||||
try {
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="All Packages (Spring Cloud Contract Maven Plugin 2.2.0.BUILD-SNAPSHOT API)";
|
||||
}
|
||||
}
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var pathtoroot = "./";
|
||||
var useModuleDirectories = true;
|
||||
loadScripts(document, 'script');</script>
|
||||
<noscript>
|
||||
<div>JavaScript is disabled on your browser.</div>
|
||||
</noscript>
|
||||
<header role="banner">
|
||||
<nav role="navigation">
|
||||
<div class="fixedNav">
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<div class="topNav"><a id="navbar.top">
|
||||
<!-- -->
|
||||
</a>
|
||||
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
|
||||
<a id="navbar.top.firstrow">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="navList" title="Navigation">
|
||||
<li><a href="index.html">Overview</a></li>
|
||||
<li>Package</li>
|
||||
<li>Class</li>
|
||||
<li>Use</li>
|
||||
<li><a href="overview-tree.html">Tree</a></li>
|
||||
<li><a href="deprecated-list.html">Deprecated</a></li>
|
||||
<li><a href="index-all.html">Index</a></li>
|
||||
<li><a href="help-doc.html">Help</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="subNav">
|
||||
<ul class="navList" id="allclasses_navbar_top">
|
||||
<li><a href="allclasses.html">All Classes</a></li>
|
||||
</ul>
|
||||
<ul class="navListSearch">
|
||||
<li><label for="search">SEARCH:</label>
|
||||
<input type="text" id="search" value="search" disabled="disabled">
|
||||
<input type="reset" id="reset" value="reset" disabled="disabled">
|
||||
</li>
|
||||
</ul>
|
||||
<div>
|
||||
<script type="text/javascript"><!--
|
||||
allClassesLink = document.getElementById("allclasses_navbar_top");
|
||||
if(window==top) {
|
||||
allClassesLink.style.display = "block";
|
||||
}
|
||||
else {
|
||||
allClassesLink.style.display = "none";
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
<noscript>
|
||||
<div>JavaScript is disabled on your browser.</div>
|
||||
</noscript>
|
||||
</div>
|
||||
<a id="skip.navbar.top">
|
||||
<!-- -->
|
||||
</a></div>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
</div>
|
||||
<div class="navPadding"> </div>
|
||||
<script type="text/javascript"><!--
|
||||
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
||||
//-->
|
||||
</script>
|
||||
</nav>
|
||||
</header>
|
||||
<main role="main">
|
||||
<div class="header">
|
||||
<h1 title="All&nbsp;Packages" class="title">All Packages</h1>
|
||||
</div>
|
||||
<div class="allPackagesContainer">
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<table class="packagesSummary">
|
||||
<caption><span>Package Summary</span><span class="tabEnd"> </span></caption>
|
||||
<tr>
|
||||
<th class="colFirst" scope="col">Package</th>
|
||||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tbody>
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="org/springframework/cloud/contract/maven/verifier/package-summary.html">org.springframework.cloud.contract.maven.verifier</a></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="org/springframework/cloud/contract/maven/verifier/stubrunner/package-summary.html">org.springframework.cloud.contract.maven.verifier.stubrunner</a></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</main>
|
||||
<footer role="contentinfo">
|
||||
<nav role="navigation">
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<div class="bottomNav"><a id="navbar.bottom">
|
||||
<!-- -->
|
||||
</a>
|
||||
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
|
||||
<a id="navbar.bottom.firstrow">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="navList" title="Navigation">
|
||||
<li><a href="index.html">Overview</a></li>
|
||||
<li>Package</li>
|
||||
<li>Class</li>
|
||||
<li>Use</li>
|
||||
<li><a href="overview-tree.html">Tree</a></li>
|
||||
<li><a href="deprecated-list.html">Deprecated</a></li>
|
||||
<li><a href="index-all.html">Index</a></li>
|
||||
<li><a href="help-doc.html">Help</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="subNav">
|
||||
<ul class="navList" id="allclasses_navbar_bottom">
|
||||
<li><a href="allclasses.html">All Classes</a></li>
|
||||
</ul>
|
||||
<div>
|
||||
<script type="text/javascript"><!--
|
||||
allClassesLink = document.getElementById("allclasses_navbar_bottom");
|
||||
if(window==top) {
|
||||
allClassesLink.style.display = "block";
|
||||
}
|
||||
else {
|
||||
allClassesLink.style.display = "none";
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
<noscript>
|
||||
<div>JavaScript is disabled on your browser.</div>
|
||||
</noscript>
|
||||
</div>
|
||||
<a id="skip.navbar.bottom">
|
||||
<!-- -->
|
||||
</a></div>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
</nav>
|
||||
<p class="legalCopy"><small>Copyright © 2016–2019 <a href="https://spring.io/">Spring</a>. All rights reserved.</small></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_201) on Wed Aug 07 09:56:21 UTC 2019 -->
|
||||
<!-- Generated by javadoc (1.8.0_192) on Wed Aug 07 23:13:24 CEST 2019 -->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Constant Field Values (Spring Cloud Contract Maven Plugin 2.2.0.BUILD-SNAPSHOT API)</title>
|
||||
<meta name="date" content="2019-08-07">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_201) on Wed Aug 07 09:56:21 UTC 2019 -->
|
||||
<!-- Generated by javadoc (1.8.0_192) on Wed Aug 07 23:13:24 CEST 2019 -->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Deprecated List (Spring Cloud Contract Maven Plugin 2.2.0.BUILD-SNAPSHOT API)</title>
|
||||
<meta name="date" content="2019-08-07">
|
||||
|
||||
2
spring-cloud-contract-maven-plugin/apidocs/element-list
Normal file
@@ -0,0 +1,2 @@
|
||||
org.springframework.cloud.contract.maven.verifier
|
||||
org.springframework.cloud.contract.maven.verifier.stubrunner
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_201) on Wed Aug 07 09:56:21 UTC 2019 -->
|
||||
<!-- Generated by javadoc (1.8.0_192) on Wed Aug 07 23:13:24 CEST 2019 -->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>API Help (Spring Cloud Contract Maven Plugin 2.2.0.BUILD-SNAPSHOT API)</title>
|
||||
<meta name="date" content="2019-08-07">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_201) on Wed Aug 07 09:56:21 UTC 2019 -->
|
||||
<!-- Generated by javadoc (1.8.0_192) on Wed Aug 07 23:13:24 CEST 2019 -->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Index (Spring Cloud Contract Maven Plugin 2.2.0.BUILD-SNAPSHOT API)</title>
|
||||
<meta name="date" content="2019-08-07">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (1.8.0_201) on Wed Aug 07 09:56:21 UTC 2019 -->
|
||||
<!-- Generated by javadoc (1.8.0_192) on Wed Aug 07 23:13:24 CEST 2019 -->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Spring Cloud Contract Maven Plugin 2.2.0.BUILD-SNAPSHOT API</title>
|
||||
<script type="text/javascript">
|
||||
|
||||
10364
spring-cloud-contract-maven-plugin/apidocs/jquery/external/jquery/jquery.js
vendored
Normal file
|
After Width: | Height: | Size: 212 B |
|
After Width: | Height: | Size: 208 B |
|
After Width: | Height: | Size: 335 B |
|
After Width: | Height: | Size: 207 B |
|
After Width: | Height: | Size: 262 B |
|
After Width: | Height: | Size: 262 B |
|
After Width: | Height: | Size: 332 B |
|
After Width: | Height: | Size: 280 B |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
10364
spring-cloud-contract-maven-plugin/apidocs/jquery/jquery-3.3.1.js
vendored
Normal file
@@ -0,0 +1,628 @@
|
||||
/*!
|
||||
* jQuery Migrate - v3.0.1 - 2017-09-26
|
||||
* Copyright jQuery Foundation and other contributors
|
||||
*/
|
||||
;( function( factory ) {
|
||||
if ( typeof define === "function" && define.amd ) {
|
||||
|
||||
// AMD. Register as an anonymous module.
|
||||
define( [ "jquery" ], window, factory );
|
||||
} else if ( typeof module === "object" && module.exports ) {
|
||||
|
||||
// Node/CommonJS
|
||||
// eslint-disable-next-line no-undef
|
||||
module.exports = factory( require( "jquery" ), window );
|
||||
} else {
|
||||
|
||||
// Browser globals
|
||||
factory( jQuery, window );
|
||||
}
|
||||
} )( function( jQuery, window ) {
|
||||
"use strict";
|
||||
|
||||
|
||||
jQuery.migrateVersion = "3.0.1";
|
||||
|
||||
jQuery.migrateMute = true;
|
||||
|
||||
/* exported migrateWarn, migrateWarnFunc, migrateWarnProp */
|
||||
|
||||
( function() {
|
||||
|
||||
var rbadVersions = /^[12]\./;
|
||||
|
||||
// Support: IE9 only
|
||||
// IE9 only creates console object when dev tools are first opened
|
||||
// IE9 console is a host object, callable but doesn't have .apply()
|
||||
if ( !window.console || !window.console.log ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Need jQuery 3.0.0+ and no older Migrate loaded
|
||||
if ( !jQuery || rbadVersions.test( jQuery.fn.jquery ) ) {
|
||||
window.console.log( "JQMIGRATE: jQuery 3.0.0+ REQUIRED" );
|
||||
}
|
||||
if ( jQuery.migrateWarnings ) {
|
||||
window.console.log( "JQMIGRATE: Migrate plugin loaded multiple times" );
|
||||
}
|
||||
|
||||
// Show a message on the console so devs know we're active
|
||||
window.console.log( "JQMIGRATE: Migrate is installed" +
|
||||
( jQuery.migrateMute ? "" : " with logging active" ) +
|
||||
", version " + jQuery.migrateVersion );
|
||||
|
||||
} )();
|
||||
|
||||
var warnedAbout = {};
|
||||
|
||||
// List of warnings already given; public read only
|
||||
jQuery.migrateWarnings = [];
|
||||
|
||||
// Set to false to disable traces that appear with warnings
|
||||
if ( jQuery.migrateTrace === undefined ) {
|
||||
jQuery.migrateTrace = true;
|
||||
}
|
||||
|
||||
// Forget any warnings we've already given; public
|
||||
jQuery.migrateReset = function() {
|
||||
warnedAbout = {};
|
||||
jQuery.migrateWarnings.length = 0;
|
||||
};
|
||||
|
||||
function migrateWarn( msg ) {
|
||||
var console = window.console;
|
||||
if ( !warnedAbout[ msg ] ) {
|
||||
warnedAbout[ msg ] = true;
|
||||
jQuery.migrateWarnings.push( msg );
|
||||
if ( console && console.warn && !jQuery.migrateMute ) {
|
||||
console.warn( "JQMIGRATE: " + msg );
|
||||
if ( jQuery.migrateTrace && console.trace ) {
|
||||
console.trace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function migrateWarnProp( obj, prop, value, msg ) {
|
||||
Object.defineProperty( obj, prop, {
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
get: function() {
|
||||
migrateWarn( msg );
|
||||
return value;
|
||||
},
|
||||
set: function( newValue ) {
|
||||
migrateWarn( msg );
|
||||
value = newValue;
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
function migrateWarnFunc( obj, prop, newFunc, msg ) {
|
||||
obj[ prop ] = function() {
|
||||
migrateWarn( msg );
|
||||
return newFunc.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
if ( window.document.compatMode === "BackCompat" ) {
|
||||
|
||||
// JQuery has never supported or tested Quirks Mode
|
||||
migrateWarn( "jQuery is not compatible with Quirks Mode" );
|
||||
}
|
||||
|
||||
|
||||
var oldInit = jQuery.fn.init,
|
||||
oldIsNumeric = jQuery.isNumeric,
|
||||
oldFind = jQuery.find,
|
||||
rattrHashTest = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,
|
||||
rattrHashGlob = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g;
|
||||
|
||||
jQuery.fn.init = function( arg1 ) {
|
||||
var args = Array.prototype.slice.call( arguments );
|
||||
|
||||
if ( typeof arg1 === "string" && arg1 === "#" ) {
|
||||
|
||||
// JQuery( "#" ) is a bogus ID selector, but it returned an empty set before jQuery 3.0
|
||||
migrateWarn( "jQuery( '#' ) is not a valid selector" );
|
||||
args[ 0 ] = [];
|
||||
}
|
||||
|
||||
return oldInit.apply( this, args );
|
||||
};
|
||||
jQuery.fn.init.prototype = jQuery.fn;
|
||||
|
||||
jQuery.find = function( selector ) {
|
||||
var args = Array.prototype.slice.call( arguments );
|
||||
|
||||
// Support: PhantomJS 1.x
|
||||
// String#match fails to match when used with a //g RegExp, only on some strings
|
||||
if ( typeof selector === "string" && rattrHashTest.test( selector ) ) {
|
||||
|
||||
// The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0
|
||||
// First see if qS thinks it's a valid selector, if so avoid a false positive
|
||||
try {
|
||||
window.document.querySelector( selector );
|
||||
} catch ( err1 ) {
|
||||
|
||||
// Didn't *look* valid to qSA, warn and try quoting what we think is the value
|
||||
selector = selector.replace( rattrHashGlob, function( _, attr, op, value ) {
|
||||
return "[" + attr + op + "\"" + value + "\"]";
|
||||
} );
|
||||
|
||||
// If the regexp *may* have created an invalid selector, don't update it
|
||||
// Note that there may be false alarms if selector uses jQuery extensions
|
||||
try {
|
||||
window.document.querySelector( selector );
|
||||
migrateWarn( "Attribute selector with '#' must be quoted: " + args[ 0 ] );
|
||||
args[ 0 ] = selector;
|
||||
} catch ( err2 ) {
|
||||
migrateWarn( "Attribute selector with '#' was not fixed: " + args[ 0 ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return oldFind.apply( this, args );
|
||||
};
|
||||
|
||||
// Copy properties attached to original jQuery.find method (e.g. .attr, .isXML)
|
||||
var findProp;
|
||||
for ( findProp in oldFind ) {
|
||||
if ( Object.prototype.hasOwnProperty.call( oldFind, findProp ) ) {
|
||||
jQuery.find[ findProp ] = oldFind[ findProp ];
|
||||
}
|
||||
}
|
||||
|
||||
// The number of elements contained in the matched element set
|
||||
jQuery.fn.size = function() {
|
||||
migrateWarn( "jQuery.fn.size() is deprecated and removed; use the .length property" );
|
||||
return this.length;
|
||||
};
|
||||
|
||||
jQuery.parseJSON = function() {
|
||||
migrateWarn( "jQuery.parseJSON is deprecated; use JSON.parse" );
|
||||
return JSON.parse.apply( null, arguments );
|
||||
};
|
||||
|
||||
jQuery.isNumeric = function( val ) {
|
||||
|
||||
// The jQuery 2.2.3 implementation of isNumeric
|
||||
function isNumeric2( obj ) {
|
||||
var realStringObj = obj && obj.toString();
|
||||
return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;
|
||||
}
|
||||
|
||||
var newValue = oldIsNumeric( val ),
|
||||
oldValue = isNumeric2( val );
|
||||
|
||||
if ( newValue !== oldValue ) {
|
||||
migrateWarn( "jQuery.isNumeric() should not be called on constructed objects" );
|
||||
}
|
||||
|
||||
return oldValue;
|
||||
};
|
||||
|
||||
migrateWarnFunc( jQuery, "holdReady", jQuery.holdReady,
|
||||
"jQuery.holdReady is deprecated" );
|
||||
|
||||
migrateWarnFunc( jQuery, "unique", jQuery.uniqueSort,
|
||||
"jQuery.unique is deprecated; use jQuery.uniqueSort" );
|
||||
|
||||
// Now jQuery.expr.pseudos is the standard incantation
|
||||
migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos,
|
||||
"jQuery.expr.filters is deprecated; use jQuery.expr.pseudos" );
|
||||
migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos,
|
||||
"jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos" );
|
||||
|
||||
|
||||
var oldAjax = jQuery.ajax;
|
||||
|
||||
jQuery.ajax = function( ) {
|
||||
var jQXHR = oldAjax.apply( this, arguments );
|
||||
|
||||
// Be sure we got a jQXHR (e.g., not sync)
|
||||
if ( jQXHR.promise ) {
|
||||
migrateWarnFunc( jQXHR, "success", jQXHR.done,
|
||||
"jQXHR.success is deprecated and removed" );
|
||||
migrateWarnFunc( jQXHR, "error", jQXHR.fail,
|
||||
"jQXHR.error is deprecated and removed" );
|
||||
migrateWarnFunc( jQXHR, "complete", jQXHR.always,
|
||||
"jQXHR.complete is deprecated and removed" );
|
||||
}
|
||||
|
||||
return jQXHR;
|
||||
};
|
||||
|
||||
|
||||
var oldRemoveAttr = jQuery.fn.removeAttr,
|
||||
oldToggleClass = jQuery.fn.toggleClass,
|
||||
rmatchNonSpace = /\S+/g;
|
||||
|
||||
jQuery.fn.removeAttr = function( name ) {
|
||||
var self = this;
|
||||
|
||||
jQuery.each( name.match( rmatchNonSpace ), function( i, attr ) {
|
||||
if ( jQuery.expr.match.bool.test( attr ) ) {
|
||||
migrateWarn( "jQuery.fn.removeAttr no longer sets boolean properties: " + attr );
|
||||
self.prop( attr, false );
|
||||
}
|
||||
} );
|
||||
|
||||
return oldRemoveAttr.apply( this, arguments );
|
||||
};
|
||||
|
||||
jQuery.fn.toggleClass = function( state ) {
|
||||
|
||||
// Only deprecating no-args or single boolean arg
|
||||
if ( state !== undefined && typeof state !== "boolean" ) {
|
||||
return oldToggleClass.apply( this, arguments );
|
||||
}
|
||||
|
||||
migrateWarn( "jQuery.fn.toggleClass( boolean ) is deprecated" );
|
||||
|
||||
// Toggle entire class name of each element
|
||||
return this.each( function() {
|
||||
var className = this.getAttribute && this.getAttribute( "class" ) || "";
|
||||
|
||||
if ( className ) {
|
||||
jQuery.data( this, "__className__", className );
|
||||
}
|
||||
|
||||
// If the element has a class name or if we're passed `false`,
|
||||
// then remove the whole classname (if there was one, the above saved it).
|
||||
// Otherwise bring back whatever was previously saved (if anything),
|
||||
// falling back to the empty string if nothing was stored.
|
||||
if ( this.setAttribute ) {
|
||||
this.setAttribute( "class",
|
||||
className || state === false ?
|
||||
"" :
|
||||
jQuery.data( this, "__className__" ) || ""
|
||||
);
|
||||
}
|
||||
} );
|
||||
};
|
||||
|
||||
|
||||
var internalSwapCall = false;
|
||||
|
||||
// If this version of jQuery has .swap(), don't false-alarm on internal uses
|
||||
if ( jQuery.swap ) {
|
||||
jQuery.each( [ "height", "width", "reliableMarginRight" ], function( _, name ) {
|
||||
var oldHook = jQuery.cssHooks[ name ] && jQuery.cssHooks[ name ].get;
|
||||
|
||||
if ( oldHook ) {
|
||||
jQuery.cssHooks[ name ].get = function() {
|
||||
var ret;
|
||||
|
||||
internalSwapCall = true;
|
||||
ret = oldHook.apply( this, arguments );
|
||||
internalSwapCall = false;
|
||||
return ret;
|
||||
};
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
jQuery.swap = function( elem, options, callback, args ) {
|
||||
var ret, name,
|
||||
old = {};
|
||||
|
||||
if ( !internalSwapCall ) {
|
||||
migrateWarn( "jQuery.swap() is undocumented and deprecated" );
|
||||
}
|
||||
|
||||
// Remember the old values, and insert the new ones
|
||||
for ( name in options ) {
|
||||
old[ name ] = elem.style[ name ];
|
||||
elem.style[ name ] = options[ name ];
|
||||
}
|
||||
|
||||
ret = callback.apply( elem, args || [] );
|
||||
|
||||
// Revert the old values
|
||||
for ( name in options ) {
|
||||
elem.style[ name ] = old[ name ];
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
|
||||
var oldData = jQuery.data;
|
||||
|
||||
jQuery.data = function( elem, name, value ) {
|
||||
var curData;
|
||||
|
||||
// Name can be an object, and each entry in the object is meant to be set as data
|
||||
if ( name && typeof name === "object" && arguments.length === 2 ) {
|
||||
curData = jQuery.hasData( elem ) && oldData.call( this, elem );
|
||||
var sameKeys = {};
|
||||
for ( var key in name ) {
|
||||
if ( key !== jQuery.camelCase( key ) ) {
|
||||
migrateWarn( "jQuery.data() always sets/gets camelCased names: " + key );
|
||||
curData[ key ] = name[ key ];
|
||||
} else {
|
||||
sameKeys[ key ] = name[ key ];
|
||||
}
|
||||
}
|
||||
|
||||
oldData.call( this, elem, sameKeys );
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
// If the name is transformed, look for the un-transformed name in the data object
|
||||
if ( name && typeof name === "string" && name !== jQuery.camelCase( name ) ) {
|
||||
curData = jQuery.hasData( elem ) && oldData.call( this, elem );
|
||||
if ( curData && name in curData ) {
|
||||
migrateWarn( "jQuery.data() always sets/gets camelCased names: " + name );
|
||||
if ( arguments.length > 2 ) {
|
||||
curData[ name ] = value;
|
||||
}
|
||||
return curData[ name ];
|
||||
}
|
||||
}
|
||||
|
||||
return oldData.apply( this, arguments );
|
||||
};
|
||||
|
||||
var oldTweenRun = jQuery.Tween.prototype.run;
|
||||
var linearEasing = function( pct ) {
|
||||
return pct;
|
||||
};
|
||||
|
||||
jQuery.Tween.prototype.run = function( ) {
|
||||
if ( jQuery.easing[ this.easing ].length > 1 ) {
|
||||
migrateWarn(
|
||||
"'jQuery.easing." + this.easing.toString() + "' should use only one argument"
|
||||
);
|
||||
|
||||
jQuery.easing[ this.easing ] = linearEasing;
|
||||
}
|
||||
|
||||
oldTweenRun.apply( this, arguments );
|
||||
};
|
||||
|
||||
jQuery.fx.interval = jQuery.fx.interval || 13;
|
||||
|
||||
// Support: IE9, Android <=4.4
|
||||
// Avoid false positives on browsers that lack rAF
|
||||
if ( window.requestAnimationFrame ) {
|
||||
migrateWarnProp( jQuery.fx, "interval", jQuery.fx.interval,
|
||||
"jQuery.fx.interval is deprecated" );
|
||||
}
|
||||
|
||||
var oldLoad = jQuery.fn.load,
|
||||
oldEventAdd = jQuery.event.add,
|
||||
originalFix = jQuery.event.fix;
|
||||
|
||||
jQuery.event.props = [];
|
||||
jQuery.event.fixHooks = {};
|
||||
|
||||
migrateWarnProp( jQuery.event.props, "concat", jQuery.event.props.concat,
|
||||
"jQuery.event.props.concat() is deprecated and removed" );
|
||||
|
||||
jQuery.event.fix = function( originalEvent ) {
|
||||
var event,
|
||||
type = originalEvent.type,
|
||||
fixHook = this.fixHooks[ type ],
|
||||
props = jQuery.event.props;
|
||||
|
||||
if ( props.length ) {
|
||||
migrateWarn( "jQuery.event.props are deprecated and removed: " + props.join() );
|
||||
while ( props.length ) {
|
||||
jQuery.event.addProp( props.pop() );
|
||||
}
|
||||
}
|
||||
|
||||
if ( fixHook && !fixHook._migrated_ ) {
|
||||
fixHook._migrated_ = true;
|
||||
migrateWarn( "jQuery.event.fixHooks are deprecated and removed: " + type );
|
||||
if ( ( props = fixHook.props ) && props.length ) {
|
||||
while ( props.length ) {
|
||||
jQuery.event.addProp( props.pop() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
event = originalFix.call( this, originalEvent );
|
||||
|
||||
return fixHook && fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
|
||||
};
|
||||
|
||||
jQuery.event.add = function( elem, types ) {
|
||||
|
||||
// This misses the multiple-types case but that seems awfully rare
|
||||
if ( elem === window && types === "load" && window.document.readyState === "complete" ) {
|
||||
migrateWarn( "jQuery(window).on('load'...) called after load event occurred" );
|
||||
}
|
||||
return oldEventAdd.apply( this, arguments );
|
||||
};
|
||||
|
||||
jQuery.each( [ "load", "unload", "error" ], function( _, name ) {
|
||||
|
||||
jQuery.fn[ name ] = function() {
|
||||
var args = Array.prototype.slice.call( arguments, 0 );
|
||||
|
||||
// If this is an ajax load() the first arg should be the string URL;
|
||||
// technically this could also be the "Anything" arg of the event .load()
|
||||
// which just goes to show why this dumb signature has been deprecated!
|
||||
// jQuery custom builds that exclude the Ajax module justifiably die here.
|
||||
if ( name === "load" && typeof args[ 0 ] === "string" ) {
|
||||
return oldLoad.apply( this, args );
|
||||
}
|
||||
|
||||
migrateWarn( "jQuery.fn." + name + "() is deprecated" );
|
||||
|
||||
args.splice( 0, 0, name );
|
||||
if ( arguments.length ) {
|
||||
return this.on.apply( this, args );
|
||||
}
|
||||
|
||||
// Use .triggerHandler here because:
|
||||
// - load and unload events don't need to bubble, only applied to window or image
|
||||
// - error event should not bubble to window, although it does pre-1.7
|
||||
// See http://bugs.jquery.com/ticket/11820
|
||||
this.triggerHandler.apply( this, args );
|
||||
return this;
|
||||
};
|
||||
|
||||
} );
|
||||
|
||||
jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
|
||||
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
|
||||
"change select submit keydown keypress keyup contextmenu" ).split( " " ),
|
||||
function( i, name ) {
|
||||
|
||||
// Handle event binding
|
||||
jQuery.fn[ name ] = function( data, fn ) {
|
||||
migrateWarn( "jQuery.fn." + name + "() event shorthand is deprecated" );
|
||||
return arguments.length > 0 ?
|
||||
this.on( name, null, data, fn ) :
|
||||
this.trigger( name );
|
||||
};
|
||||
} );
|
||||
|
||||
// Trigger "ready" event only once, on document ready
|
||||
jQuery( function() {
|
||||
jQuery( window.document ).triggerHandler( "ready" );
|
||||
} );
|
||||
|
||||
jQuery.event.special.ready = {
|
||||
setup: function() {
|
||||
if ( this === window.document ) {
|
||||
migrateWarn( "'ready' event is deprecated" );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
jQuery.fn.extend( {
|
||||
|
||||
bind: function( types, data, fn ) {
|
||||
migrateWarn( "jQuery.fn.bind() is deprecated" );
|
||||
return this.on( types, null, data, fn );
|
||||
},
|
||||
unbind: function( types, fn ) {
|
||||
migrateWarn( "jQuery.fn.unbind() is deprecated" );
|
||||
return this.off( types, null, fn );
|
||||
},
|
||||
delegate: function( selector, types, data, fn ) {
|
||||
migrateWarn( "jQuery.fn.delegate() is deprecated" );
|
||||
return this.on( types, selector, data, fn );
|
||||
},
|
||||
undelegate: function( selector, types, fn ) {
|
||||
migrateWarn( "jQuery.fn.undelegate() is deprecated" );
|
||||
return arguments.length === 1 ?
|
||||
this.off( selector, "**" ) :
|
||||
this.off( types, selector || "**", fn );
|
||||
},
|
||||
hover: function( fnOver, fnOut ) {
|
||||
migrateWarn( "jQuery.fn.hover() is deprecated" );
|
||||
return this.on( "mouseenter", fnOver ).on( "mouseleave", fnOut || fnOver );
|
||||
}
|
||||
} );
|
||||
|
||||
|
||||
var oldOffset = jQuery.fn.offset;
|
||||
|
||||
jQuery.fn.offset = function() {
|
||||
var docElem,
|
||||
elem = this[ 0 ],
|
||||
origin = { top: 0, left: 0 };
|
||||
|
||||
if ( !elem || !elem.nodeType ) {
|
||||
migrateWarn( "jQuery.fn.offset() requires a valid DOM element" );
|
||||
return origin;
|
||||
}
|
||||
|
||||
docElem = ( elem.ownerDocument || window.document ).documentElement;
|
||||
if ( !jQuery.contains( docElem, elem ) ) {
|
||||
migrateWarn( "jQuery.fn.offset() requires an element connected to a document" );
|
||||
return origin;
|
||||
}
|
||||
|
||||
return oldOffset.apply( this, arguments );
|
||||
};
|
||||
|
||||
|
||||
var oldParam = jQuery.param;
|
||||
|
||||
jQuery.param = function( data, traditional ) {
|
||||
var ajaxTraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
|
||||
|
||||
if ( traditional === undefined && ajaxTraditional ) {
|
||||
|
||||
migrateWarn( "jQuery.param() no longer uses jQuery.ajaxSettings.traditional" );
|
||||
traditional = ajaxTraditional;
|
||||
}
|
||||
|
||||
return oldParam.call( this, data, traditional );
|
||||
};
|
||||
|
||||
var oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
|
||||
|
||||
jQuery.fn.andSelf = function() {
|
||||
migrateWarn( "jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()" );
|
||||
return oldSelf.apply( this, arguments );
|
||||
};
|
||||
|
||||
|
||||
var oldDeferred = jQuery.Deferred,
|
||||
tuples = [
|
||||
|
||||
// Action, add listener, callbacks, .then handlers, final state
|
||||
[ "resolve", "done", jQuery.Callbacks( "once memory" ),
|
||||
jQuery.Callbacks( "once memory" ), "resolved" ],
|
||||
[ "reject", "fail", jQuery.Callbacks( "once memory" ),
|
||||
jQuery.Callbacks( "once memory" ), "rejected" ],
|
||||
[ "notify", "progress", jQuery.Callbacks( "memory" ),
|
||||
jQuery.Callbacks( "memory" ) ]
|
||||
];
|
||||
|
||||
jQuery.Deferred = function( func ) {
|
||||
var deferred = oldDeferred(),
|
||||
promise = deferred.promise();
|
||||
|
||||
deferred.pipe = promise.pipe = function( /* fnDone, fnFail, fnProgress */ ) {
|
||||
var fns = arguments;
|
||||
|
||||
migrateWarn( "deferred.pipe() is deprecated" );
|
||||
|
||||
return jQuery.Deferred( function( newDefer ) {
|
||||
jQuery.each( tuples, function( i, tuple ) {
|
||||
var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
|
||||
|
||||
// Deferred.done(function() { bind to newDefer or newDefer.resolve })
|
||||
// deferred.fail(function() { bind to newDefer or newDefer.reject })
|
||||
// deferred.progress(function() { bind to newDefer or newDefer.notify })
|
||||
deferred[ tuple[ 1 ] ]( function() {
|
||||
var returned = fn && fn.apply( this, arguments );
|
||||
if ( returned && jQuery.isFunction( returned.promise ) ) {
|
||||
returned.promise()
|
||||
.done( newDefer.resolve )
|
||||
.fail( newDefer.reject )
|
||||
.progress( newDefer.notify );
|
||||
} else {
|
||||
newDefer[ tuple[ 0 ] + "With" ](
|
||||
this === promise ? newDefer.promise() : this,
|
||||
fn ? [ returned ] : arguments
|
||||
);
|
||||
}
|
||||
} );
|
||||
} );
|
||||
fns = null;
|
||||
} ).promise();
|
||||
|
||||
};
|
||||
|
||||
if ( func ) {
|
||||
func.call( deferred, deferred );
|
||||
}
|
||||
|
||||
return deferred;
|
||||
};
|
||||
|
||||
// Preserve handler of uncaught exceptions in promise chains
|
||||
jQuery.Deferred.exceptionHook = oldDeferred.exceptionHook;
|
||||
|
||||
return jQuery;
|
||||
} );
|
||||
544
spring-cloud-contract-maven-plugin/apidocs/jquery/jquery-ui.css
vendored
Normal file
@@ -0,0 +1,544 @@
|
||||
/*! jQuery UI - v1.11.4 - 2015-05-20
|
||||
* http://jqueryui.com
|
||||
* Includes: core.css, autocomplete.css, menu.css, theme.css
|
||||
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
|
||||
* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
|
||||
|
||||
/* Layout helpers
|
||||
----------------------------------*/
|
||||
.ui-helper-hidden {
|
||||
display: none;
|
||||
}
|
||||
.ui-helper-hidden-accessible {
|
||||
border: 0;
|
||||
clip: rect(0 0 0 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
.ui-helper-reset {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
line-height: 1.3;
|
||||
text-decoration: none;
|
||||
font-size: 100%;
|
||||
list-style: none;
|
||||
}
|
||||
.ui-helper-clearfix:before,
|
||||
.ui-helper-clearfix:after {
|
||||
content: "";
|
||||
display: table;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.ui-helper-clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
.ui-helper-clearfix {
|
||||
min-height: 0; /* support: IE7 */
|
||||
}
|
||||
.ui-helper-zfix {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
filter:Alpha(Opacity=0); /* support: IE8 */
|
||||
}
|
||||
|
||||
.ui-front {
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-disabled {
|
||||
cursor: default !important;
|
||||
}
|
||||
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon {
|
||||
display: block;
|
||||
text-indent: -99999px;
|
||||
overflow: hidden;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.ui-autocomplete {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
cursor: default;
|
||||
}
|
||||
.ui-menu {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: block;
|
||||
outline: none;
|
||||
}
|
||||
.ui-menu .ui-menu {
|
||||
position: absolute;
|
||||
}
|
||||
.ui-menu .ui-menu-item {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 3px 1em 3px .4em;
|
||||
cursor: pointer;
|
||||
min-height: 0; /* support: IE7 */
|
||||
/* support: IE10, see #8844 */
|
||||
list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
|
||||
}
|
||||
.ui-menu .ui-menu-divider {
|
||||
margin: 5px 0;
|
||||
height: 0;
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
border-width: 1px 0 0 0;
|
||||
}
|
||||
.ui-menu .ui-state-focus,
|
||||
.ui-menu .ui-state-active {
|
||||
margin: -1px;
|
||||
}
|
||||
|
||||
/* icon support */
|
||||
.ui-menu-icons {
|
||||
position: relative;
|
||||
}
|
||||
.ui-menu-icons .ui-menu-item {
|
||||
padding-left: 2em;
|
||||
}
|
||||
|
||||
/* left-aligned */
|
||||
.ui-menu .ui-icon {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: .2em;
|
||||
margin: auto 0;
|
||||
}
|
||||
|
||||
/* right-aligned */
|
||||
.ui-menu .ui-menu-icon {
|
||||
left: auto;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
/* Component containers
|
||||
----------------------------------*/
|
||||
.ui-widget {
|
||||
font-family: Verdana,Arial,sans-serif;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
.ui-widget .ui-widget {
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget input,
|
||||
.ui-widget select,
|
||||
.ui-widget textarea,
|
||||
.ui-widget button {
|
||||
font-family: Verdana,Arial,sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget-content {
|
||||
border: 1px solid #aaaaaa;
|
||||
background: #ffffff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;
|
||||
color: #222222;
|
||||
}
|
||||
.ui-widget-content a {
|
||||
color: #222222;
|
||||
}
|
||||
.ui-widget-header {
|
||||
border: 1px solid #aaaaaa;
|
||||
background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;
|
||||
color: #222222;
|
||||
font-weight: bold;
|
||||
}
|
||||
.ui-widget-header a {
|
||||
color: #222222;
|
||||
}
|
||||
|
||||
/* Interaction states
|
||||
----------------------------------*/
|
||||
.ui-state-default,
|
||||
.ui-widget-content .ui-state-default,
|
||||
.ui-widget-header .ui-state-default {
|
||||
border: 1px solid #d3d3d3;
|
||||
background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;
|
||||
font-weight: normal;
|
||||
color: #555555;
|
||||
}
|
||||
.ui-state-default a,
|
||||
.ui-state-default a:link,
|
||||
.ui-state-default a:visited {
|
||||
color: #555555;
|
||||
text-decoration: none;
|
||||
}
|
||||
.ui-state-hover,
|
||||
.ui-widget-content .ui-state-hover,
|
||||
.ui-widget-header .ui-state-hover,
|
||||
.ui-state-focus,
|
||||
.ui-widget-content .ui-state-focus,
|
||||
.ui-widget-header .ui-state-focus {
|
||||
border: 1px solid #999999;
|
||||
background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;
|
||||
font-weight: normal;
|
||||
color: #212121;
|
||||
}
|
||||
.ui-state-hover a,
|
||||
.ui-state-hover a:hover,
|
||||
.ui-state-hover a:link,
|
||||
.ui-state-hover a:visited,
|
||||
.ui-state-focus a,
|
||||
.ui-state-focus a:hover,
|
||||
.ui-state-focus a:link,
|
||||
.ui-state-focus a:visited {
|
||||
color: #212121;
|
||||
text-decoration: none;
|
||||
}
|
||||
.ui-state-active,
|
||||
.ui-widget-content .ui-state-active,
|
||||
.ui-widget-header .ui-state-active {
|
||||
border: 1px solid #aaaaaa;
|
||||
background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
|
||||
font-weight: normal;
|
||||
color: #212121;
|
||||
}
|
||||
.ui-state-active a,
|
||||
.ui-state-active a:link,
|
||||
.ui-state-active a:visited {
|
||||
color: #212121;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-highlight,
|
||||
.ui-widget-content .ui-state-highlight,
|
||||
.ui-widget-header .ui-state-highlight {
|
||||
border: 1px solid #fcefa1;
|
||||
background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;
|
||||
color: #363636;
|
||||
}
|
||||
.ui-state-highlight a,
|
||||
.ui-widget-content .ui-state-highlight a,
|
||||
.ui-widget-header .ui-state-highlight a {
|
||||
color: #363636;
|
||||
}
|
||||
.ui-state-error,
|
||||
.ui-widget-content .ui-state-error,
|
||||
.ui-widget-header .ui-state-error {
|
||||
border: 1px solid #cd0a0a;
|
||||
background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
|
||||
color: #cd0a0a;
|
||||
}
|
||||
.ui-state-error a,
|
||||
.ui-widget-content .ui-state-error a,
|
||||
.ui-widget-header .ui-state-error a {
|
||||
color: #cd0a0a;
|
||||
}
|
||||
.ui-state-error-text,
|
||||
.ui-widget-content .ui-state-error-text,
|
||||
.ui-widget-header .ui-state-error-text {
|
||||
color: #cd0a0a;
|
||||
}
|
||||
.ui-priority-primary,
|
||||
.ui-widget-content .ui-priority-primary,
|
||||
.ui-widget-header .ui-priority-primary {
|
||||
font-weight: bold;
|
||||
}
|
||||
.ui-priority-secondary,
|
||||
.ui-widget-content .ui-priority-secondary,
|
||||
.ui-widget-header .ui-priority-secondary {
|
||||
opacity: .7;
|
||||
filter:Alpha(Opacity=70); /* support: IE8 */
|
||||
font-weight: normal;
|
||||
}
|
||||
.ui-state-disabled,
|
||||
.ui-widget-content .ui-state-disabled,
|
||||
.ui-widget-header .ui-state-disabled {
|
||||
opacity: .35;
|
||||
filter:Alpha(Opacity=35); /* support: IE8 */
|
||||
background-image: none;
|
||||
}
|
||||
.ui-state-disabled .ui-icon {
|
||||
filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
|
||||
}
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.ui-icon,
|
||||
.ui-widget-content .ui-icon {
|
||||
background-image: url("images/ui-icons_222222_256x240.png");
|
||||
}
|
||||
.ui-widget-header .ui-icon {
|
||||
background-image: url("images/ui-icons_222222_256x240.png");
|
||||
}
|
||||
.ui-state-default .ui-icon {
|
||||
background-image: url("images/ui-icons_888888_256x240.png");
|
||||
}
|
||||
.ui-state-hover .ui-icon,
|
||||
.ui-state-focus .ui-icon {
|
||||
background-image: url("images/ui-icons_454545_256x240.png");
|
||||
}
|
||||
.ui-state-active .ui-icon {
|
||||
background-image: url("images/ui-icons_454545_256x240.png");
|
||||
}
|
||||
.ui-state-highlight .ui-icon {
|
||||
background-image: url("images/ui-icons_2e83ff_256x240.png");
|
||||
}
|
||||
.ui-state-error .ui-icon,
|
||||
.ui-state-error-text .ui-icon {
|
||||
background-image: url("images/ui-icons_cd0a0a_256x240.png");
|
||||
}
|
||||
|
||||
/* positioning */
|
||||
.ui-icon-blank { background-position: 16px 16px; }
|
||||
.ui-icon-carat-1-n { background-position: 0 0; }
|
||||
.ui-icon-carat-1-ne { background-position: -16px 0; }
|
||||
.ui-icon-carat-1-e { background-position: -32px 0; }
|
||||
.ui-icon-carat-1-se { background-position: -48px 0; }
|
||||
.ui-icon-carat-1-s { background-position: -64px 0; }
|
||||
.ui-icon-carat-1-sw { background-position: -80px 0; }
|
||||
.ui-icon-carat-1-w { background-position: -96px 0; }
|
||||
.ui-icon-carat-1-nw { background-position: -112px 0; }
|
||||
.ui-icon-carat-2-n-s { background-position: -128px 0; }
|
||||
.ui-icon-carat-2-e-w { background-position: -144px 0; }
|
||||
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
||||
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
||||
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
||||
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
||||
.ui-icon-triangle-1-s { background-position: -64px -16px; }
|
||||
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
||||
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
||||
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
||||
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
||||
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
||||
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
||||
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
||||
.ui-icon-arrow-1-s { background-position: -64px -32px; }
|
||||
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
||||
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
||||
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
||||
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
|
||||
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
||||
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
||||
.ui-icon-extlink { background-position: -32px -80px; }
|
||||
.ui-icon-newwin { background-position: -48px -80px; }
|
||||
.ui-icon-refresh { background-position: -64px -80px; }
|
||||
.ui-icon-shuffle { background-position: -80px -80px; }
|
||||
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
||||
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
||||
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
||||
.ui-icon-folder-open { background-position: -16px -96px; }
|
||||
.ui-icon-document { background-position: -32px -96px; }
|
||||
.ui-icon-document-b { background-position: -48px -96px; }
|
||||
.ui-icon-note { background-position: -64px -96px; }
|
||||
.ui-icon-mail-closed { background-position: -80px -96px; }
|
||||
.ui-icon-mail-open { background-position: -96px -96px; }
|
||||
.ui-icon-suitcase { background-position: -112px -96px; }
|
||||
.ui-icon-comment { background-position: -128px -96px; }
|
||||
.ui-icon-person { background-position: -144px -96px; }
|
||||
.ui-icon-print { background-position: -160px -96px; }
|
||||
.ui-icon-trash { background-position: -176px -96px; }
|
||||
.ui-icon-locked { background-position: -192px -96px; }
|
||||
.ui-icon-unlocked { background-position: -208px -96px; }
|
||||
.ui-icon-bookmark { background-position: -224px -96px; }
|
||||
.ui-icon-tag { background-position: -240px -96px; }
|
||||
.ui-icon-home { background-position: 0 -112px; }
|
||||
.ui-icon-flag { background-position: -16px -112px; }
|
||||
.ui-icon-calendar { background-position: -32px -112px; }
|
||||
.ui-icon-cart { background-position: -48px -112px; }
|
||||
.ui-icon-pencil { background-position: -64px -112px; }
|
||||
.ui-icon-clock { background-position: -80px -112px; }
|
||||
.ui-icon-disk { background-position: -96px -112px; }
|
||||
.ui-icon-calculator { background-position: -112px -112px; }
|
||||
.ui-icon-zoomin { background-position: -128px -112px; }
|
||||
.ui-icon-zoomout { background-position: -144px -112px; }
|
||||
.ui-icon-search { background-position: -160px -112px; }
|
||||
.ui-icon-wrench { background-position: -176px -112px; }
|
||||
.ui-icon-gear { background-position: -192px -112px; }
|
||||
.ui-icon-heart { background-position: -208px -112px; }
|
||||
.ui-icon-star { background-position: -224px -112px; }
|
||||
.ui-icon-link { background-position: -240px -112px; }
|
||||
.ui-icon-cancel { background-position: 0 -128px; }
|
||||
.ui-icon-plus { background-position: -16px -128px; }
|
||||
.ui-icon-plusthick { background-position: -32px -128px; }
|
||||
.ui-icon-minus { background-position: -48px -128px; }
|
||||
.ui-icon-minusthick { background-position: -64px -128px; }
|
||||
.ui-icon-close { background-position: -80px -128px; }
|
||||
.ui-icon-closethick { background-position: -96px -128px; }
|
||||
.ui-icon-key { background-position: -112px -128px; }
|
||||
.ui-icon-lightbulb { background-position: -128px -128px; }
|
||||
.ui-icon-scissors { background-position: -144px -128px; }
|
||||
.ui-icon-clipboard { background-position: -160px -128px; }
|
||||
.ui-icon-copy { background-position: -176px -128px; }
|
||||
.ui-icon-contact { background-position: -192px -128px; }
|
||||
.ui-icon-image { background-position: -208px -128px; }
|
||||
.ui-icon-video { background-position: -224px -128px; }
|
||||
.ui-icon-script { background-position: -240px -128px; }
|
||||
.ui-icon-alert { background-position: 0 -144px; }
|
||||
.ui-icon-info { background-position: -16px -144px; }
|
||||
.ui-icon-notice { background-position: -32px -144px; }
|
||||
.ui-icon-help { background-position: -48px -144px; }
|
||||
.ui-icon-check { background-position: -64px -144px; }
|
||||
.ui-icon-bullet { background-position: -80px -144px; }
|
||||
.ui-icon-radio-on { background-position: -96px -144px; }
|
||||
.ui-icon-radio-off { background-position: -112px -144px; }
|
||||
.ui-icon-pin-w { background-position: -128px -144px; }
|
||||
.ui-icon-pin-s { background-position: -144px -144px; }
|
||||
.ui-icon-play { background-position: 0 -160px; }
|
||||
.ui-icon-pause { background-position: -16px -160px; }
|
||||
.ui-icon-seek-next { background-position: -32px -160px; }
|
||||
.ui-icon-seek-prev { background-position: -48px -160px; }
|
||||
.ui-icon-seek-end { background-position: -64px -160px; }
|
||||
.ui-icon-seek-start { background-position: -80px -160px; }
|
||||
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
||||
.ui-icon-seek-first { background-position: -80px -160px; }
|
||||
.ui-icon-stop { background-position: -96px -160px; }
|
||||
.ui-icon-eject { background-position: -112px -160px; }
|
||||
.ui-icon-volume-off { background-position: -128px -160px; }
|
||||
.ui-icon-volume-on { background-position: -144px -160px; }
|
||||
.ui-icon-power { background-position: 0 -176px; }
|
||||
.ui-icon-signal-diag { background-position: -16px -176px; }
|
||||
.ui-icon-signal { background-position: -32px -176px; }
|
||||
.ui-icon-battery-0 { background-position: -48px -176px; }
|
||||
.ui-icon-battery-1 { background-position: -64px -176px; }
|
||||
.ui-icon-battery-2 { background-position: -80px -176px; }
|
||||
.ui-icon-battery-3 { background-position: -96px -176px; }
|
||||
.ui-icon-circle-plus { background-position: 0 -192px; }
|
||||
.ui-icon-circle-minus { background-position: -16px -192px; }
|
||||
.ui-icon-circle-close { background-position: -32px -192px; }
|
||||
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
||||
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
||||
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
||||
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
||||
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
||||
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
||||
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
||||
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
||||
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
||||
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
||||
.ui-icon-circle-check { background-position: -208px -192px; }
|
||||
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
||||
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
||||
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
||||
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
||||
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
||||
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
||||
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Corner radius */
|
||||
.ui-corner-all,
|
||||
.ui-corner-top,
|
||||
.ui-corner-left,
|
||||
.ui-corner-tl {
|
||||
border-top-left-radius: 4px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-top,
|
||||
.ui-corner-right,
|
||||
.ui-corner-tr {
|
||||
border-top-right-radius: 4px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-bottom,
|
||||
.ui-corner-left,
|
||||
.ui-corner-bl {
|
||||
border-bottom-left-radius: 4px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-bottom,
|
||||
.ui-corner-right,
|
||||
.ui-corner-br {
|
||||
border-bottom-right-radius: 4px;
|
||||
}
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay {
|
||||
background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
|
||||
opacity: .3;
|
||||
filter: Alpha(Opacity=30); /* support: IE8 */
|
||||
}
|
||||
.ui-widget-shadow {
|
||||
margin: -8px 0 0 -8px;
|
||||
padding: 8px;
|
||||
background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
|
||||
opacity: .3;
|
||||
filter: Alpha(Opacity=30); /* support: IE8 */
|
||||
border-radius: 8px;
|
||||
}
|
||||
2610
spring-cloud-contract-maven-plugin/apidocs/jquery/jquery-ui.js
vendored
Normal file
7
spring-cloud-contract-maven-plugin/apidocs/jquery/jquery-ui.min.css
vendored
Normal file
7
spring-cloud-contract-maven-plugin/apidocs/jquery/jquery-ui.min.js
vendored
Normal file
152
spring-cloud-contract-maven-plugin/apidocs/jquery/jquery-ui.structure.css
vendored
Normal file
@@ -0,0 +1,152 @@
|
||||
/*!
|
||||
* jQuery UI CSS Framework 1.11.4
|
||||
* http://jqueryui.com
|
||||
*
|
||||
* Copyright jQuery Foundation and other contributors
|
||||
* Released under the MIT license.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://api.jqueryui.com/category/theming/
|
||||
*/
|
||||
|
||||
/* Layout helpers
|
||||
----------------------------------*/
|
||||
.ui-helper-hidden {
|
||||
display: none;
|
||||
}
|
||||
.ui-helper-hidden-accessible {
|
||||
border: 0;
|
||||
clip: rect(0 0 0 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
.ui-helper-reset {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
line-height: 1.3;
|
||||
text-decoration: none;
|
||||
font-size: 100%;
|
||||
list-style: none;
|
||||
}
|
||||
.ui-helper-clearfix:before,
|
||||
.ui-helper-clearfix:after {
|
||||
content: "";
|
||||
display: table;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.ui-helper-clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
.ui-helper-clearfix {
|
||||
min-height: 0; /* support: IE7 */
|
||||
}
|
||||
.ui-helper-zfix {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
filter:Alpha(Opacity=0); /* support: IE8 */
|
||||
}
|
||||
|
||||
.ui-front {
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-disabled {
|
||||
cursor: default !important;
|
||||
}
|
||||
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon {
|
||||
display: block;
|
||||
text-indent: -99999px;
|
||||
overflow: hidden;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.ui-autocomplete {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
cursor: default;
|
||||
}
|
||||
.ui-menu {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: block;
|
||||
outline: none;
|
||||
}
|
||||
.ui-menu .ui-menu {
|
||||
position: absolute;
|
||||
}
|
||||
.ui-menu .ui-menu-item {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 3px 1em 3px .4em;
|
||||
cursor: pointer;
|
||||
min-height: 0; /* support: IE7 */
|
||||
/* support: IE10, see #8844 */
|
||||
list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
|
||||
}
|
||||
.ui-menu .ui-menu-divider {
|
||||
margin: 5px 0;
|
||||
height: 0;
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
border-width: 1px 0 0 0;
|
||||
}
|
||||
.ui-menu .ui-state-focus,
|
||||
.ui-menu .ui-state-active {
|
||||
margin: -1px;
|
||||
}
|
||||
|
||||
/* icon support */
|
||||
.ui-menu-icons {
|
||||
position: relative;
|
||||
}
|
||||
.ui-menu-icons .ui-menu-item {
|
||||
padding-left: 2em;
|
||||
}
|
||||
|
||||
/* left-aligned */
|
||||
.ui-menu .ui-icon {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: .2em;
|
||||
margin: auto 0;
|
||||
}
|
||||
|
||||
/* right-aligned */
|
||||
.ui-menu .ui-menu-icon {
|
||||
left: auto;
|
||||
right: 0;
|
||||
}
|
||||
5
spring-cloud-contract-maven-plugin/apidocs/jquery/jquery-ui.structure.min.css
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/*! jQuery UI - v1.11.4 - 2015-05-20
|
||||
* http://jqueryui.com
|
||||
* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
|
||||
|
||||
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}
|
||||
56
spring-cloud-contract-maven-plugin/apidocs/jquery/jszip-utils/dist/jszip-utils-ie.js
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
/*!
|
||||
|
||||
JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
|
||||
<http://stuk.github.io/jszip-utils>
|
||||
|
||||
(c) 2014 Stuart Knightley, David Duponchel
|
||||
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
|
||||
|
||||
*/
|
||||
;(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
|
||||
var global=typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {};/* jshint evil: true, newcap: false */
|
||||
/* global IEBinaryToArray_ByteStr, IEBinaryToArray_ByteStr_Last */
|
||||
"use strict";
|
||||
|
||||
// Adapted from http://stackoverflow.com/questions/1095102/how-do-i-load-binary-image-data-using-javascript-and-xmlhttprequest
|
||||
var IEBinaryToArray_ByteStr_Script =
|
||||
"<!-- IEBinaryToArray_ByteStr -->\r\n"+
|
||||
"<script type='text/vbscript'>\r\n"+
|
||||
"Function IEBinaryToArray_ByteStr(Binary)\r\n"+
|
||||
" IEBinaryToArray_ByteStr = CStr(Binary)\r\n"+
|
||||
"End Function\r\n"+
|
||||
"Function IEBinaryToArray_ByteStr_Last(Binary)\r\n"+
|
||||
" Dim lastIndex\r\n"+
|
||||
" lastIndex = LenB(Binary)\r\n"+
|
||||
" if lastIndex mod 2 Then\r\n"+
|
||||
" IEBinaryToArray_ByteStr_Last = Chr( AscB( MidB( Binary, lastIndex, 1 ) ) )\r\n"+
|
||||
" Else\r\n"+
|
||||
" IEBinaryToArray_ByteStr_Last = "+'""'+"\r\n"+
|
||||
" End If\r\n"+
|
||||
"End Function\r\n"+
|
||||
"</script>\r\n";
|
||||
|
||||
// inject VBScript
|
||||
document.write(IEBinaryToArray_ByteStr_Script);
|
||||
|
||||
global.JSZipUtils._getBinaryFromXHR = function (xhr) {
|
||||
var binary = xhr.responseBody;
|
||||
var byteMapping = {};
|
||||
for ( var i = 0; i < 256; i++ ) {
|
||||
for ( var j = 0; j < 256; j++ ) {
|
||||
byteMapping[ String.fromCharCode( i + (j << 8) ) ] =
|
||||
String.fromCharCode(i) + String.fromCharCode(j);
|
||||
}
|
||||
}
|
||||
var rawBytes = IEBinaryToArray_ByteStr(binary);
|
||||
var lastChr = IEBinaryToArray_ByteStr_Last(binary);
|
||||
return rawBytes.replace(/[\s\S]/g, function( match ) {
|
||||
return byteMapping[match];
|
||||
}) + lastChr;
|
||||
};
|
||||
|
||||
// enforcing Stuk's coding style
|
||||
// vim: set shiftwidth=4 softtabstop=4:
|
||||
|
||||
},{}]},{},[1])
|
||||
;
|
||||
10
spring-cloud-contract-maven-plugin/apidocs/jquery/jszip-utils/dist/jszip-utils-ie.min.js
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
/*!
|
||||
|
||||
JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
|
||||
<http://stuk.github.io/jszip-utils>
|
||||
|
||||
(c) 2014 Stuart Knightley, David Duponchel
|
||||
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
|
||||
|
||||
*/
|
||||
!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(){var a="undefined"!=typeof self?self:"undefined"!=typeof window?window:{},b="<!-- IEBinaryToArray_ByteStr -->\r\n<script type='text/vbscript'>\r\nFunction IEBinaryToArray_ByteStr(Binary)\r\n IEBinaryToArray_ByteStr = CStr(Binary)\r\nEnd Function\r\nFunction IEBinaryToArray_ByteStr_Last(Binary)\r\n Dim lastIndex\r\n lastIndex = LenB(Binary)\r\n if lastIndex mod 2 Then\r\n IEBinaryToArray_ByteStr_Last = Chr( AscB( MidB( Binary, lastIndex, 1 ) ) )\r\n Else\r\n IEBinaryToArray_ByteStr_Last = \"\"\r\n End If\r\nEnd Function\r\n</script>\r\n";document.write(b),a.JSZipUtils._getBinaryFromXHR=function(a){for(var b=a.responseBody,c={},d=0;256>d;d++)for(var e=0;256>e;e++)c[String.fromCharCode(d+(e<<8))]=String.fromCharCode(d)+String.fromCharCode(e);var f=IEBinaryToArray_ByteStr(b),g=IEBinaryToArray_ByteStr_Last(b);return f.replace(/[\s\S]/g,function(a){return c[a]})+g}},{}]},{},[1]);
|
||||
118
spring-cloud-contract-maven-plugin/apidocs/jquery/jszip-utils/dist/jszip-utils.js
vendored
Normal file
@@ -0,0 +1,118 @@
|
||||
/*!
|
||||
|
||||
JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
|
||||
<http://stuk.github.io/jszip-utils>
|
||||
|
||||
(c) 2014 Stuart Knightley, David Duponchel
|
||||
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
|
||||
|
||||
*/
|
||||
!function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.JSZipUtils=e():"undefined"!=typeof global?global.JSZipUtils=e():"undefined"!=typeof self&&(self.JSZipUtils=e())}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
|
||||
'use strict';
|
||||
|
||||
var JSZipUtils = {};
|
||||
// just use the responseText with xhr1, response with xhr2.
|
||||
// The transformation doesn't throw away high-order byte (with responseText)
|
||||
// because JSZip handles that case. If not used with JSZip, you may need to
|
||||
// do it, see https://developer.mozilla.org/En/Using_XMLHttpRequest#Handling_binary_data
|
||||
JSZipUtils._getBinaryFromXHR = function (xhr) {
|
||||
// for xhr.responseText, the 0xFF mask is applied by JSZip
|
||||
return xhr.response || xhr.responseText;
|
||||
};
|
||||
|
||||
// taken from jQuery
|
||||
function createStandardXHR() {
|
||||
try {
|
||||
return new window.XMLHttpRequest();
|
||||
} catch( e ) {}
|
||||
}
|
||||
|
||||
function createActiveXHR() {
|
||||
try {
|
||||
return new window.ActiveXObject("Microsoft.XMLHTTP");
|
||||
} catch( e ) {}
|
||||
}
|
||||
|
||||
// Create the request object
|
||||
var createXHR = window.ActiveXObject ?
|
||||
/* Microsoft failed to properly
|
||||
* implement the XMLHttpRequest in IE7 (can't request local files),
|
||||
* so we use the ActiveXObject when it is available
|
||||
* Additionally XMLHttpRequest can be disabled in IE7/IE8 so
|
||||
* we need a fallback.
|
||||
*/
|
||||
function() {
|
||||
return createStandardXHR() || createActiveXHR();
|
||||
} :
|
||||
// For all other browsers, use the standard XMLHttpRequest object
|
||||
createStandardXHR;
|
||||
|
||||
|
||||
|
||||
JSZipUtils.getBinaryContent = function(path, callback) {
|
||||
/*
|
||||
* Here is the tricky part : getting the data.
|
||||
* In firefox/chrome/opera/... setting the mimeType to 'text/plain; charset=x-user-defined'
|
||||
* is enough, the result is in the standard xhr.responseText.
|
||||
* cf https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest#Receiving_binary_data_in_older_browsers
|
||||
* In IE <= 9, we must use (the IE only) attribute responseBody
|
||||
* (for binary data, its content is different from responseText).
|
||||
* In IE 10, the 'charset=x-user-defined' trick doesn't work, only the
|
||||
* responseType will work :
|
||||
* http://msdn.microsoft.com/en-us/library/ie/hh673569%28v=vs.85%29.aspx#Binary_Object_upload_and_download
|
||||
*
|
||||
* I'd like to use jQuery to avoid this XHR madness, but it doesn't support
|
||||
* the responseType attribute : http://bugs.jquery.com/ticket/11461
|
||||
*/
|
||||
try {
|
||||
|
||||
var xhr = createXHR();
|
||||
|
||||
xhr.open('GET', path, true);
|
||||
|
||||
// recent browsers
|
||||
if ("responseType" in xhr) {
|
||||
xhr.responseType = "arraybuffer";
|
||||
}
|
||||
|
||||
// older browser
|
||||
if(xhr.overrideMimeType) {
|
||||
xhr.overrideMimeType("text/plain; charset=x-user-defined");
|
||||
}
|
||||
|
||||
xhr.onreadystatechange = function(evt) {
|
||||
var file, err;
|
||||
// use `xhr` and not `this`... thanks IE
|
||||
if (xhr.readyState === 4) {
|
||||
if (xhr.status === 200 || xhr.status === 0) {
|
||||
file = null;
|
||||
err = null;
|
||||
try {
|
||||
file = JSZipUtils._getBinaryFromXHR(xhr);
|
||||
} catch(e) {
|
||||
err = new Error(e);
|
||||
}
|
||||
callback(err, file);
|
||||
} else {
|
||||
callback(new Error("Ajax error for " + path + " : " + this.status + " " + this.statusText), null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
xhr.send();
|
||||
|
||||
} catch (e) {
|
||||
callback(new Error(e), null);
|
||||
}
|
||||
};
|
||||
|
||||
// export
|
||||
module.exports = JSZipUtils;
|
||||
|
||||
// enforcing Stuk's coding style
|
||||
// vim: set shiftwidth=4 softtabstop=4:
|
||||
|
||||
},{}]},{},[1])
|
||||
(1)
|
||||
});
|
||||
;
|
||||
10
spring-cloud-contract-maven-plugin/apidocs/jquery/jszip-utils/dist/jszip-utils.min.js
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
/*!
|
||||
|
||||
JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
|
||||
<http://stuk.github.io/jszip-utils>
|
||||
|
||||
(c) 2014 Stuart Knightley, David Duponchel
|
||||
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
|
||||
|
||||
*/
|
||||
!function(a){"object"==typeof exports?module.exports=a():"function"==typeof define&&define.amd?define(a):"undefined"!=typeof window?window.JSZipUtils=a():"undefined"!=typeof global?global.JSZipUtils=a():"undefined"!=typeof self&&(self.JSZipUtils=a())}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b){"use strict";function c(){try{return new window.XMLHttpRequest}catch(a){}}function d(){try{return new window.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}}var e={};e._getBinaryFromXHR=function(a){return a.response||a.responseText};var f=window.ActiveXObject?function(){return c()||d()}:c;e.getBinaryContent=function(a,b){try{var c=f();c.open("GET",a,!0),"responseType"in c&&(c.responseType="arraybuffer"),c.overrideMimeType&&c.overrideMimeType("text/plain; charset=x-user-defined"),c.onreadystatechange=function(){var d,f;if(4===c.readyState)if(200===c.status||0===c.status){d=null,f=null;try{d=e._getBinaryFromXHR(c)}catch(g){f=new Error(g)}b(f,d)}else b(new Error("Ajax error for "+a+" : "+this.status+" "+this.statusText),null)},c.send()}catch(d){b(new Error(d),null)}},b.exports=e},{}]},{},[1])(1)});
|
||||
11623
spring-cloud-contract-maven-plugin/apidocs/jquery/jszip/dist/jszip.js
vendored
Normal file
15
spring-cloud-contract-maven-plugin/apidocs/jquery/jszip/dist/jszip.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
memberSearchIndex = [{"p":"org.springframework.cloud.contract.maven.verifier.stubrunner","c":"AetherStubDownloaderFactory","l":"AetherStubDownloaderFactory(RepositorySystem, MavenProject)","url":"%3Cinit%3E(org.eclipse.aether.RepositorySystem,org.apache.maven.project.MavenProject)"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"BaseClassMapping","l":"BaseClassMapping()","url":"%3Cinit%3E()"},{"p":"org.springframework.cloud.contract.maven.verifier.stubrunner","c":"AetherStubDownloaderFactory","l":"build(RepositorySystemSession)","url":"build(org.eclipse.aether.RepositorySystemSession)"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"ConvertMojo","l":"ConvertMojo()","url":"%3Cinit%3E()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"BaseClassMapping","l":"equals(Object)","url":"equals(java.lang.Object)"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"ConvertMojo","l":"execute()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"GenerateStubsMojo","l":"execute()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"GenerateTestsMojo","l":"execute()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"HelpMojo","l":"execute()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"PushStubsToScmMojo","l":"execute()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"RunMojo","l":"execute()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"GenerateStubsMojo","l":"GenerateStubsMojo()","url":"%3Cinit%3E()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"GenerateTestsMojo","l":"GenerateTestsMojo()","url":"%3Cinit%3E()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"BaseClassMapping","l":"getBaseClassFQN()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"BaseClassMapping","l":"getContractPackageRegex()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"GenerateTestsMojo","l":"getExcludedFiles()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"GenerateTestsMojo","l":"getIgnoredFiles()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"BaseClassMapping","l":"hashCode()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"HelpMojo","l":"HelpMojo()","url":"%3Cinit%3E()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"GenerateTestsMojo","l":"isAssertJsonSize()"},{"p":"org.springframework.cloud.contract.maven.verifier.stubrunner","c":"LocalStubRunner","l":"LocalStubRunner()","url":"%3Cinit%3E()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"GenerateTestsMojo","l":"mappingsToMap()"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"PushStubsToScmMojo","l":"PushStubsToScmMojo()","url":"%3Cinit%3E()"},{"p":"org.springframework.cloud.contract.maven.verifier.stubrunner","c":"RemoteStubRunner","l":"RemoteStubRunner(AetherStubDownloaderFactory)","url":"%3Cinit%3E(org.springframework.cloud.contract.maven.verifier.stubrunner.AetherStubDownloaderFactory)"},{"p":"org.springframework.cloud.contract.maven.verifier.stubrunner","c":"LocalStubRunner","l":"run(String, StubRunnerOptions)","url":"run(java.lang.String,org.springframework.cloud.contract.stubrunner.StubRunnerOptions)"},{"p":"org.springframework.cloud.contract.maven.verifier.stubrunner","c":"RemoteStubRunner","l":"run(StubRunnerOptions, RepositorySystemSession)","url":"run(org.springframework.cloud.contract.stubrunner.StubRunnerOptions,org.eclipse.aether.RepositorySystemSession)"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"RunMojo","l":"RunMojo(LocalStubRunner, RemoteStubRunner)","url":"%3Cinit%3E(org.springframework.cloud.contract.maven.verifier.stubrunner.LocalStubRunner,org.springframework.cloud.contract.maven.verifier.stubrunner.RemoteStubRunner)"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"GenerateTestsMojo","l":"setAssertJsonSize(boolean)"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"BaseClassMapping","l":"setBaseClassFQN(String)","url":"setBaseClassFQN(java.lang.String)"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"BaseClassMapping","l":"setContractPackageRegex(String)","url":"setContractPackageRegex(java.lang.String)"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"GenerateTestsMojo","l":"setExcludedFiles(List<String>)","url":"setExcludedFiles(java.util.List)"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"GenerateTestsMojo","l":"setIgnoredFiles(List<String>)","url":"setIgnoredFiles(java.util.List)"},{"p":"org.springframework.cloud.contract.maven.verifier","c":"BaseClassMapping","l":"toString()"}]
|
||||