http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/4f4912e5/documentation/extensions/mod_collections.html ---------------------------------------------------------------------- diff --cc documentation/extensions/mod_collections.html index ff1d1b9,b472dcc..0000000 deleted file mode 100644,100644 --- a/documentation/extensions/mod_collections.html +++ /dev/null @@@ -1,470 -1,467 +1,0 @@@ --<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -- --<html xmlns="http://www.w3.org/1999/xhtml"> -- <head> -- <meta charset="utf-8"/> -- <title>Apache Tamaya&#8201;&#8212;&#8201;Extension: Collection Support</title> -- <meta name="viewport" content="width=device-width, initial-scale=1.0"/> -- <meta name="description" content=""/> -- <meta name="author" content=""/> -- <meta name="keywords" content=""/> -- <meta name="generator" content="'JBake '+'${version}"/> -- -- <!-- Le styles --> -- <link href="../../css/bootstrap.min.css" rel="stylesheet"/> -- <link href="../../css/asciidoctor.css" rel="stylesheet"/> -- <link href="../../css/base.css" rel="stylesheet"/> -- <link href="../../css/prettify.css" rel="stylesheet"/> -- -- <!-- HTML5 shim, for IE6-8 support of HTML5 elements --> -- <!--[if lt IE 9]> -- <script src="../../js/html5shiv.min.js"></script> -- <![endif]--> -- -- <!-- Fav and touch icons from ASF --> -- <link rel="shortcut icon" href="../../favicon.ico"/> -- <link rel="apple-touch-icon" sizes="57x57" href="../../favicons/apple-touch-icon-57x57.png"/> -- <link rel="apple-touch-icon" sizes="60x60" href="../../favicons/apple-touch-icon-60x60.png"/> -- <link rel="apple-touch-icon" sizes="72x72" href="../../favicons/apple-touch-icon-72x72.png"/> -- <link rel="apple-touch-icon" sizes="76x76" href="../../favicons/apple-touch-icon-76x76.png"/> -- <link rel="apple-touch-icon" sizes="114x114" href="../../favicons/apple-touch-icon-114x114.png"/> -- <link rel="apple-touch-icon" sizes="120x120" href="../../favicons/apple-touch-icon-120x120.png"/> -- <link rel="apple-touch-icon" sizes="144x144" href="../../favicons/apple-touch-icon-144x144.png"/> -- <link rel="apple-touch-icon" sizes="152x152" href="../../favicons/apple-touch-icon-152x152.png"/> -- <link rel="apple-touch-icon" sizes="180x180" href="../../favicons/apple-touch-icon-180x180.png"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-32x32.png" sizes="32x32"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-194x194.png" sizes="194x194"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-96x96.png" sizes="96x96"/> -- <link rel="icon" type="image/png" href="../../favicons/android-chrome-192x192.png" sizes="192x192"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-16x16.png" sizes="16x16"/> -- <link rel="manifest" href="../../favicons/manifest.json"/> -- <link rel="shortcut icon" href="../../favicons/favicon.ico"/> -- <meta name="msapplication-TileColor" content="#603cba"/> -- <meta name="msapplication-TileImage" content="../../favicons/mstile-144x144.png"/> -- <meta name="msapplication-config" content="../../favicons/browserconfig.xml"/> -- <meta name="theme-color" content="#303284"/> -- </head> -- <body onload="prettyPrint()"> -- <div id="wrap"> -- <div> -- -- <!-- Fixed navbar --> -- <div class="navbar navbar-default navbar-fixed-top" role="navigation"> -- <div class="container"> -- <div class="navbar-header"> -- <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> -- <span class="sr-only">Toggle navigation</span> -- <span class="icon-bar"></span> -- <span class="icon-bar"></span> -- <span class="icon-bar"></span> -- </button> - <a class="navbar-brand" href="../../index.html">Apache Tamaya (incubating)</a> - <a class="navbar-brand" href="../../">Apache Tamaya (incubating)</a> -- </div> -- <div class="navbar-collapse collapse"> -- <ul class="nav navbar-nav"> - <li><a href="../../start.html">Tamaya in 5 minutes</a></li> - <li><a href="../../index.html">Home</a></li> - <li><a href="../../about.html">About</a></li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../documentation/usecases.html">Use Cases and Requirements</a></li> -- <li><a href="../../documentation/quickstart.html">Quickstart</a></li> -- <li><a href="../../documentation/api.html">API</a></li> -- <li><a href="../../documentation/core.html">Core</a></li> -- <li><a href="../../documentation/extensions.html">Extension Guide</a></li> -- <li class="divider"></li> - <li><a href="../../apidocs/index.html">Javadoc {tamaya_version} (external)</a></li> - <li><a href="../../apidocs/index.html">Javadoc ${tamaya_version} (external)</a></li> -- </ul> -- </li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../development/source.html">Sources</a></li> -- <li><a href="../../development/community.html">Community</a></li> -- <li><a href="../../development/team.html">Project Team</a></li> - <li><a target="_blank" href="https://builds.apache.org/view/S-Z/view/Tamaya/">CI / ASF Jenkins</a></li> - <li><a target="_blank" href="https://issues.apache.org/jira/browse/TAMAYA">Issues / ASF Jira</a></li> -- <li><a href="../../devguide.html">Development Guide</a></li> -- <li><a href="../../release-guide.html">Release Guide</a></li> - <li class="divider"></li> - <li><a href="../../development/possible-contributions.html">Possible Contributions</a></li> -- </ul> -- </li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Releases <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../download.html">Download</a></li> -- <li><a href="../../history.html">Release History</a></li> -- </ul> -- </li> --<!-- Example: -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="#">Action</a></li> -- <li><a href="#">Another action</a></li> -- <li><a href="#">Something else here</a></li> -- <li class="divider"></li> -- <li class="dropdown-header">Nav header</li> -- <li><a href="#">Separated link</a></li> -- <li><a href="#">One more separated link</a></li> -- </ul> -- </li> ----> -- <li><a href="../../sitemap.xml">Sitemap</a></li> -- <li><a href="../../feed.xml">Subscribe</a></li> -- </ul> -- </div><!--/.nav-collapse --> -- </div> -- </div> -- -- </div> -- <div class="container"> -- -- <div class="page-header"> -- <h1>Apache Tamaya&#8201;&#8212;&#8201;Extension: Collection Support</h1> -- </div> -- - <p><em>2016-12-18</em></p> - <p><em>2016-12-19</em></p> -- -- <p><div id="preamble"> --<div class="sectionbody"> --<!-- toc disabled --> --</div> --</div> --<div class="sect1"> --<h2 id="Optional">Tamaya Collection Support (Extension Module)</h2> --<div class="sectionbody"> --<div class="sect2"> --<h3 id="_overview">Overview</h3> --<div class="paragraph"> --<p>All configuration in Tamaya is expressed as simple key, value pairs. Nevertheless this concept allows similarly --the modelling of collection typed values such as lists, sets, maps or simple collections of things. The Tamaya --Collections extension adds this functionality to the Tamaya eco-system.</p> --</div> --</div> --<div class="sect2"> --<h3 id="_compatibility">Compatibility</h3> --<div class="paragraph"> --<p>The module is based on Java 7, so it will not run on Java 7 and beyond.</p> --</div> --</div> --<div class="sect2"> --<h3 id="_installation">Installation</h3> --<div class="paragraph"> --<p>To use Tamaya collection support you only must add the corresponding dependency to your module:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><dependency> -- <groupId>org.apache.tamaya.ext</groupId> -- <artifactId>tamaya-collections</artifactId> -- <version>{tamaya_version}</version> --</dependency></code></pre> --</div> --</div> --</div> --<div class="sect2"> --<h3 id="_overview_2">Overview</h3> --<div class="paragraph"> --<p>Tamaya Collections adds PropertyConverter implementations that are able to access configuration data --as lists, maps or sets. By default this works out of the box as easy as accessing any other type of --configuration data, e.g.</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-java" data-lang="java">Configuration config = ConfigurationProvider.getConfiguration(); -- --// Without any content specification, a list of String is returned. --List<String> simpleList = config.get("my.list.config.entry", List.class); -- --// Using a TypeLiteral allows to use every convertible sub type supported by the system. --List<Integer> intList = config.get("my.list.config.entry", new TypeLiteral<List<Integer>>(){});</code></pre> --</div> --</div> --<div class="paragraph"> --<p>Configuration in that case, by default, is a simple comma-separated list of entries, e.g.</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-properties" data-lang="properties">my.list.config.entry=1,34454,23,344545,3445</code></pre> --</div> --</div> --<div class="paragraph"> --<p>Additionally the module allows adding additional meta-entries, which allows to tweak some of the --inner-workings, e.g.</p> --</div> --<div class="ulist"> --<ul> --<li> --<p>using your own PropertyConverter implementation for parsing entries.</p> --</li> --<li> --<p>specifying a custom separator String to be used to split the items (default is {{','}}.</p> --</li> --<li> --<p>specifying a custom separator String to be used to split key/value paris when parsing map entries.</p> --</li> --<li> --<p>specifying the implementation type of the collection instance to be returned.</p> --</li> --<li> --<p>specifying if the resulting collection should be returned as a modifiable collection.</p> --</li> --</ul> --</div> --</div> --<div class="sect2"> --<h3 id="_supported_types">Supported Types</h3> --<div class="paragraph"> --<p>This module supports the following types:</p> --</div> --<div class="ulist"> --<ul> --<li> --<p>java.util.Collection</p> --</li> --<li> --<p>java.util.List</p> --</li> --<li> --<p>java.util.ArrayList</p> --</li> --<li> --<p>java.util.LinkedList</p> --</li> --<li> --<p>java.util.Set</p> --</li> --<li> --<p>java.util.SortedSet</p> --</li> --<li> --<p>java.util.TreeSet</p> --</li> --<li> --<p>java.util.HashSet</p> --</li> --<li> --<p>java.util.Map</p> --</li> --<li> --<p>java.util.SortedMap</p> --</li> --<li> --<p>java.util.HashMap</p> --</li> --<li> --<p>java.util.TreeMap</p> --</li> --</ul> --</div> --<div class="paragraph"> --<p>Hereby the type is determined primarly by the parameter type accessed, e.g. --config.get("mylist", ArrayList.class) will always return an ArrayList --as result.</p> --</div> --<div class="sect3"> --<h4 id="_configuring_the_target_implementation_type">Configuring the target implementation type</h4> --<div class="paragraph"> --<p>Tamaya Collections allows you to configure the target collection type by adding the --following meta-configuration entry (shown for the mylist entry). Hereby the package part java.util. --can be ommitted:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-properties" data-lang="properties">mylist=a,b,c --_mylist.collection-type=LinkedList</code></pre> --</div> --</div> --<div class="paragraph"> --<p>When calling config.get("mylist", ArrayList.class) this parameter does not have any effect, so you will still --get an ArrayList as a result. However when you call config.get("mylist", List.class) you will --get a LinkedList as implementation type.</p> --</div> --<div class="paragraph"> --<p>This mechanism similarly applies to all kind of collections, so you can use it similarly to define the implementation --type returned when accessing List, Map or Collection.</p> --</div> --</div> --</div> --<div class="sect2"> --<h3 id="_collecting_configuration_entries_instead_of_overriding">Collecting Configuration Entries instead of Overriding</h3> --<div class="paragraph"> --<p>By default Tamaya applies always an overriding CombinationPolicy, where only the configuration entry for --the most significant configuration entry is used. In case of collections (and maybe also other use cases), --overriding is not always the mechanism of choice. E.g. when you want to have all entries added to your --configuration to be <strong>combined</strong> to a new entry containing all values provided by any property sources.</p> --</div> --<div class="paragraph"> --<p>Therefore Tamaya Collections also provides a more sophistiated CombinationPolicy (automatically configured) --that allows to adapt the way how configuration entries are combined. All you must do is declaring --the mechanism to be applied by an according meta-configuration parameter, e.g. for my.list your config may --look as follows:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-properties" data-lang="properties"># from PropertSource 1 --my.list=1,2,3 -- --# from PropertSource 2 --my.list=4,5,6 -- --# without any additional meta-info these entries would be combined to --my.list=4,5,6</code></pre> --</div> --</div> --<div class="paragraph"> --<p>With Tamaya Collections you can now configure the combination policy as follows:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-properties" data-lang="properties"># use one of the default policies: override / collect --_my.list.combination-policy=collect -- --# use an custom CombinationPolicy to combine the values --_my.list.combination-policy=com.mycomp.app.MyCombincationPolicy</code></pre> --</div> --</div> --<div class="paragraph"> --<p>So declaring the collect policy the resulting raw output of the entry looks as follows:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-properties" data-lang="properties"># result when applying the collect policy: --my.list=1,2,3,4,5,6</code></pre> --</div> --</div> --<div class="paragraph"> --<p>The customizable policy mechanism of Tamaya Collections also honors the item-separator meta-configuration --parameter explained later in this document.</p> --</div> --</div> --<div class="sect2"> --<h3 id="_format_of_collection_configuration">Format of Collection Configuration</h3> --<div class="paragraph"> --<p>By default collections are modelled as simple String values, that are tokenized into individual parts using a --defined item-separator (by default ','). So a given configuration entry of 1,2,3 is mapped to "1","2","3". --If the target context type is something different than String the smae conversion logic is used as when mapping --configuration parameters directly to non-String target types (implemented as +PropertyConverter classes, manahed --within the current ConfigurationContext. The procedure is identical for all collection types, including Map types, --with the difference that each token in the list is parsed once more for separating it into a key and a value. --The default separator for map entries hereby is "::". Map keys, as of now, are always of type String, whereas --for values the same logic is applied as for non-map collection types.</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-properties" data-lang="properties"># a list, using the default format --list=1,2,3,4,5,6 -- --# a map, using the default format --map=a::b, c::d</code></pre> --</div> --</div> --<div class="sect3"> --<h4 id="_trimming_of_entries">Trimming of entries</h4> --<div class="paragraph"> --<p>By default all tokens parsed are trimmed <em>before</em> adding them to the final collection. In case of map entries this is --also the case for key/value entries. So the following configuration results in the identical values for --list1,list2 and map1,map2:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-properties" data-lang="properties"># a list, using the default format --list1=1,2,3,4,5,6 --list2=1, 2, 3, 4, 5, 6 -- --# a map, using the default format --map1=a::b, c::d --map2=a :: b, c :: d</code></pre> --</div> --</div> --<div class="paragraph"> --<p>Nevertheless truncation can be controlled by the usage of brackets, e.g. the last list or map entry will have a single --space character as value:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-properties" data-lang="properties"># a list, with a ' ' value at the end --list3=1, 2, 3, 4, 5, [ ] -- --# a map, with a ' ' value for key '0' --map3=1 :: a, 2 :: b, 0::[ ]</code></pre> --</div> --</div> --<div class="paragraph"> --<p>Hereby \[ escapes the sequence.</p> --</div> --</div> --<div class="sect3"> --<h4 id="_customizing_the_format">Customizing the format</h4> --<div class="paragraph"> --<p>The item and entry separators (by default ',' and "::") can be customized by setting corresponding meta-data --entries as follows, resulting in the same values as in the prevoius listing:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-properties" data-lang="properties"># a list, with a ' ' value at the end --list3=1__2__3__ 4__ 5__[ ] --_list3.item-separator=__ -- --# a map, with a ' ' value for key '0' --map3=1->a, 2->b, 0->[ ] --_map3.map-entry-separator=-></code></pre> --</div> --</div> --<div class="paragraph"> --<p>Of course these settings also can be combined:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-properties" data-lang="properties"># a reformatted map --redefined-map=0==none | 1==single | 2==any --_redefined-map.map-entry-separator=== --_redefined-map.item-separator=|</code></pre> --</div> --</div> --</div> --</div> --</div> --</div></p> -- -- <hr /> -- </div> -- </div> -- <div> -- <div id="push"></div> -- -- <div id="footer"> -- <div class="container"> -- <p class="muted credit">© 2014-2016 Apache Software Foundation | Mixed with <a href="http://getbootstrap.com/">Bootstrap v3.1.1</a> -- | Baked with <a href="http://jbake.org">JBake <span>v2.5.0</span></a> -- at <span>2016-12-19</span> -- </p> -- <p> -- <b>Disclaimer</b> -- Apache Tamaya (incubating) is an effort undergoing -- incubation at -- The Apache Software Foundation (ASF), sponsored by -- the name of Apache Incubator. Incubation is required of -- all newly accepted projects until a further review indicates -- that the infrastructure, communications, and decision making -- process have stabilized in a manner consistent with other -- successful ASF projects. While incubation status is not -- necessarily a reflection of the completeness or stability of -- the code, it does indicate that the project has yet to -- be fully endorsed by the ASF.<br /> -- <a href="http://incubator.apache.org/guides/website.html" style="border:0px;" target="_target"><img class="incubator-logo" src="../../logos/egg-logo2.png"/></a> -- </p> -- </div> -- </div> -- -- <!-- Le javascript -- ================================================== --> -- <!-- Placed at the end of the document so the pages load faster --> -- <script src="../../js/jquery-1.11.1.min.js"></script> -- <script src="../../js/bootstrap.min.js"></script> -- <script src="../../js/prettify.js"></script> -- -- </div> -- </body> --</html>
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/4f4912e5/documentation/extensions/mod_consul.html ---------------------------------------------------------------------- diff --cc documentation/extensions/mod_consul.html index b1f5fac,ab53a6a..0000000 deleted file mode 100644,100644 --- a/documentation/extensions/mod_consul.html +++ /dev/null @@@ -1,249 -1,246 +1,0 @@@ --<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -- --<html xmlns="http://www.w3.org/1999/xhtml"> -- <head> -- <meta charset="utf-8"/> -- <title>Apache Tamaya&#8201;&#8212;&#8201;Extension: Integration with consul (Hashicorp)</title> -- <meta name="viewport" content="width=device-width, initial-scale=1.0"/> -- <meta name="description" content=""/> -- <meta name="author" content=""/> -- <meta name="keywords" content=""/> -- <meta name="generator" content="'JBake '+'${version}"/> -- -- <!-- Le styles --> -- <link href="../../css/bootstrap.min.css" rel="stylesheet"/> -- <link href="../../css/asciidoctor.css" rel="stylesheet"/> -- <link href="../../css/base.css" rel="stylesheet"/> -- <link href="../../css/prettify.css" rel="stylesheet"/> -- -- <!-- HTML5 shim, for IE6-8 support of HTML5 elements --> -- <!--[if lt IE 9]> -- <script src="../../js/html5shiv.min.js"></script> -- <![endif]--> -- -- <!-- Fav and touch icons from ASF --> -- <link rel="shortcut icon" href="../../favicon.ico"/> -- <link rel="apple-touch-icon" sizes="57x57" href="../../favicons/apple-touch-icon-57x57.png"/> -- <link rel="apple-touch-icon" sizes="60x60" href="../../favicons/apple-touch-icon-60x60.png"/> -- <link rel="apple-touch-icon" sizes="72x72" href="../../favicons/apple-touch-icon-72x72.png"/> -- <link rel="apple-touch-icon" sizes="76x76" href="../../favicons/apple-touch-icon-76x76.png"/> -- <link rel="apple-touch-icon" sizes="114x114" href="../../favicons/apple-touch-icon-114x114.png"/> -- <link rel="apple-touch-icon" sizes="120x120" href="../../favicons/apple-touch-icon-120x120.png"/> -- <link rel="apple-touch-icon" sizes="144x144" href="../../favicons/apple-touch-icon-144x144.png"/> -- <link rel="apple-touch-icon" sizes="152x152" href="../../favicons/apple-touch-icon-152x152.png"/> -- <link rel="apple-touch-icon" sizes="180x180" href="../../favicons/apple-touch-icon-180x180.png"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-32x32.png" sizes="32x32"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-194x194.png" sizes="194x194"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-96x96.png" sizes="96x96"/> -- <link rel="icon" type="image/png" href="../../favicons/android-chrome-192x192.png" sizes="192x192"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-16x16.png" sizes="16x16"/> -- <link rel="manifest" href="../../favicons/manifest.json"/> -- <link rel="shortcut icon" href="../../favicons/favicon.ico"/> -- <meta name="msapplication-TileColor" content="#603cba"/> -- <meta name="msapplication-TileImage" content="../../favicons/mstile-144x144.png"/> -- <meta name="msapplication-config" content="../../favicons/browserconfig.xml"/> -- <meta name="theme-color" content="#303284"/> -- </head> -- <body onload="prettyPrint()"> -- <div id="wrap"> -- <div> -- -- <!-- Fixed navbar --> -- <div class="navbar navbar-default navbar-fixed-top" role="navigation"> -- <div class="container"> -- <div class="navbar-header"> -- <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> -- <span class="sr-only">Toggle navigation</span> -- <span class="icon-bar"></span> -- <span class="icon-bar"></span> -- <span class="icon-bar"></span> -- </button> - <a class="navbar-brand" href="../../index.html">Apache Tamaya (incubating)</a> - <a class="navbar-brand" href="../../">Apache Tamaya (incubating)</a> -- </div> -- <div class="navbar-collapse collapse"> -- <ul class="nav navbar-nav"> - <li><a href="../../start.html">Tamaya in 5 minutes</a></li> - <li><a href="../../index.html">Home</a></li> - <li><a href="../../about.html">About</a></li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../documentation/usecases.html">Use Cases and Requirements</a></li> -- <li><a href="../../documentation/quickstart.html">Quickstart</a></li> -- <li><a href="../../documentation/api.html">API</a></li> -- <li><a href="../../documentation/core.html">Core</a></li> -- <li><a href="../../documentation/extensions.html">Extension Guide</a></li> -- <li class="divider"></li> - <li><a href="../../apidocs/index.html">Javadoc {tamaya_version} (external)</a></li> - <li><a href="../../apidocs/index.html">Javadoc ${tamaya_version} (external)</a></li> -- </ul> -- </li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../development/source.html">Sources</a></li> -- <li><a href="../../development/community.html">Community</a></li> -- <li><a href="../../development/team.html">Project Team</a></li> - <li><a target="_blank" href="https://builds.apache.org/view/S-Z/view/Tamaya/">CI / ASF Jenkins</a></li> - <li><a target="_blank" href="https://issues.apache.org/jira/browse/TAMAYA">Issues / ASF Jira</a></li> -- <li><a href="../../devguide.html">Development Guide</a></li> -- <li><a href="../../release-guide.html">Release Guide</a></li> - <li class="divider"></li> - <li><a href="../../development/possible-contributions.html">Possible Contributions</a></li> -- </ul> -- </li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Releases <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../download.html">Download</a></li> -- <li><a href="../../history.html">Release History</a></li> -- </ul> -- </li> --<!-- Example: -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="#">Action</a></li> -- <li><a href="#">Another action</a></li> -- <li><a href="#">Something else here</a></li> -- <li class="divider"></li> -- <li class="dropdown-header">Nav header</li> -- <li><a href="#">Separated link</a></li> -- <li><a href="#">One more separated link</a></li> -- </ul> -- </li> ----> -- <li><a href="../../sitemap.xml">Sitemap</a></li> -- <li><a href="../../feed.xml">Subscribe</a></li> -- </ul> -- </div><!--/.nav-collapse --> -- </div> -- </div> -- -- </div> -- <div class="container"> -- -- <div class="page-header"> -- <h1>Apache Tamaya&#8201;&#8212;&#8201;Extension: Integration with consul (Hashicorp)</h1> -- </div> -- - <p><em>2016-12-18</em></p> - <p><em>2016-12-19</em></p> -- -- <p><div id="preamble"> --<div class="sectionbody"> --<!-- toc disabled --> --</div> --</div> --<div class="sect1"> --<h2 id="Optional">Integration with consul (Extension Module)</h2> --<div class="sectionbody"> --<div class="sect2"> --<h3 id="_overview">Overview</h3> --<div class="paragraph"> --<p>The Tamaya consul integration module provides different artifacts which allows integration of Apachae Tamaya --configuration with consul. Basically the module supports read-only integration (as a ConsulPropertySource as well --as a support for MutableConfiguration as defined by the tamaya-mutable-config extension module.</p> --</div> --</div> --<div class="sect2"> --<h3 id="_compatibility">Compatibility</h3> --<div class="paragraph"> --<p>The module is based on Java 7, so it will not run on Java 7 and beyond.</p> --</div> --</div> --<div class="sect2"> --<h3 id="_installation">Installation</h3> --<div class="paragraph"> --<p>To benefit from configuration builder support you only must add the corresponding dependency to your module:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><dependency> -- <groupId>org.apache.tamaya.ext</groupId> -- <artifactId>tamaya-consul</artifactId> -- <version>{tamaya_version}</version> --</dependency></code></pre> --</div> --</div> --</div> --<div class="sect2"> --<h3 id="_the_extensions_provided">The Extensions Provided</h3> --<div class="paragraph"> --<p>Consul integration comes basically with 2 artifacts:</p> --</div> --<div class="ulist"> --<ul> --<li> --<p>The org.apache.tamaya.etcd.ConsulPropertySource is a PropertySource with a default ordinal of 100 and the name --'consul', which is automatically registered.</p> --</li> --<li> --<p>If the tamaya-mutable-config module is loaded it is possible to write property values back into the consul cluster, --by accessing a MutableConfiguration using the URI config:consul.</p> --</li> --</ul> --</div> --</div> --<div class="sect2"> --<h3 id="_the_consulpropertysource">The ConsulPropertySource</h3> --<div class="paragraph"> --<p>The ConsulPropertySource is automatically registered and allows the consul servers to be used to be configured. This --enables to use e.g. in Docker environments the docker environment configuration mechanisms to configure Tamaya running --in microservice containers to connect with the according consul cluster:</p> --</div> --<div class="ulist"> --<ul> --<li> --<p>The property source reads the tamaya.consul.urls system and environment property to evaluate possible etcd servers --(comma separated), which can be connected to. On error the API just performs a Round-Robin through the list of --configured servers. Without any configuration http://127.0.0.1:2400 is used. If no connection to any consul --server can be established a warning will be logged, but deployment will not fail.</p> --</li> --<li> --<p>The ConsulPropertySource finally also allows the values read from the consul cluster to be mapped to prefixed --context. This can be activated by setting the -Dtamaya.consul.prefix=<PREFIX> system property. E.g. when the prefix is --set to cluster-config. a consul key of host:known/all is mapped to cluster-config.host:known/all.</p> --</li> --</ul> --</div> --</div> --</div> --</div></p> -- -- <hr /> -- </div> -- </div> -- <div> -- <div id="push"></div> -- -- <div id="footer"> -- <div class="container"> -- <p class="muted credit">© 2014-2016 Apache Software Foundation | Mixed with <a href="http://getbootstrap.com/">Bootstrap v3.1.1</a> -- | Baked with <a href="http://jbake.org">JBake <span>v2.5.0</span></a> -- at <span>2016-12-19</span> -- </p> -- <p> -- <b>Disclaimer</b> -- Apache Tamaya (incubating) is an effort undergoing -- incubation at -- The Apache Software Foundation (ASF), sponsored by -- the name of Apache Incubator. Incubation is required of -- all newly accepted projects until a further review indicates -- that the infrastructure, communications, and decision making -- process have stabilized in a manner consistent with other -- successful ASF projects. While incubation status is not -- necessarily a reflection of the completeness or stability of -- the code, it does indicate that the project has yet to -- be fully endorsed by the ASF.<br /> -- <a href="http://incubator.apache.org/guides/website.html" style="border:0px;" target="_target"><img class="incubator-logo" src="../../logos/egg-logo2.png"/></a> -- </p> -- </div> -- </div> -- -- <!-- Le javascript -- ================================================== --> -- <!-- Placed at the end of the document so the pages load faster --> -- <script src="../../js/jquery-1.11.1.min.js"></script> -- <script src="../../js/bootstrap.min.js"></script> -- <script src="../../js/prettify.js"></script> -- -- </div> -- </body> --</html> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/4f4912e5/documentation/extensions/mod_environment.html ---------------------------------------------------------------------- diff --cc documentation/extensions/mod_environment.html index ce312f6,7e242e6..0000000 deleted file mode 100644,100644 --- a/documentation/extensions/mod_environment.html +++ /dev/null @@@ -1,219 -1,216 +1,0 @@@ --<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -- --<html xmlns="http://www.w3.org/1999/xhtml"> -- <head> -- <meta charset="utf-8"/> -- <title>Apache Tamaya&#8201;&#8212;&#8201;Extension: Classloader Isolation Support</title> -- <meta name="viewport" content="width=device-width, initial-scale=1.0"/> -- <meta name="description" content=""/> -- <meta name="author" content=""/> -- <meta name="keywords" content=""/> -- <meta name="generator" content="'JBake '+'${version}"/> -- -- <!-- Le styles --> -- <link href="../../css/bootstrap.min.css" rel="stylesheet"/> -- <link href="../../css/asciidoctor.css" rel="stylesheet"/> -- <link href="../../css/base.css" rel="stylesheet"/> -- <link href="../../css/prettify.css" rel="stylesheet"/> -- -- <!-- HTML5 shim, for IE6-8 support of HTML5 elements --> -- <!--[if lt IE 9]> -- <script src="../../js/html5shiv.min.js"></script> -- <![endif]--> -- -- <!-- Fav and touch icons from ASF --> -- <link rel="shortcut icon" href="../../favicon.ico"/> -- <link rel="apple-touch-icon" sizes="57x57" href="../../favicons/apple-touch-icon-57x57.png"/> -- <link rel="apple-touch-icon" sizes="60x60" href="../../favicons/apple-touch-icon-60x60.png"/> -- <link rel="apple-touch-icon" sizes="72x72" href="../../favicons/apple-touch-icon-72x72.png"/> -- <link rel="apple-touch-icon" sizes="76x76" href="../../favicons/apple-touch-icon-76x76.png"/> -- <link rel="apple-touch-icon" sizes="114x114" href="../../favicons/apple-touch-icon-114x114.png"/> -- <link rel="apple-touch-icon" sizes="120x120" href="../../favicons/apple-touch-icon-120x120.png"/> -- <link rel="apple-touch-icon" sizes="144x144" href="../../favicons/apple-touch-icon-144x144.png"/> -- <link rel="apple-touch-icon" sizes="152x152" href="../../favicons/apple-touch-icon-152x152.png"/> -- <link rel="apple-touch-icon" sizes="180x180" href="../../favicons/apple-touch-icon-180x180.png"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-32x32.png" sizes="32x32"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-194x194.png" sizes="194x194"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-96x96.png" sizes="96x96"/> -- <link rel="icon" type="image/png" href="../../favicons/android-chrome-192x192.png" sizes="192x192"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-16x16.png" sizes="16x16"/> -- <link rel="manifest" href="../../favicons/manifest.json"/> -- <link rel="shortcut icon" href="../../favicons/favicon.ico"/> -- <meta name="msapplication-TileColor" content="#603cba"/> -- <meta name="msapplication-TileImage" content="../../favicons/mstile-144x144.png"/> -- <meta name="msapplication-config" content="../../favicons/browserconfig.xml"/> -- <meta name="theme-color" content="#303284"/> -- </head> -- <body onload="prettyPrint()"> -- <div id="wrap"> -- <div> -- -- <!-- Fixed navbar --> -- <div class="navbar navbar-default navbar-fixed-top" role="navigation"> -- <div class="container"> -- <div class="navbar-header"> -- <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> -- <span class="sr-only">Toggle navigation</span> -- <span class="icon-bar"></span> -- <span class="icon-bar"></span> -- <span class="icon-bar"></span> -- </button> - <a class="navbar-brand" href="../../index.html">Apache Tamaya (incubating)</a> - <a class="navbar-brand" href="../../">Apache Tamaya (incubating)</a> -- </div> -- <div class="navbar-collapse collapse"> -- <ul class="nav navbar-nav"> - <li><a href="../../start.html">Tamaya in 5 minutes</a></li> - <li><a href="../../index.html">Home</a></li> - <li><a href="../../about.html">About</a></li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../documentation/usecases.html">Use Cases and Requirements</a></li> -- <li><a href="../../documentation/quickstart.html">Quickstart</a></li> -- <li><a href="../../documentation/api.html">API</a></li> -- <li><a href="../../documentation/core.html">Core</a></li> -- <li><a href="../../documentation/extensions.html">Extension Guide</a></li> -- <li class="divider"></li> - <li><a href="../../apidocs/index.html">Javadoc {tamaya_version} (external)</a></li> - <li><a href="../../apidocs/index.html">Javadoc ${tamaya_version} (external)</a></li> -- </ul> -- </li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../development/source.html">Sources</a></li> -- <li><a href="../../development/community.html">Community</a></li> -- <li><a href="../../development/team.html">Project Team</a></li> - <li><a target="_blank" href="https://builds.apache.org/view/S-Z/view/Tamaya/">CI / ASF Jenkins</a></li> - <li><a target="_blank" href="https://issues.apache.org/jira/browse/TAMAYA">Issues / ASF Jira</a></li> -- <li><a href="../../devguide.html">Development Guide</a></li> -- <li><a href="../../release-guide.html">Release Guide</a></li> - <li class="divider"></li> - <li><a href="../../development/possible-contributions.html">Possible Contributions</a></li> -- </ul> -- </li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Releases <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../download.html">Download</a></li> -- <li><a href="../../history.html">Release History</a></li> -- </ul> -- </li> --<!-- Example: -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="#">Action</a></li> -- <li><a href="#">Another action</a></li> -- <li><a href="#">Something else here</a></li> -- <li class="divider"></li> -- <li class="dropdown-header">Nav header</li> -- <li><a href="#">Separated link</a></li> -- <li><a href="#">One more separated link</a></li> -- </ul> -- </li> ----> -- <li><a href="../../sitemap.xml">Sitemap</a></li> -- <li><a href="../../feed.xml">Subscribe</a></li> -- </ul> -- </div><!--/.nav-collapse --> -- </div> -- </div> -- -- </div> -- <div class="container"> -- -- <div class="page-header"> -- <h1>Apache Tamaya&#8201;&#8212;&#8201;Extension: Classloader Isolation Support</h1> -- </div> -- - <p><em>2016-12-18</em></p> - <p><em>2016-12-19</em></p> -- -- <p><div id="preamble"> --<div class="sectionbody"> --<!-- toc disabled --> --</div> --</div> --<div class="sect1"> --<h2 id="Remote">Tamaya Environment Model (Extension Module)</h2> --<div class="sectionbody"> --<div class="sect2"> --<h3 id="_overview">Overview</h3> --<div class="paragraph"> --<p>The Tamaya Environment extension adds a simple PropertySourceProvider that evaluates a List of environment context and --combines them in the given order into an (optional) root context within the system’s configuration.</p> --</div> --</div> --<div class="sect2"> --<h3 id="_compatibility">Compatibility</h3> --<div class="paragraph"> --<p>The module is based on Java 7, so it will not run on Java 7 and beyond.</p> --</div> --</div> --<div class="sect2"> --<h3 id="_installation">Installation</h3> --<div class="paragraph"> --<p>To benefit from Tamaya Environment Model you only must add the corresponding dependency to your module:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><dependency> -- <groupId>org.apache.tamaya.ext</groupId> -- <artifactId>tamaya-envionment</artifactId> -- <version>{tamaya_version}</version> --</dependency></code></pre> --</div> --</div> --</div> --<div class="sect2"> --<h3 id="_how_it_works">How it Works</h3> --<div class="paragraph"> --<p>tbd</p> --</div> --</div> --<div class="sect2"> --<h3 id="_reusable_base_classes">Reusable Base Classes</h3> --<div class="paragraph"> --<p>tbd</p> --</div> --</div> --</div> --</div></p> -- -- <hr /> -- </div> -- </div> -- <div> -- <div id="push"></div> -- -- <div id="footer"> -- <div class="container"> -- <p class="muted credit">© 2014-2016 Apache Software Foundation | Mixed with <a href="http://getbootstrap.com/">Bootstrap v3.1.1</a> -- | Baked with <a href="http://jbake.org">JBake <span>v2.5.0</span></a> -- at <span>2016-12-19</span> -- </p> -- <p> -- <b>Disclaimer</b> -- Apache Tamaya (incubating) is an effort undergoing -- incubation at -- The Apache Software Foundation (ASF), sponsored by -- the name of Apache Incubator. Incubation is required of -- all newly accepted projects until a further review indicates -- that the infrastructure, communications, and decision making -- process have stabilized in a manner consistent with other -- successful ASF projects. While incubation status is not -- necessarily a reflection of the completeness or stability of -- the code, it does indicate that the project has yet to -- be fully endorsed by the ASF.<br /> -- <a href="http://incubator.apache.org/guides/website.html" style="border:0px;" target="_target"><img class="incubator-logo" src="../../logos/egg-logo2.png"/></a> -- </p> -- </div> -- </div> -- -- <!-- Le javascript -- ================================================== --> -- <!-- Placed at the end of the document so the pages load faster --> -- <script src="../../js/jquery-1.11.1.min.js"></script> -- <script src="../../js/bootstrap.min.js"></script> -- <script src="../../js/prettify.js"></script> -- -- </div> -- </body> --</html> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/4f4912e5/documentation/extensions/mod_etcd.html ---------------------------------------------------------------------- diff --cc documentation/extensions/mod_etcd.html index 619aae4,e370118..0000000 deleted file mode 100644,100644 --- a/documentation/extensions/mod_etcd.html +++ /dev/null @@@ -1,385 -1,382 +1,0 @@@ --<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -- --<html xmlns="http://www.w3.org/1999/xhtml"> -- <head> -- <meta charset="utf-8"/> -- <title>Apache Tamaya&#8201;&#8212;&#8201;Extension: Integration with etcd (Core OS)</title> -- <meta name="viewport" content="width=device-width, initial-scale=1.0"/> -- <meta name="description" content=""/> -- <meta name="author" content=""/> -- <meta name="keywords" content=""/> -- <meta name="generator" content="'JBake '+'${version}"/> -- -- <!-- Le styles --> -- <link href="../../css/bootstrap.min.css" rel="stylesheet"/> -- <link href="../../css/asciidoctor.css" rel="stylesheet"/> -- <link href="../../css/base.css" rel="stylesheet"/> -- <link href="../../css/prettify.css" rel="stylesheet"/> -- -- <!-- HTML5 shim, for IE6-8 support of HTML5 elements --> -- <!--[if lt IE 9]> -- <script src="../../js/html5shiv.min.js"></script> -- <![endif]--> -- -- <!-- Fav and touch icons from ASF --> -- <link rel="shortcut icon" href="../../favicon.ico"/> -- <link rel="apple-touch-icon" sizes="57x57" href="../../favicons/apple-touch-icon-57x57.png"/> -- <link rel="apple-touch-icon" sizes="60x60" href="../../favicons/apple-touch-icon-60x60.png"/> -- <link rel="apple-touch-icon" sizes="72x72" href="../../favicons/apple-touch-icon-72x72.png"/> -- <link rel="apple-touch-icon" sizes="76x76" href="../../favicons/apple-touch-icon-76x76.png"/> -- <link rel="apple-touch-icon" sizes="114x114" href="../../favicons/apple-touch-icon-114x114.png"/> -- <link rel="apple-touch-icon" sizes="120x120" href="../../favicons/apple-touch-icon-120x120.png"/> -- <link rel="apple-touch-icon" sizes="144x144" href="../../favicons/apple-touch-icon-144x144.png"/> -- <link rel="apple-touch-icon" sizes="152x152" href="../../favicons/apple-touch-icon-152x152.png"/> -- <link rel="apple-touch-icon" sizes="180x180" href="../../favicons/apple-touch-icon-180x180.png"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-32x32.png" sizes="32x32"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-194x194.png" sizes="194x194"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-96x96.png" sizes="96x96"/> -- <link rel="icon" type="image/png" href="../../favicons/android-chrome-192x192.png" sizes="192x192"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-16x16.png" sizes="16x16"/> -- <link rel="manifest" href="../../favicons/manifest.json"/> -- <link rel="shortcut icon" href="../../favicons/favicon.ico"/> -- <meta name="msapplication-TileColor" content="#603cba"/> -- <meta name="msapplication-TileImage" content="../../favicons/mstile-144x144.png"/> -- <meta name="msapplication-config" content="../../favicons/browserconfig.xml"/> -- <meta name="theme-color" content="#303284"/> -- </head> -- <body onload="prettyPrint()"> -- <div id="wrap"> -- <div> -- -- <!-- Fixed navbar --> -- <div class="navbar navbar-default navbar-fixed-top" role="navigation"> -- <div class="container"> -- <div class="navbar-header"> -- <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> -- <span class="sr-only">Toggle navigation</span> -- <span class="icon-bar"></span> -- <span class="icon-bar"></span> -- <span class="icon-bar"></span> -- </button> - <a class="navbar-brand" href="../../index.html">Apache Tamaya (incubating)</a> - <a class="navbar-brand" href="../../">Apache Tamaya (incubating)</a> -- </div> -- <div class="navbar-collapse collapse"> -- <ul class="nav navbar-nav"> - <li><a href="../../start.html">Tamaya in 5 minutes</a></li> - <li><a href="../../index.html">Home</a></li> - <li><a href="../../about.html">About</a></li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../documentation/usecases.html">Use Cases and Requirements</a></li> -- <li><a href="../../documentation/quickstart.html">Quickstart</a></li> -- <li><a href="../../documentation/api.html">API</a></li> -- <li><a href="../../documentation/core.html">Core</a></li> -- <li><a href="../../documentation/extensions.html">Extension Guide</a></li> -- <li class="divider"></li> - <li><a href="../../apidocs/index.html">Javadoc {tamaya_version} (external)</a></li> - <li><a href="../../apidocs/index.html">Javadoc ${tamaya_version} (external)</a></li> -- </ul> -- </li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../development/source.html">Sources</a></li> -- <li><a href="../../development/community.html">Community</a></li> -- <li><a href="../../development/team.html">Project Team</a></li> - <li><a target="_blank" href="https://builds.apache.org/view/S-Z/view/Tamaya/">CI / ASF Jenkins</a></li> - <li><a target="_blank" href="https://issues.apache.org/jira/browse/TAMAYA">Issues / ASF Jira</a></li> -- <li><a href="../../devguide.html">Development Guide</a></li> -- <li><a href="../../release-guide.html">Release Guide</a></li> - <li class="divider"></li> - <li><a href="../../development/possible-contributions.html">Possible Contributions</a></li> -- </ul> -- </li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Releases <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../download.html">Download</a></li> -- <li><a href="../../history.html">Release History</a></li> -- </ul> -- </li> --<!-- Example: -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="#">Action</a></li> -- <li><a href="#">Another action</a></li> -- <li><a href="#">Something else here</a></li> -- <li class="divider"></li> -- <li class="dropdown-header">Nav header</li> -- <li><a href="#">Separated link</a></li> -- <li><a href="#">One more separated link</a></li> -- </ul> -- </li> ----> -- <li><a href="../../sitemap.xml">Sitemap</a></li> -- <li><a href="../../feed.xml">Subscribe</a></li> -- </ul> -- </div><!--/.nav-collapse --> -- </div> -- </div> -- -- </div> -- <div class="container"> -- -- <div class="page-header"> -- <h1>Apache Tamaya&#8201;&#8212;&#8201;Extension: Integration with etcd (Core OS)</h1> -- </div> -- - <p><em>2016-12-18</em></p> - <p><em>2016-12-19</em></p> -- -- <p><div id="preamble"> --<div class="sectionbody"> --<!-- toc disabled --> --</div> --</div> --<div class="sect1"> --<h2 id="Optional">Integration with etcd (Extension Module)</h2> --<div class="sectionbody"> --<div class="sect2"> --<h3 id="_overview">Overview</h3> --<div class="paragraph"> --<p>The Tamaya etcd integration module provides different artifacts which allows integration of Apachae Tamaya --configuration with etcd. Basically the module supports read-only integration (as a EtcdPropertySource as well --as a support for MutableConfiguration as defined by the tamaya-mutable-config extension module.</p> --</div> --</div> --<div class="sect2"> --<h3 id="_compatibility">Compatibility</h3> --<div class="paragraph"> --<p>The module is based on Java 7, so it will not run on Java 7 and beyond.</p> --</div> --</div> --<div class="sect2"> --<h3 id="_installation">Installation</h3> --<div class="paragraph"> --<p>To benefit from configuration builder support you only must add the corresponding dependency to your module:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><dependency> -- <groupId>org.apache.tamaya.ext</groupId> -- <artifactId>tamaya-etcd</artifactId> -- <version>{tamaya_version}</version> --</dependency></code></pre> --</div> --</div> --</div> --<div class="sect2"> --<h3 id="_the_extensions_provided">The Extensions Provided</h3> --<div class="paragraph"> --<p>ETcd integration comes basically with 2 artifacts:</p> --</div> --<div class="ulist"> --<ul> --<li> --<p>The org.apache.tamaya.etcd.EtcdAccessor can be configured with a an url targeting an etcd server’s REST endpoint root. --(org.apache.tamaya.etcd.EtcdAccessor). The accessor basically provides a simple Java API for communicating --with etcd server. The accessor hereby allows reading of single properties, or whole subtrees. Also the basic non --atomic write methods are implemented.</p> --</li> --<li> --<p>The org.apache.tamaya.etcd.EtcdPropertySource is a PropertySource with a default ordinal of 100 and the name --'etcd', which is automatically registered.</p> --</li> --<li> --<p>If the tamaya-mutable-config module is loaded it is possible to write property values back into the etcd cluster, --by accessing a MutableConfiguration using the URI config:etcd.</p> --</li> --</ul> --</div> --</div> --<div class="sect2"> --<h3 id="_the_etcdaccessor">The EtcdAccessor</h3> --<div class="paragraph"> --<p>The accessor mentioned implements the basic read and write API for communicating with an etcd configuration cluster. --Hereby the accessor also provides etcd specific data such as createdIndex, modifiedIndex, ttl in the Map --returned. Hereby the concept of etcd is used where keys starting with an '_' will be hidden from the overall --properties map, being only directly/explicitly accessible:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public class EtcdAccessor { -- -- /** -- * Creates a new instance with the basic access url. -- * @param server server url, e.g. {@code http://127.0.0.1:4001}. -- * @throws MalformedURLException -- */ -- public EtcdAccessor(String server) throws MalformedURLException; -- -- /** -- * Get the etcd server version. -- * @return the etcd server version, never null. -- */ -- public String getVersion(); -- -- /** -- * Ask etcd for s aingle key, value pair. Hereby the response returned from etcd: -- * <pre> -- * key=value -- * _key.source=[etcd]http://127.0.0.1:4001 -- * _key.createdIndex=12 -- * _key.modifiedIndex=34 // optional -- * _key.ttl=300 // optional -- * _key.expiration=... // optional -- * </pre> -- * @param key the requested key -- * @return the mapped result, including meta-entries. -- */ -- public Map<String,String> get(String key); -- -- /** -- * Creates/updates an entry in etcd without any ttl set. -- * The response is as follows: -- * <pre> -- * key=value -- * _key.source=[etcd]http://127.0.0.1:4001 -- * _key.createdIndex=12 -- * _key.modifiedIndex=34 // optional -- * _key.prevNode.createdIndex=12 // optional -- * _key.prevNode.modifiedIndex=34 // optional -- * </pre> -- * @param key the property key, not null -- * @param value the value to be set -- * @return the result map as described above. -- */ -- public Map<String,String> set(String key, String value); -- -- /** -- * Creates/updates an entry in etcd. The response is as follows: -- * <pre> -- * key=value -- * _key.source=[etcd]http://127.0.0.1:4001 -- * _key.createdIndex=12 -- * _key.modifiedIndex=34 // optional -- * _key.ttl=300 // optional -- * _key.expiry=... // optional -- * _key.prevNode.createdIndex=12 // optional -- * _key.prevNode.modifiedIndex=34 // optional -- * _key.prevNode.ttl=300 // optional -- * _key.prevNode.expiration=... // optional -- * </pre> -- * @param key the property key, not null -- * @param value the value to be set -- * @param ttlSeconds the ttl in seconds (optional) -- * @return the result map as described above. -- */ -- public Map<String,String> set(String key, String value, Integer ttlSeconds); -- -- -- /** -- * Deletes a given key. The response is as follows: -- * <pre> -- * _key.source=[etcd]http://127.0.0.1:4001 -- * _key.createdIndex=12 -- * _key.modifiedIndex=34 -- * _key.ttl=300 // optional -- * _key.expiry=... // optional -- * _key.prevNode.createdIndex=12 // optional -- * _key.prevNode.modifiedIndex=34 // optional -- * _key.prevNode.ttl=300 // optional -- * _key.prevNode.expiration=... // optional -- * _key.prevNode.value=... // optional -- * </pre> -- * @param key the key to be deleted. -- * @return the response mpas as described above. -- */ -- public Map<String,String> delete(String key); -- -- -- /** -- * Access regular Tamaya properties map as follows: -- * <pre> -- * key1=myvalue -- * _key1.source=[etcd]http://127.0.0.1:4001 -- * _key1.createdIndex=12 -- * _key1.modifiedIndex=34 // optional -- * _key1.ttl=300 // optional -- * _key1.expiration=... // optional -- * -- * key2=myvaluexxx -- * _key2.source=[etcd]http://127.0.0.1:4001 -- * _key2.createdIndex=12 -- * -- * key3=val3 -- * _key3.source=[etcd]http://127.0.0.1:4001 -- * _key3.createdIndex=12 -- * _key3.modifiedIndex=2 -- * </pre> -- */ -- public Map<String,String> getProperties(String directory, boolean recursive); -- --}</code></pre> --</div> --</div> --</div> --<div class="sect2"> --<h3 id="_the_etcdpropertysource">The EtcdPropertySource</h3> --<div class="paragraph"> --<p>The EtcdPropertySource is automatically registered and allows to configure the etcd servers to be used. This --enables to use e.g. in Docker environments the docker environment configuration mechanisms to configure Tamaya running --in microservice containers to connect with the according etcd cluster:</p> --</div> --<div class="ulist"> --<ul> --<li> --<p>The property source reads the tamaya.etcd.server.urls system and environment property to evaluate possible etcd servers --(comma separated), which can be connected to. On error the API just performs a Round-Robin through the list of --configured servers. Without any configuration http://127.0.0.1:4001 is used. If no connection to any etcd --server can be established a warning will be logged, but deployment will not fail.</p> --</li> --<li> --<p>Additinoally also the --accessor allows to configure the socket/connection timeouts by setting tamaya.etcd.timeout in seconds either as --system or environment property.</p> --</li> --<li> --<p>The EtcdPropertySource finally also allows the values read from the etcd cluster to be mapped to prefixed --context. This can be activated by setting the -Dtamaya.etcd.prefix=<PREFIX> system property. E.g. when the prefix is --set to cluster-config. a etcd key of host:known/all is mapped to cluster-config.host:known/all.</p> --</li> --</ul> --</div> --</div> --</div> --</div></p> -- -- <hr /> -- </div> -- </div> -- <div> -- <div id="push"></div> -- -- <div id="footer"> -- <div class="container"> -- <p class="muted credit">© 2014-2016 Apache Software Foundation | Mixed with <a href="http://getbootstrap.com/">Bootstrap v3.1.1</a> -- | Baked with <a href="http://jbake.org">JBake <span>v2.5.0</span></a> -- at <span>2016-12-19</span> -- </p> -- <p> -- <b>Disclaimer</b> -- Apache Tamaya (incubating) is an effort undergoing -- incubation at -- The Apache Software Foundation (ASF), sponsored by -- the name of Apache Incubator. Incubation is required of -- all newly accepted projects until a further review indicates -- that the infrastructure, communications, and decision making -- process have stabilized in a manner consistent with other -- successful ASF projects. While incubation status is not -- necessarily a reflection of the completeness or stability of -- the code, it does indicate that the project has yet to -- be fully endorsed by the ASF.<br /> -- <a href="http://incubator.apache.org/guides/website.html" style="border:0px;" target="_target"><img class="incubator-logo" src="../../logos/egg-logo2.png"/></a> -- </p> -- </div> -- </div> -- -- <!-- Le javascript -- ================================================== --> -- <!-- Placed at the end of the document so the pages load faster --> -- <script src="../../js/jquery-1.11.1.min.js"></script> -- <script src="../../js/bootstrap.min.js"></script> -- <script src="../../js/prettify.js"></script> -- -- </div> -- </body> --</html> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/4f4912e5/documentation/extensions/mod_events.html ---------------------------------------------------------------------- diff --cc documentation/extensions/mod_events.html index 4bc8450,fce5e20..0000000 deleted file mode 100644,100644 --- a/documentation/extensions/mod_events.html +++ /dev/null @@@ -1,508 -1,505 +1,0 @@@ --<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -- --<html xmlns="http://www.w3.org/1999/xhtml"> -- <head> -- <meta charset="utf-8"/> -- <title>Apache Tamaya&#8201;&#8212;&#8201;Extension: Events</title> -- <meta name="viewport" content="width=device-width, initial-scale=1.0"/> -- <meta name="description" content=""/> -- <meta name="author" content=""/> -- <meta name="keywords" content=""/> -- <meta name="generator" content="'JBake '+'${version}"/> -- -- <!-- Le styles --> -- <link href="../../css/bootstrap.min.css" rel="stylesheet"/> -- <link href="../../css/asciidoctor.css" rel="stylesheet"/> -- <link href="../../css/base.css" rel="stylesheet"/> -- <link href="../../css/prettify.css" rel="stylesheet"/> -- -- <!-- HTML5 shim, for IE6-8 support of HTML5 elements --> -- <!--[if lt IE 9]> -- <script src="../../js/html5shiv.min.js"></script> -- <![endif]--> -- -- <!-- Fav and touch icons from ASF --> -- <link rel="shortcut icon" href="../../favicon.ico"/> -- <link rel="apple-touch-icon" sizes="57x57" href="../../favicons/apple-touch-icon-57x57.png"/> -- <link rel="apple-touch-icon" sizes="60x60" href="../../favicons/apple-touch-icon-60x60.png"/> -- <link rel="apple-touch-icon" sizes="72x72" href="../../favicons/apple-touch-icon-72x72.png"/> -- <link rel="apple-touch-icon" sizes="76x76" href="../../favicons/apple-touch-icon-76x76.png"/> -- <link rel="apple-touch-icon" sizes="114x114" href="../../favicons/apple-touch-icon-114x114.png"/> -- <link rel="apple-touch-icon" sizes="120x120" href="../../favicons/apple-touch-icon-120x120.png"/> -- <link rel="apple-touch-icon" sizes="144x144" href="../../favicons/apple-touch-icon-144x144.png"/> -- <link rel="apple-touch-icon" sizes="152x152" href="../../favicons/apple-touch-icon-152x152.png"/> -- <link rel="apple-touch-icon" sizes="180x180" href="../../favicons/apple-touch-icon-180x180.png"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-32x32.png" sizes="32x32"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-194x194.png" sizes="194x194"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-96x96.png" sizes="96x96"/> -- <link rel="icon" type="image/png" href="../../favicons/android-chrome-192x192.png" sizes="192x192"/> -- <link rel="icon" type="image/png" href="../../favicons/favicon-16x16.png" sizes="16x16"/> -- <link rel="manifest" href="../../favicons/manifest.json"/> -- <link rel="shortcut icon" href="../../favicons/favicon.ico"/> -- <meta name="msapplication-TileColor" content="#603cba"/> -- <meta name="msapplication-TileImage" content="../../favicons/mstile-144x144.png"/> -- <meta name="msapplication-config" content="../../favicons/browserconfig.xml"/> -- <meta name="theme-color" content="#303284"/> -- </head> -- <body onload="prettyPrint()"> -- <div id="wrap"> -- <div> -- -- <!-- Fixed navbar --> -- <div class="navbar navbar-default navbar-fixed-top" role="navigation"> -- <div class="container"> -- <div class="navbar-header"> -- <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> -- <span class="sr-only">Toggle navigation</span> -- <span class="icon-bar"></span> -- <span class="icon-bar"></span> -- <span class="icon-bar"></span> -- </button> - <a class="navbar-brand" href="../../index.html">Apache Tamaya (incubating)</a> - <a class="navbar-brand" href="../../">Apache Tamaya (incubating)</a> -- </div> -- <div class="navbar-collapse collapse"> -- <ul class="nav navbar-nav"> - <li><a href="../../start.html">Tamaya in 5 minutes</a></li> - <li><a href="../../index.html">Home</a></li> - <li><a href="../../about.html">About</a></li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../documentation/usecases.html">Use Cases and Requirements</a></li> -- <li><a href="../../documentation/quickstart.html">Quickstart</a></li> -- <li><a href="../../documentation/api.html">API</a></li> -- <li><a href="../../documentation/core.html">Core</a></li> -- <li><a href="../../documentation/extensions.html">Extension Guide</a></li> -- <li class="divider"></li> - <li><a href="../../apidocs/index.html">Javadoc {tamaya_version} (external)</a></li> - <li><a href="../../apidocs/index.html">Javadoc ${tamaya_version} (external)</a></li> -- </ul> -- </li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../development/source.html">Sources</a></li> -- <li><a href="../../development/community.html">Community</a></li> -- <li><a href="../../development/team.html">Project Team</a></li> - <li><a target="_blank" href="https://builds.apache.org/view/S-Z/view/Tamaya/">CI / ASF Jenkins</a></li> - <li><a target="_blank" href="https://issues.apache.org/jira/browse/TAMAYA">Issues / ASF Jira</a></li> -- <li><a href="../../devguide.html">Development Guide</a></li> -- <li><a href="../../release-guide.html">Release Guide</a></li> - <li class="divider"></li> - <li><a href="../../development/possible-contributions.html">Possible Contributions</a></li> -- </ul> -- </li> -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Releases <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="../../download.html">Download</a></li> -- <li><a href="../../history.html">Release History</a></li> -- </ul> -- </li> --<!-- Example: -- <li class="dropdown"> -- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> -- <ul class="dropdown-menu"> -- <li><a href="#">Action</a></li> -- <li><a href="#">Another action</a></li> -- <li><a href="#">Something else here</a></li> -- <li class="divider"></li> -- <li class="dropdown-header">Nav header</li> -- <li><a href="#">Separated link</a></li> -- <li><a href="#">One more separated link</a></li> -- </ul> -- </li> ----> -- <li><a href="../../sitemap.xml">Sitemap</a></li> -- <li><a href="../../feed.xml">Subscribe</a></li> -- </ul> -- </div><!--/.nav-collapse --> -- </div> -- </div> -- -- </div> -- <div class="container"> -- -- <div class="page-header"> -- <h1>Apache Tamaya&#8201;&#8212;&#8201;Extension: Events</h1> -- </div> -- - <p><em>2016-12-18</em></p> - <p><em>2016-12-19</em></p> -- -- <p><div id="preamble"> --<div class="sectionbody"> --<!-- toc disabled --> --</div> --</div> --<div class="sect1"> --<h2 id="Core">Tamaya Events (Extension Module)</h2> --<div class="sectionbody"> --<div class="sect2"> --<h3 id="_overview">Overview</h3> --<div class="paragraph"> --<p>Tamaya Events is an extension module. Refer to the <a href="modules.html">extensions documentation</a> for further details --about modules.</p> --</div> --<div class="paragraph"> --<p>Tamaya Events provides an abstraction for events like change events, when configuration has been changed.</p> --</div> --</div> --<div class="sect2"> --<h3 id="_compatibility">Compatibility</h3> --<div class="paragraph"> --<p>The module is based on Java 7, so it can be used with Java 7 and beyond.</p> --</div> --</div> --<div class="sect2"> --<h3 id="_installation">Installation</h3> --<div class="paragraph"> --<p>To benefit from configuration event support you only must add the corresponding dependency to your module:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><dependency> -- <groupId>org.apache.tamaya.ext</groupId> -- <artifactId>tamaya-events</artifactId> -- <version>{tamaya_version}</version> --</dependency></code></pre> --</div> --</div> --</div> --<div class="sect2"> --<h3 id="_core_architecture">Core Architecture</h3> --<div class="paragraph"> --<p>The core of the module are the ConfigEventListener interface and the ConfigEvent class, which defines an abstraction --for event handling and observation:</p> --</div> --<div class="listingblock"> --<div class="title">ConfigEvent</div> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public final interface ConfigEvent<T> { -- -- Class<T> getResourceType(); -- T getResource(); -- String getVersion(); -- long getTimestamp(); --} -- --// @FunctionalInterface --public interface ConfigEventListener { -- -- void onConfigEvent(ConfigEvent<?> event); -- --}</code></pre> --</div> --</div> --<div class="paragraph"> --<p>This mechanism can now be used to propagate configuration changes to all interested stakeholders. Hereby the payload --can be basically arbitrary as long as it implements the ConfigEvent interface. The next sections --give more details on the the provided event types and their usage.</p> --</div> --</div> --<div class="sect2"> --<h3 id="_modelling_configuration_changes">Modelling Configuration Changes</h3> --<div class="paragraph"> --<p>This module provides a serializable and thread-safe abstraction modlling a configuration change. A change hereby may --be</p> --</div> --<div class="ulist"> --<ul> --<li> --<p>additional configuration entries</p> --</li> --<li> --<p>removed configuration entries</p> --</li> --<li> --<p>changes on entries</p> --</li> --</ul> --</div> --<div class="paragraph"> --<p>The most important event modelled is the ConfigurationChange class, which implements the event sent for a changed --Configuration:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public final class ConfigurationChange implements ConfigEvent<Configuration>, Serializable{ -- -- public static ConfigurationChange emptyChangeSet(Configuration configuration); -- -- @Override -- public Configuration getResource(); -- @Override -- public Class<Configuration> getResourceType(); -- @Override -- public String getVersion(); -- @Override -- public long getTimestamp(); -- -- // Event specific methods -- -- public Collection<PropertyChangeEvent> getChanges(); -- public int getRemovedSize(); -- public int getAddedSize(); -- public int getUpdatedSize(); -- -- public boolean isKeyAffected(String key); -- public boolean isRemoved(String key); -- public boolean isAdded(String key); -- public boolean isUpdated(String key); -- public boolean containsKey(String key); -- public boolean isEmpty(); --}</code></pre> --</div> --</div> --<div class="paragraph"> --<p>New instances of this class hereby can be created using a fluent builder:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-java" data-lang="java">Configuration config = ...; --ConfigurationChange change = ConfigurationChangeBuilder.of(config) -- .addChange("MyKey", "newValue") -- .removeKeys("myRemovedKey").build();</code></pre> --</div> --</div> --<div class="paragraph"> --<p>Also it is possible to directly compare 2 instances of configurations to create ConfigurationChange that --reflect the differences between the two configurations:</p> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-java" data-lang="java">Comparing 2 configurations --------------------------------------------------------- --Configuration config = ...; --Configuration changedConfig = ...; --ConfigurationChange change = ConfigurationChangeBuilder.of(config) -- .addChanges(changedConfig).build(); ---------------------------------------------------------</code></pre> --</div> --</div> --<div class="paragraph"> --<p>So a ConfigurationChange allows you to evaluate the changes on a configuration. This allows you to listen to changes --and react in your client code as useful, once you encounter changes that are relevant to you, e.g. by reconfiguring --your component. For listening to configuration changes you must implement the --ConfigEventListener functional interface:</p> --</div> --<div class="listingblock"> --<div class="title">Implementing a ConfigChangeListener</div> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public final class MyConfigChangeListener implements ConfigChangeListener<ConfigurationChange>{ -- -- private Configuration config = ConfigurationProvider.getConfiguration(); -- -- public void onConfigEvent(ConfigEvent<?> event){ -- if(event.getResourceTspe()==Configuration.class){ -- if(event.getConfiguration()==config){ -- // do something -- } -- } -- } -- --}</code></pre> --</div> --</div> --<div class="paragraph"> --<p>You can <strong>register</strong> your implementation in 2 ways:</p> --</div> --<div class="olist arabic"> --<ol class="arabic"> --<li> --<p>Manually by calling ConfigEventManager.addListener(new MyConfigChangeListener())</p> --</li> --<li> --<p>Automatically by registering your listener using the ServiceLoader under --META-INF/services/org.apache.tamaya.events.ConfigEventListener</p> --</li> --</ol> --</div> --</div> --<div class="sect2"> --<h3 id="_modelling_propertysource_changes">Modelling PropertySource Changes</h3> --<div class="paragraph"> --<p>Beside that a whole configuration changes, also PropertySource instances can change, e.g. by a configuration file --edited on the fly. This is similarly to a ConfigurationChange reflected by the classes PropertySourceChange, --PropertySourceChangeBuilder.</p> --</div> --</div> --<div class="sect2"> --<h3 id="_the_configeventmanager_singleton">The ConfigEventManager Singleton</h3> --<div class="paragraph"> --<p>Main entry point of the events module is the ConfigEventManager singleton class, which provides static accessor --methods to the extension’s functionality:</p> --</div> --<div class="ulist"> --<ul> --<li> --<p>Adding/removing of ConfigChangeListener instances, either globally or per event type.</p> --</li> --<li> --<p>Firing configuration events synchronously or asyncronously (mostly called by framework code).</p> --</li> --<li> --<p>Configuring the monitor that periodically checks for changes on the global Configuration provided --by ConfigurationProvider.getConfiguration().</p> --</li> --</ul> --</div> --<div class="listingblock"> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public final class ConfigEventManager { -- -- private ConfigEventManager() {} -- -- public static void addListener(ConfigEventListener l); -- public static <T extends ConfigEvent> void addListener(ConfigEventListener l, Class<T> eventType); -- public static void removeListener(ConfigEventListener l); -- public static <T extends ConfigEvent> void removeListener(ConfigEventListener l, Class<T> eventType); -- public static <T extends ConfigEvent> -- Collection<? extends ConfigEventListener> getListeners(); -- public static <T extends ConfigEvent> -- Collection<? extends ConfigEventListener> getListeners(Class<T> type); -- -- public static <T> void fireEvent(ConfigEvent<?> event); -- public static <T> void fireEventAsynch(ConfigEvent<?> event); -- -- public static void enableChangeMonitoring(boolean enable); -- public static boolean isChangeMonitoring(); -- public long getChangeMonitoringPeriod(); -- public void setChangeMonitoringPeriod(long millis); -- --}</code></pre> --</div> --</div> --<div class="sect3"> --<h4 id="_monitoring_of_configuration_changes">Monitoring of configuration changes</h4> --<div class="paragraph"> --<p>The ConfigEventManager also supports active monitoring of the current configuration to trigger corresponding change --events to listeners registered. This feature is deactivated by default, but can be enabled by calling --ConfigEventManager.enableChangeMonitoring(true);. This feature avoids regularly polling your local Configuration for --any kind of changes. If a change has been encountered Tamaya identifies it and triggers corresponding --ConfigurationChange events automatically.</p> --</div> --</div> --</div> --<div class="sect2"> --<h3 id="_freezing_configurations_and_propertysources">Freezing Configurations and PropertySources</h3> --<div class="paragraph"> --<p>Configuration instances as well as PropertySources are explicitly not required to be serializable. To enable easy --serialization of these types a Configuration's <strong>current state can be frozen</strong> (e.g. for later comparison with a newly --loaded version). Freezing hereby means</p> --</div> --<div class="ulist"> --<ul> --<li> --<p>all key/values are read-out by calling the getProperties() method.</p> --</li> --<li> --<p>a meta data entry is added of the form _frozenAt=223273777652325677, whichdefines the UTC timestamp in --milliseconds when this instance was frozen.</p> --</li> --<li> --<p>if not already defined an _id property will be added to the Configuration containing the --identifier of the configuration.</p> --</li> --</ul> --</div> --<div class="paragraph"> --<p>In code freezing is a no-brainer:</p> --</div> --<div class="listingblock"> --<div class="title">Freezing the current Configuration</div> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-java" data-lang="java">Configuration config = ConfigurationProvider.getConfiguration(); --Configuration frozenConfig = FrozenConfiguration.of(config);</code></pre> --</div> --</div> --<div class="olist lowerroman"> --<ol class="lowerroman" type="i"> --<li> --<p>and similarly for a PropertySource:</p> --</li> --</ol> --</div> --<div class="listingblock"> --<div class="title">Freezing the current Configuration</div> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-java" data-lang="java">PropertySource propertySource = ...; --PropertySource frozenSource = FrozenPropertySource.of(propertySource);</code></pre> --</div> --</div> --</div> --<div class="sect2"> --<h3 id="_spis">SPIs</h3> --<div class="paragraph"> --<p>This component also defines an additional SPI, which allows to adapt the implementation of the main ConfigEventManager --singleton. This enables, for example, using external eventing systems, such as CDI, instead of the default provided --simple SE based implementation. As normal, implementation must be registered using the current ServiceContext --active, by default using the Java ServiceLoader mechanism.</p> --</div> --<div class="listingblock"> --<div class="title">SPI: ConfigEventSpi</div> --<div class="content"> --<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface ConfigEventManagerSpi { -- -- <T> void addListener(ConfigEventListener l); -- <T extends ConfigEvent> void addListener(ConfigEventListener l, Class<T> eventType); -- void removeListener(ConfigEventListener l); -- <T extends ConfigEvent> void removeListener(ConfigEventListener l, Class<T> eventType); -- Collection<? extends ConfigEventListener> getListeners(); -- Collection<? extends ConfigEventListener> getListeners(Class<? extends ConfigEvent> eventType); -- -- void fireEvent(ConfigEvent<?> event); -- void fireEventAsynch(ConfigEvent<?> event); -- -- long getChangeMonitoringPeriod(); -- void setChangeMonitoringPeriod(long millis); -- boolean isChangeMonitorActive(); -- void enableChangeMonitor(boolean enable); --}</code></pre> --</div> --</div> --<div class="paragraph"> --<p>Summarizing with the events module you can easily observe configuration changes, record the --state of any configuration and compare configuration states to create and publish related --change events.</p> --</div> --</div> --</div> --</div></p> -- -- <hr /> -- </div> -- </div> -- <div> -- <div id="push"></div> -- -- <div id="footer"> -- <div class="container"> -- <p class="muted credit">© 2014-2016 Apache Software Foundation | Mixed with <a href="http://getbootstrap.com/">Bootstrap v3.1.1</a> -- | Baked with <a href="http://jbake.org">JBake <span>v2.5.0</span></a> -- at <span>2016-12-19</span> -- </p> -- <p> -- <b>Disclaimer</b> -- Apache Tamaya (incubating) is an effort undergoing -- incubation at -- The Apache Software Foundation (ASF), sponsored by -- the name of Apache Incubator. Incubation is required of -- all newly accepted projects until a further review indicates -- that the infrastructure, communications, and decision making -- process have stabilized in a manner consistent with other -- successful ASF projects. While incubation status is not -- necessarily a reflection of the completeness or stability of -- the code, it does indicate that the project has yet to -- be fully endorsed by the ASF.<br /> -- <a href="http://incubator.apache.org/guides/website.html" style="border:0px;" target="_target"><img class="incubator-logo" src="../../logos/egg-logo2.png"/></a> -- </p> -- </div> -- </div> -- -- <!-- Le javascript -- ================================================== --> -- <!-- Placed at the end of the document so the pages load faster --> -- <script src="../../js/jquery-1.11.1.min.js"></script> -- <script src="../../js/bootstrap.min.js"></script> -- <script src="../../js/prettify.js"></script> -- -- </div> -- </body> --</html>
