http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/cddd52a8/documentation/extensions/mod_json.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_json.html b/documentation/extensions/mod_json.html index aca6e1f..601717e 100644 --- a/documentation/extensions/mod_json.html +++ b/documentation/extensions/mod_json.html @@ -125,98 +125,93 @@ <h1>Apache Tamaya - Extension: Builder</h1> </div> - <p><em>2018-04-26</em></p> + <p><em>2018-05-17</em></p> - <p><div id="preamble"> -<div class="sectionbody"> -<!-- toc disabled --> -</div> -</div> -<div class="sect1"> -<h2 id="JSON">Tamaya JSON (Extension Module)</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>Tamaya <em>JSON</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>JSON</em> provides support for reading configuration using JSON -format:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-json" data-lang="json">{ + <p><div id="preamble"> + <div class="sectionbody"> + <!-- toc disabled --> + </div> +</div> +<div class="sect1"> + <h2 id="JSON">Tamaya JSON (Extension Module)</h2> + <div class="sectionbody"> + <div class="paragraph"> + <p>Tamaya <em>JSON</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>JSON</em> provides support for reading configuration using JSON format:</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-json" data-lang="json">{ "a.b"{ "key1": "blabla", "key2": true, } -}</code></pre> -</div> -</div> -<div class="paragraph"> -<p>Hereby the hierarchical structure of the JSON document will be mapped to a -flat key-value pairs of type <code>String</code>, e.g. the bove will be mapped to</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-properties" data-lang="properties">a.b.key1=blabla -a.b.key2=true</code></pre> -</div> -</div> -<div class="paragraph"> -<p>This extension uses SPI defined by the tamaya.formats 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 run on Java 7 and beyond.</p> -</div> -</div> -<div class="sect2"> -<h3 id="_installation">Installation</h3> -<div class="paragraph"> -<p>To use the JSON extension module 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> +}</code></pre> + </div> + </div> + <div class="paragraph"> + <p>Hereby the hierarchical structure of the JSON document will be mapped to a flat key-value pairs of type <code>String</code>, e.g. the bove will be mapped to</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-properties" data-lang="properties">a.b.key1=blabla +a.b.key2=true</code></pre> + </div> + </div> + <div class="paragraph"> + <p>This extension uses SPI defined by the tamaya.formats 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 run on Java 7 and beyond.</p> + </div> + </div> + <div class="sect2"> + <h3 id="_installation">Installation</h3> + <div class="paragraph"> + <p>To use the JSON extension module 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-json</artifactId> <version>{tamaya_version}</version> -</dependency></code></pre> -</div> -</div> -<div class="paragraph"> -<p>This extension also transitively requires the tamaya.formats module.</p> -</div> -</div> -<div class="sect2"> -<h3 id="_reading_configuration_in_json">Reading configuration in JSON</h3> -<div class="paragraph"> -<p>For reading JSON based onfiguration most easily a JSONFormat can be -used:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-java" data-lang="java">ConfigurationData dataRead = ConfigurationFormats.readConfig( - getClassLoader().getResource("myFileConfig.json"), new JSONFormat()));</code></pre> -</div> -</div> -<div class="paragraph"> -<p>Or, if you are fine with the <em>default</em> mapping you can directly create a -PropertySource using the <em>formats</em> API (this works since this module -registers the <em>json</em> format automatically using the <code>ServiceContext</code>):</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-java" data-lang="java">PropertySource ps = ConfigurationFormats.createPropertySource( - getClassLoader().getResource("myFileConfig.json"));</code></pre> -</div> -</div> -</div> -</div> +</dependency></code></pre> + </div> + </div> + <div class="paragraph"> + <p>This extension also transitively requires the tamaya.formats module.</p> + </div> + </div> + <div class="sect2"> + <h3 id="_reading_configuration_in_json">Reading configuration in JSON</h3> + <div class="paragraph"> + <p>For reading JSON based onfiguration most easily a JSONFormat can be used:</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-java" data-lang="java">ConfigurationData dataRead = ConfigurationFormats.readConfig( + getClassLoader().getResource("myFileConfig.json"), new JSONFormat()));</code></pre> + </div> + </div> + <div class="paragraph"> + <p>Or, if you are fine with the <em>default</em> mapping you can directly create a PropertySource using the <em>formats</em> API (this works since this module registers the <em>json</em> format automatically using the <code>ServiceContext</code>):</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-java" data-lang="java">PropertySource ps = ConfigurationFormats.createPropertySource( + getClassLoader().getResource("myFileConfig.json"));</code></pre> + </div> + </div> + </div> + </div> </div></p> <hr /> @@ -228,8 +223,8 @@ registers the <em>json</em> format automatically using the <code>ServiceContext< <div id="footer"> <div class="container"> <p class="muted credit">© 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-05-03</span> | + | Baked with <a href="http://jbake.org">JBake <span>v2.6.1</span></a> + at <span>2018-05-17</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>
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/cddd52a8/documentation/extensions/mod_management.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_management.html b/documentation/extensions/mod_management.html index 33d50c1..8002eb6 100644 --- a/documentation/extensions/mod_management.html +++ b/documentation/extensions/mod_management.html @@ -125,56 +125,54 @@ <h1>Apache Tamaya - Extension: JMX Management Access</h1> </div> - <p><em>2018-04-26</em></p> + <p><em>2018-05-17</em></p> - <p><div id="preamble"> -<div class="sectionbody"> -<!-- toc disabled --> -</div> -</div> -<div class="sect1"> -<h2 id="ExtModel">Tamaya Management (JMX Support) (Extension Module)</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>Tamaya <em>Management</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>The Tamaya <em>Management</em> module provides support for registering a JMX management bean for -accessing 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 run on Java 7 and beyond.</p> -</div> -</div> -<div class="sect2"> -<h3 id="_installation">Installation</h3> -<div class="paragraph"> -<p>To use the <em>management</em> extension 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> + <p><div id="preamble"> + <div class="sectionbody"> + <!-- toc disabled --> + </div> +</div> +<div class="sect1"> + <h2 id="ExtModel">Tamaya Management (JMX Support) (Extension Module)</h2> + <div class="sectionbody"> + <div class="paragraph"> + <p>Tamaya <em>Management</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>The Tamaya <em>Management</em> module provides support for registering a JMX management bean for accessing 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 run on Java 7 and beyond.</p> + </div> + </div> + <div class="sect2"> + <h3 id="_installation">Installation</h3> + <div class="paragraph"> + <p>To use the <em>management</em> extension 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-management</artifactId> <version>{tamaya_version}</version> -</dependency></code></pre> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_the_managedconfigmbean_bean">The ManagedConfigMBean bean</h3> -<div class="paragraph"> -<p>The management model defines the MBean of type ManagedConfigMBean as follows:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface ManagedConfigMBean { +</dependency></code></pre> + </div> + </div> + </div> + <div class="sect2"> + <h3 id="_the_managedconfigmbean_bean">The ManagedConfigMBean bean</h3> + <div class="paragraph"> + <p>The management model defines the MBean of type ManagedConfigMBean as follows:</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface ManagedConfigMBean { String getJsonConfigurationInfo(); String getXmlConfigurationInfo(); Map<String, String> getConfiguration(); @@ -183,46 +181,28 @@ to your module:</p> Set<String> getTransitiveSections(); boolean isSectionExisting(String area); default boolean isSectionEmpty(String area); -}</code></pre> -</div> -</div> -<div class="ulist"> -<ul> -<li> -<p>getJsonConfigurationInfo,getXmlConfigurationInfo return a JSON or XML representation of the -current configuration.</p> -</li> -<li> -<p>getConfiguration access the current configuration properties.</p> -</li> -<li> -<p>getSection allows to extract all entries below a certain subkey. With <em>recursive</em> the query -will not only return direct children, but also recursively walk down all subsection of the -given section key.</p> -</li> -<li> -<p>getSections returns all current known section names.</p> -</li> -<li> -<p>getTransitiveSections return all sections, but also adds all transitive subsection as single -entries to the set as well.</p> -</li> -<li> -<p>isSectionExisting and isSectionEmpty allow for quering if entries are present under the given -section keys.</p> -</li> -</ul> -</div> -</div> -<div class="sect2"> -<h3 id="_registering_the_managedconfigmbean">Registering the ManagedConfigMBean</h3> -<div class="paragraph"> -<p>For registering the current ManagedConfigMBean instance to the current MBean platform server, the -following static methods are available:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public final class ConfigManagementSupport{ +}</code></pre> + </div> + </div> + <div class="ulist"> + <ul> + <li> <p>getJsonConfigurationInfo,getXmlConfigurationInfo return a JSON or XML representation of the current configuration.</p> </li> + <li> <p>getConfiguration access the current configuration properties.</p> </li> + <li> <p>getSection allows to extract all entries below a certain subkey. With <em>recursive</em> the query will not only return direct children, but also recursively walk down all subsection of the given section key.</p> </li> + <li> <p>getSections returns all current known section names.</p> </li> + <li> <p>getTransitiveSections return all sections, but also adds all transitive subsection as single entries to the set as well.</p> </li> + <li> <p>isSectionExisting and isSectionEmpty allow for quering if entries are present under the given section keys.</p> </li> + </ul> + </div> + </div> + <div class="sect2"> + <h3 id="_registering_the_managedconfigmbean">Registering the ManagedConfigMBean</h3> + <div class="paragraph"> + <p>For registering the current ManagedConfigMBean instance to the current MBean platform server, the following static methods are available:</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-java" data-lang="java">public final class ConfigManagementSupport{ private JMXSupport(){} @@ -230,39 +210,30 @@ following static methods are available:</p> public static ObjectName registerMBean(String context); public static ObjectName unregisterMBean(); public static ObjectName unregisterMBean(String context); -}</code></pre> -</div> -</div> -<div class="ulist"> -<ul> -<li> -<p>registerMBean creates a new ManagedConfigMBean instance using the ServiceContextManager -and registers it. Optionally an additional <em>context</em> parameter can be passed, which allows -to register the management bean for different classloaders, e.g. for different -ears.</p> -</li> -<li> -<p>unregisterMBean does the oppsite than registering obviously.</p> -</li> -</ul> -</div> -<div class="admonitionblock note"> -<table> -<tr> -<td class="icon"> -<div class="title">Note</div> -</td> -<td class="content"> -The instance of ManagedConfigMBean to be created and registered is evaluated by use og the - ServiceContextManager. So you can replace the bean implementation by registering your - overriding implementation using the current ServiceContext (by default using - java.util.ServiceLoader and @Priority annotation. -</td> -</tr> -</table> -</div> -</div> -</div> +}</code></pre> + </div> + </div> + <div class="ulist"> + <ul> + <li> <p>registerMBean creates a new ManagedConfigMBean instance using the ServiceContextManager and registers it. Optionally an additional <em>context</em> parameter can be passed, which allows to register the management bean for different classloaders, e.g. for different ears.</p> </li> + <li> <p>unregisterMBean does the oppsite than registering obviously.</p> </li> + </ul> + </div> + <div class="admonitionblock note"> + <table> + <tbody> + <tr> + <td class="icon"> + <div class="title"> + Note + </div> </td> + <td class="content"> The instance of ManagedConfigMBean to be created and registered is evaluated by use og the ServiceContextManager. So you can replace the bean implementation by registering your overriding implementation using the current ServiceContext (by default using java.util.ServiceLoader and @Priority annotation. </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> </div></p> <hr /> @@ -274,8 +245,8 @@ The instance of ManagedConfigMBean to be created and registered is evaluated by <div id="footer"> <div class="container"> <p class="muted credit">© 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-05-03</span> | + | Baked with <a href="http://jbake.org">JBake <span>v2.6.1</span></a> + at <span>2018-05-17</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> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/cddd52a8/documentation/extensions/mod_metamodel.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_metamodel.html b/documentation/extensions/mod_metamodel.html index 25d52f7..483e8a3 100644 --- a/documentation/extensions/mod_metamodel.html +++ b/documentation/extensions/mod_metamodel.html @@ -125,33 +125,34 @@ <h1>Apache Tamaya - Extension: Metamodel (Configuration of Tamaya)</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="Model">Tamaya Metamodel (Configuration of Tamaya) (Extension Module)</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>Tamaya <em>metamodel</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>The Tamaya <em>metamodel</em> module provides support for configuring the Tamaya system itself. It -allows, like a logging configuration, to configure how your configuration framework should -work, where to find configuration and how it is combined using overrides, filters etc.</p> -</div> -<div class="paragraph"> -<p>By default it uses an XML based configuration format as illustrated below:</p> -</div> -<div class="listingblock"> -<div class="title">Extract from <code>tamaya-config.xml</code></div> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><configuration> + <p><em>2018-05-17</em></p> + + <p><div id="preamble"> + <div class="sectionbody"> + <!-- toc disabled --> + </div> +</div> +<div class="sect1"> + <h2 id="Model">Tamaya Metamodel (Configuration of Tamaya) (Extension Module)</h2> + <div class="sectionbody"> + <div class="paragraph"> + <p>Tamaya <em>metamodel</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>The Tamaya <em>metamodel</em> module provides support for configuring the Tamaya system itself. It allows, like a logging configuration, to configure how your configuration framework should work, where to find configuration and how it is combined using overrides, filters etc.</p> + </div> + <div class="paragraph"> + <p>By default it uses an XML based configuration format as illustrated below:</p> + </div> + <div class="listingblock"> + <div class="title"> + Extract from + <code>tamaya-config.xml</code> + </div> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><configuration> <!-- Context is evaluated first. --> <context> <context-entry name="stage">${properties:system:STAGE?default=DEV}</context-entry> @@ -189,94 +190,70 @@ work, where to find configuration and how it is combined using overrides, filter </source> ... </property-sources> -</configuration></code></pre> -</div> -</div> -<div class="paragraph"> -<p>The module basically provides an XML representation to the ConfigurationContextBuilder API. -It creates a corresponding ConfigurationContext and registers the corresponding Configuration -as the system’s <em>default</em> configuration (accessible from <code>ConfigurationProvider.getConfiguration()</code>.</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 <em>metamodel</em> features 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> +</configuration></code></pre> + </div> + </div> + <div class="paragraph"> + <p>The module basically provides an XML representation to the ConfigurationContextBuilder API. It creates a corresponding ConfigurationContext and registers the corresponding Configuration as the systemâs <em>default</em> configuration (accessible from <code>ConfigurationProvider.getConfiguration()</code>.</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 <em>metamodel</em> features 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-model</artifactId> <version>{tamaya_version}</version> -</dependency></code></pre> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_creating_a_configuration_using_meta_configuration">Creating a Configuration using Meta-Configuration</h3> -<div class="paragraph"> -<p>The basic feature of this module is the capability of creating a Configuration completely -based on a meta-configuration file. For this the MetaConfiguration main singleton -provides different methods:</p> -</div> -<div class="paragraph"> -<p>[source, java)</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre>public final class MetaConfiguration { +</dependency></code></pre> + </div> + </div> + </div> + <div class="sect2"> + <h3 id="_creating_a_configuration_using_meta_configuration">Creating a Configuration using Meta-Configuration</h3> + <div class="paragraph"> + <p>The basic feature of this module is the capability of creating a Configuration completely based on a meta-configuration file. For this the MetaConfiguration main singleton provides different methods:</p> + </div> + <div class="paragraph"> + <p>[source, java)</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre>public final class MetaConfiguration { public static void configure(); public static void configure(URL metaConfig); public static ConfigurationContextBuilder createContextBuilder(URL metaConfig); - public static Configuration createConfiguration(URL metaConfig);</pre> -</div> -</div> -<div class="ulist"> -<ul> -<li> -<p>If you have supplied your meta-configuration at <code>META-INF/tamaya-config.xml</code> you simply -call MetaConfiguration.configure();. This will read the meta-configuration and -configure Tamaya’s <em>default</em> configuration. Alternatively you can choose your own -metaconfiguration location by passing an alternate <code>URL</code> ro read from.</p> -</li> -<li> -<p>With MetaConfiguration.createContextBuilder() you can stop a step earlier: a new -instance of ConfigurationContextBuilder is created and configured with all the -entries found in your meta-configuration. Also here you can optionally pass your -custom location for the meta-configuration resouce.</p> -</li> -<li> -<p>Finally MetaConfiguration.createConfiguration(URL) allows you to create an -arbitrary Configuration instance using a meta-configuration file. The <code>Configuration</code> -instance is completely independent and not registered as <em>default</em> configuration, so -it’s lifecycle and usage is completely under your control.</p> -</li> -</ul> -</div> -</div> -<div class="sect2"> -<h3 id="_metacontext">MetaContext</h3> -<div class="paragraph"> -<p>When thinking what are the various input parameters for determining a correct configuration, there -might be different things relevant in different scenarios, especially for developers in different -companies. A good example of such an input parameter is the current <code>STAGE</code>. All these kinf od inputs -can be summarized in some sort of meta-configuration, commonly known as a <em>context</em>. So -the metamodel extension ships with a MetaContext class that allows to define a common meta-context, -that can be accessed by components as needed to determine the correct settings to be applied:</p> -</div> -<div class="paragraph"> -<p>[source, java)</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre>public final class MetaContext { + public static Configuration createConfiguration(URL metaConfig);</pre> + </div> + </div> + <div class="ulist"> + <ul> + <li> <p>If you have supplied your meta-configuration at <code>META-INF/tamaya-config.xml</code> you simply call MetaConfiguration.configure();. This will read the meta-configuration and configure Tamayaâs <em>default</em> configuration. Alternatively you can choose your own metaconfiguration location by passing an alternate <code>URL</code> ro read from.</p> </li> + <li> <p>With MetaConfiguration.createContextBuilder() you can stop a step earlier: a new instance of ConfigurationContextBuilder is created and configured with all the entries found in your meta-configuration. Also here you can optionally pass your custom location for the meta-configuration resouce.</p> </li> + <li> <p>Finally MetaConfiguration.createConfiguration(URL) allows you to create an arbitrary Configuration instance using a meta-configuration file. The <code>Configuration</code> instance is completely independent and not registered as <em>default</em> configuration, so itâs lifecycle and usage is completely under your control.</p> </li> + </ul> + </div> + </div> + <div class="sect2"> + <h3 id="_metacontext">MetaContext</h3> + <div class="paragraph"> + <p>When thinking what are the various input parameters for determining a correct configuration, there might be different things relevant in different scenarios, especially for developers in different companies. A good example of such an input parameter is the current <code>STAGE</code>. All these kinf od inputs can be summarized in some sort of meta-configuration, commonly known as a <em>context</em>. So the metamodel extension ships with a MetaContext class that allows to define a common meta-context, that can be accessed by components as needed to determine the correct settings to be applied:</p> + </div> + <div class="paragraph"> + <p>[source, java)</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre>public final class MetaContext { ... @@ -413,45 +390,30 @@ that can be accessed by components as needed to determine the correct settings t * @return the properties, never null. */ public Map<String,String> getProperties(); -}</pre> -</div> -</div> -<div class="paragraph"> -<p>As you see, a MetaContext has the following aspects:</p> -</div> -<div class="ulist"> -<ul> -<li> -<p>there are multiple context’s possible, identified by their name.</p> -</li> -<li> -<p>Accessing an instance that does not yet exist, will create a new one.</p> -</li> -<li> -<p>there is one shared <em>default</em> instance.</p> -</li> -<li> -<p>they store ordinary <code>String,String</code> key, value pairs.</p> -</li> -<li> -<p>they can be <em>combined</em> into a overriging hierarchy</p> -</li> -<li> -<p>accessing the <em>default</em> MetaContext returns the global instance combined with -a threaded override instance. Passing <code>reinit</code> will clear the thread instance’s -data.</p> -</li> -</ul> -</div> -<div class="sect3"> -<h4 id="_configuring_metacontexts">Configuring MetaContexts</h4> -<div class="paragraph"> -<p><code>MetaContext</code> instances can be configured in the <em>meta-configuration</em> in the first -<code>meta-context</code> section as illustrated below:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><!-- Configuring the default context --> +}</pre> + </div> + </div> + <div class="paragraph"> + <p>As you see, a MetaContext has the following aspects:</p> + </div> + <div class="ulist"> + <ul> + <li> <p>there are multiple contextâs possible, identified by their name.</p> </li> + <li> <p>Accessing an instance that does not yet exist, will create a new one.</p> </li> + <li> <p>there is one shared <em>default</em> instance.</p> </li> + <li> <p>they store ordinary <code>String,String</code> key, value pairs.</p> </li> + <li> <p>they can be <em>combined</em> into a overriging hierarchy</p> </li> + <li> <p>accessing the <em>default</em> MetaContext returns the global instance combined with a threaded override instance. Passing <code>reinit</code> will clear the thread instanceâs data.</p> </li> + </ul> + </div> + <div class="sect3"> + <h4 id="_configuring_metacontexts">Configuring MetaContexts</h4> + <div class="paragraph"> + <p><code>MetaContext</code> instances can be configured in the <em>meta-configuration</em> in the first <code>meta-context</code> section as illustrated below:</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><!-- Configuring the default context --> <context> <context-entry name="stage">${properties:system:STAGE?default=DEV}</context-entry> <context-entry name="configdir">${properties:system:configdir?default=.}</context-entry> @@ -464,55 +426,43 @@ data.</p> <!-- Configuring a context named 'APP' --> <context name="APP"> <context-entry name="application">someAppName</context-entry> -</context></code></pre> -</div> -</div> -<div class="paragraph"> -<p>As shown above multiple contexts can be configured. Keys and values are of type <code>String</code>.</p> -</div> -<div class="sect4"> -<h5 id="_using_expressions">Using Expressions</h5> -<div class="paragraph"> -<p>As shown before, it is possible to add simple expressions, enclosed in <code>${}</code>. Hereby the -contents must be formatted as <code>evaluator:expression</code>, which then internally must be interpreted by -the org.apache.tamaya.metamodel.internal.SimpleResolver, which effectively reads and -applied context entries.</p> -</div> -<div class="paragraph"> -<p>Currently the following placeholders for context entries are provided:</p> -</div> -<div class="ulist"> -<ul> -<li> -<p>properties - mapping to system properties (<code>properties:sys:KEY</code>) or -environment properties (<code>properties:env:KEY</code>) or other MetaContext - entries initialized already (<code>properties:ctx[:CTXNAME]:KEY</code>)</p> -</li> -<li> -<p>java - mapping to a static method or field, returning a <code>String</code> value.</p> -</li> -</ul> -</div> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_general_extensions">General Extensions</h3> -<div class="paragraph"> -<p>Working with meta-models requires additional aspects to be generalized to separate -concerns and reuse some of the common functionality. These concepts are shown in the following -subsections.</p> -</div> -</div> -<div class="sect2"> -<h3 id="_enabled">Enabled</h3> -<div class="paragraph"> -<p>Things can be dynamically enabled or disabled, e.g. based on context. This can be -modelled by the Enabled interface:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface Enabled { +</context></code></pre> + </div> + </div> + <div class="paragraph"> + <p>As shown above multiple contexts can be configured. Keys and values are of type <code>String</code>.</p> + </div> + <div class="sect4"> + <h5 id="_using_expressions">Using Expressions</h5> + <div class="paragraph"> + <p>As shown before, it is possible to add simple expressions, enclosed in <code>${}</code>. Hereby the contents must be formatted as <code>evaluator:expression</code>, which then internally must be interpreted by the org.apache.tamaya.metamodel.internal.SimpleResolver, which effectively reads and applied context entries.</p> + </div> + <div class="paragraph"> + <p>Currently the following placeholders for context entries are provided:</p> + </div> + <div class="ulist"> + <ul> + <li> <p>properties - mapping to system properties (<code>properties:sys:KEY</code>) or environment properties (<code>properties:env:KEY</code>) or other MetaContext entries initialized already (<code>properties:ctx[:CTXNAME]:KEY</code>)</p> </li> + <li> <p>java - mapping to a static method or field, returning a <code>String</code> value.</p> </li> + </ul> + </div> + </div> + </div> + </div> + <div class="sect2"> + <h3 id="_general_extensions">General Extensions</h3> + <div class="paragraph"> + <p>Working with meta-models requires additional aspects to be generalized to separate concerns and reuse some of the common functionality. These concepts are shown in the following subsections.</p> + </div> + </div> + <div class="sect2"> + <h3 id="_enabled">Enabled</h3> + <div class="paragraph"> + <p>Things can be dynamically enabled or disabled, e.g. based on context. This can be modelled by the Enabled interface:</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface Enabled { /** * Returns the enabled property. @@ -525,59 +475,51 @@ modelled by the Enabled interface:</p> * @param enabled the enabled value. */ void setEnabled(boolean enabled); -}</code></pre> -</div> -</div> -<div class="paragraph"> -<p>Enabled can be used as a mixin-logic, e.g. for decorating property sources, -property source providers, filters and converters. The decorator can also, if not -set explicitly, evaluate the <em>enabled</em> property based on the current runtime -context.</p> -</div> -</div> -<div class="sect2"> -<h3 id="_refreshable">Refreshable</h3> -<div class="paragraph"> -<p>Similar to <em>Enabled</em> things can also be refreshable.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface Refreshable { +}</code></pre> + </div> + </div> + <div class="paragraph"> + <p>Enabled can be used as a mixin-logic, e.g. for decorating property sources, property source providers, filters and converters. The decorator can also, if not set explicitly, evaluate the <em>enabled</em> property based on the current runtime context.</p> + </div> + </div> + <div class="sect2"> + <h3 id="_refreshable">Refreshable</h3> + <div class="paragraph"> + <p>Similar to <em>Enabled</em> things can also be refreshable.</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface Refreshable { /** * Refreshes the given instance. */ void refresh(); -}</code></pre> -</div> -</div> -<div class="paragraph"> -<p>This can be used to define a common API for refreshing artifctas. Similar to -<em>Enabled</em> this can be applied as a decorator/mix-in interface to property -sources and property source providers. This property also is supported in the -XML metaconfiguration, e.g.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><property-sources> +}</code></pre> + </div> + </div> + <div class="paragraph"> + <p>This can be used to define a common API for refreshing artifctas. Similar to <em>Enabled</em> this can be applied as a decorator/mix-in interface to property sources and property source providers. This property also is supported in the XML metaconfiguration, e.g.</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><property-sources> <source type="file" refreshable="true"> <name>config.json</name> <param name="location">config.json</param> </source> -</property-sources></code></pre> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_the_metaconfiguration_xml_structure">The MetaConfiguration XML Structure</h3> -<div class="paragraph"> -<p>In general the <code>tamaya-config.xml</code> file does never apply an XML schema or -similar. Nevertheless there is a common DSL structure, which can be extended -as well (see next chapter).</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><configuration> +</property-sources></code></pre> + </div> + </div> + </div> + <div class="sect2"> + <h3 id="_the_metaconfiguration_xml_structure">The MetaConfiguration XML Structure</h3> + <div class="paragraph"> + <p>In general the <code>tamaya-config.xml</code> file does never apply an XML schema or similar. Nevertheless there is a common DSL structure, which can be extended as well (see next chapter).</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><configuration> <!-- PART ONE: Contexts initialization. --> <context> <context-entry name="stage">${properties:system:STAGE?default=DEV}</context-entry> @@ -653,57 +595,39 @@ as well (see next chapter).</p> <!--<converter type="AllInOneConverter"/>--> <default-converters/> </property-converters> -</configuration></code></pre> -</div> -</div> -<div class="paragraph"> -<p>The different parts in fact are not hardcoded, but implemented -as independent components, where each of them gets access to the -XML DOM tree to read the configuration aspects of interest. -Instances related must implement the ++ interface and register it to -the <code>ServiceContext</code>. Reading order is mapped using <code>@Priority</code> -annotations. -For further details refer to the SPI section in this document.</p> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_model_spi">Model SPI</h2> -<div class="sectionbody"> -<div class="sect2"> -<h3 id="_extending_the_xml_dsl">Extending the XML DSL</h3> -<div class="paragraph"> -<p>The XML DSL can be extended in various ways:</p> -</div> -<div class="ulist"> -<ul> -<li> -<p>Basically adding a new feature maps to adding a new section to the -meta-config XML. This can be easily done, by implementing MetaConfigurationReader -and do whatever is appropriate for your use case.</p> -</li> -<li> -<p>For adding new expression capabilities for `MetaContext`entries SimpleResolver must -be implemented.</p> -</li> -<li> -<p>For allowing customized parameterization of artifacts, e.g. property sources, -property source providers, converters and filters etc. you may implement ItemFactory -instances.</p> -</li> -</ul> -</div> -</div> -<div class="sect2"> -<h3 id="_metaconfigurationreader">MetaConfigurationReader</h3> -<div class="paragraph"> -<p>XML metaconfiguration is effectively processed by instances of -type org.apache.tamaya.metamodel.spi.MetaConfigurationReader:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface MetaConfigurationReader { +</configuration></code></pre> + </div> + </div> + <div class="paragraph"> + <p>The different parts in fact are not hardcoded, but implemented as independent components, where each of them gets access to the XML DOM tree to read the configuration aspects of interest. Instances related must implement the ++ interface and register it to the <code>ServiceContext</code>. Reading order is mapped using <code>@Priority</code> annotations. For further details refer to the SPI section in this document.</p> + </div> + </div> + </div> +</div> +<div class="sect1"> + <h2 id="_model_spi">Model SPI</h2> + <div class="sectionbody"> + <div class="sect2"> + <h3 id="_extending_the_xml_dsl">Extending the XML DSL</h3> + <div class="paragraph"> + <p>The XML DSL can be extended in various ways:</p> + </div> + <div class="ulist"> + <ul> + <li> <p>Basically adding a new feature maps to adding a new section to the meta-config XML. This can be easily done, by implementing MetaConfigurationReader and do whatever is appropriate for your use case.</p> </li> + <li> <p>For adding new expression capabilities for `MetaContext`entries SimpleResolver must be implemented.</p> </li> + <li> <p>For allowing customized parameterization of artifacts, e.g. property sources, property source providers, converters and filters etc. you may implement ItemFactory instances.</p> </li> + </ul> + </div> + </div> + <div class="sect2"> + <h3 id="_metaconfigurationreader">MetaConfigurationReader</h3> + <div class="paragraph"> + <p>XML metaconfiguration is effectively processed by instances of type org.apache.tamaya.metamodel.spi.MetaConfigurationReader:</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface MetaConfigurationReader { /** * Reads meta-configuration from the given document and configures the current @@ -714,34 +638,27 @@ type org.apache.tamaya.metamodel.spi.MetaConfigurationReader:</p> */ void read(Document document, ConfigurationContextBuilder contextBuilder); - }</code></pre> -</div> -</div> -<div class="paragraph"> -<p>Hereby we also see that an instance of <code>ConfigurationContextBuilder</code> is passed. -Remember, we mentioned earlier that meta-configuration basically is a XML -API to the building a configuration using a ConfigurationContextBuilder. So -all you can do with the meta-config XML can also be done programmatically using -the Java API.</p> -</div> -<div class="paragraph"> -<p>This module provides instances of this class for reading of meta-context, -property-sources, property source providers, converters, filters and more. -Look into the org.apache.tamaya.metamodel.internal package for further details.</p> -</div> -<div class="paragraph"> -<p>New instances implementing this interface must be registered into the current -ServiceContext, by default the ServiceLoader is used.</p> -</div> -</div> -<div class="sect2"> -<h3 id="_itemfactory">ItemFactory</h3> -<div class="paragraph"> -<p>Instances of ItemFactory allow to configure artifacts using XML data:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface ItemFactory<T> { + }</code></pre> + </div> + </div> + <div class="paragraph"> + <p>Hereby we also see that an instance of <code>ConfigurationContextBuilder</code> is passed. Remember, we mentioned earlier that meta-configuration basically is a XML API to the building a configuration using a ConfigurationContextBuilder. So all you can do with the meta-config XML can also be done programmatically using the Java API.</p> + </div> + <div class="paragraph"> + <p>This module provides instances of this class for reading of meta-context, property-sources, property source providers, converters, filters and more. Look into the org.apache.tamaya.metamodel.internal package for further details.</p> + </div> + <div class="paragraph"> + <p>New instances implementing this interface must be registered into the current ServiceContext, by default the ServiceLoader is used.</p> + </div> + </div> + <div class="sect2"> + <h3 id="_itemfactory">ItemFactory</h3> + <div class="paragraph"> + <p>Instances of ItemFactory allow to configure artifacts using XML data:</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface ItemFactory<T> { /** * Get the factory name. @@ -764,40 +681,35 @@ ServiceContext, by default the ServiceLoader is used.</p> */ Class<? extends T> getType(); -}</code></pre> -</div> -</div> -<div class="paragraph"> -<p>The factory’s name hereby is used as a short cut, e.g. have a look at the following -XML snippet defining a <code>PropertySource</code> to be added:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><source type="file" refreshable="true"> +}</code></pre> + </div> + </div> + <div class="paragraph"> + <p>The factoryâs name hereby is used as a short cut, e.g. have a look at the following XML snippet defining a <code>PropertySource</code> to be added:</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><source type="file" refreshable="true"> <name>config.json</name> <param name="location">config.json</param> -</source></code></pre> -</div> -</div> -<div class="paragraph"> -<p>In the above snippet <em>file</em> equals to the factory name, which provides the user -a simple to use short name, instead of adding the fully qualified classname -(which is always possible).</p> -</div> -<div class="paragraph"> -<p>The <em>location</em> paramter with its value is passed as <code>Map</code> to the <code>create</code> method.</p> -</div> -</div> -<div class="sect2"> -<h3 id="_itemfactorymanager">ItemFactoryManager</h3> -<div class="paragraph"> -<p>This singleton class manages the <em>ItemFactory</em> instances found, hereby allowing -accessing and registering instances. This singleton is actually used by the -component parsers (type <code>MetaConfigurationReader</code>).</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public final class ItemFactoryManager { +</source></code></pre> + </div> + </div> + <div class="paragraph"> + <p>In the above snippet <em>file</em> equals to the factory name, which provides the user a simple to use short name, instead of adding the fully qualified classname (which is always possible).</p> + </div> + <div class="paragraph"> + <p>The <em>location</em> paramter with its value is passed as <code>Map</code> to the <code>create</code> method.</p> + </div> + </div> + <div class="sect2"> + <h3 id="_itemfactorymanager">ItemFactoryManager</h3> + <div class="paragraph"> + <p>This singleton class manages the <em>ItemFactory</em> instances found, hereby allowing accessing and registering instances. This singleton is actually used by the component parsers (type <code>MetaConfigurationReader</code>).</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-java" data-lang="java">public final class ItemFactoryManager { ... @@ -808,58 +720,37 @@ component parsers (type <code>MetaConfigurationReader</code>).</p> public <T> void registerItemFactory(ItemFactory<T> factory); -}</code></pre> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_extended_implementations">Extended Implementations</h3> -<div class="paragraph"> -<p>The package org.apache.tamaya.metamodel.ext contains a few useful -implementations that also can be used in your meta-configuration and -show how mixin-functionality can be added without touching property source -implementations.</p> -</div> -<div class="paragraph"> -<p>As of now the package contains</p> -</div> -<div class="ulist"> -<ul> -<li> -<p>EnabledPropertySource: a decorator for a <code>PropertySource</code> -adding the capability to <em>enable/disable</em> the property source.</p> -</li> -<li> -<p>EnabledPropertySourceProvider a decorator for a <code>PropertySourceProvider</code> -adding the capability to <em>enable/disable</em> the property source provider.</p> -</li> -<li> -<p>RefreshablePropertySource: a decorator for a <code>PropertySource</code> -adding the capability to <em>refresh</em> the property source.</p> -</li> -<li> -<p>EnabledPropertySourceProvider a decorator for a <code>PropertySourceProvider</code> -adding the capability to <em>refresh</em> the property source provider.</p> -</li> -</ul> -</div> -<div class="paragraph"> -<p>Not yet implemented but planned are implementations to add the following -functionality:</p> -</div> -<div class="ulist"> -<ul> -<li> -<p><em>caching</em> of entries for a given time.</p> -</li> -<li> -<p><em>immutability</em> of entries, so a configuration data (or parts of it) will -never change later.</p> -</li> -</ul> -</div> -</div> -</div> +}</code></pre> + </div> + </div> + </div> + <div class="sect2"> + <h3 id="_extended_implementations">Extended Implementations</h3> + <div class="paragraph"> + <p>The package org.apache.tamaya.metamodel.ext contains a few useful implementations that also can be used in your meta-configuration and show how mixin-functionality can be added without touching property source implementations.</p> + </div> + <div class="paragraph"> + <p>As of now the package contains</p> + </div> + <div class="ulist"> + <ul> + <li> <p>EnabledPropertySource: a decorator for a <code>PropertySource</code> adding the capability to <em>enable/disable</em> the property source.</p> </li> + <li> <p>EnabledPropertySourceProvider a decorator for a <code>PropertySourceProvider</code> adding the capability to <em>enable/disable</em> the property source provider.</p> </li> + <li> <p>RefreshablePropertySource: a decorator for a <code>PropertySource</code> adding the capability to <em>refresh</em> the property source.</p> </li> + <li> <p>EnabledPropertySourceProvider a decorator for a <code>PropertySourceProvider</code> adding the capability to <em>refresh</em> the property source provider.</p> </li> + </ul> + </div> + <div class="paragraph"> + <p>Not yet implemented but planned are implementations to add the following functionality:</p> + </div> + <div class="ulist"> + <ul> + <li> <p><em>caching</em> of entries for a given time.</p> </li> + <li> <p><em>immutability</em> of entries, so a configuration data (or parts of it) will never change later.</p> </li> + </ul> + </div> + </div> + </div> </div></p> <hr /> @@ -871,8 +762,8 @@ never change later.</p> <div id="footer"> <div class="container"> <p class="muted credit">© 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-05-03</span> | + | Baked with <a href="http://jbake.org">JBake <span>v2.6.1</span></a> + at <span>2018-05-17</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> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/cddd52a8/documentation/extensions/mod_microprofile.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_microprofile.html b/documentation/extensions/mod_microprofile.html index ddb5079..d9888b9 100644 --- a/documentation/extensions/mod_microprofile.html +++ b/documentation/extensions/mod_microprofile.html @@ -125,76 +125,62 @@ <h1>Apache Tamaya - Extension: Microprofile Implementation</h1> </div> - <p><em>2018-04-26</em></p> + <p><em>2018-05-17</em></p> - <p><div id="preamble"> -<div class="sectionbody"> -<!-- toc disabled --> -</div> -</div> -<div class="sect1"> -<h2 id="Spring">Tamaya Microprofile Implementation (Extension Module)</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>Tamaya <em>Microprofile</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>Microprofile</em> currently provides full integration for the Microprofile Configuration API:</p> -</div> -<div class="ulist"> -<ul> -<li> -<p>A Microprofile ConfigSource implementation can be used with Tamaya.</p> -</li> -<li> -<p>A Tamaya PropertySource can be used with any Microprofile implementation.</p> -</li> -<li> -<p>The same is also true for Converter,PropertyConverter.</p> -</li> -<li> -<p>Nevertheless Tamaya also fully implements the Microprofile API and also successfully is compatible with the -Microprofile TCK.</p> -</li> -</ul> -</div> -</div> -<div class="sect2"> -<h3 id="_compatibility">Compatibility</h3> -<div class="paragraph"> -<p>Both modules are based on Java 8, so they will run on Java 8 and beyond. The implemented Microprofile API is currently -version 1.1.</p> -</div> -</div> -<div class="sect2"> -<h3 id="_installation">Installation</h3> -<div class="paragraph"> -<p>To benefit from Tamaya Microprofile you only must one of the following dependencies to your module:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml"><dependency> + <p><div id="preamble"> + <div class="sectionbody"> + <!-- toc disabled --> + </div> +</div> +<div class="sect1"> + <h2 id="Spring">Tamaya Microprofile Implementation (Extension Module)</h2> + <div class="sectionbody"> + <div class="paragraph"> + <p>Tamaya <em>Microprofile</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>Microprofile</em> currently provides full integration for the Microprofile Configuration API:</p> + </div> + <div class="ulist"> + <ul> + <li> <p>A Microprofile ConfigSource implementation can be used with Tamaya.</p> </li> + <li> <p>A Tamaya PropertySource can be used with any Microprofile implementation.</p> </li> + <li> <p>The same is also true for Converter,PropertyConverter.</p> </li> + <li> <p>Nevertheless Tamaya also fully implements the Microprofile API and also successfully is compatible with the Microprofile TCK.</p> </li> + </ul> + </div> + </div> + <div class="sect2"> + <h3 id="_compatibility">Compatibility</h3> + <div class="paragraph"> + <p>Both modules are based on Java 8, so they will run on Java 8 and beyond. The implemented Microprofile API is currently version 1.1.</p> + </div> + </div> + <div class="sect2"> + <h3 id="_installation">Installation</h3> + <div class="paragraph"> + <p>To benefit from Tamaya Microprofile you only must one of the following dependencies 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-microprofile</artifactId> <version>{tamaya_version}</version> -</dependency></code></pre> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_using_microprofile_api">Using Microprofile API</h3> -<div class="paragraph"> -<p>Refer to <a href="http://microprofile.io/project/eclipse/microprofile-config" class="bare">http://microprofile.io/project/eclipse/microprofile-config</a> for details on how the API works and should be used. In general, you will see -many similarities with Tamaya, since Tamaya heavily influenced the design of microprofile.io regarding configuration. -Nevertheless Tamaya’s API is much more complete and provides far more feature as of now. Further changes in this area -may be good to be expected, since as of now also a corresponding specification (JSR) has been started and will -be supported by Tamaya as well.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-java" data-lang="java">// SE API +</dependency></code></pre> + </div> + </div> + </div> + <div class="sect2"> + <h3 id="_using_microprofile_api">Using Microprofile API</h3> + <div class="paragraph"> + <p>Refer to <a href="http://microprofile.io/project/eclipse/microprofile-config" class="bare">http://microprofile.io/project/eclipse/microprofile-config</a> for details on how the API works and should be used. In general, you will see many similarities with Tamaya, since Tamaya heavily influenced the design of microprofile.io regarding configuration. Nevertheless Tamayaâs API is much more complete and provides far more feature as of now. Further changes in this area may be good to be expected, since as of now also a corresponding specification (JSR) has been started and will be supported by Tamaya as well.</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-java" data-lang="java">// SE API Config config = ConfigProvider.getConfig(); String serverUrl = config.getValue("acme.myprj.some.url", String.class); @@ -229,11 +215,11 @@ public class InjectedConfigUsageSample { @Inject @ConfigProperty(name="myprj.some.dynamic.timeout", defaultValue="100") private javax.inject.Provider<Long> timeout; -}</code></pre> -</div> -</div> -</div> -</div> +}</code></pre> + </div> + </div> + </div> + </div> </div></p> <hr /> @@ -245,8 +231,8 @@ public class InjectedConfigUsageSample { <div id="footer"> <div class="container"> <p class="muted credit">© 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-05-03</span> | + | Baked with <a href="http://jbake.org">JBake <span>v2.6.1</span></a> + at <span>2018-05-17</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> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/cddd52a8/documentation/extensions/mod_mutable_config.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_mutable_config.html b/documentation/extensions/mod_mutable_config.html index 15fa1bd..ef481f4 100644 --- a/documentation/extensions/mod_mutable_config.html +++ b/documentation/extensions/mod_mutable_config.html @@ -125,109 +125,101 @@ <h1>Apache Tamaya - Extension: Mutable Configuration</h1> </div> - <p><em>2018-04-26</em></p> + <p><em>2018-05-17</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>Tamaya Configuration by default is 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 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 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"><dependency> + <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>Tamaya Configuration by default is 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 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 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"><dependency> <groupId>org.apache.tamaya.ext</groupId> <artifactId>tamaya-mutable-config</artifactId> <version>{tamaya_version}</version> -</dependency></code></pre> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_core_architecture">Core Architecture</h3> -<div class="sect3"> -<h4 id="_accessing_mutableconfiguration">Accessing MutableConfiguration</h4> -<div class="paragraph"> -<p>The core of the module is the MutableConfigurationProvider singleton, which provides access to MutableConfiguration -instance, which extends Configuration. This interface adds additional methods to add/update or remove property values. -Hereby each MutableConfiguration manages a transaction like context, which includes -a UUID that identifes a change. -Backends for writing changes applied umst implement MutablePropertySource, which extends PropertySource. -Registrations and ordering policies are exact the same as with ordinary property sources, but -mutable property sources can be targeted by config write operations.</p> -</div> -<div class="paragraph"> -<p>The example below shows how a MutableConfiguration 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">MutableConfiguration config = MutableConfigurationProvider +</dependency></code></pre> + </div> + </div> + </div> + <div class="sect2"> + <h3 id="_core_architecture">Core Architecture</h3> + <div class="sect3"> + <h4 id="_accessing_mutableconfiguration">Accessing MutableConfiguration</h4> + <div class="paragraph"> + <p>The core of the module is the MutableConfigurationProvider singleton, which provides access to MutableConfiguration instance, which extends Configuration. This interface adds additional methods to add/update or remove property values. Hereby each MutableConfiguration manages a transaction like context, which includes a UUID that identifes a change. Backends for writing changes applied umst implement MutablePropertySource, which extends PropertySource. Registrations and ordering policies are exact the same as with ordinary property sources, but mutable property sources can be targeted by config write operations.</p> + </div> + <div class="paragraph"> + <p>The example below shows how a MutableConfiguration 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">MutableConfiguration config = MutableConfigurationProvider .createMutableConfiguration(); 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’s <em>default</em> configuration as the backend to be used. -We can also pass any Configuration 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">Configuration config = ...; + .store();</code></pre> + </div> + </div> + <div class="paragraph"> + <p>In the above scenario we use the systemâs <em>default</em> configuration as the backend to be used. We can also pass any Configuration 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">Configuration config = ...; MutableConfiguration config = MutableConfigurationProvider - .createMutableConfiguration(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 MutablePropertySource instances, - a ConfigurationException 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 MutableConfiguration. -We will show in the following sections more details on the options provided…​</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public final class MutableConfigurationProvider { + .createMutableConfiguration(config);</code></pre> + </div> + </div> + <div class="admonitionblock note"> + <table> + <tbody> + <tr> + <td class="icon"> + <div class="title"> + Note + </div> </td> + <td class="content"> If a configuration does not contain any MutablePropertySource instances, a ConfigurationException is thrown since it would not be able to accept any changes. </td> + </tr> + </tbody> + </table> + </div> + <div class="paragraph"> + <p>Following we show the possible methods you can use to create a MutableConfiguration. We will show in the following sections more details on the options providedâ¦â</p> + </div> + <div class="listingblock"> + <div class="content"> + <pre class="prettyprint highlight"><code class="language-java" data-lang="java">public final class MutableConfigurationProvider { private MutableConfigurationProvider(){} @@ -240,15 +232,15 @@ We will show in the following sections more details on the options provided̷ 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 MutableConfiguration extends Configuration { +}</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 MutableConfiguration extends Configuration { void store(); @@ -260,28 +252,23 @@ We will show in the following sections more details on the options provided̷ MutableConfiguration remove(Collection<String> keys); MutableConfiguration remove(String... keys); -}</code></pre> -</div> -</div> -<div class="sect4"> -<h5 id="_targeting_specific_mutablepropertysources">Targeting specific MutablePropertySources</h5> -<div class="paragraph"> -<p>A Configuration may have multiple MutablePropertySource instances present. These are members of Tamaya’s ordered list of -PropertySources to evaluate the configuration. Nevertheless writing back changes requires additional aspects to -be considered: -* Should changes written target all mutable property sources? Or should a change only - target the most significant instance (hereby not writing the change to less significant property sources)? -* Or should a change be applied only to specific mutable property 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 MutableConfiguration 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 { +}</code></pre> + </div> + </div> + <div class="sect4"> + <h5 id="_targeting_specific_mutablepropertysources">Targeting specific MutablePropertySources</h5> + <div class="paragraph"> + <p>A Configuration may have multiple MutablePropertySource instances present. These are members of Tamayaâs ordered list of PropertySources to evaluate the configuration. Nevertheless writing back changes requires additional aspects to be considered: * Should changes written target all mutable property sources? Or should a change only target the most significant instance (hereby not writing the change to less significant property sources)? * Or should a change be applied only to specific mutable property 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 MutableConfiguration 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 propertySources all property sources, including read-only property sources, of the current configuration, @@ -289,20 +276,18 @@ control this aspect:</p> * @param configChange the configuration change, not null. */ void applyChange(ConfigChangeRequest configChange, Collection<PropertySource> propertySources); -}</code></pre> -</div> -</div> -<div class="paragraph"> -<p>By default, changes are applied to all registered MutablePropertySource instances -similarly.</p> -</div> -<div class="paragraph"> -<p>The MutableConfigurationProvider 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 MutableConfigurationProvider { +}</code></pre> + </div> + </div> + <div class="paragraph"> + <p>By default, changes are applied to all registered MutablePropertySource instances similarly.</p> + </div> + <div class="paragraph"> + <p>The MutableConfigurationProvider 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 MutableConfigurationProvider { [...] @@ -310,95 +295,65 @@ change propagation policy implementations:</p> 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’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’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<T> 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’s Configuration. 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’s configuration and -publishing events when things have been changed.</p> -</li> -<li> -<p>The SPI implementing the MutableConfigurationBackendSpi may inform/update any affected PropertySource, -PropertySourceProvider 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 MutablePropertySource implementations:</p> -</div> -<div class="ulist"> -<ul> -<li> -<p>MutablePropertySource resources, targeting local .properties files, using the java.util.Properties -format.</p> -</li> -<li> -<p>MutableXmlPropertySource 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 MutableConfigurationProviderSpi, that is used as a delegate by the MutableConfigurationProvider -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 MutableConfigurationProviderSpi { +}</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â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â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<T> 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âs Configuration. 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âs configuration and publishing events when things have been changed.</p> </li> + <li> <p>The SPI implementing the MutableConfigurationBackendSpi may inform/update any affected PropertySource, PropertySourceProvider 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 MutablePropertySource implementations:</p> + </div> + <div class="ulist"> + <ul> + <li> <p>MutablePropertySource resources, targeting local .properties files, using the java.util.Properties format.</p> </li> + <li> <p>MutableXmlPropertySource 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 MutableConfigurationProviderSpi, that is used as a delegate by the MutableConfigurationProvider 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 MutableConfigurationProviderSpi { /** * Creates a new {@link MutableConfiguration} with {@code autoCommit = false} as default. * @@ -409,15 +364,14 @@ singleton accessor:</p> */ MutableConfiguration createMutableConfiguration(Configuration 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> +}</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 /> @@ -429,8 +383,8 @@ singleton accessor:</p> <div id="footer"> <div class="container"> <p class="muted credit">© 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-05-03</span> | + | Baked with <a href="http://jbake.org">JBake <span>v2.6.1</span></a> + at <span>2018-05-17</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>
