You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by po...@apache.org on 2018/04/26 20:41:29 UTC

[05/11] incubator-tamaya-site git commit: Regen site.

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/8e3904a8/documentation-new/extensions/mod_mutable_config.html
----------------------------------------------------------------------
diff --git a/documentation-new/extensions/mod_mutable_config.html b/documentation-new/extensions/mod_mutable_config.html
new file mode 100644
index 0000000..600a6c5
--- /dev/null
+++ b/documentation-new/extensions/mod_mutable_config.html
@@ -0,0 +1,465 @@
+<!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 - Extension: Mutable Configuration</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>
+        </div>
+        <div class="navbar-collapse collapse">
+          <ul class="nav navbar-nav">
+						<li><a href="../../start.html">Tamaya in 5 minutes</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/stable/index.html">Javadoc 0.3-incubating (release/stable)</a></li>
+								<li><a href="../../apidocs/development/index.html">Javadoc 0.4-incubating-SNAPSHOT (development)</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 - Extension: Mutable Configuration</h1>
+			</div>
+
+			<p><em>2018-04-26</em></p>
+
+			<p><div id="preamble">
+<div class="sectionbody">
+<!-- toc disabled -->
+</div>
+</div>
+<div class="sect1">
+<h2 id="MutableConfiguration">Tamaya Mutable Configuration (Extension Module)</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Tamaya <em>Mutable Configuration</em> is an extension module. Refer to the <a href="../extensions.html">extensions documentation</a> for further details.</p>
+</div>
+<div class="sect2">
+<h3 id="_what_functionality_this_module_provides">What functionality this module provides ?</h3>
+<div class="paragraph">
+<p>Config instances by default are read-only, which covers must of the use cases. But there are many legit scenarios
+where configuration should be written back to backend systems or the local file system. This module adds this
+functionality.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_compatibility">Compatibility</h3>
+<div class="paragraph">
+<p>The module is based on Java 8, so it can be used with Java 8 and beyond.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_installation">Installation</h3>
+<div class="paragraph">
+<p>To benefit from configuration mutability 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">&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.tamaya.ext&lt;/groupId&gt;
+  &lt;artifactId&gt;tamaya-mutable-config&lt;/artifactId&gt;
+  &lt;version&gt;{tamaya_version}&lt;/version&gt;
+&lt;/dependency&gt;</code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_core_architecture">Core Architecture</h3>
+<div class="sect3">
+<h4 id="_accessing_mutableconfig">Accessing MutableConfig</h4>
+<div class="paragraph">
+<p>The core of the module is the MutableConfigProider singleton, which provides access to MutableConfig
+instance, which extends Config. This interface adds additional methods to add/update or remove property values.
+Hereby each MutableConfig manages a transaction like context, which includes
+a UUID that identifes a change.
+Backends for writing changes applied umst implement MutableConfigSource, which extends ConfigSource.
+Registrations and ordering policies are exact the same as with ordinary config sources, but
+mutable property sources can be targeted by config write operations.</p>
+</div>
+<div class="paragraph">
+<p>The example below shows how a MutableConfig can be obtained ,values added, removed and
+finally changes written back to the backend:</p>
+</div>
+<div class="listingblock">
+<div class="title">Accessing and changing configuration</div>
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-java" data-lang="java">MutableConfig config = MutableConfigProvider
+                                      .createMutableConfig();
+config.put("newKey", "newValue")
+      .put("anotherKey", "updatedValue")
+      .remove("valueNotValid")
+      .store();</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>In the above scenario we use the system&#8217;s <em>default</em> configuration as the backend to be used.
+We can also pass any Config to render it into a mutable instance, e.g.</p>
+</div>
+<div class="listingblock">
+<div class="title">Explicitly passing the backing configuration</div>
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-java" data-lang="java">Config config = ...;
+MutableConfig config = MutableConfigProvider
+                                       .createMutableConfig(config);</code></pre>
+</div>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+If a configuration does not contain any MutableConfigSource instances,
+      a IllegalArgumentException is thrown since it would not be able to accept
+      any changes.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Following we show the possible methods you can use to create a MutableConfig.
+We will show in the following sections more details on the options provided&#8230;&#8203;</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public final class MutableConfigProvider {
+
+    private MutableConfigProvider(){}
+
+    public static MutableConfig createMutableConfig();
+    public static MutableConfig createMutableConfig(
+                                               ChangePropagationPolicy changePropgationPolicy);
+    public static MutableConfig createMutableConfig(Config configuration);
+    public static MutableConfig createMutableConfig(
+                                                   Config configuration,
+                                                   ChangePropagationPolicy changePropgationPolicy);
+
+    [...]
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>As we have not yet shown it, MutableConfiguration is defined as follows:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface MutableConfig extends Config {
+
+    void store();
+
+    ConfigChangeRequest getConfigChangeRequest();
+    ChangePropagationPolicy getChangePropagationPolicy();
+
+    MutableConfig put(String key, String value);
+    MutableConfig putAll(Map&lt;String, String&gt; properties);
+    MutableConfig remove(Collection&lt;String&gt; keys);
+    MutableConfig remove(String... keys);
+
+}</code></pre>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_targeting_specific_mutableconfigsources">Targeting specific MutableConfigSources</h5>
+<div class="paragraph">
+<p>A Config may have multiple MutableConfigSource instances present. These are members of Tamaya&#8217;s ordered list of
+ConfigSources to evaluate the configuration. Nevertheless writing back changes requires additional aspects to
+be considered:
+* Should changes written target all mutable config sources? Or should a change only
+  target the most significant instance (hereby not writing the change to less significant config sources)?
+* Or should a change be applied only to specific mutable config source(s), regardless its position in the
+  processing chain?</p>
+</div>
+<div class="paragraph">
+<p>Therefore a <em>default</em> ChangePropagationPolicy can be applied on a MutableConfig instance, which allows to
+control this aspect:</p>
+</div>
+<div class="listingblock">
+<div class="title">Explicitly passing the backing configuration</div>
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface ChangePropagationPolicy {
+    /**
+     * Method being called when a multiple key/value pairs are added or updated.
+     * @param configSources all config sources, including read-only config sources, of the current configuration,
+     *                        never null.
+     * @param configChange the configuration change, not null.
+     */
+    void applyChange(ConfigChangeRequest configChange, Collection&lt;ConfigSource&gt; configSources);
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>By default, changes are applied to all registered MutableConfigSource instances
+similarly.</p>
+</div>
+<div class="paragraph">
+<p>The MutableConfigProvider singleton also provides the most common
+change propagation policy implementations:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public final class MutableConfigProvider {
+
+    [...]
+
+    public static ChangePropagationPolicy getApplyAllChangePolicy();
+    public static ChangePropagationPolicy getApplyMostSignificantOnlyChangePolicy();
+    public static ChangePropagationPolicy getApplySelectiveChangePolicy(String... propertySourceNames);
+    public static ChangePropagationPolicy getApplyNonePolicy();
+}</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_some_aspects_to_consider">Some Aspects to consider</h4>
+<div class="paragraph">
+<p>Due to Tamaya&#8217;s design the effective effect of your changes to the overall configuration, cannot
+be sometimes a bit tricky to be predicted, since it depends on several aspects:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>is the corresponding configuration resource configured as part of the current system&#8217;s configuration?</p>
+</li>
+<li>
+<p>what is the PropertySource's priority within the configuration context? Is it overriding or overridden
+by other sources?</p>
+</li>
+<li>
+<p>is the change directly visible to the configuration system? E.g. injected values are normally not updated,
+whereas injecting a DynamicValue&lt;T&gt; instance allows to detect and react single value changes. Also the
+PropertySources implementation must be able to detect any configuration changes and adapt its values returned
+accordingly. Finally values also can be marked as immutable or being cached.</p>
+</li>
+<li>
+<p>Is configuration cached, or written/collected directly on access?</p>
+</li>
+<li>
+<p>can the changes applied be committed at all?</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>So it is part of your application configuration design to clearly define, which property sources may be read-only, which
+may be mutable, how overriding should work and to which backends finally any changes should be written back.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_configuration_changes">Configuration Changes</h3>
+<div class="paragraph">
+<p>This module does not handle detection of changes to the overall system&#8217;s Config. This can be done in
+several ways, e.g. by:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>using the <em>tamaya-events</em> extension, which can be used to observe the system&#8217;s configuration and
+publishing events when things have been changed.</p>
+</li>
+<li>
+<p>The SPI implementing the MutableConfigBackendSpi may inform/update any affected ConfigSource,
+ConfigSourceProvider instances about the changes applied.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_supported_backends">Supported Backends</h3>
+<div class="paragraph">
+<p>Multiple backends are supported. E.g. <em>tamaya-etcd</em> also registers
+corresponding SPI implementations/backends. This module comes with
+the following MutableConfigSource implementations:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>MutablePropertiesConfigSource resources, targeting local .properties files, using the java.util.Properties
+format.</p>
+</li>
+<li>
+<p>MutableXmlPropertiesConfigSource resources, targeting local .xml property files, using the java.util.Properties
+XML format.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_spis">SPIs</h3>
+<div class="paragraph">
+<p>The module defines MutableConfigProviderSpi, that is used as a delegate by the MutableConfigProvider
+singleton accessor:</p>
+</div>
+<div class="listingblock">
+<div class="title">SPI: MutableConfigurationProviderSpi</div>
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface MutableConfigProviderSpi {
+    /**
+     * Creates a new {@link MutableConfig} with {@code autoCommit = false} as default.
+     *
+     * @param configuration the configuration, not null.
+     * @param propagationPolicy policy that defines how changes are published to the property
+     *                          sources.
+     * @return a new mutable configuration instance.
+     */
+    MutableConfig createMutableConfig(Config configuration,
+                                      ChangePropagationPolicy propagationPolicy);
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Implementations are registered with the current ServiceContext (using by default the
+ java.util.ServiceLoader service).</p>
+</div>
+</div>
+</div>
+</div></p>
+
+			<hr />
+		</div>
+	</div>
+	<div>
+			<div id="push"></div>
+
+		    <div id="footer">
+		      <div class="container">
+		        <p class="muted credit">&copy; 2014-<span>2018</span> 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.1</span></a>
+							at <span>2018-04-26</span> |
+						<a class="twitter-follow-button" data-show-count="false" href="https://twitter.com/tamayaconf">Follow @tamayaconf</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
+						</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.
+										Apache, Apache Tamaya, and the Apache Tamaya logo are registered trademarks or trademarks of The Apache Software Foundation in the U.S. and/or other countries.<br />
+                    <a href="https://incubator.apache.org/guides/website.html" style="border:0px;" target="_target">
+											<img class="incubator-logo" src="../../logos/apache-incubator.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/8e3904a8/documentation-new/extensions/mod_optional.html
----------------------------------------------------------------------
diff --git a/documentation-new/extensions/mod_optional.html b/documentation-new/extensions/mod_optional.html
new file mode 100644
index 0000000..d76e6e5
--- /dev/null
+++ b/documentation-new/extensions/mod_optional.html
@@ -0,0 +1,240 @@
+<!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 - Extension: Optional Tamaya Configuration</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>
+        </div>
+        <div class="navbar-collapse collapse">
+          <ul class="nav navbar-nav">
+						<li><a href="../../start.html">Tamaya in 5 minutes</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/stable/index.html">Javadoc 0.3-incubating (release/stable)</a></li>
+								<li><a href="../../apidocs/development/index.html">Javadoc 0.4-incubating-SNAPSHOT (development)</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 - Extension: Optional Tamaya Configuration</h1>
+			</div>
+
+			<p><em>2018-04-26</em></p>
+
+			<p><div id="preamble">
+<div class="sectionbody">
+<!-- toc disabled -->
+</div>
+</div>
+<div class="sect1">
+<h2 id="Optional">Tamaya Optional (Extension Module)</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Tamaya <em>Optional</em> is an extension module. Refer to the <a href="../extensions.html">extensions documentation</a> for further details.</p>
+</div>
+<div class="sect2">
+<h3 id="_what_functionality_this_module_provides">What functionality this module provides ?</h3>
+<div class="paragraph">
+<p>Tamaya <em>Optional</em>  is for projects that want to benefit from Tamaya configuration optionally only.
+E.g. doing an OSS project you can declare to support configuration with Tamaya as
+an optional extension. This module can be added as a hard dependency to your code, hereby adding only
+three artifacts. The <em>optional</em> module automatically checks the availability of Tamaya on the
+classpath and only if available it tries to access it for configuration evaluation.
+Additionally an EvaluationPolicy lets you define the precedence of configured values
+(yours, or Tamaya ones, if present).</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_compatibility">Compatibility</h3>
+<div class="paragraph">
+<p>The module is based on Java 8, so it will not run on Java 8 and beyond.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_installation">Installation</h3>
+<div class="paragraph">
+<p>To use Tamaya <em>optional</em> 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">&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.tamaya.ext&lt;/groupId&gt;
+  &lt;artifactId&gt;tamaya-optional&lt;/artifactId&gt;
+  &lt;version&gt;{tamaya_version}&lt;/version&gt;
+&lt;/dependency&gt;</code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_reading_configuration_using_the_tamaya_optional_module">Reading configuration using the Tamaya Optional Module</h3>
+<div class="paragraph">
+<p>Tamaya <em>Optional</em> allows reading configuration with a small subset of functionality only. For more
+ advanced use cases consider using the Apache Tamaya as your main configuration API. When
+ creating your OptionalConfiguration instance you also pass the logic to access a value
+ with your own configuration logic. Tamaya Optional will delegate to your logic as needed
+ (depending on the <code>EvaluationPolicy</code>).</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-java" data-lang="java">BigDecimal interestRate =
+                 OptionalConfiguration.of(
+                    EvaluationPolicy.TAMAYA_OVERRIDES_OTHER,
+                    (k) -&gt; MyConfigMechanism.get(k) // String get(String key);
+                 )
+                .get("com.mycomp.ratecalculator.rate", BigDecimal.class))
+                .orElse(BigDecimal.of(0.05d));</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div></p>
+
+			<hr />
+		</div>
+	</div>
+	<div>
+			<div id="push"></div>
+
+		    <div id="footer">
+		      <div class="container">
+		        <p class="muted credit">&copy; 2014-<span>2018</span> 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.1</span></a>
+							at <span>2018-04-26</span> |
+						<a class="twitter-follow-button" data-show-count="false" href="https://twitter.com/tamayaconf">Follow @tamayaconf</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
+						</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.
+										Apache, Apache Tamaya, and the Apache Tamaya logo are registered trademarks or trademarks of The Apache Software Foundation in the U.S. and/or other countries.<br />
+                    <a href="https://incubator.apache.org/guides/website.html" style="border:0px;" target="_target">
+											<img class="incubator-logo" src="../../logos/apache-incubator.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/8e3904a8/documentation-new/extensions/mod_osgi.html
----------------------------------------------------------------------
diff --git a/documentation-new/extensions/mod_osgi.html b/documentation-new/extensions/mod_osgi.html
new file mode 100644
index 0000000..c8d7fae
--- /dev/null
+++ b/documentation-new/extensions/mod_osgi.html
@@ -0,0 +1,1156 @@
+<!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 - Extensions: OSGI Integration</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>
+        </div>
+        <div class="navbar-collapse collapse">
+          <ul class="nav navbar-nav">
+						<li><a href="../../start.html">Tamaya in 5 minutes</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/stable/index.html">Javadoc 0.3-incubating (release/stable)</a></li>
+								<li><a href="../../apidocs/development/index.html">Javadoc 0.4-incubating-SNAPSHOT (development)</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 - Extensions: OSGI Integration</h1>
+			</div>
+
+			<p><em>2018-04-26</em></p>
+
+			<p><div id="preamble">
+<div class="sectionbody">
+<!-- toc disabled -->
+</div>
+</div>
+<div class="sect1">
+<h2 id="OSGI">Tamaya OSGI Support</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Tamaya <em>OSGI</em> is an extension module. Refer to the <a href="../extensions.html">extensions documentation</a> for further details.</p>
+</div>
+<div class="sect2">
+<h3 id="_what_functionality_this_module_provides">What functionality this module provides ?</h3>
+<div class="paragraph">
+<p>Tamaya <em>OSGI</em> provides support for integration with OSGI. Hereby Tamaya does actively override or extend the OSGI
+ConfigAdmin based configuration with entries stored and managed by Tamaya. Tamaya provides also shell extensions
+to enable/perform configuration loading and restoring actions.
+Optionally Tamaya also provides extension for automatically trigger configuration updates, when configuration has
+been changed and configuration injection using Tamaya&#8217;s injection API.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_compatibility">Compatibility</h3>
+<div class="paragraph">
+<p>All module described are based on Java 8, so it will run on Java 8 and beyond.
+The modules are built against <strong>OSGI Compendium version 5.0</strong>. Tamaya OSGI support
+is tested against the following OSGI runtimes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Apache Karaf, version 4.0.7</p>
+</li>
+<li>
+<p>Apache Felix, version 5.6.1</p>
+</li>
+<li>
+<p>Eclipse Equinox, version x.x.x.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_installation">Installation</h3>
+<div class="paragraph">
+<p>To benefit from Tamaya in an OSGI context you must deploy at least the following modules to
+your OSGI runtime environment:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-listing" data-lang="listing"># Runtime with OSGI ConfigAdmin support, e.g.
+org.apache.felix:org.apache.felix.configadmin:{felix_version}
+# API and core
+org.apache.geronimo.specs:geronimo-annotation_1.2_spec:1.0
+org.apache.tamaya:tamaya-api:{tamaya_version}
+org.apache.tamaya:tamaya-spisupport:{tamaya_version}
+org.apache.tamaya:tamaya-core:{tamaya_version}
+# Required extensions
+org.apache.tamaya.ext:tamaya-functions:{tamaya_version}
+org.apache.tamaya.ext:tamaya-osgi:{tamaya_version}</code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_tamaya_service_loading_in_osgi">Tamaya Service Loading in OSGI</h3>
+<div class="paragraph">
+<p>Important to know is that within OSGI class- and resource loading is not compatible with standard Java SE. Also
+in OSGI, bundles can be loaded or unloaded at any time, so Tamaya&#8217;s logic must cope with this as well.
+These constraints are handled by Tamaya (implemented in tamaya-core and tamaya-osgi) as follows:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Tamaya registers a OSGIServiceContext which reads all java.util.ServiceLoader configurations and
+registers them as OSGI services. Hereby integration is two-way: The core module contains an
+OSGI Activator that replaces Tamaya&#8217;s default ServiceContext with an OSGI based implementation that
+will consume all services from the OSGI service API. Consequently you can also register Tamaya extensions
+as OSGI services using standard OSGI tooling (e.g. your own PropertySource instances). Tamaya hereby
+also does not store any service references, so the dynamic nature of OSGI is fully honored.</p>
+</li>
+<li>
+<p>Tamaya&#8217;s ServiceContext SPI does additionally provide functionality for loading of (classpath)
+resources using the bundle&#8217;s getEntry(String) method.</p>
+</li>
+<li>
+<p>Tamaya similarly checks the classpath of all bundles for Tamaya SPI services to be registered thus
+implementing the ServiceLoader logic in OSGI. Hereby Tamaya will only register services with the
+org.apache.tamaya as root package.</p>
+</li>
+</ul>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+Tamaya actually does not replace any existing ConfigAdmin component, Tamaya modifies any existing OSGI
+      configuration on changes detected and stores backups of any OSGI configuration before applying any
+      changes.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_configuring_bundles">Configuring Bundles</h3>
+<div class="sect3">
+<h4 id="_mapping_of_pids_and_factorypids">Mapping of pids and factoryPids</h4>
+<div class="paragraph">
+<p>When accessing configuration from the OSGI ConfigAdmin a pid and an optional location can be provided.
+Tamaya requires all configuration for a PID to be located in keys starting [PID]:</p>
+</div>
+<div class="listingblock">
+<div class="title">OSGI pid mapping</div>
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-listing" data-lang="listing"># OSGI settings
+pid=myBundle
+key=common.net.port
+
+# Corresponding key in Tamaya configuration
+[myBundle]key=common.net.port</code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_enabling_disabling_tamaya">Enabling/Disabling Tamaya</h4>
+<div class="paragraph">
+<p>By default, Tamaya doesn&#8217;t do anything, unless it is told to so so. So having installed the Tamaya OSGI plugin,
+you will see the bundles are loaded, but your OSGI environment still works the same. This is not accidentally, since
+configuration is a crucial part. This means Tamaya, by default, is disabled for all bundles. You have now several
+options to enabled Tamaya:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>you can enable Tamaya for <strong>all</strong> bundles by default by</p>
+<div class="ulist">
+<ul>
+<li>
+<p>setting the -Dtamaya-enabled=true system property.</p>
+</li>
+<li>
+<p>by setting tamaya-enabled=true in the OSGI Configuration for the PID TamayaConfigPlugin.</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>you can enable Tamaya for a single bundle by</p>
+<div class="ulist">
+<ul>
+<li>
+<p>by setting tamaya-enabled=true in the OSGI Configuration for the given bundle.</p>
+</li>
+<li>
+<p>by adding Tamaya-Enabled: true to the bundle&#8217;s MANIFEST.</p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Similarly you can also combine these options the other way round:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>You can enable Tamaya by default as shown above.</p>
+</li>
+<li>
+<p>You can disable Tamaya for bundles by</p>
+<div class="ulist">
+<ul>
+<li>
+<p>by setting tamaya-enabled=false in the OSGI Configuration for the given bundle.</p>
+</li>
+<li>
+<p>by adding Tamaya-Enabled: false to the bundle&#8217;s MANIFEST.</p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_controlling_how_tamaya_changes_your_osgi_configuration">Controlling How Tamaya changes your OSGI Configuration</h4>
+<div class="paragraph">
+<p>Tamaya supports different policies that define how Tamaya is changing the OSGI configuration:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><strong>EXTEND</strong>: Only add properties not existing in the OSGI configuration, but never override
+or remove existing properties.</p>
+</li>
+<li>
+<p><strong>OVERRIDE</strong>: Override existing properties and also add new properties.</p>
+</li>
+<li>
+<p><strong>UPDATE_ONLY</strong>: Only override existing properties but do not add any properties.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>By default, Tamaya uses the <em>OVERRIDE</em> policy. Also this policy can be configured in several
+ways and with different scopes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>You can define the <em>default</em> policy applied, by</p>
+<div class="ulist">
+<ul>
+<li>
+<p>setting the -Dtamaya-policy=POLICY system property.</p>
+</li>
+<li>
+<p>by setting tamaya-policy=POLICY in the OSGI Configuration for the PID TamayaConfigPlugin.</p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Hereby, <em>POLICY</em> must be one of OVERRIDE, EXTEND, UPDATE_ONLY.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>You can also configure the policy individually for a bundle by</p>
+<div class="ulist">
+<ul>
+<li>
+<p>by setting tamaya-policy=POLICY in the OSGI Configuration for the given bundle.</p>
+</li>
+<li>
+<p>by adding Tamaya-Policy: POLICY to the bundle&#8217;s MANIFEST.</p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_mapping_osgi_pids_to_tamaya_configuration">Mapping OSGI PIDs to Tamaya Configuration</h4>
+<div class="paragraph">
+<p>Tamaya configuration is a single Map&lt;String,String&gt; with String keys and String values. Whereas OSGI configuration are
+multiple +Dictionary&lt;String,?&gt; (for several PIDs). The Tamaya OSGI extension implements the following mapping:</p>
+</div>
+<div class="paragraph">
+<p>As an example refer to the followinf Tamaya configuration entries:</p>
+</div>
+<div class="listingblock">
+<div class="title">Tamaya configuration for PID 'MyPlugin'</div>
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-listing" data-lang="listing">[MyPlugin]ch.base.pack.Main.customer=Native Inc
+[MyPlugin]ch.base.pack.Main.use=234
+[MyPlugin]ch.base.pack.Main.encoding=UTF-8</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The OSGI Configuration Plugin now provides the following configuration for PID:</p>
+</div>
+<div class="listingblock">
+<div class="title">OSGI configuration for PID 'MyPlugin'</div>
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-listing" data-lang="listing">ch.base.pack.Main.use=100        (Integer)
+ch.base.pack.Main.switch=on      (Boolean)
+ch.base.pack.Main.customer=NONE  (String)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Now using Policy.OVERRIDE (as desribed in the previous section), Tamaya will change the OSGI configuration
+as follows:</p>
+</div>
+<div class="listingblock">
+<div class="title">OSGI configuration after Tamaya update for PID 'MyPlugin'</div>
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-listing" data-lang="listing">ch.base.pack.Main.use=234                   (Integer)
+ch.base.pack.Main.switch=on                 (Boolean)
+ch.base.pack.Main.customer=Native Inc       (String)
+[MyPlugin]ch.base.pack.Main.encoding=UTF-8  (String)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>So Tamaya configuration mapping can be summarized as follows:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The OSGI PID is mapped to a Tamaya prefix [PID].</p>
+</li>
+<li>
+<p>The OSGI keys are the exact same keys as from Tamaya with the <em>[PID]</em> prefix removed.</p>
+</li>
+<li>
+<p>New entries are added (depending on the Policy) as String values.</p>
+</li>
+<li>
+<p>Types of existing entries are preserved on update (this requires the Tamaya entries to be convertable into
+the required target types. Refer to Tamaya&#8217;s core documentation for supported types and how
+to add custom converters).</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Finally, the mapping of the OSGI <em>PID</em> to the Tamaya <em>[PID]</em> prefix also can be customized by</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>adding tamaya-config-root as an OSGI configuration property to the OSGI configuration.</p>
+</li>
+<li>
+<p>adding Tamaya-Config-Root as a MANIFEST entry to the bundle.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The root will replace the default <em>[PID]</em> prefix with the value configured.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_osgi_configuration_backup">OSGI Configuration Backup</h4>
+<div class="paragraph">
+<p>Before Tamaya changes any OSGI configuration it creates a <em>Backup</em> of the existing OSGI
+configuration dictionary and stores it in serialized form in the plugin&#8217;s OSGI configuration.
+This allows you to restore the original OSGI configuration in case of problems. Hereby Tamaya
+automatically sets the tamaya-enabled=false property to disable Tamaya for the given
+configuration (bundle).</p>
+</div>
+<div class="paragraph">
+<p>The history can be accessed from the Tamaya Configuration Plugin Service
+(shown later).</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_osgi_configuration_change_log">OSGI Configuration Change Log</h4>
+<div class="paragraph">
+<p>All changes applied by Tamaya are logged as well using
+ConfigHistory entry items. The history can be accessed from the Tamaya Configuration Plugin Service
+(shown later):</p>
+</div>
+<div class="listingblock">
+<div class="title">OSGI ConfigHistory Entry</div>
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-Java" data-lang="Java">public final class ConfigHistory implements Serializable{
+
+    [...]
+
+    public enum TaskType{
+        PROPERTY,
+        BEGIN,
+        END,
+    }
+
+    // ***
+    // Entry = attributes
+    // ***
+
+    public TaskType getArea(){...}
+
+    public String getPid() {... }
+
+    public Object getPreviousValue() {... }
+
+    public ConfigHistory setPreviousValue(Object previousValue) {... }
+
+    public Object getValue() {...}
+
+    public ConfigHistory setValue(Object value) {...}
+
+    public String getKey() {...}
+
+    public ConfigHistory setKey(String key) {...}
+
+}</code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_the_tamaya_osgi_configuration_service">The Tamaya OSGI Configuration Service</h4>
+<div class="paragraph">
+<p>As mentioned Tamaya exposes it&#8217;s OSGI functionality, allowing programmatic access to Tamaya configuration
+logic with the TamayaConfigService OSGI service:</p>
+</div>
+<div class="listingblock">
+<div class="title">The exposed TamayaConfigService</div>
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-Java" data-lang="Java">public interface TamayaConfigService{
+    /** The system/config property to set Tamaya's {@link Policy}. */
+    String TAMAYA_POLICY_PROP = "tamaya-policy";
+    /** The MANIFEST property to set Tamaya's {@link Policy}. */
+    String TAMAYA_POLICY_MANIFEST = "Tamaya-Policy";
+    /** The system/config property to define a customized Tamaya's configuration root, replacing the {@code [PID]} default
+     * prefix used. */
+    String TAMAYA_CUSTOM_ROOT_PROP = "tamaya-config-root";
+    /** The MANIFEST property to define a customized Tamaya's configuration root, replacing the {@code [PID]} default
+     * prefix used. */
+    String TAMAYA_CUSTOM_ROOT_MANIFEST = "Tamaya-Config-Root";
+    /** The system/config property to enable Tamaya. */
+    String TAMAYA_ENABLED_PROP = "tamaya-enabled";
+    /** The MANIFEST property to enable Tamaya. */
+    String TAMAYA_ENABLED_MANIFEST = "Tamaya-Enabled";
+    /** The system/config property to enable Tamaya automatic updates (requires Tamaya's Updater plugin to be loaded as well). */
+    String TAMAYA_AUTO_UPDATE_ENABLED_PROP = "tamaya-update-enabled";
+    /** The MANIFEST property to enable Tamaya automatic updates (requires Tamaya's Updater plugin to be loaded as well). */
+    String TAMAYA_AUTO_UPDATE_ENABLED_MANIFEST = "Tamaya-Update-Enabled";
+
+    /**
+     * Enables/disables automatic updates (requires Tamaya's Updater plugin to be loaded as well).
+     * @param enabled set to true to enable updates.
+     */
+    void setAutoUpdateEnabled(boolean enabled);
+
+    /**
+     * Enables/disables Tamaya config by default.
+     * @param enabled set to true to enable Tamaya for all bundles by default.
+     */
+    void setTamayaEnabledByDefault(boolean enabled);
+
+    /**
+     * Get the flag, if Tamaya is enabled by default for all bundles.
+     * @return true if Tamaya is enabled.
+     */
+    boolean isTamayaEnabledByDefault();
+
+    /**
+     * Get the default policy Tamaya is using for adapting OSGI configuration.
+     * @return the default policy, never null.
+     */
+    Policy getDefaultPolicy();
+
+    /**
+     * Set the default policy Tamaya is using for adapting OSGI configuration.
+     * @param policy the policy, not null.
+     */
+    void setDefaultPolicy(Policy policy);
+
+    /**
+     * Updates the given OSGI configuration with Tamaya configuration.
+     * @param pid the target PID, not null.
+     * @return the new configuration.
+     */
+    Dictionary&lt;String,Object&gt; updateConfig(String pid);
+
+    /**
+     * Updates the given OSGI configuration with Tamaya configuration.
+     * @param pid the target PID, not null.
+     * @param dryRun if true, the changes will not be applied to the OSGI configuration.
+     * @return the configuration that would be applied, has been applied.
+     */
+    Dictionary&lt;String,Object&gt; updateConfig(String pid, boolean dryRun);
+
+    /**
+     * Updates the given OSGI configuration with Tamaya configuration.
+     * @param pid the target PID, not null.
+     * @param policy the updating policy to be used, by default.
+     * @param forcePolicy if set to true, the given policy will be used, even if an alternate policy is configured
+     *                    for the given PID.
+     * @param dryRun if true, the changes will not be applied to the OSGI configuration.
+     * @return the configuration that would be applied, has been applied.
+     */
+    Dictionary&lt;String,Object&gt; updateConfig(String pid, Policy policy, boolean forcePolicy, boolean dryRun);
+
+    /**
+     * Checks if a bundle is enabled for Tamaya configuration.
+     * @param bundle the bundle, not null.
+     * @return true, if the bundle is enabled.
+     */
+    boolean isBundleEnabled(Bundle bundle);
+
+    /**
+     * Get the flag if automatic updates for config changes are enabled.
+     * @return true, if automatic updates for config changes are enabled.
+     */
+    boolean isAutoUpdateEnabled();
+
+    /**
+     * Get the backup written for a PID.
+     * @param pid the pid, not null.
+     * @return the backup, or null, if no backup is present.
+     */
+    Dictionary&lt;String,?&gt; getBackup(String pid);
+
+    /**
+     * Get all current known PIDs for which backups are registered.
+     * @return all known PIDs for which backups are registered.
+     */
+    Set&lt;String&gt; getBackupPids();
+
+    /**
+     * Restores a backup, replacing the current OSGI configuration with the backup and
+     * disabling Tamaya for this PID.
+     * @param pid the PID, not null.
+     * @return true, if a backup has been restored successfully.
+     */
+    boolean restoreBackup(String pid);
+
+    /**
+     * Stores the current OSGI configuration as a backup (only if no backup is existing).
+     * @param pid the target PID, not null.
+     * @return true, if a backup has been stored successfully.
+     */
+    boolean createBackup(String pid);
+
+    /**
+     * Deletes a backup, if existing.
+     * @param pid the target PID, not null.
+     * @return true, if a backup has been restored successfully.
+     */
+    boolean deleteBackup(String pid);
+
+    /**
+     * Sets the maximum getHistory size.
+     * @param maxHistory the max getHistory size. {@code 0} disables the getHistory function.
+     */
+    void setMaxHistorySize(int maxHistory);
+
+    /**
+     * Get the max getHistory size.
+     * @return the max getHistory size. {@code 0} means the getHistory function is disabled.
+     */
+    int getMaxHistorySize();
+
+    /**
+     * Access the current (full) change getHistory.
+     * @return the current getHistory, never null.
+     */
+    List&lt;ConfigHistory&gt; getHistory();
+
+    /**
+     * Clears the getHistory.
+     */
+    void clearHistory();
+
+    /**
+     * Clears the getHistory for a PID.
+     * @param pid the target PID, not null.
+     */
+    void clearHistory(String pid);
+
+    /**
+     * Get the getHistory for a PID.
+     * @param pid the target PID, not null.
+     * @return the PID's getHistory, never null.
+     */
+    List&lt;ConfigHistory&gt; getHistory(String pid);
+
+    /**
+     * Access the current OSGI configuration for a PID.
+     * @param pid the target PID, not null.
+     * @param section a subsection to be filter (using startsWith).
+     * @return the (optionally filtered) OSGI configuration.
+     */
+    Dictionary&lt;String,Object&gt; getOSGIConfiguration(String pid, String section);
+
+    /**
+     * Checks if a backup exists.
+     * @param pid the target PID, not null.
+     * @return true, if a backup exists.
+     */
+    boolean containsBackup(String pid);
+}</code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_the_tamaya_osgi_configuration_service_2">The Tamaya OSGI Configuration Service</h4>
+<div class="paragraph">
+<p>Finally Tamaya also provides support for using Tamaya&#8217;s injection API with your OSGI project. To enable injection
+you must install a few additional bundles:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml">&lt;dependency&gt;
+   &lt;groupId&gt;org.apache.tamaya.ext&lt;/groupId&gt;
+   &lt;artifactId&gt;tamaya-osgi-injection&lt;/artifactId&gt;
+   &lt;version&gt;${tamaya.version}&lt;/version&gt;
+&lt;/dependency&gt;
+&lt;dependency&gt;
+   &lt;groupId&gt;org.apache.tamaya.ext&lt;/groupId&gt;
+   &lt;artifactId&gt;tamaya-injection&lt;/artifactId&gt;
+   &lt;version&gt;${tamaya.version}&lt;/version&gt;
+&lt;/dependency&gt;
+&lt;dependency&gt;
+   &lt;groupId&gt;org.apache.tamaya.ext&lt;/groupId&gt;
+   &lt;artifactId&gt;injection-api&lt;/artifactId&gt;
+   &lt;version&gt;${tamaya.version}&lt;/version&gt;
+&lt;/dependency&gt;</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Given that you can inject configuration entries</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>on your services by</p>
+<div class="ulist">
+<ul>
+<li>
+<p>setting tamaya-config-inject=true in your service properties.</p>
+</li>
+<li>
+<p>setting Tamaya-Config-Inject: true in your bundle&#8217;s manifest.</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>or by using the registered ConfigInjectionService:</p>
+</li>
+</ul>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface ConfigInjectionService {
+    /** The manifest entry to enable Tamaya injection. */
+    String TAMAYA_INJECTION_ENABLED_MANIFEST = "Tamaya-Config-Inject";
+    /** The OSGI config entry to enable Tamaya injection. */
+    String TAMAYA_INJECTION_ENABLED_PROP = "tamaya-config-inject";
+
+    /**
+     * Checks if injection is enabled on the given service.
+     * @param reference the service reference, not null.
+     * @return true, if enjection is enabled.
+     */
+    boolean isInjectionEnabled(ServiceReference reference);
+
+    /**
+     * Checks if injection is enabled on the given service.
+     * @param bundle the bundle, not null.
+     * @return true, if enjection is enabled.
+     */
+    boolean isInjectionEnabled(Bundle bundle);
+
+    /**
+     * Configures the passed instance.
+     * @param instance the instance, not null.
+     * @param &lt;T&gt; the input and return type.
+     * @param pid the target PID, not null.
+     * @param location the optional location
+     * @return the configured instance.
+     */
+    &lt;T&gt; T configure(String pid, String location, T instance);
+
+    /**
+     * Creates a suzpplier, which supplies events as created by the basic supplier, which are
+     * automatically configured, when supplying.
+     * @param supplier the base supplier, not null.
+     * @param pid the target PID, not null.
+     * @param location the optional location
+     * @param &lt;T&gt; the type
+     * @return a configuring supplier.
+     */
+    &lt;T&gt; Supplier&lt;T&gt; getConfiguredSupplier(String pid, String location, java.util.function.Supplier&lt;T&gt; supplier);
+
+    /**
+     * Creates a template implementing the annotated methods based on current configuration data.
+     *
+     * @param &lt;T&gt; the type of the template.
+     * @param templateType the type of the template to be created.
+     * @param pid the target PID, not null.
+     * @param location the optional location
+     * @return the configured template.
+     */
+    &lt;T&gt; T createTemplate(String pid, String location, Class&lt;T&gt; templateType);
+
+    /**
+     * Configures the passed instance.
+     * @param instance the instance, not null.
+     * @param &lt;T&gt; the input and return type.
+     * @param bundle the target bundle, not null.
+     * @return the configured instance.
+     */
+    &lt;T&gt; T configure(Bundle bundle, T instance);
+
+    /**
+     * Creates a suzpplier, which supplies events as created by the basic supplier, which are
+     * automatically configured, when supplying.
+     * @param supplier the base supplier, not null.
+     * @param bundle the target bundle, not null.
+     * @param &lt;T&gt; the type
+     * @return a configuring supplier.
+     */
+    &lt;T&gt; Supplier&lt;T&gt; getConfiguredSupplier(Bundle bundle, java.util.function.Supplier&lt;T&gt; supplier);
+
+    /**
+     * Creates a template implementing the annotated methods based on current configuration data.
+     *
+     * @param &lt;T&gt; the type of the template.
+     * @param templateType the type of the template to be created.
+     * @param bundle the target bundle, not null.
+     * @return the configured template.
+     */
+    &lt;T&gt; T createTemplate(Bundle bundle, Class&lt;T&gt; templateType);
+}</code></pre>
+</div>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+Injection hereby is based on the OSGI ConfigAdmin values only. To use Tamaya configuration you have to additionally
+install the Tamaya common OSGI support as described in the previous sections.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>More details on Tamaya&#8217;s injection API can be found in the corresponding <a href="mod_injection.html">API documentation</a>.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_special_osgi_platform_support">Special OSGI Platform support</h3>
+<div class="sect3">
+<h4 id="_apache_karaf_shell">Apache Karaf Shell</h4>
+<div class="paragraph">
+<p>Apache Tamaya provides a Karaf Shell Extension providing commands for performing several actions related
+to Tamaya configuration. To use them, simply add the org.apache.tamaya.ext:tamaya-osgi-karaf-shell bundle
+to your OSGI runtime. The extension will add the following commands to your Karaf conaole (with prefix tamaya):</p>
+</div>
+<table class="tableblock frame-1 grid-all spread">
+<colgroup>
+<col style="width: 33.3333%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3334%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><em>Artifact</em></th>
+<th class="tableblock halign-left valign-top"><em>Description</em></th>
+<th class="tableblock halign-left valign-top"><em>Options</em></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_apply_config</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Show the current Tamaya configuration.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_apply_config [options] pid
+<b>ARGUMENTS</b>
+<i>pid</i>  The target OSGI component PID.
+<b>OPTIONS</b>
+<i>operationMode, -m, --opmode</i> Explicitly set (override) the operation mode to use.
+<i>dryRun, -d, --dryrun</i> If set to true no OSGI configuration gets changed.
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_backup_create</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Creates a backup of a current OSGI configuration.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_backup_create [options] pid
+<b>ARGUMENTS</b>
+<i>pid</i>  The target pid to backup.
+<b>OPTIONS</b>
+<i>--force, -f</i>  Forces to (over)write a backup, even if one already exists.
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_backup_delete</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Deletes the OSGI configuration backup  of Tamya.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_backup_delete pid
+<b>ARGUMENTS</b>
+<i>pid</i>  Allows to filter on the given PID. '*' removes all backups.
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_backup_list</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List the backed-up OSGI configuration before Tamya applied changes.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_backup_list [pid]
+<b>ARGUMENTS</b>
+<i>pid</i>  Allows to filter on the given PID.
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_backup_restore</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Restores the OSGI configuration backup of Tamya and disabled the PID for Tamaya configuration.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_backup_restore pid
+<b>ARGUMENTS</b>
+<i>pid</i> The target PID. '*' restores all backups.
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_config</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Show the current Tamaya configuration.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_config [options]
+<b>OPTIONS</b>
+<i>pi, -p, --pid</i> Apply filtering for the given OSGI component PID.
+<i>section, -s, --section</i> A starting expression selecting the section to be filtered.
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_enable</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Enables or disable Tamaya by default for all bundles/services (default: enabled=false). Disabling still allows to explicitly enable
+  bundles using 'tamaya-enable' manifest or OSGI config entries.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_enable enabled
+<b>ARGUMENTS</b>
+<i>enabled</i> The boolean value to enabled/disable Tamaya by default.
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_enabled</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Check if Tamaya is currently by default enabled for all bundles/services (default: enabled=false). If disabled still Tamaya allows to
+  explicitly enable bundles using 'tamaya-enable' manifest or OSGI config entries.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_enabled
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_history</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Gets the getHistory of changes Tamaya applied to the OSGI configuration.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_history [options] [pid]
+<b>ARGUMENTS</b>
+<i>pid</i> Allows to filter on the given PID.
+<i>--type, -t</i> Allows to filter the events types shown.
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_history_delete</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Deletes the getHistory of changes Tamaya applied to the OSGI configuration.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_history_delete pid
+<b>ARGUMENTS</b>
+<i>pid</i> Allows to filter on the given PID.
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_history_delete_all</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Deletes the full getHistory of changes Tamaya applied to the OSGI configuration.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_history_delete_all
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_history_maxsize</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Gets the maximal size of stored getHistory entries.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_history_maxsize
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_history_maxsize_set</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Sets the maximal size of Tamaya getHistory entries.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_history_maxsize_set size
+<b>ARGUMENTS</b>
+<i>size</i>: The maximum number of entries in the getHistory.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_info</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Show he current Tamaya status.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_info
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_osgi_config</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Show the current OSGI configuration.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_osgi_config [options] pid
+<b>ARGUMENTS</b>
+<i>pid</i> The target OSGI component PID.
+<b>OPTIONS</b>
+<i>section, -s, --section</i>: A starting expression selecting the keys to be filtered.
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_policy</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Get the current Tamaya overriding policy.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_policy
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_policy_set</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Sets the current Tamaya operation policy.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_policy_set tm_policy_set
+<b>ARGUMENTS</b>
+<i>tm_policy_set</i>: The operation policy how Tamaya intercepts OSGI configuration.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_propagate_updates</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Flag if Tamaya is automatically triggering OSGI config updates, when according Tamaya configuration changes.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tm_propagate_updates</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_propagate_updates_set</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Configure if Tamaya is automatically triggering OSGI config updates, when according Tamaya configuration changes.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_propagate_updates_set enabled
+<b>ARGUMENTS</b>
+<i>enabled</i>: Set to true to enable Tamaya's updating trigger.
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_property</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Get a Tamaya property.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre><b>SYNTAX</b>
+tamaya:tm_property [options] [key]
+<b>ARGUMENTS</b>
+<i>key</i>: The target property source id.
+<b>OPTIONS</b>
+<i>extended,e</i>: Also print extended property value attributes.
+<i>propertysource, ps</i>: The target property source id.
+</pre></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_propertysource</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Show the current Tamaya entries of a propertysource.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre><b>SYNTAX</b>
+tamaya:tm_propertysource [propertysource]
+<b>ARGUMENTS</b>
+<i>propertysource</i>: The target property source id.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tm_propertysources</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Get a list of currently registered propertysources.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><pre>
+<b>SYNTAX</b>
+tamaya:tm_propertysources
+</pre></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect3">
+<h4 id="_apache_karaf_ferature">Apache Karaf Ferature</h4>
+<div class="paragraph">
+<p>Apache Tamaya provides a Karaf feature with all required dependencies
+as org.apache.tamaya.ext:tamaya-karaf-features:{tamaya-version}:features:xml.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_apache_felix_gogo_console">Apache Felix Gogo Console</h4>
+<div class="paragraph">
+<p>Apache Tamaya also provides the same commands as described for <em>Karaf</em>, but executable in
+plaing Gogo console as used by Apache Felix and Equinox as
+org.apache.tamaya.ext:tamaya-gogo-shell:{tamaya-version}. Refer to the previous sections for
+a detailed command description.</p>
+</div>
+</div>
+</div>
+</div>
+</div></p>
+
+			<hr />
+		</div>
+	</div>
+	<div>
+			<div id="push"></div>
+
+		    <div id="footer">
+		      <div class="container">
+		        <p class="muted credit">&copy; 2014-<span>2018</span> 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.1</span></a>
+							at <span>2018-04-26</span> |
+						<a class="twitter-follow-button" data-show-count="false" href="https://twitter.com/tamayaconf">Follow @tamayaconf</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
+						</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.
+										Apache, Apache Tamaya, and the Apache Tamaya logo are registered trademarks or trademarks of The Apache Software Foundation in the U.S. and/or other countries.<br />
+                    <a href="https://incubator.apache.org/guides/website.html" style="border:0px;" target="_target">
+											<img class="incubator-logo" src="../../logos/apache-incubator.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>