// Be sure to set the :StorageClass: and :Provisioner: value in each assembly
// on the line before the include statement for this module. For example, to
// set the StorageClass value to "AWS EBS", add the following line to the
// assembly:
// :StorageClass: AWS EBS
// Module included in the following assemblies:
//
// * storage/persistent_storage-aws.adoc

[id="storage-create-{StorageClass}-storage-class_{context}"]
= Creating the {StorageClass} storage class

Storage classes are used to differentiate and delineate storage levels and
usages. By defining a storage class, users can obtain dynamically provisioned
persistent volumes.

.Procedure

. In the {product-title} console, click *Storage* -> *Storage Classes*.

. In the storage class overview, click *Create Storage Class*.

. Define the desired options on the page that appears.

.. Enter a name to reference the storage class.

.. Enter an optional description.

.. Select the reclaim policy.

.. Select `{Provisioner}` from the drop down list.
+

[NOTE]
====
For Container Storage Interface (CSI) provisioning, select `ebs.csi.aws.com`.
====

.. Enter additional parameters for the storage class as desired.

. Click *Create* to create the storage class.

// Undefine {StorageClass} attribute, so that any mistakes are easily spotted
:!StorageClass:

// Be sure to set the :StorageClass: and :Provisioner: value in each assembly
// on the line before the include statement for this module. For example, to
// set the StorageClass value to "AWS EBS", add the following line to the
// assembly:
// :StorageClass: AWS EBS
// Module included in the following assemblies:
//
// * storage/persistent_storage-aws.adoc

[id="storage-create-{StorageClass}-storage-class_{context}"]
= Creating the {StorageClass} storage class

Storage classes are used to differentiate and delineate storage levels and
usages. By defining a storage class, users can obtain dynamically provisioned
persistent volumes.

.Procedure

. In the {product-title} console, click *Storage* -> *Storage Classes*.

. In the storage class overview, click *Create Storage Class*.

. Define the desired options on the page that appears.

.. Enter a name to reference the storage class.

.. Enter an optional description.

.. Select the reclaim policy.

.. Select `{Provisioner}` from the drop down list.

.. Enter additional parameters for the storage class as desired.

. Click *Create* to create the storage class.

// Undefine {StorageClass} attribute, so that any mistakes are easily spotted
:!StorageClass:

Fix storage class CSI note in Creating SC-EBS/GCE

In the portal, when I select provisioner drop-down, I do not see an option for <foo>.csi.<bar>.com. The instruction in this note to select the csi option for provisioning is not a valid option.


= Spring Security Reference
Ben Alex; Luke Taylor; Rob Winch; Gunnar Hillert; Joe Grandja; Jay Bryant; Eddú Meléndez; Josh Cummings
:include-dir: _includes
:security-api-url: https://docs.spring.io/spring-security/site/docs/current/api/
:source-indent: 0
:tabsize: 4
:toc: left

// FIXME: Add links for authentication, authorization, common attacks
Spring Security is a framework that provides authentication, authorization, and protection against common attacks.
// FIXME: Add links for imperative and reactive applications
With first class support for both imperative and reactive applications, it is the de-facto standard for securing Spring-based applications.

include::{include-dir}/about/index.adoc[]

include::{include-dir}/servlet/index.adoc[]

include::{include-dir}/reactive/index.adoc[]

= Spring Security Reference
Ben Alex; Luke Taylor; Rob Winch; Gunnar Hillert; Joe Grandja; Jay Bryant; Eddú Meléndez; Josh Cummings; Dave Syer
:include-dir: _includes
:security-api-url: https://docs.spring.io/spring-security/site/docs/current/api/
:source-indent: 0
:tabsize: 4
:toc: left

// FIXME: Add links for authentication, authorization, common attacks
Spring Security is a framework that provides authentication, authorization, and protection against common attacks.
// FIXME: Add links for imperative and reactive applications
With first class support for both imperative and reactive applications, it is the de-facto standard for securing Spring-based applications.

include::{include-dir}/about/index.adoc[]

include::{include-dir}/servlet/index.adoc[]

include::{include-dir}/reactive/index.adoc[]

Add Dave Syer to Authors

Add Dave Syer to Authors

Much of the content from architecture is borrowed, with permission
from Dave.

Issueh gh-7955


[[rest-api-node-properties]]
== Node properties ==

include::set-property-on-node.asciidoc[]

include::update-node-properties.asciidoc[]

include::get-properties-for-node.asciidoc[]

include::property-values-can-not-be-null.asciidoc[]

include::property-values-can-not-be-nested.asciidoc[]

include::delete-all-properties-from-node.asciidoc[]

include::delete-a-named-property-from-a-node.asciidoc[]

[[rest-api-node-properties]]
== Node properties ==

include::set-property-on-node.asciidoc[]

include::update-node-properties.asciidoc[]

include::get-properties-for-node.asciidoc[]

include::get-property-for-node.asciidoc[]

include::property-values-can-not-be-null.asciidoc[]

include::property-values-can-not-be-nested.asciidoc[]

include::delete-all-properties-from-node.asciidoc[]

include::delete-a-named-property-from-a-node.asciidoc[]

Include REST API docs that were already produced.


[[elasticsearch-reference]]
= Elasticsearch Reference

:include-xpack:         true
:xes-repo-dir:          {docdir}
:es-repo-dir:           {docdir}/../../../../elasticsearch/docs
:es-test-dir:           {docdir}/../../../../elasticsearch/docs/src/test
:plugins-examples-dir:  {docdir}/../../../../elasticsearch/plugins/examples
:docs-dir:              {docdir}/../../../../docs

include::{es-repo-dir}/Versions.asciidoc[]

include::{es-repo-dir}/reference/index-shared1.asciidoc[]

:edit_url!:
include::setup-xes.asciidoc[]

:edit_url:
include::{es-repo-dir}/reference/index-shared2.asciidoc[]

:edit_url!:
include::rest-api/index.asciidoc[]

:edit_url:
include::{es-repo-dir}/reference/index-shared3.asciidoc[]

[[elasticsearch-reference]]
= Elasticsearch Reference

:include-xpack:         true
:xes-repo-dir:          {docdir}
:es-repo-dir:           {docdir}/../../../../elasticsearch/docs
:es-test-dir:           {docdir}/../../../../elasticsearch/docs/src/test
:plugins-examples-dir:  {docdir}/../../../../elasticsearch/plugins/examples

include::{es-repo-dir}/Versions.asciidoc[]

include::{es-repo-dir}/reference/index-shared1.asciidoc[]

:edit_url!:
include::setup-xes.asciidoc[]

:edit_url:
include::{es-repo-dir}/reference/index-shared2.asciidoc[]

:edit_url!:
include::rest-api/index.asciidoc[]

:edit_url:
include::{es-repo-dir}/reference/index-shared3.asciidoc[]

Include shared/attributes.asciidoc directly from docs master

Original commit: elastic/x-pack-elasticsearch@f3a0828c5d64650b855e24c46d2c1abc06ca05a1


[[indexed-scripts]]
== Indexed Scripts API

The indexed script API allows one to interact with scripts and templates
stored in an elasticsearch index. It can be used to create, update, get,
and delete indexed scripts and templates.

[source,java]
--------------------------------------------------
PutIndexedScriptResponse = client.preparePutIndexedScript()
			 .setScriptLang("groovy")
			 .setId("script1")
			 .setSource("_score * doc['my_numeric_field'].value")
			 .execute()
			 .actionGet();

GetIndexedScriptResponse = client.prepareGetIndexedScript()
			    .setScriptLang("groovy")
			    .setId("script1")
			    .execute()
			    .actionGet();

DeleteIndexedScriptResponse = client.prepareDeleteIndexedScript()
			    .setScriptLang("groovy")
			    .setId("script1")
			    .execute()
			    .actionGet();
--------------------------------------------------

To store templates simply use "mustache" for the scriptLang.

=== Script Language

The API allows one to set the language of the indexed script being
interacted with. If one is not provided the default scripting language
will be used.

[[indexed-scripts]]
== Indexed Scripts API

The indexed script API allows one to interact with scripts and templates
stored in an elasticsearch index. It can be used to create, update, get,
and delete indexed scripts and templates.

[source,java]
--------------------------------------------------
PutIndexedScriptResponse = client.preparePutIndexedScript()
			 .setScriptLang("groovy")
			 .setId("script1")
			 .setSource("script", "_score * doc['my_numeric_field'].value")
			 .execute()
			 .actionGet();

GetIndexedScriptResponse = client.prepareGetIndexedScript()
			    .setScriptLang("groovy")
			    .setId("script1")
			    .execute()
			    .actionGet();

DeleteIndexedScriptResponse = client.prepareDeleteIndexedScript()
			    .setScriptLang("groovy")
			    .setId("script1")
			    .execute()
			    .actionGet();
--------------------------------------------------

To store templates simply use "mustache" for the scriptLang.

=== Script Language

The API allows one to set the language of the indexed script being
interacted with. If one is not provided the default scripting language
will be used.

Fix Java API documentation for indexed scripts


[[servlet-filters-review]]
= A Review of ``Filter``s

Spring Security's Servlet support is based on Servlet ``Filter``s, so it is helpful to look at the role of ``Filter``s generally first.
The picture below shows the typical layering of the handlers for a single HTTP request.

.FilterChain
[[servlet-filterchain-figure]]
image::{figures}/filterchain.png[]

The client sends a request to the application, and the container creates a `FilterChain` which contains the ``Filter``s and `Servlet` that should process the `HttpServletRequest` based on the path of the request URI.
At most one `Servlet` can handle a single `HttpServletRequest` and `HttpServletResponse`.
However, more than one `Filter` can be used to:

* Prevent downstream ``Filter``s or the `Servlet` from being invoked.
In this instance the `Filter` will typically write the `HttpServletResponse`.
* Modify the `HttpServletRequest` or `HttpServletResponse` used by the downstream ``Filter``s and `Servlet`

The power of the `Filter` comes from the `FilterChain` that is passed into it.

.`FilterChain` Usage Example
===
[source,java]
----
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
	// do something before the rest of the application
    chain.doFilter(request, response); // invoke the rest of the application
    // do something after the rest of the application
}
----
===

Since a `Filter` only impacts downstream ``Filter``s and the `Servlet`, the order each `Filter` is invoked is extremely important.

[[servlet-filters-review]]
= A Review of ``Filter``s

Spring Security's Servlet support is based on Servlet ``Filter``s, so it is helpful to look at the role of ``Filter``s generally first.
The picture below shows the typical layering of the handlers for a single HTTP request.

.FilterChain
[[servlet-filterchain-figure]]
image::{figures}/filterchain.png[]

The client sends a request to the application, and the container creates a `FilterChain` which contains the ``Filter``s and `Servlet` that should process the `HttpServletRequest` based on the path of the request URI.
In a Spring MVC application the `Servlet` is an instance of https://docs.spring.io/spring-security/site/docs/current-SNAPSHOT/reference/html5/#servlet-filters-review[`DispatcherServlet`].
At most one `Servlet` can handle a single `HttpServletRequest` and `HttpServletResponse`.
However, more than one `Filter` can be used to:

* Prevent downstream ``Filter``s or the `Servlet` from being invoked.
In this instance the `Filter` will typically write the `HttpServletResponse`.
* Modify the `HttpServletRequest` or `HttpServletResponse` used by the downstream ``Filter``s and `Servlet`

The power of the `Filter` comes from the `FilterChain` that is passed into it.

.`FilterChain` Usage Example
===
[source,java]
----
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
	// do something before the rest of the application
    chain.doFilter(request, response); // invoke the rest of the application
    // do something after the rest of the application
}
----
===

Since a `Filter` only impacts downstream ``Filter``s and the `Servlet`, the order each `Filter` is invoked is extremely important.

Add Link to DispatcherServlet in Filter Review Doc

Closes gh-8036


= Spring Security Reference
Ben Alex; Luke Taylor; Rob Winch; Gunnar Hillert; Joe Grandja; Jay Bryant; Eddú Meléndez; Josh Cummings; Dave Syer
:include-dir: _includes
:security-api-url: https://docs.spring.io/spring-security/site/docs/current/api/
:source-indent: 0
:tabsize: 4
:toc: left

// FIXME: Add links for authentication, authorization, common attacks
Spring Security is a framework that provides authentication, authorization, and protection against common attacks.
// FIXME: Add links for imperative and reactive applications
With first class support for both imperative and reactive applications, it is the de-facto standard for securing Spring-based applications.

include::{include-dir}/about/index.adoc[]

include::{include-dir}/servlet/index.adoc[]

include::{include-dir}/reactive/index.adoc[]

= Spring Security Reference
Ben Alex; Luke Taylor; Rob Winch; Gunnar Hillert; Joe Grandja; Jay Bryant; Eddú Meléndez; Josh Cummings; Dave Syer; Eleftheria Stein
:include-dir: _includes
:security-api-url: https://docs.spring.io/spring-security/site/docs/current/api/
:source-indent: 0
:tabsize: 4
:toc: left

// FIXME: Add links for authentication, authorization, common attacks
Spring Security is a framework that provides authentication, authorization, and protection against common attacks.
// FIXME: Add links for imperative and reactive applications
With first class support for both imperative and reactive applications, it is the de-facto standard for securing Spring-based applications.

include::{include-dir}/about/index.adoc[]

include::{include-dir}/servlet/index.adoc[]

include::{include-dir}/reactive/index.adoc[]

Add Eleftheria Stein to Reference Authors

Closes gh-9762


During its life a Wicket component goes through the following stages:

1. *Initialization:* a component is instantiated and initialized by Wicket.
2. *Rendering:* components are prepared for rendering and generate markup. If a component contains children (i.e. is a subclass of _MarkupContainer_) their rendering result is included in the resulting markup.
3. *Removed:* this stage is triggered when a component is explicitly removed from its component hierarchy, i.e. when its parent invokes _remove(component)_ on it. This stage is facultative and is never triggered for pages.
3. *Detached:* after request processing has ended all components are notified to detach any state that is no longer needed.

The following picture shows the state diagram of component lifecycle:

image::../img/component-lifecycle.png[]

Once a component has been removed it could be added again to a container, but the initialization stage won't be executed again - it is easier to just create a new component instance instead.

NOTE: If you read the JavaDoc of class _Component_ you will find a more detailed description of component lifecycle.
However this description introduces some advanced topics we didn't covered yet hence, to avoid confusion, in this chapter some details have been omitted and they will be covered later in the next chapters.

For now you can consider just the simplified version of the lifecycle described above.

During its life a Wicket component goes through the following stages:

1. *Initialization:* a component is instantiated and initialized by Wicket.
2. *Rendering:* components are prepared for rendering and generate markup. If a component contains children (i.e. is a subclass of _MarkupContainer_) their rendering result is included in the resulting markup.
3. *Removed:* this stage is triggered when a component is explicitly removed from its component hierarchy, i.e. when its parent invokes _remove(component)_ on it. This stage is facultative and is never triggered for pages.
4. *Detached:* after request processing has ended all components are notified to detach any state that is no longer needed.

The following picture shows the state diagram of component lifecycle:

image::../img/component-lifecycle.png[]

Once a component has been removed it could be added again to a container, but the initialization stage won't be executed again - it is easier to just create a new component instance instead.

NOTE: If you read the JavaDoc of class _Component_ you will find a more detailed description of component lifecycle.
However this description introduces some advanced topics we didn't covered yet hence, to avoid confusion, in this chapter some details have been omitted and they will be covered later in the next chapters.

For now you can consider just the simplified version of the lifecycle described above.

Fix index of a list item

Fix index of a list item


// Allow GitHub image rendering
:imagesdir: ../../images

[[gi-install-cassandra-debian]]
==== Installing on Debian-based systems

This section describes how to install the latest _Cassandra 2.1.x_ release on a _Debian_ based systems for _Newts_.
The first steps add the _DataStax_ community repository and install the required _GPG Key_ to verify the integrity of the _DEB packages_.
Installation of the package is done with _apt_ and the _Cassandra_ service is added to the run level configuration.

NOTE: This description is build on _Debian 8_ and _Ubuntu 14.04 LTS_.

.Add DataStax repository
[source, bash]
----
vi /etc/apt/sources.list.d/cassandra.sources.list
----

.Content of the cassandra.sources.list file
[source, bash]
----
deb http://debian.datastax.com/community stable main
----

.Install GPG key to verify DEB packages
[source, bash]
----
wget -O - http://debian.datastax.com/debian/repo_key | apt-key add -
----

.Install latest Cassandra 2.1.x package
[source, bash]
----
dsc21=2.1.8-1 cassandra=2.1.8
----

The _Cassandra_ service is added to the run level configuration and is automatically started after installing the package.

TIP: Verify if the _Cassandra_ service is automatically started after rebooting the server.

// Allow GitHub image rendering
:imagesdir: ../../images

[[gi-install-cassandra-debian]]
==== Installing on Debian-based systems

This section describes how to install the latest _Cassandra 2.1.x_ release on a _Debian_ based systems for _Newts_.
The first steps add the _DataStax_ community repository and install the required _GPG Key_ to verify the integrity of the _DEB packages_.
Installation of the package is done with _apt_ and the _Cassandra_ service is added to the run level configuration.

NOTE: This description is build on _Debian 8_ and _Ubuntu 14.04 LTS_.

.Add DataStax repository
[source, bash]
----
vi /etc/apt/sources.list.d/cassandra.sources.list
----

.Content of the cassandra.sources.list file
[source, bash]
----
deb http://debian.datastax.com/community stable main
----

.Install GPG key to verify DEB packages
[source, bash]
----
wget -O - http://debian.datastax.com/debian/repo_key | apt-key add -
----

.Install latest Cassandra 2.1.x package
[source, bash]
----
apt-get update
apt-get install dsc21=2.1.8-1 cassandra=2.1.8
----

The _Cassandra_ service is added to the run level configuration and is automatically started after installing the package.

TIP: Verify if the _Cassandra_ service is automatically started after rebooting the server.

HZN-325: Fix apt-get install command for Cassandra

Fixed apt-get install command and added apt-get update after installing Cassandra repository.


[[java-aggs-bucket-histogram]]
==== Histogram Aggregation

Here is how you can use
{ref}/search-aggregations-bucket-histogram-aggregation.html[Histogram Aggregation]
with Java API.

===== Prepare aggregation request

Here is an example on how to create the aggregation request:

[source,java]
--------------------------------------------------
AggregationBuilder aggregation =
        AggregationBuilders
                .histogram("agg")
                .field("height")
                .interval(1);
--------------------------------------------------

===== Use aggregation response

Import Aggregation definition classes:

[source,java]
--------------------------------------------------
import org.elasticsearch.search.aggregations.bucket.histogram.Histogram;
--------------------------------------------------

[source,java]
--------------------------------------------------
// sr is here your SearchResponse object
Histogram agg = sr.getAggregations().get("agg");

// For each entry
for (Histogram.Bucket entry : agg.getBuckets()) {
    Double key = (Double) entry.getKey();   // Key
    long docCount = entry.getDocCount();    // Doc count

    logger.info("key [{}], doc_count [{}]", key, docCount);
}
--------------------------------------------------

[[java-aggs-bucket-histogram]]
==== Histogram Aggregation

Here is how you can use
{ref}/search-aggregations-bucket-histogram-aggregation.html[Histogram Aggregation]
with Java API.

===== Prepare aggregation request

Here is an example on how to create the aggregation request:

[source,java]
--------------------------------------------------
AggregationBuilder aggregation =
        AggregationBuilders
                .histogram("agg")
                .field("height")
                .interval(1);
--------------------------------------------------

===== Use aggregation response

Import Aggregation definition classes:

[source,java]
--------------------------------------------------
import org.elasticsearch.search.aggregations.bucket.histogram.Histogram;
--------------------------------------------------

[source,java]
--------------------------------------------------
// sr is here your SearchResponse object
Histogram agg = sr.getAggregations().get("agg");

// For each entry
for (Histogram.Bucket entry : agg.getBuckets()) {
    Number key = (Number) entry.getKey();   // Key
    long docCount = entry.getDocCount();    // Doc count

    logger.info("key [{}], doc_count [{}]", key, docCount);
}
--------------------------------------------------

Update Java documentation for 5.0

Update Java documentation for 5.0

Fix after review


[[jackson]]
=== Jackson Support

Spring Security has added Jackson Support for persisting Spring Security related classes.
This can improve the performance of serializing Spring Security related classes when working with distributed sessions (i.e. session replication, Spring Session, etc).

To use it, register the `JacksonJacksonModules.getModules(ClassLoader)` as http://wiki.fasterxml.com/JacksonFeatureModules[Jackson Modules].

[source,java]
----
ObjectMapper mapper = new ObjectMapper();
ClassLoader loader = getClass().getClassLoader();
List<Module> modules = SecurityJackson2Modules.getModules(loader);
mapper.registerModules(modules);

// ... use ObjectMapper as normally ...
SecurityContext context = new SecurityContextImpl();
// ...
String json = mapper.writeValueAsString(context);
----

[[jackson]]
=== Jackson Support

Spring Security has added Jackson Support for persisting Spring Security related classes.
This can improve the performance of serializing Spring Security related classes when working with distributed sessions (i.e. session replication, Spring Session, etc).

To use it, register the `SecurityJackson2Modules.getModules(ClassLoader)` as http://wiki.fasterxml.com/JacksonFeatureModules[Jackson Modules].

[source,java]
----
ObjectMapper mapper = new ObjectMapper();
ClassLoader loader = getClass().getClassLoader();
List<Module> modules = SecurityJackson2Modules.getModules(loader);
mapper.registerModules(modules);

// ... use ObjectMapper as normally ...
SecurityContext context = new SecurityContextImpl();
// ...
String json = mapper.writeValueAsString(context);
----

Fix Typo in Reference Docs

Fix Typo in Reference Docs

Fixes gh-6076


[role="xpack"]
[[breaking-changes-xes]]
= {xpack} Breaking Changes

[partintro]
--
This section summarizes the changes that you need to be aware of when migrating
your application from one version of {xpack} to another.

* <<breaking-7.0.0-xes>>

See also:

* <<breaking-changes,{es} Breaking Changes>>
* {kibana-ref}/breaking-changes-xkb.html[{kib} {xpack} Breaking Changes]
* {logstash-ref}/breaking-changes-xls.html[Logstash {xpack} Breaking Changes]

--

[role="xpack"]
[[breaking-7.0.0-xes]]
== {xpack} Breaking changes in 7.0.0

Machine Learning::
* The `max_running_jobs` node property is removed in this release. Use the
`xpack.ml.max_open_jobs` setting instead. For more information, <<ml-settings>>.

Security::
* The fields returned as part of the mappings section by get index, get
mappings, get field mappings and field capabilities API are now only the ones
that the user is authorized to access in case field level security is enabled.

* The legacy `XPackExtension` extension mechanism has been removed and replaced
with an SPI based extension mechanism that is installed and built as an elasticsearch
plugin.

See also:

* <<breaking-changes-7.0,{es} Breaking Changes>>

[role="xpack"]
[[breaking-changes-xes]]
= {xpack} Breaking Changes

[partintro]
--
This section summarizes the changes that you need to be aware of when migrating
your application from one version of {xpack} to another.

* <<breaking-7.0.0-xes>>

See also:

* <<breaking-changes,{es} Breaking Changes>>
* {kibana-ref}/breaking-changes-xkb.html[{kib} {xpack} Breaking Changes]
* {logstash-ref}/breaking-changes-xls.html[Logstash {xpack} Breaking Changes]

--

[role="xpack"]
[[breaking-7.0.0-xes]]
== {xpack} Breaking changes in 7.0.0

Machine Learning::
* The `max_running_jobs` node property is removed in this release. Use the
`xpack.ml.max_open_jobs` setting instead. For more information, <<ml-settings>>.

Security::
* The fields returned as part of the mappings section by get index, get
mappings, get field mappings and field capabilities API are now only the ones
that the user is authorized to access in case field level security is enabled.

See also:

* <<breaking-changes-7.0,{es} Breaking Changes>>

Remove XPackExtension break from 7.0 it's ported to 6.3

Original commit: elastic/x-pack-elasticsearch@5e8ebda481704dfc95fb48bc948558eabd2281b1


= TCK Reference Guide for Jakarta Bean Validation
Emmanuel Bernard - Red Hat, Inc.; Hardy Ferentschik - Red Hat, Inc.; Gunnar Morling - Red Hat, Inc.
:doctype: book
:revdate: {docdate}
:revnumber: {tckVersion}
:revremark: Copyright {copyrightYear} - Red Hat, Inc. (Specification Lead)
:sectanchors:
:anchor:
:toc: left
:docinfodir: {docinfodir}
:docinfo:
:title-logo-image: image:beanvalidation_logo.png[align=left,pdfwidth=20%]

// PDF uses :title-logo-image: on first page, no need to repeat image later on
ifndef::backend-pdf[]
image::beanvalidation_logo_smaller.png[align="center"]
endif::[]

include::preface.asciidoc[]

:numbered:

include::introduction.asciidoc[]

include::appeals-process.asciidoc[]

include::installation.asciidoc[]

include::reporting.asciidoc[]

include::configuration.asciidoc[]

include::sigtest.asciidoc[]

= TCK Reference Guide for Jakarta Bean Validation
Emmanuel Bernard - Red Hat, Inc.; Hardy Ferentschik - Red Hat, Inc.; Gunnar Morling - Red Hat, Inc.
:doctype: book
:revdate: {docdate}
:revnumber: {tckVersion}
:revremark: Copyright {copyrightYear} - Red Hat, Inc. (Specification Lead)
:sectanchors:
:anchor:
:toc: left
:docinfodir: {docinfodir}
:docinfo:
// Comment out logo for final release for now
//:title-logo-image: image:beanvalidation_logo.png[align=left,pdfwidth=20%]

// PDF uses :title-logo-image: on first page, no need to repeat image later on
ifndef::backend-pdf[]
image::beanvalidation_logo_smaller.png[align="center"]
endif::[]

include::preface.asciidoc[]

:numbered:

include::introduction.asciidoc[]

include::appeals-process.asciidoc[]

include::installation.asciidoc[]

include::reporting.asciidoc[]

include::configuration.asciidoc[]

include::sigtest.asciidoc[]

Comment out logo for now

Comment out logo for now

Signed-off-by: Scott M Stark <44b2f47f410f4bf6655e3ec1c92f766044282b1f@gmail.com>


= SpringBoot WebApp Demo

SpringBoot looks like a nice way to get started.
This is a trivial webapp created using SpringBoot.

== HowTo

mvn spring-boot:run

then connect to http://localhost:8080/notaservlet

== War Deployment

It seems that you can't have both the instant-deployment convenience of Spring Boot
AND the security of a full WAR deployment in the same pom file.  You will need to
make several changes to deploy as a WAR file. See the section entitled
"Traditional Deployment"--"Create a deployable war file" in the
spring-boot reference manual (Section 73.1 in the current snapshot as of
this writing).

= SpringBoot WebApp Demo

SpringBoot looks like a nice way to get started.
This is a trivial webapp created using SpringBoot.

== HowTo

mvn spring-boot:run

then connect to http://localhost:8000/notaservlet

Note that is 8000 not the usual 8080 to avoid conflicts.
Chante this in application.properties if you don't like it.

== War Deployment

It seems that you can't have both the instant-deployment convenience of Spring Boot
AND the security of a full WAR deployment in the same pom file.  You will need to
make several changes to deploy as a WAR file. See the section entitled
"Traditional Deployment"--"Create a deployable war file" in the
spring-boot reference manual (Section 73.1 in the current snapshot as of
this writing).

Correct and highlight port number, plus how-to-change.


= flexy-pool
Author <mih_vlad@yahoo.com>
v1.0.0, 2014-02-25

:toc:
:imagesdir: images
:homepage: http://vladmihalcea.com/

== Introduction

The flexy-pool library brings adaptability to a given Connection Pool, allowing it to resize on demand.
This is very handy since most connection pools offer a limited set of dynamic configuration strategies.

== Features

* extensive connection pool support(Bitronix TM, C3PO, DBCP 1, DBCP 2, BoneCP, HikariCP)
* statistics support
** source connection acquiring time histogram
** total connection acquiring time histogram
** retries attempts histogram
** maximum CP size histogram
** connection request count histogram
** connection lease time histogram

https://github.com/vladmihalcea/flexy-pool/wiki/Flexy-Pool-User-Guide[User Guide]

== 1.0 TODO list

* explain all configuration settings
* explain jmx metrics
* add real-life case study

= flexy-pool
Author <mih_vlad@yahoo.com>
v1.0.0, 2014-02-25

:toc:
:imagesdir: images
:homepage: http://vladmihalcea.com/

== Introduction

The flexy-pool library brings adaptability to a given Connection Pool, allowing it to resize on demand.
This is very handy since most connection pools offer a limited set of dynamic configuration strategies.

== Features

* extensive connection pool support
** http://docs.codehaus.org/display/BTM/Home[Bitronix Transaction Manager]
** http://commons.apache.org/proper/commons-dbcp/[Apache DBCP]
** http://commons.apache.org/proper/commons-dbcp/[Apache DBCP2]
** http://www.mchange.com/projects/c3p0/[C3P0]
** http://jolbox.com/[BoneCP]
** http://brettwooldridge.github.io/HikariCP/[HikariCP]
* statistics support
** source connection acquiring time histogram
** total connection acquiring time histogram
** retries attempts histogram
** maximum CP size histogram
** connection request count histogram
** connection lease time histogram

== Documentation

https://github.com/vladmihalcea/flexy-pool/wiki/Flexy-Pool-User-Guide[Flexy Pool User Guide]

== 1.0 Release TODO list

* explain all configuration settings
* explain jmx metrics
* add real-life case study

Add links to supported connection pools

Add links to supported connection pools


= Microservices libraries comparison

== Purpose

This project is the companion of this Blog article: https://cdelmas.github.io/xxxxxxx.

== Build

To build the servers, just run `gradlew make` in the command line. By the way, you need a JDK 8, but I guess you're up-to-date :)

== Run the perf tests

== Notes

There are no unit tests, and it is fully assumed.

== The missing guys (again)

Feel free to add competing frameworks, such as Restx, Payara and Swarm to the comparison.

= Microservices libraries comparison

== Purpose

This project is the companion of this Blog article: https://cdelmas.github.io/xxxxxxx.

== Build

To build the servers, just run `gradlew make` in the command line. By the way, you need a JDK 8, but I guess you're up-to-date :)

== Run the perf tests

1. Move inside the `perf-runner` directory
1. Each server has its own url :
+
- http://localhost:8081/dropwizard
- http://localhost:8082/restlet
- http://localhost:8083/spark
- http://localhost:8084/spring
- http://localhost:8085/vertx
+
Set the `SERVICE_URI` environment variable with one of these values. Run the correspounding server with `java -jar <project>/build/lib/xxx.jar`.
1. Run the Gatling scenario: `./gradlew loadTest`

== Notes

There are no unit tests, and it is fully assumed.

== The missing guys (again)

Feel free to add competing frameworks, such as Restx, Payara and Swarm to the comparison.

Update the doc with the instructions to run


= Infinispan Cluster Manager

image:https://vertx.ci.cloudbees.com/buildStatus/icon?job=vert.x3-infinispan["Build Status",link="https://vertx.ci.cloudbees.com/view/vert.x-3/job/vert.x3-infinispan/"]

This is a cluster manager implementation for Vert.x that uses http://infinispan.org[Infinispan].

Please see the in-source asciidoc documentation or the main documentation on the web-site for a full description
of this component:

* link:http://vertx.io/docs/vertx-infinispan/java/[web-site docs]
* link:src/main/asciidoc/java/index.adoc[in-source docs]

-- will remove --

Revert "Revert "Test trigger on push""

Revert "Revert "Test trigger on push""

This reverts commit a9898356427b003618fdb0f0214adf1866ee68c5.


[[analysis-delimited-payload-tokenfilter]]
=== Delimited Payload Token Filter

Named `delimited_payload_filter`. Splits tokens into tokens and payload whenever a delimiter character is found.

Example: "the|1 quick|2 fox|3" is split per default int to tokens `fox`, `quick` and `the` with payloads `1`, `2` and `3` respectively.

Parameters:

`delimiter`::
    Character used for splitting the tokens. Default is `|`.

`encoding`::
    The type of the payload. `int` for integer, `float` for float and `identity` for characters. Default is `float`.

[[analysis-delimited-payload-tokenfilter]]
=== Delimited Payload Token Filter

Named `delimited_payload_filter`. Splits tokens into tokens and payload whenever a delimiter character is found.

Example: "the|1 quick|2 fox|3" is split by default into tokens `the`, `quick`, and `fox` with payloads `1`, `2`, and `3` respectively.

Parameters:

`delimiter`::
    Character used for splitting the tokens. Default is `|`.

`encoding`::
    The type of the payload. `int` for integer, `float` for float and `identity` for characters. Default is `float`.

Fix minor issues in delimited payload token filter docs

This commit backports commit b4fbe1e1b80dc47120de5111e31c12db5d514af2
from master to 1.7.

Relates #15486


GRR Rapid Response documentation.
=================================

GRR is an Incident Response Framework focused on Remote Live Forensics.

Index
-----
1. link:user_manual.adoc[User Manual]
2. link:admin.adoc[Administration Documentation (Setup and Configuration)]
3. link:implementation.adoc[Developer and Implementation Documentation]
4. link:configuration.adoc[The GRR Configuration system]
5. link:https://code.google.com/p/grr/w/list[Wiki]

Search Wiki and Documentation
-----------------------------
++++
<script>
  (function() {
    var cx = '017727954489331006196:9wffyoayvxs';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
        '//www.google.com/cse/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();
</script>
<gcse:searchbox gname="docs"></gcse:searchbox>
++++

Search Code
-----------
++++
<script>
  (function() {
    var cx = '017727954489331006196:pfi9rtrihuq';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
        '//www.google.com/cse/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();
</script>
<gcse:searchbox gname="code"></gcse:searchbox>
++++

Results
-------
++++
<gcse:searchresults gname="docs"></gcse:searchresults>
<gcse:searchresults gname="code"></gcse:searchresults>

++++

Remove searching code that doesn't work on github


= Inform: A C library for information analysis of complex systems
Douglas G. Moore <doug@dglmoore.com>
v0.0.5, June 2017
:toc2:
:toclevels: 2
:source-highlighter: prettify
:stem: latexmath

Inform is a cross-platform C library designed for performing information
analysis of complex system.

1. The `inform_dist` struct provides discrete, emperical probability
   distributions. These form the basis for all of the information-theoretic
   measures.
2. A collection of information measures built upon the distribution struct
   provide the core algorithms for the library, and are provided through the
   `shannon.h` header.
3. A host of measures of the information dynamics on time series are built upon
   the core information measures. Each measure is housed in its own header, e.g.
   `active_info.h`.

In addition to the core components, a small collection of utilities are also
provided.

:leveloffset: 1

include::getting-started.adoc[]

include::distributions.adoc[]

include::shannon.adoc[]

= Inform: A C library for information analysis of complex systems
Douglas G. Moore <douglas.g.moore@asu.edu>
v1.0.0, November 2017
:toc2:
:toclevels: 2
:source-highlighter: prettify
:stem: latexmath

image:https://travis-ci.org/ELIFE-ASU/Inform.svg?branch=master[Build Status (Travis CI),
link=https://travis-ci.org/ELIFE-ASU/Inform]
image:https://ci.appveyor.com/api/projects/status/7y015h6p7n0q7097/branch/master?svg=true[Build
Status (Appveyor), link=https://ci.appveyor.com/project/dglmoore/inform-vx977]

Inform is a cross-platform C library designed for performing information
analysis of complex system.

1. The `inform_dist` struct provides discrete, emperical probability
   distributions. These form the basis for all of the information-theoretic
   measures.
2. A collection of information measures built upon the distribution struct
   provide the core algorithms for the library, and are provided through the
   `shannon.h` header.
3. A host of measures of the information dynamics on time series are built upon
   the core information measures. Each measure is housed in its own header, e.g.
   `active_info.h`.

In addition to the core components, a small collection of utilities are also
provided.

:leveloffset: 1

include::getting-started.adoc[]

include::distributions.adoc[]

include::shannon.adoc[]

Update the Introduction and header

Update the Introduction and header

We added Travis-CI and AppVeyor badges, the version number and
my email address.


= [.ebi-color]#Release notes#
:toc: auto

This pages contains links to release notes for DSP's REST API application.

[[section]]
== v2.33.0 Release notes

New features:
----------------
1. Add the possibility to set an additional checklist on a submittable for schema validation.
2. Add the possibility to set an additional checklist on a submittable when they uploaded with a spreadsheet.
3. Document checklist usage in API documentation.
----------------

Platform upgrades:
--------------
1. DSP's REST API application now runs on Java 11 (Open JDK 11).
--------------

= [.ebi-color]#Release Notes#
:toc: auto

This pages contains links to release notes for DSP's REST API application.

[[section]]
== v2.34.0 Release Notes

New feautures:
----------------
1. DSP is going under maintenance from 8th March to 4th April 2020. For that period on DSP's welcome page displays a message regarding to this maintenance.
----------------

[[section]]
== v2.33.0 Release Notes

New features:
----------------
1. Add the possibility to set an additional checklist on a submittable for schema validation.
2. Add the possibility to set an additional checklist on a submittable when they uploaded with a spreadsheet.
3. Document checklist usage in API documentation.
----------------

Platform upgrades:
--------------
1. DSP's REST API application now runs on Java 11 (Open JDK 11).
--------------

Update Release notes for v2.34.0

Update Release notes for v2.34.0


= Asciidoctor.js CLI

ifdef::env-github[]
image:https://img.shields.io/travis/asciidoctor/asciidoctor-cli.js/master.svg[Travis build status, link=https://travis-ci.org/asciidoctor/asciidoctor-cli.js]
image:https://img.shields.io/npm/v/@asciidoctor/cli.svg[npm version, link=https://www.npmjs.org/package/@asciidoctor/cli]
endif::[]

The Command Line Interface (CLI) for Asciidoctor.js.

Install Asciidoctor.js globally and you'll have access to the `asciidoctor` command anywhere on your system:

    $ npm i -g asciidoctor

Type `asciidoctor --help` for more information.

= Asciidoctor.js CLI

ifdef::env-github[]
image:https://github.com/asciidoctor/asciidoctor-cli.js/workflows/Build/badge.svg[GitHub Actions Status, link=https://github.com/asciidoctor/asciidoctor-cli.js/actions]
image:https://img.shields.io/npm/v/@asciidoctor/cli.svg[npm version, link=https://www.npmjs.org/package/@asciidoctor/cli]
endif::[]

The Command Line Interface (CLI) for Asciidoctor.js.

Install Asciidoctor.js globally and you'll have access to the `asciidoctor` command anywhere on your system:

    $ npm i -g asciidoctor

Type `asciidoctor --help` for more information.

Replace Travis badge by GitHub Actions badge


README
======

author::
  grml solutions
version::
  1.0.0
travis state::
  image::https://api.travis-ci.org/meisterluk/screenshot-compare.svg?branch=master[]

What?
-----

You can compare two image files and it will show a difference score between 0 and 1.
Using transparent reference PNG images, you can also skip certain areas of the file.

Why?
----

We take screenshots of running live systems and check whether they are (visually) in a certain state.

Who?
----

Especially software developers testing software might find this software useful.
Consider that Mozilla Firefox's just got a link:https://developer.mozilla.org/en-US/Firefox/Headless_mode[headless mode] and soon you will be able to take screenshots.

Source Code
-----------

The source code is available at link:https://github.com/mika/screenshot-compare/issues[Github].

Issues
------

Please report any issues on the link:https://github.com/mika/screenshot-compare/issues[Github issues page].

License
-------

See link:LICENSE[the LICENSE file] (Hint: MIT license).

Changelog
---------

0.0.1::
  first release: PNG only, transparency support
0.0.2::
  goroutine support, timeout argument, slight performance improvement
1.0.0::
  complete rewrite, `--wait` and `--timeout` parameters, `Y'UV` support

README image:https://api.travis-ci.org/meisterluk/screenshot-compare.svg?branch=master[]
========================================================================================

author::
  grml solutions
version::
  1.0.0

What?
-----

You can compare two image files and it will show a difference score between 0 and 1.
Using transparent reference PNG images, you can also skip certain areas of the file.

Why?
----

We take screenshots of running live systems and check whether they are (visually) in a certain state.

Who?
----

Especially software developers testing software might find this software useful.
Consider that Mozilla Firefox's just got a link:https://developer.mozilla.org/en-US/Firefox/Headless_mode[headless mode] and soon you will be able to take screenshots.

Source Code
-----------

The source code is available at link:https://github.com/mika/screenshot-compare/issues[Github].

Issues
------

Please report any issues on the link:https://github.com/mika/screenshot-compare/issues[Github issues page].

License
-------

See link:LICENSE[the LICENSE file] (Hint: MIT license).

Changelog
---------

0.0.1::
  first release: PNG only, transparency support
0.0.2::
  goroutine support, timeout argument, slight performance improvement
1.0.0::
  complete rewrite, `--wait` and `--timeout` parameters, `Y'UV` support

Use single-colon for image notation.

Use single-colon for image notation.

Github seems to use single-colon (powerman syntax) instead of
double colon (asciidoctor)


= Minimal-J

Java - but small.

image::doc/frontends.png[]

Minimal-J applications are

* Responsive to use on every device
* Straight forward to specify and implement and therefore
* Easy to plan and manage

=== Idea

Business applications tend to get complex and complicated. Minimal-J prevents this by setting clear rules how an application should behave and how it should be implemented.

Minimal applications may not always look the same. But the UI concepts never change. There are no surprises for the user.

== Technical Features

* Independent of the used UI technology. Implementations for Web / Mobile / Desktop.
* ORM persistence layer for Maria DB or in memory DB. Transactions and Authorization supported.
* Small: The minimalj.jar is still < 1MB
* Very few dependencies
* Applications can run standalone (like SpringBoot)

== Documentation

* link:doc/user_guide/user_guide.adoc[Minimal user guide] User guide for Minimal-J applications.
* link:doc/topics.adoc[Tutorial and examples] Informations for developers.
* link:doc/release_notes.adoc[Release Notes]

== Hello World

How to implement Hello World in Minimal-J:

video::[0VHz7gv6TpA][youtube]

=== Contact

* Bruno Eberhard, mailto:minimalj@hispeed.ch[minimalj@hispeed.ch]

= Minimal-J

Java - but small.

image::doc/frontends.png[]

Minimal-J applications are

* Responsive to use on every device
* Straight forward to specify and implement and therefore
* Easy to plan and manage

=== Idea

Business applications tend to get complex and complicated. Minimal-J prevents this by setting clear rules how an application should behave and how it should be implemented.

Minimal applications may not always look the same. But the UI concepts never change. There are no surprises for the user.

== Technical Features

* Independent of the used UI technology. Implementations for Web / Mobile / Desktop.
* ORM persistence layer for Maria DB or in memory DB. Transactions and Authorization supported.
* Small: The minimalj.jar is still < 1MB
* Very few dependencies
* Applications can run standalone (like SpringBoot)

== Documentation

* link:doc/user_guide/user_guide.adoc[Minimal user guide] User guide for Minimal-J applications.
* link:doc/topics.adoc[Tutorial and examples] Informations for developers.
* link:doc/release_notes.adoc[Release Notes]

== Hello World

How to implement Hello World in Minimal-J:

link:_includes/ex-video.adoc[0VHz7gv6TpA]

=== Contact

* Bruno Eberhard, mailto:minimalj@hispeed.ch[minimalj@hispeed.ch]

Include Hello World Youtube video

Include Hello World Youtube video


= Bare code crossref example
Graham Klyne
v0.1.15, 2015-08-04
:toc: macro

toc::[]

== section `foo`

Reference to <<`bar`>>

== `bar`

Reference to <<section `foo`>

End.

= Bare <code> crossref example
Graham Klyne
v0.1.15, 2015-08-04
:toc: macro

toc::[]

== section `foo`

Reference to <<`bar`>>

== `bar`

Reference to <<section `foo`>>

End.

Fix asciidoctor crossref problem example


= Custom New Tab
Thor Andreas Rognan <thor.rognan@gmail.com>
:imagesdir: doc/assets/images
ifdef::env-github[]
:tip-caption: :bulb:
:note-caption: :information_source:
:important-caption: :heavy_exclamation_mark:
:caution-caption: :fire:
:warning-caption: :warning:
endif::[]

'''

NOTE: Chrome extension that creates a custom 'new tab'.

image::example.png[]

== Copyright and Licensing
Copyright (C) 2017- Thor Andreas Rognan
Free use of this software is granted under the terms of the MIT License.

See the <<LICENSE#,LICENSE>> file for details.

= Custom New Tab
Thor Andreas Rognan <thor.rognan@gmail.com>
:imagesdir: doc/assets/images
ifdef::env-github[]
:tip-caption: :bulb:
:note-caption: :information_source:
:important-caption: :heavy_exclamation_mark:
:caution-caption: :fire:
:warning-caption: :warning:
endif::[]

'''

_Chrome extension that creates a custom 'new tab'._

image::example.png[]

== Copyright and Licensing
Copyright (C) 2017- Thor Andreas Rognan
Free use of this software is granted under the terms of the MIT License.

See the <<LICENSE#,LICENSE>> file for details.

Remove information admonition from readme


== School

I entered the Honours Computer Science Co-Op program at
link:http://mcmaster.ca[McMaster University] in Fall 2010. My original
graduation date would have been April 2014; however, due to my long-term
internship at Red Hat, this has been delayed by one year. I'm on track
to complete my Bachelor's of Applied Science, Computer Science degree
in the Spring of 2015, with two advanced graduate level credits already
completed, and having earned the Louis J. Shein scholarship for "academic
excellence in Russian Language course" after first year.

Add notes about graduation date, scholarship


= Hacking
:uri-nodejs: http://nodejs.org
:uri-nvm: https://github.com/creationix/nvm

This guide will give you all the necessary information you need to become a successful code contributor!

== Setup

To build this project, you will need {uri-nodejs}[Node.js] >= 4 and `npm` (we recommend {uri-nvm}[nvm] to manage multiple active Node.js versions).

NOTE: If you feel more comfortable with `yarn`, you can use it as an alternative to `npm`

== Building

. Install all the dependencies
+
 $ npm install

. Build the project
+
 $ npm run build
+
This command will produce a zip file that can be load in Chrome: [.path]_dist/asciidoctor-browser-extension.zip_

. Run tests
+
 $ npm run test

This project is using a code linter to enforce code consistency.
To make sure that the code you have contributed, follow the code rules, execute the following command:

 $ npm run lint

== Add-on Linter

Mozilla provides a Node.js package to validate an add-on.
You can install the linter with `npm`:

 $ npm install -g addons-linter

This command will install the package globally, so you can use the linter from any directory on your machine.

After installation, run the linter on the archive produced by `npm run build`:

 $ addons-linter dist/asciidoctor-browser-extension.zip

:memo: Add a section on how to run Mozilla add-on linter


= EB4J xml2eb tool
:doctype:   article
:docinfo:
:toc:
:toclevels: 2
:version: 1.99.0-SNAPSHOT
:project-name: xml2eb

This is a project page for xml2eb.

include::xml2eb.adoc[]

include::converter.adoc[]

include::reports.adoc[]

include::links.adoc[]

= EB4J xml2eb tool
:doctype:   article
:docinfo:
:toc:
:toclevels: 2
:version: 1.99.0-SNAPSHOT
:project-name: xml2eb

IMPORTANT: link:https://github.com/eb4j/xml2eb[View on GitHub]
 | link:https://eb4j.github.io/[Top project page]

This is a project page for xml2eb.

include::xml2eb.adoc[]

include::converter.adoc[]

include::reports.adoc[]

include::links.adoc[]

Add link to top project page.

Add link to top project page.


Goals
-----

GearScript aims to introduce strong static typing into TorqueScript, allowing for
a more consistent syntax while not changing semantics too much. Static type information
will initially be erased (compare to Java Generics) as part of the compilation process,
but that may change further down along the line. Types should be inferred to the extent
possible, in order to reduce the amount of typing needed.

Hierarchy
---------

GearScript's type system is hierarchical, but there is no true top type. Instead, there are six different top-level types: void, (float) numbers, strings, arrays, function references, and object references. This is because TorqueScript's syntax means that the primary way to do something often depends on which of these three types it belongs to. The most obvious example would be comparisons, which are done using `==` for number types and object reference comparison, but `$=` for strings. This ambiguity only arises when we have no type information available, and thus GearScript ought to resolve it transparently for the user.

Inference
---------

Types should be inferred for the user whenever possible. In most cases this is obvious from a variable's definition, since the literal syntax always unambiguously contains the type of a given value. The exception to this is function parameters, the types of these have to be inferred from how the parameter is used. If ultimately multiple different branches of types are valid for a value then a type must be defined explicitly.

Goals
-----

GearScript aims to introduce strong static typing into TorqueScript, allowing for a more consistent syntax while not changing semantics too much. Static type information will initially be erased (similarly to Java Generics) as part of the compilation process, but that may change further down along the line. Types should be inferred to the extent possible, in order to reduce the amount of typing needed.

Hierarchy
---------

GearScript's type system is hierarchical, but there is no true top type. Instead, there are six different top-level types: void, (float) numbers, strings, arrays, function references, and object references. This is because TorqueScript's syntax means that the primary way to do something often depends on which of these three types it belongs to. The most obvious example would be comparisons, which are done using `==` for number types and object reference comparison, but `$=` for strings. This ambiguity only arises when we have no type information available, and thus GearScript ought to resolve it transparently for the user.

Inference
---------

Types should be inferred for the user whenever possible. In most cases this is obvious from a variable's definition, since the literal syntax always unambiguously contains the type of a given value. The exception to this is function parameters, the types of these have to be inferred from how the parameter is used. If they are used as arguments for a function, inherit that type. If methods are called on them, look at what types we know about that expose those methods. If ultimately multiple different branches of types (like either an int or a string, or two different subclasses of the same class) are valid for a value then a type must be defined explicitly.

Custom Top Types
----------------

It should be possible for users to define new top-level types with unique behaviour that wrap other types. Use case: tagged strings.

Expand a bit on the typing

Expand a bit on the typing


[[breaking-changes-5.5]]
== Breaking changes in 5.5

[[breaking_55_plugins]]
[float]
=== Ignoring hidden folders

Previous versions of Elasticsearch would skip hidden files and directories when
scanning the plugins folder. This allows broken plugin installs to remain
undetected so this leniency has been removed.

[[breaking_54_packaging_changes]]
[float]
=== Skip setting kernel parameters

Elasticsearch attempts to set the kernel parameter `vm.max_map_count` during
installation. In some environments this can fail. Previous versions of
Elasticsearch accepted a flag `ES_SKIP_SET_KERNEL_PARAMTERS` to skip this
writing. Starting in Elasticsearch 5.5.0, this flag has been removed and
instead the same functionality can be achieved by masking the `systemd-sysctl`
service.

Add migration note on kernel parameters on install

This commit adds a note to the migration docs regarding how to avoid the
installation packages from setting kernel parameters on install.


[[security]]
== Security Plugins

Security plugins add a security layer to  Elasticsearch.

[float]
=== Core security plugins

The core security plugins are:

link:/products/shield[Shield]::

Shield is the Elastic product that makes it easy for anyone to add
enterprise-grade security to their ELK stack. Designed to address the growing security
needs of thousands of enterprises using ELK today, Shield provides peace of
mind when it comes to protecting your data.

[float]
=== Community contributed security plugins

The following plugin has been contributed by our community:

* https://github.com/sscarduzio/elasticsearch-readonlyrest-plugin[Readonly REST]:
  High performance access control for Elasticsearch native REST API (by Simone Scarduzio)

This community plugin appears to have been abandoned:

* https://github.com/sonian/elasticsearch-jetty[Jetty HTTP transport plugin]:
  Uses Jetty to provide SSL connections, basic authentication, and request logging (by Sonian Inc.)

[[security]]
== Security Plugins

Security plugins add a security layer to  Elasticsearch.

[float]
=== Core security plugins

The core security plugins are:

link:/products/shield[Shield]::

Shield is the Elastic product that makes it easy for anyone to add
enterprise-grade security to their ELK stack. Designed to address the growing security
needs of thousands of enterprises using ELK today, Shield provides peace of
mind when it comes to protecting your data.

[float]
=== Community contributed security plugins

The following plugins have been contributed by our community:

* https://github.com/codecentric/elasticsearch-shield-kerberos-realm[Kerberos/SPNEGO Realm]:
  Custom Shield realm to Authenticate HTTP and Transport requests via Kerberos/SPNEGO (by codecentric AG)

* https://github.com/sscarduzio/elasticsearch-readonlyrest-plugin[Readonly REST]:
  High performance access control for Elasticsearch native REST API (by Simone Scarduzio)

This community plugin appears to have been abandoned:

* https://github.com/sonian/elasticsearch-jetty[Jetty HTTP transport plugin]:
  Uses Jetty to provide SSL connections, basic authentication, and request logging (by Sonian Inc.)

Add Kerberos/SPNEGO Shield custom realm

Add Kerberos/SPNEGO Shield custom realm

Closes #14282


= Microservices libraries comparison

== Purpose

This project is the companion of this Blog article: http://cdelmas.github.io/.....

== Build

To build it, just run `gradle shadowJar` in the command line.

== Run

Then you can run each server using `java -jar <server>.jar`.

= Microservices libraries comparison

== Purpose

This project is the companion of this Blog article: https://cdelmas.github.io/2015/11/01/A-comparison-of-Microservices-Frameworks.html.

== Build

To build it, just run `gradle shadowJar` in the command line.

== Run

Then you can run each server using `java -jar <server>.jar`.

Add the good link to the blog article.

Add the good link to the blog article.


[[elasticsearch-reference]]
= Reference

:version: 1.4.3
:branch:  1.4
:jdk:     1.8.0_25

include::getting-started.asciidoc[]

include::setup.asciidoc[]

include::migration/index.asciidoc[]

include::api-conventions.asciidoc[]

include::docs.asciidoc[]

include::search.asciidoc[]

include::indices.asciidoc[]

include::cat.asciidoc[]

include::cluster.asciidoc[]

include::query-dsl.asciidoc[]

include::mapping.asciidoc[]

include::analysis.asciidoc[]

include::modules.asciidoc[]

include::index-modules.asciidoc[]

include::testing.asciidoc[]

include::glossary.asciidoc[]

[[elasticsearch-reference]]
= Reference

:version: 1.5.0
:branch:  1.5
:jdk:     1.8.0_25

include::getting-started.asciidoc[]

include::setup.asciidoc[]

include::migration/index.asciidoc[]

include::api-conventions.asciidoc[]

include::docs.asciidoc[]

include::search.asciidoc[]

include::indices.asciidoc[]

include::cat.asciidoc[]

include::cluster.asciidoc[]

include::query-dsl.asciidoc[]

include::mapping.asciidoc[]

include::analysis.asciidoc[]

include::modules.asciidoc[]

include::index-modules.asciidoc[]

include::testing.asciidoc[]

include::glossary.asciidoc[]

Reset current version in docs to 1.5.0

Reset current version in docs to 1.5.0


:function-title: {{name}}

[#{{id}}]
=== {function-title}

{{#if deprecated}}
[CAUTION]
====
{{{deprecatedDocs}}}
====
{{/if}}

{{{brief}}}

++++

{{declaration}}

++++

{{#if return.description}}==== Return
{{return.description}}{{/if}}

{{{description}}}

{{#each note}}
NOTE: {{{this}}}
{{/each}}

{{#each warning}}
WARNING: {{{this}}}
{{/each}}

{{#if params}}
==== Parameters

[cols="1,3a", stripes="even"]
|===
|Name |Description

{{#each params}}
|``{{name}}``
|{{{description}}}
{{/each}}
|===
{{/if}}

:function-title: {{name}}

[#{{id}}]
=== {function-title}

{{#if deprecated}}
[CAUTION]
====
{{{deprecatedDocs}}}
====
{{/if}}

{{{brief}}}

++++

{{declaration}}

++++

{{#if return.description}}==== Return
{{return.description}}{{/if}}

{{{description}}}

{{#each note}}
[NOTE]
====
{{{this}}}
====
{{/each}}

{{#each warning}}
[WARNING]
====
{{{this}}}
====
{{/each}}

{{#if params}}
==== Parameters

[cols="1,3a", stripes="even"]
|===
|Name |Description

{{#each params}}
|``{{name}}``
|{{{description}}}
{{/each}}
|===
{{/if}}

Use block syntax for note/warning

Use block syntax for note/warning


[[community-beats]]
== Community Beats

The open source community has been hard at work developing new Beats. You can check
out a few of them here:

[horizontal]
https://github.com/Ingensi/dockerbeat[dockerbeat]:: Reads docker container
statistics and indexes them in Elasticsearch
https://github.com/mrkschan/nginxbeat[nginxbeat]:: Reads status from Nginx
https://github.com/joshuar/pingbeat[pingbeat]:: Sends ICMP pings to a list
of targets and stores the round trip time (RTT) in Elasticsearch

Have you created a Beat that's not listed? Open a pull request to add your link
here: https://github.com/elastic/libbeat/blob/master/docs/communitybeats.asciidoc

NOTE: Elastic provides no warranty or support for community-sourced Beats.

[[contributing-beats]]
=== Contributing to Beats

Remember, you can be a Beats developer, too. <<new-beat, Learn how>>

[[community-beats]]
== Community Beats

The open source community has been hard at work developing new Beats. You can check
out a few of them here:

[horizontal]
https://github.com/Ingensi/dockerbeat[dockerbeat]:: Reads docker container
statistics and indexes them in Elasticsearch
https://github.com/mrkschan/nginxbeat[nginxbeat]:: Reads status from Nginx
https://github.com/joshuar/pingbeat[pingbeat]:: Sends ICMP pings to a list
of targets and stores the round trip time (RTT) in Elasticsearch
https://github.com/mrkschan/uwsgibeat[uwsgibeat]:: Reads stats from uWSGI

Have you created a Beat that's not listed? Open a pull request to add your link
here: https://github.com/elastic/libbeat/blob/master/docs/communitybeats.asciidoc

NOTE: Elastic provides no warranty or support for community-sourced Beats.

[[contributing-beats]]
=== Contributing to Beats

Remember, you can be a Beats developer, too. <<new-beat, Learn how>>

Add beat for readings stats from uWSGI

Add beat for readings stats from uWSGI


= Edge App

Until CIDER 0.17 has been released (which brings improved support for
Clojure CLI), please use a terminal to run `clj`.

----
clj -A:dev:build:dev/rebel
user=> (go)
----

This starts an nrepl-server, the port is announced on the command line.

= Edge App

Until CIDER 0.17 has been released (which brings improved support for
Clojure CLI), please use a terminal to run `clj`.

----
clojure -A:dev:build:dev/rebel
user=> (go)
----

This starts an nrepl-server, the port is announced on the command line.

Use clojure, not clj, when using rebel-readline


[[java-admin-indices-put-mapping]]
:base-dir: {docdir}/../../server/src/test/java/org/elasticsearch/action/admin/indices/create

==== Put Mapping

The PUT mapping API allows you to add a new type while creating an index:

["source","java",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{base-dir}/CreateIndexIT.java[addMapping-create-index-request]
--------------------------------------------------
<1> <<java-admin-indices-create-index,Creates an index>> called `twitter`
<2> It also adds a `tweet` mapping type.

The PUT mapping API also allows to add a new type to an existing index:

["source","java",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{base-dir}/CreateIndexIT.java[putMapping-request-source]
--------------------------------------------------
<1> Puts a mapping on existing index called `twitter`
<2> Adds a `user` mapping type.
<3> This `user` has a predefined type
<4> type can be also provided within the source

You can use the same API to update an existing mapping:

["source","java",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{base-dir}/CreateIndexIT.java[putMapping-request-source-append]
--------------------------------------------------
<1> Puts a mapping on existing index called `twitter`
<2> Updates the `user` mapping type.
<3> This `user` has now a new field `user_name`

:base-dir!:

[[java-admin-indices-put-mapping]]
:base-dir: {docdir}/../../core/src/test/java/org/elasticsearch/action/admin/indices/create

==== Put Mapping

The PUT mapping API allows you to add a new type while creating an index:

["source","java",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{base-dir}/CreateIndexIT.java[addMapping-create-index-request]
--------------------------------------------------
<1> <<java-admin-indices-create-index,Creates an index>> called `twitter`
<2> It also adds a `tweet` mapping type.

The PUT mapping API also allows to add a new type to an existing index:

["source","java",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{base-dir}/CreateIndexIT.java[putMapping-request-source]
--------------------------------------------------
<1> Puts a mapping on existing index called `twitter`
<2> Adds a `user` mapping type.
<3> This `user` has a predefined type
<4> type can be also provided within the source

You can use the same API to update an existing mapping:

["source","java",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{base-dir}/CreateIndexIT.java[putMapping-request-source-append]
--------------------------------------------------
<1> Puts a mapping on existing index called `twitter`
<2> Updates the `user` mapping type.
<3> This `user` has now a new field `user_name`

:base-dir!:

Revert "[Docs] Fix base directory to include for put_mapping.asciidoc"

This reverts commit 4f5be7db3ce9f1ea7f864cc1fd38ee09363aa64d.


= Artificial Intelligence for Spring Boot
:awestruct-description: Learn how to use OptaPlanner (open source, java) for Artificial Intelligence planning optimization on Spring Boot.
:awestruct-layout: compatibilityBase
:awestruct-priority: 1.0
:awestruct-related_tag: spring
:showtitle:

OptaPlanner has a Spring Boot Starter to get up and running quickly.

Usage is similar to the link:quarkus.html[Quarkus] extension, but without the performance benefits.

video::U2N02ReT9CI[youtube]

== Guide

**https://github.com/ge0ffrey/gs-constraint-solving-ai-optaplanner-backup/blob/master/README.adoc[Read the OptaPlanner on Spring Boot guide.]**

== Quick start

Run the quick start yourself:

. Download https://github.com/ge0ffrey/gs-constraint-solving-ai-optaplanner-backup/tree/master/complete[the source code].
. Run `./mvnw clean install`
. Open http://localhost:8080 in your browser

= Artificial Intelligence for Spring Boot
:awestruct-description: Learn how to use OptaPlanner (open source, java) for Artificial Intelligence planning optimization on Spring Boot.
:awestruct-layout: compatibilityBase
:awestruct-priority: 1.0
:awestruct-related_tag: spring
:showtitle:

OptaPlanner has a Spring Boot Starter to get up and running quickly.

Usage is similar to the link:quarkus.html[Quarkus] extension, but without the performance benefits.

video::U2N02ReT9CI[youtube]

== Guide

**https://github.com/ge0ffrey/getting-started-guides/blob/gs-constraint-solving-ai-optaplanner/README.adoc[Read the OptaPlanner on Spring Boot guide.]**

== Quick start

Run the quick start yourself:

. Download https://github.com/ge0ffrey/gs-constraint-solving-ai-optaplanner-backup/tree/master/complete[the source code].
. Run `./mvnw clean install`
. Open http://localhost:8080 in your browser

Fix wrong link (even if it's temporally)


// Module included in the following assemblies:
//
// * serverless/serverless-release-notes.adoc

:_content-type: REFERENCE
[id="serverless-deprecated-removed-features_{context}"]
= Deprecated and removed features

Some features available in previous releases have been deprecated or removed.

Deprecated functionality is still included in {ServerlessProductName} and continues to be supported; however, it will be removed in a future release of this product and is not recommended for new deployments. For the most recent list of major functionality deprecated and removed within {ServerlessProductName}, refer to the table below.

In the table, features are marked with the following statuses:

* *-*: _Not yet available_
* *TP*: _Technology Preview_
* *GA*: _General Availability_
* *DEP*: _Deprecated_
* *REM*: _Removed_

.Deprecated and removed features tracker
[cols="3,1,1,1",options="header"]
|====
|Feature |1.18|1.19|1.20

|`kn func emit` (`kn func invoke` in 1.21+)
|TP
|TP
|TP

|mTLS
|GA
|GA
|GA

|`kn func` TypeScript templates
|TP
|TP
|TP

|`kn func` Rust templates
|TP
|TP
|TP

|`emptyDir` volumes
|GA
|GA
|GA

|`KafkaBinding` API
|GA
|DEP
|DEP

|HTTPS redirection
|-
|GA
|GA

|Kafka broker
|-
|-
|TP

|====

// Module included in the following assemblies:
//
// * serverless/serverless-release-notes.adoc

:_content-type: REFERENCE
[id="serverless-deprecated-removed-features_{context}"]
= Deprecated and removed features

Some features available in previous releases have been deprecated or removed.

Deprecated functionality is still included in {ServerlessProductName} and continues to be supported; however, it will be removed in a future release of this product and is not recommended for new deployments. For the most recent list of major functionality deprecated and removed within {ServerlessProductName}, refer to the table below.

In the table, features are marked with the following statuses:

* *-*: _Not yet available_
* *TP*: _Technology Preview_
* *GA*: _General Availability_
* *DEP*: _Deprecated_
* *REM*: _Removed_

.Deprecated and removed features tracker
[cols="3,1,1,1",options="header"]
|====
|Feature |1.18|1.19|1.20

|`kn func emit` (`kn func invoke` in 1.21+)
|TP
|TP
|TP

|Service Mesh mTLS
|GA
|GA
|GA

|`kn func` TypeScript templates
|TP
|TP
|TP

|`kn func` Rust templates
|TP
|TP
|TP

|`emptyDir` volumes
|GA
|GA
|GA

|`KafkaBinding` API
|GA
|DEP
|DEP

|HTTPS redirection
|-
|GA
|GA

|Kafka broker
|-
|-
|TP

|====

Fix the mTLS entry in the feature matrix


= Infinispan Cluster Manager

image:https://vertx.ci.cloudbees.com/buildStatus/icon?job=vert.x3-infinispan["Build Status",link="https://vertx.ci.cloudbees.com/view/vert.x-3/job/vert.x3-infinispan/"]

This is a cluster manager implementation for Vert.x that uses http://infinispan.org[Infinispan].

Please see the in-source asciidoc documentation or the main documentation on the web-site for a full description
of this component:

* link:http://vertx.io/docs/vertx-infinispan/java/[web-site docs]
* link:src/main/asciidoc/java/index.adoc[in-source docs]

-- will remove --

Remove lines added for testing CI setup

Remove lines added for testing CI setup


// Use these for links to issue and pulls. Note issues and pulls redirect one to
// each other on Github, so don't worry too much on using the right prefix.
// :issue: https://github.com/elastic/elasticsearch/issues/
// :pull: https://github.com/elastic/elasticsearch/pull/

= Elasticsearch Release Notes

== Elasticsearch 7.0.0

=== Breaking Changes

=== Breaking Java Changes

=== Deprecations

=== New Features

=== Enhancements

=== Bug Fixes

=== Regressions

=== Known Issues

== Elasticsearch version 6.3.0

=== New Features

=== Enhancements

=== Bug Fixes

=== Regressions

=== Known Issues

Remove extra spaces from changelog

Remove extra spaces from changelog

This commit removes to extra spaces at the end of lines in the
changelog.


image:https://img.shields.io/github/release/heruan/humanize.svg[link=https://github.com/heruan/humanize/releases,title=Latest release]
image:https://img.shields.io/github/downloads/heruan/humanize/total.svg[link=https://github.com/heruan/humanize/archive/master.zip,title=GitHub]
image:https://img.shields.io/circleci/project/github/heruan/humanize.svg[link=https://circleci.com/gh/heruan/humanize,title=CricleCI]
image:https://img.shields.io/codecov/c/github/heruan/humanize.svg[link=https://codecov.io/gh/heruan/humanize,title=Codecov]
image:https://img.shields.io/github/license/heruan/humanize.svg[link=http://www.apache.org/licenses/LICENSE-2.0.html,title=Apache License 2.0]

= Humanization libraries for Java

== humanize-time

image:https://img.shields.io/maven-central/v/to.lova.humanize/humanize-time.svg[]

[source,java]
----
Temporal minutesAgo = ZonedDateTime.now().minus(5, ChronoUnit.MINUTES);
String relative = HumanizeTime.fromNow(minutesAgo);
// produces: "5 minutes ago"
----

= Humanization libraries for Java
image:https://img.shields.io/github/release/heruan/humanize.svg[link=https://github.com/heruan/humanize/releases,title=Latest release]
image:https://img.shields.io/github/downloads/heruan/humanize/total.svg[link=https://github.com/heruan/humanize/archive/master.zip,title=GitHub]
image:https://img.shields.io/circleci/project/github/heruan/humanize.svg[link=https://circleci.com/gh/heruan/humanize,title=CricleCI]
image:https://img.shields.io/codecov/c/github/heruan/humanize.svg[link=https://codecov.io/gh/heruan/humanize,title=Codecov]
image:https://img.shields.io/github/license/heruan/humanize.svg[link=http://www.apache.org/licenses/LICENSE-2.0.html,title=Apache License 2.0]

== humanize-time
image:https://img.shields.io/maven-central/v/to.lova.humanize/humanize-time.svg[title=humanize-time]

[source,java]
----
Temporal minutesAgo = ZonedDateTime.now().minus(5, ChronoUnit.MINUTES);
String relative = HumanizeTime.fromNow(minutesAgo);
// produces: "5 minutes ago"
----

Move shields right after the title

Move shields right after the title


Revert "[Docs] Fix base directory to include for put_mapping.asciidoc"

This reverts commit db4ecb34cef686e36a01d72fac4187b24dbeaaac.


[id="persistent-storage-using-flexvolume"]
= Persistent storage using FlexVolume
include::modules/common-attributes.adoc[]
:context: persistent-storage-flexvolume

toc::[]

{product-title} supports FlexVolume, an out-of-tree plug-in that uses an executable model to interface with drivers.

To use storage from a back-end that does not have a built-in plug-in, you can extend {product-title} through FlexVolume drivers and provide persistent storage to applications.

Pods interact with FlexVolume drivers through the `flexvolume` in-tree plugin.

.Additional References

* link:expanding-persistent-volumes.adoc[Expanding persistent volumes]

include::modules/persistent-storage-flexvolume-drivers.adoc[leveloffset=+1]

include::modules/persistent-storage-flexvolume-driver-example.adoc[leveloffset=+1]

include::modules/persistent-storage-flexvolume-installing.adoc[leveloffset=+1]

include::modules/persistent-storage-flexvolume-consuming.adoc[leveloffset=+1]

[id="persistent-storage-using-flexvolume"]
= Persistent storage using FlexVolume
include::modules/common-attributes.adoc[]
:context: persistent-storage-flexvolume

toc::[]

{product-title} supports FlexVolume, an out-of-tree plug-in that uses an executable model to interface with drivers.

To use storage from a back-end that does not have a built-in plug-in, you can extend {product-title} through FlexVolume drivers and provide persistent storage to applications.

Pods interact with FlexVolume drivers through the `flexvolume` in-tree plugin.

.Additional References

* link:../expanding-persistent-volumes.adoc#expanding-persistent-volumes_{context}[Expanding persistent volumes]

include::modules/persistent-storage-flexvolume-drivers.adoc[leveloffset=+1]

include::modules/persistent-storage-flexvolume-driver-example.adoc[leveloffset=+1]

include::modules/persistent-storage-flexvolume-installing.adoc[leveloffset=+1]

include::modules/persistent-storage-flexvolume-consuming.adoc[leveloffset=+1]

Fix cross link in 4.3 and master

Fix cross link in 4.3 and master


# Garage Client

## TODO

 - Smarter upload process
 - Handle trailing slash on URLs correctly

## Developing

Getting started:

    sudo apt-get install build-essential cmake g++ libboost-dev libboost-program-options-dev libboost-filesystem-dev libboost-system-dev libcurl4-gnutls-dev clang clang-format-3.6 ninja-build
    mkdir build
    cmake -DCMAKE_BUILD_TYPE=Debug ..
    make
    ./garage-push --help

Generate tags

    make tags

Before commiting, run the pre-commit checks:

    CTEST_OUTPUT_ON_FAILURE=1 make qa

This will reformat all the code with clang-format and run clang-check and the test suite.
Please follow the https://google.github.io/styleguide/cppguide.html[Google C++ Style Guide] coding standard.

## Dockerfile

A Dockerfile is provided to check that the list of package dependencies is
up-to-date.  For day-to-day development it is recommended to build
`garage-push` in your native environment.

To build inside docker:

    docker build -t garage-tools-build .
    docker run -ti -v $PWD:/src garage-tools-build
    mkdir build
    cd build
    cmake -DCMAKE_BUILD_TYPE=Debug /src
    make qa

// vim: set tabstop=4 shiftwidth=4 expandtab:

# Garage Client

## TODO

 - Smarter upload process
 - Handle trailing slash on URLs correctly

## Developing

Getting started:

    sudo apt-get install build-essential cmake g++ libboost-dev libboost-program-options-dev libboost-filesystem-dev libboost-system-dev libcurl4-gnutls-dev clang clang-format-3.6 ninja-build
    mkdir build
    cd build
    cmake -DCMAKE_BUILD_TYPE=Debug ..
    make
    ./garage-push --help

Generate tags

    make tags

Before commiting, run the pre-commit checks:

    CTEST_OUTPUT_ON_FAILURE=1 make qa

This will reformat all the code with clang-format and run clang-check and the test suite.
Please follow the https://google.github.io/styleguide/cppguide.html[Google C++ Style Guide] coding standard.

## Dockerfile

A Dockerfile is provided to check that the list of package dependencies is
up-to-date.  For day-to-day development it is recommended to build
`garage-push` in your native environment.

To build inside docker:

    docker build -t garage-tools-build .
    docker run -ti -v $PWD:/src garage-tools-build
    mkdir build
    cd build
    cmake -DCMAKE_BUILD_TYPE=Debug /src
    make qa

// vim: set tabstop=4 shiftwidth=4 expandtab:

Add missing cd into build.

Add missing cd into build.


[[releasenotes-19]]
== OpenNMS 19

=== Important Upgrade Notes

* *Simple Topology Provider*: The Simple Topology Provider has been removed. A new GraphML Topology Provider is introduced and should be used instead.

=== New Features
* GraphML Topology Provider: A new Topology Provider which reads GraphML formatted graphs and displays them in the the Topology UI.

[[releasenotes-19]]
== OpenNMS 19

=== Important Upgrade Notes

* *Simple Topology Provider*: The Simple Topology Provider has been removed. A new GraphML Topology Provider is introduced and should be used instead.
* *Cassandra JMX Metrics*: The default value for the `friendly-name` attribute on the `JMX-Cassandra` collection service has changed from `cassandra21x` to `cassandra`.
This changes the path in which the metrics are stored.
If you have already been collecting these metrics and wish to preserve them, you can ignore this change when merging your configuration.
* *Jetty 9.3.x Upgrade*: Jetty has been upgraded from `8.1.x` to the latest `9.3.x`.
If you have a custom `jetty.xml` in your `etc` folder, you will need to migrate your changes.
Use `etc/examples/jetty.xml` as a starting point.
* *Drools 6.4.0 Upgrade*: Drools has been upgraded from `6.0.1.Final` to `6.4.0.Final`.
If you have custom Drools rules, they may need to be revised.
The compiler used in `6.4.0` is stricter than the compiler in previous versions.

=== New Features
* GraphML Topology Provider: A new Topology Provider which reads GraphML formatted graphs and displays them in the the Topology UI.

Add addtional upgrade notes for 19.0.0.

Add addtional upgrade notes for 19.0.0.


lsaddr(1)
=======
:doctype: manpage

NAME
----
lsaddr - list active IP addresses

SYNOPSIS
--------
*lsaddr* [ *-46* ] [*--include-loopback*] [*--include-ipv6-link-local]* [ _interface_ ... ]

DESCRIPTION
-----------
List IP addresses of the specified __interface__s. By default, lists all IPv4
and IPv6 addresses, with the loopback interfaces and IPv6 link-local omitted.

The _interface_ names are specified as in *ifconfig(8)*: usually a driver name
followed by a number, eg *eth0*. Alias interfaces are not supported.

OPTIONS
-------
*-4, --ipv4*::
    list IPv4 addresses
*-6, --ipv6*::
    list IPv6 addresses
*--include-loopback*::
    include addresses for the loopback interface
*--include-link-local*::
    include IPv6 link local addresses

AUTHOR
------
Kamal Marhubi <kamal@marhubi.com>

lsaddr(1)
=======
:doctype: manpage

NAME
----
lsaddr - list active IP addresses

SYNOPSIS
--------
*lsaddr* [ *-46* ] [*--include-loopback*] [*--include-ipv6-link-local]* [ _interface_ ... ]

DESCRIPTION
-----------
List IP addresses of the specified __interface__s. By default, lists all IPv4
and IPv6 addresses, with the loopback interfaces and IPv6 link-local omitted.

The _interface_ names are specified as in *ifconfig(8)*: usually a driver name
followed by a number, eg, *eth0*. Alias interfaces are not supported.

OPTIONS
-------
*-4, --ipv4*::
    list IPv4 addresses
*-6, --ipv6*::
    list IPv6 addresses
*--include-loopback*::
    include addresses for the loopback interface
*--include-link-local*::
    include IPv6 link local addresses

AUTHOR
------
Kamal Marhubi <kamal@marhubi.com>

Add comma after eg in manpage

Add comma after eg in manpage


*-F, --format* '[json|text]'::

Set the output format for stdout. Defaults to "text".

*-F, --format* '[json|text|unix]'::

Set the output format for stdout. Defaults to "text".
+
*TEXT* output is human-friendly textual output, usually in table or
record-oriented format.
In some cases, *TEXT* format is intentionally kept simple to support naive use
of commands within a subshell, but it is not generally guaranteed to be
parseable.
+
*JSON* output will produce raw JSON data from underlying Globus services.
This data is useful for using the CLI as part of a programmatic process, or for
deciding on valid *--jmespath* queries.
+
*UNIX* output will produce a line-by-line serialization of the result data
(which would be visible with *JSON*).
This is very suitable for use in pipelines with `grep`, `sort`, and other
standard unix tools.
+
Whenever you request *--format=UNIX*, you should also be using a *--jmespath*
query to select the exact fields that you want.
This better guarantees the consistency of output contents and ordering.

Update format docs to cover the UNIX format

Sections for each output format with basic description. Include mention
of UNIX and recommend using `--jmespath` with it.


[[new]]
== What's New in Spring Security 5.6

Spring Security 5.6 provides a number of new features.
Below are the highlights of the release.

[[whats-new-servlet]]
=== Servlet
* Configuration

** Introduced https://github.com/spring-projects/spring-security/pull/9630[`AuthorizationManager`] for method security

* SAML 2.0 Service Provider

** Added https://github.com/spring-projects/spring-security/pull/9483[SAML 2.0 Single Logout Support]
** Added https://github.com/spring-projects/spring-security/pull/10060[Saml2AuthenticationRequestRepository]

* OAuth 2.0 Login

** Added https://github.com/spring-projects/spring-security/pull/10041[`Converter` for `Authentication` result]

* OAuth 2.0 Client

** Improved https://github.com/spring-projects/spring-security/pull/9791[client credentials] encoding
** Improved https://github.com/spring-projects/spring-security/pull/9779[access token response] parsing
** Added https://github.com/spring-projects/spring-security/pull/10155[custom grant types support] for authorization requests

[[whats-new-webflux]]
=== WebFlux

** Improved https://github.com/spring-projects/spring-security/pull/9791[client credentials] encoding
** Added https://github.com/spring-projects/spring-security/pull/10131[custom headers support] for access token requests

Update What's New for 5.6

Update What's New for 5.6


[[elasticsearch-reference]]
= Reference

:version:   1.5.2
:branch:    1.5
:jdk:       1.8.0_25
:defguide:  https://www.elastic.co/guide/en/elasticsearch/guide/current

include::getting-started.asciidoc[]

include::setup.asciidoc[]

include::migration/index.asciidoc[]

include::api-conventions.asciidoc[]

include::docs.asciidoc[]

include::search.asciidoc[]

include::aggregations.asciidoc[]

include::indices.asciidoc[]

include::cat.asciidoc[]

include::cluster.asciidoc[]

include::query-dsl.asciidoc[]

include::mapping.asciidoc[]

include::analysis.asciidoc[]

include::modules.asciidoc[]

include::index-modules.asciidoc[]

include::testing.asciidoc[]

include::glossary.asciidoc[]

[[elasticsearch-reference]]
= Elasticsearch Reference

:version:   1.5.2
:branch:    1.5
:jdk:       1.8.0_25
:defguide:  https://www.elastic.co/guide/en/elasticsearch/guide/current

include::getting-started.asciidoc[]

include::setup.asciidoc[]

include::migration/index.asciidoc[]

include::api-conventions.asciidoc[]

include::docs.asciidoc[]

include::search.asciidoc[]

include::aggregations.asciidoc[]

include::indices.asciidoc[]

include::cat.asciidoc[]

include::cluster.asciidoc[]

include::query-dsl.asciidoc[]

include::mapping.asciidoc[]

include::analysis.asciidoc[]

include::modules.asciidoc[]

include::index-modules.asciidoc[]

include::testing.asciidoc[]

include::glossary.asciidoc[]

Docs: Rename reference docs to Elasticsearch Reference


[[jackson]]
== Jackson Support

Spring Security has added Jackson Support for persisting Spring Security related classes.
This can improve the performance of serializing Spring Security related classes when working with distributed sessions (i.e. session replication, Spring Session, etc).

To use it, register the `SecurityJackson2Modules.getModules(ClassLoader)` as https://wiki.fasterxml.com/JacksonFeatureModules[Jackson Modules].

[source,java]
----
ObjectMapper mapper = new ObjectMapper();
ClassLoader loader = getClass().getClassLoader();
List<Module> modules = SecurityJackson2Modules.getModules(loader);
mapper.registerModules(modules);

// ... use ObjectMapper as normally ...
SecurityContext context = new SecurityContextImpl();
// ...
String json = mapper.writeValueAsString(context);
----

[[jackson]]
== Jackson Support

Spring Security provides Jackson support for persisting Spring Security related classes.
This can improve the performance of serializing Spring Security related classes when working with distributed sessions (i.e. session replication, Spring Session, etc).

To use it, register the `SecurityJackson2Modules.getModules(ClassLoader)` with `ObjectMapper` (https://github.com/FasterXML/jackson-databind[jackson-databind]):

[source,java]
----
ObjectMapper mapper = new ObjectMapper();
ClassLoader loader = getClass().getClassLoader();
List<Module> modules = SecurityJackson2Modules.getModules(loader);
mapper.registerModules(modules);

// ... use ObjectMapper as normally ...
SecurityContext context = new SecurityContextImpl();
// ...
String json = mapper.writeValueAsString(context);
----

[NOTE]
====
The following Spring Security modules provide Jackson support:

- spring-security-core (`CoreJackson2Module`)
- spring-security-web (`WebJackson2Module`, `WebServletJackson2Module`, `WebServerJackson2Module`)
- <<oauth2client, spring-security-oauth2-client>> (`OAuth2ClientJackson2Module`)
- spring-security-cas (`CasJackson2Module`)
====

Document Jackson serialization support for OAuth 2.0 Client

Fixes gh-8075


= Changelog

== Version 0.4.2

- Bug fix related to :iat param validating on jws. (thanks to @tvanhens)

== Version 0.4.1

Date: 2015-03-14

- Update nippy version from 2.7.1 to 2.8.0
- Update buddy-core from 0.4.0 to 0.4.2
- Update cats from 0.3.2 to 0.3.4

== Version 0.4.0

Date: 2015-02-22

- Add encode/decode functions to JWS/JWT implementation. Them instead of return
  plain value, return a monadic either. That allows granular error reporting
  instead something like nil that not very useful. The previous sign/unsign
  are conserved for backward compatibility but maybe in future will be removed.
- Rename parameter `maxage` to `max-age` on jws implementation. This change
  introduces a little backward incompatibility.
- Add "compact" signing implementation as replacemen of django based one.
- Django based generic signing is removed.
- Update buddy-core version to 0.4.0

== Version 0.3.0

Date: 2014-01-18

- First version splitted from monolitic buddy package.
- No changes from original version.

= Changelog

== Version 0.4.2

Date: 2015-03-29

- Bug fix related to :iat param validating on jws. (thanks to @tvanhens)

== Version 0.4.1

Date: 2015-03-14

- Update nippy version from 2.7.1 to 2.8.0
- Update buddy-core from 0.4.0 to 0.4.2
- Update cats from 0.3.2 to 0.3.4

== Version 0.4.0

Date: 2015-02-22

- Add encode/decode functions to JWS/JWT implementation. Them instead of return
  plain value, return a monadic either. That allows granular error reporting
  instead something like nil that not very useful. The previous sign/unsign
  are conserved for backward compatibility but maybe in future will be removed.
- Rename parameter `maxage` to `max-age` on jws implementation. This change
  introduces a little backward incompatibility.
- Add "compact" signing implementation as replacemen of django based one.
- Django based generic signing is removed.
- Update buddy-core version to 0.4.0

== Version 0.3.0

Date: 2014-01-18

- First version splitted from monolitic buddy package.
- No changes from original version.

Add date to the changelog entry.

Add date to the changelog entry.


= Using the Kafka controller
:page-sidebar: apim_3_x_sidebar
:page-permalink: apim/3.x/apim_publishersme_using_kafka.html
:page-folder: apim/user-guide/publisher
:page-layout: apim3x

== Overview

This section describes the basic usage of the Kafka controller - producing and consuming messages.

=== Producing messages

Using the HTTP `POST` command to the example endpoint `https://apim-3-x-x-gateway.cloud.gravitee.io/kafka/messages`, you can send a message with the followig structure:

[source,json]
----
https://apim-3-13-x-gateway.cloud.gravitee.io/kafka/messages
{
  "messages": [
    {
      "key": "key",
      "value": {
        "val1": "hello"
      }
    }
  ]
}
----

=== Consuming messages

Using the HTTP `GET` command to the example endpoint `https://apim-3-x-x-gateway.cloud.gravitee.io/kafka/messages`, you can receive any available messages.

= Using the Kafka controller
:page-sidebar: apim_3_x_sidebar
:page-permalink: apim/3.x/apim_publisherguide_using_kafka.html
:page-folder: apim/user-guide/publisher
:page-layout: apim3x

== Overview

This section describes the basic usage of the Kafka controller - producing and consuming messages.

=== Producing messages

Using the HTTP `POST` command to the example endpoint `https://api.company.com/kafka/messages`, you can send a message with the followig structure:

[source,json]
----
https://api.company.com/kafka/messages
{
  "messages": [
    {
      "key": "key",
      "value": {
        "val1": "hello"
      }
    }
  ]
}
----

=== Consuming messages

Using the HTTP `GET` command to the example endpoint `https://api.company.com/kafka/messages`, you can receive any available messages.

Fix link and snippet url

Fix link and snippet url


// Module included in the following assemblies:
//
// * operators/operator-reference.adoc

[id="cluster-cloud-controller-manager-operator_{context}"]
= Cluster Cloud Controller Manager Operator

[discrete]
== Purpose

[NOTE]
====
This Operator is only fully supported for Alibaba Cloud, Microsoft Azure Stack Hub, and IBM Cloud.

It is available as a link:https://access.redhat.com/support/offerings/techpreview[Technology Preview] for Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure, {rh-openstack-first}, and VMware vSphere.
====

The Cluster Cloud Controller Manager Operator manages and updates the cloud controller managers deployed on top of {product-title}. The Operator is based on the Kubebuilder framework and `controller-runtime` libraries. It is installed via the Cluster Version Operator (CVO).

It contains the following components:

* Operator
* Cloud configuration observer

By default, the Operator exposes Prometheus metrics through the `metrics` service.

[discrete]
== Project

link:https://github.com/openshift/cluster-cloud-controller-manager-operator[cluster-cloud-controller-manager-operator]

// Module included in the following assemblies:
//
// * operators/operator-reference.adoc

[id="cluster-cloud-controller-manager-operator_{context}"]
= Cluster Cloud Controller Manager Operator

[discrete]
== Purpose

[NOTE]
====
This Operator is only fully supported for Microsoft Azure Stack Hub and IBM Cloud.

It is available as a link:https://access.redhat.com/support/offerings/techpreview[Technology Preview] for Alibaba Cloud, Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure, {rh-openstack-first}, and VMware vSphere.
====

The Cluster Cloud Controller Manager Operator manages and updates the cloud controller managers deployed on top of {product-title}. The Operator is based on the Kubebuilder framework and `controller-runtime` libraries. It is installed via the Cluster Version Operator (CVO).

It contains the following components:

* Operator
* Cloud configuration observer

By default, the Operator exposes Prometheus metrics through the `metrics` service.

[discrete]
== Project

link:https://github.com/openshift/cluster-cloud-controller-manager-operator[cluster-cloud-controller-manager-operator]

Update to reflect Ali Cloud TP status in 4.10


= To-Do List

- mock_cone_detector creates infinite area and overflows h
- (*DONE*) new waypoints shorter than old don't delete existing waypoints
- adjust waypoints for start position and cone position
- cone area goes down when very close to cone
- (*DONE*) parameterize throttle and steering PWM values
- (*DONE*) touch sensor does not work
- (*DONE*) cone detection in bright light does not work
- GUIDED mode does not work
- (*DONE*) Encode PWM values or range set to use in the waypoints file
- If waypoint encountered before cone is seen, rover goes into HOLD mode
with no recovery. Needs to be fixed.

== Possible To-Do

- (*DONE*) Change from using WP_SPEED to CRUISE_SPEED. (Seems to be used by Vicky,
while WP_SPEED is not.)
- Have a way of manually triggering parameter reload

== Notes

MAV_CMD_DO_SET_HOME appears to reset the map origin, as well as zero the
offset between the map origin and base_link (for /mavros/local_position/pose
and /mavros/local_position/odom).

= To-Do List

- shouldn't need intermediate waypoint to trigger EXPECTING_CONE
- have to handle case where cone waypoint is achieved before seeing cone
- need to limit time of reverse
- have to handle case where in MANUAL mode and don't see cone
- mock_cone_detector creates infinite area and overflows h
- (*DONE*) new waypoints shorter than old don't delete existing waypoints
- adjust waypoints for start position and cone position
- cone area goes down when very close to cone
- (*DONE*) parameterize throttle and steering PWM values
- (*DONE*) touch sensor does not work
- (*DONE*) cone detection in bright light does not work
- GUIDED mode does not work
- (*DONE*) Encode PWM values or range set to use in the waypoints file
- If waypoint encountered before cone is seen, rover goes into HOLD mode
with no recovery. Needs to be fixed.

== Possible To-Do

- (*DONE*) Change from using WP_SPEED to CRUISE_SPEED. (Seems to be used by Vicky,
while WP_SPEED is not.)
- Have a way of manually triggering parameter reload

== Notes

MAV_CMD_DO_SET_HOME appears to reset the map origin, as well as zero the
offset between the map origin and base_link (for /mavros/local_position/pose
and /mavros/local_position/odom).

Add new to-do items based on field testing from 04-14


[[ivy-plugin]]
= ivy-plugin

image:https://img.shields.io/jenkins/plugin/v/ivy.svg[Jenkins Plugin,link=https://plugins.jenkins.io/ivy]
image:https://img.shields.io/github/release/jenkinsci/ivy-plugin.svg?label=release[GitHub release,link=https://github.com/jenkinsci/ivy-plugin/releases/latest]
image:https://img.shields.io/jenkins/plugin/i/ivy.svg?color=blue[Jenkins Plugin Installs,link=https://plugins.jenkins.io/ivy]
image:https://ci.jenkins.io/job/Plugins/job/ivy-plugin/job/master/badge/icon[Build Status,link=https://ci.jenkins.io/job/Plugins/job/ivy-plugin/job/master/]

Provides Jenkins integration with http://ant.apache.org/ivy/[Apache Ivy].

See http://wiki.jenkins-ci.org/display/JENKINS/Ivy+Plugin[Ivy Plugin] on the Jenkins wiki for more information.

[[ivy-plugin]]
= ivy-plugin

image:https://img.shields.io/jenkins/plugin/v/ivy.svg[Jenkins Plugin,link=https://plugins.jenkins.io/ivy]
image:https://img.shields.io/github/release/jenkinsci/ivy-plugin.svg?label=release[GitHub release,link=https://github.com/jenkinsci/ivy-plugin/releases/latest]
image:https://img.shields.io/jenkins/plugin/i/ivy.svg?color=blue[Jenkins Plugin Installs,link=https://plugins.jenkins.io/ivy]
image:https://ci.jenkins.io/job/Plugins/job/ivy-plugin/job/master/badge/icon[Build Status,link=https://ci.jenkins.io/job/Plugins/job/ivy-plugin/job/master/]

Provides Jenkins integration with http://ant.apache.org/ivy/[Apache Ivy].

See https://plugins.jenkins.io/ivy/[Ivy Plugin] on the Jenkins wiki for more information.

Convert wiki link to jenkinsio plugin link


To complete this guide you will need to checkout the source from Github and work through the steps presented by the guide.

To get started do the following:

* link:https://github.com/{githubSlug}/archive/master.zip[Download] and unzip the source or if you already have https://git-scm.com/[Git]: `git clone https://github.com/{githubSlug}.git`
* `cd` into `{githubSlug}/initial`
* Head on over to the next section

TIP: You can go right to the completed example if you `cd` into `{githubSlug}/complete`

Add a note about completed example

Add a note about completed example


:source-highlighter: pygments

= Muon Clojure

Muon Clojure is just awesome and clojurific

---
---
:title: Muon Clojure
:layout: documentation
:source-highlighter: pygments
:toc: right

= Muon Clojure docs

Muon Clojure is just awesome and clojurific

Add doc push on snapshot release

Add doc push on snapshot release