http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/d4fa395c/documentation/extensions/mod_mutable_config.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_mutable_config.html b/documentation/extensions/mod_mutable_config.html index da2d526..404b8bd 100644 --- a/documentation/extensions/mod_mutable_config.html +++ b/documentation/extensions/mod_mutable_config.html @@ -430,7 +430,7 @@ singleton accessor:</p> <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/documentation/extensions/mod_optional.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_optional.html b/documentation/extensions/mod_optional.html index 5e21e80..35a5aa1 100644 --- a/documentation/extensions/mod_optional.html +++ b/documentation/extensions/mod_optional.html @@ -205,7 +205,7 @@ Additionally an EvaluationPolicy lets you define the precedence of configured va <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/documentation/extensions/mod_osgi.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_osgi.html b/documentation/extensions/mod_osgi.html index fa11924..9120534 100644 --- a/documentation/extensions/mod_osgi.html +++ b/documentation/extensions/mod_osgi.html @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8"/> - <title>Apache Tamaya - Extensions: OSGI Integrations</title> + <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=""/> @@ -122,10 +122,10 @@ <div class="container"> <div class="page-header"> - <h1>Apache Tamaya - Extensions: OSGI Integrations</h1> + <h1>Apache Tamaya - Extensions: OSGI Integration</h1> </div> - <p><em>2017-09-12</em></p> + <p><em>2017-11-20</em></p> <p><div id="preamble"> <div class="sectionbody"> @@ -141,28 +141,30 @@ <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 implements the OSGI ConfigAdmin service, -which is the OSGI basic component providing configuration. Tamaya by default overrides the OSGI default configuration -but can also be configured to extend it instead.</p> +<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’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 7, so it will run on Java 7 and beyond. +<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 (tbc)</p> +<p>Apache Karaf, version 4.0.7</p> </li> <li> <p>Apache Felix, version 5.6.1</p> </li> <li> -<p>tbd: Eclipse Equinox, version x.x.x.</p> +<p>Eclipse Equinox, version x.x.x.</p> </li> </ul> </div> @@ -180,106 +182,931 @@ 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-core:{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="_how_tamaya_deals_with_osgi_specialities">How Tamaya deals with OSGI Specialities</h3> +<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 bundle can -be loaded or unloaded at any time, so Tamaya’s logic should not assume a stable non changing environment. -These constraints are handled by Tamaya (implemented in tamaya-core and tamaya-psgi) as follows:</p> +<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’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 ServiceListener which reads all java.util.ServiceLoader configurations and +<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 the default ServiceContext with an OSGI based ServiceContext that -will consume all services through the OSGI service API. Consequently you can also register Tamaya extensions -as OSGI services yourself (e.g. your own PropertySource instances).</p> +OSGI Activator that replaces Tamaya’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’s ServiceContext SPI does additionally provide functionality for loading of (classpath) +resources using the bundle’s getEntry(String) method.</p> </li> <li> -<p>Tamaya’s ServiceContext SPI does not only provide a facade to the OSGI service mechanism it also provides -an API for loading of (classpath) resources. In OSGI it delegates to the bundle’s getEntry(String) method.</p> +<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="paragraph"> -<p>Finally by adding Tamaya’s OSGI integration module (tamaya-osgi) Tamaya replaces the existing OSGI ConfigAdmin service -with an istance based on Tamaya. Hereby Tamaya can use the existing ConfigAdmin component as a fallback -or override source (see configuration options explained later). This does not interfere with any existing -injection mechanism already in place in your existing OSGI environment.</p> +<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_how_tamaya_integrates_with_the_existing_configadmin_service">Configuring how Tamaya integrates with the existing ConfigAdmin service</h3> +<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>Tamaya provides several options that define how it combines it’s values with the values provided -from the additionally installed ConfigAdmin service:</p> +<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’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>org.tamaya.integration.osgi.cm.ranking (int) allows to configure the OSGI service ranking used by the Tamaya -BundleActivator to register Tamaya’s ConfigAdmin service. In OSGI higher ranking precede lower rankings. -By default Tamaya’s OSGI extending service registration mechanism is reusing any annotated @Priority priority -values as corresponsing rankings.</p> +<p>setting the -Dtamaya-enabled=true system property.</p> </li> <li> -<p>org.tamaya.integration.osgi.cm.override (boolean) allows to configure if Tamaya is overriding any existing -values from the default ConfigAdmin instance, or only extending them. In other words this setting allows you to -define, which configuration subsystem has precedence for evaluating the final values, either Tamaya based -configuration (default) or the configuration mechanisms provided by default from your OSGI container (when this flag -is set to false).</p> +<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’s MANIFEST.</p> +</li> +</ul> </div> -<div class="sect2"> -<h3 id="_mapping_of_pids_and_factorypids">Mapping of pids and factoryPids</h3> +</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’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>When accessing configuration from the OSGI ConfigAdmin a pid, or factoryPid is passed additionally to -tell the configuration service, for which bundle configuration is requested. Tamaya, by default, maps -the OSGI pid or factory pid to a corresponding root section in Tamaya’s configuration:</p> +<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’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<String,String> with String keys and String values. Whereas OSGI configuration are +multiple +Dictionary<String,?> (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">OSGI default pid mapping</div> +<div class="title">Tamaya configuration for PID 'MyPlugin'</div> <div class="content"> -<pre class="prettyprint highlight"><code class="language-listing" data-lang="listing"># OSGI parameters -pid=myBundle -key=common.net.port +<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’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’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 getType(){...} + + public String getPid() {... } -# Tamaya key -[myBundle]common.net.port</code></pre> + 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>This mapping can be adapted if needed by implementing and registering the following OSGI service:</p> +<p>As mentioned Tamaya exposes it’s OSGI functionality, allowing programmatic access to Tamaya configuration +logic with the TamayaConfigService OSGI service:</p> </div> <div class="listingblock"> -<div class="title">OSGIConfigRootMapper</div> +<div class="title">The exposed TamayaConfigService</div> <div class="content"> -<pre class="prettyprint highlight"><code class="language-java" data-lang="java">public interface OSGIConfigRootMapper { +<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<String,Object> 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<String,Object> 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<String,Object> 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<String,?> getBackup(String pid); + + /** + * Get all current known PIDs for which backups are registered. + * @return all known PIDs for which backups are registered. + */ + Set<String> 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); - String getTamayaConfigRoot(String pid, String factoryPid); + /** + * 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<ConfigHistory> 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<ConfigHistory> 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<String,Object> 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’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"><dependency> + <groupId>org.apache.tamaya.ext</groupId> + <artifactId>tamaya-osgi-injection</artifactId> + <version>${tamaya.version}</version> +</dependency> +<dependency> + <groupId>org.apache.tamaya.ext</groupId> + <artifactId>tamaya-injection</artifactId> + <version>${tamaya.version}</version> +</dependency> +<dependency> + <groupId>org.apache.tamaya.ext</groupId> + <artifactId>injection-api</artifactId> + <version>${tamaya.version}</version> +</dependency></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’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 <T> the input and return type. + * @param pid the target PID, not null. + * @param location the optional location + * @return the configured instance. + */ + <T> 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 <T> the type + * @return a configuring supplier. + */ + <T> Supplier<T> getConfiguredSupplier(String pid, String location, java.util.function.Supplier<T> supplier); + + /** + * Creates a template implementing the annotated methods based on current configuration data. + * + * @param <T> 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. + */ + <T> T createTemplate(String pid, String location, Class<T> templateType); + + /** + * Configures the passed instance. + * @param instance the instance, not null. + * @param <T> the input and return type. + * @param bundle the target bundle, not null. + * @return the configured instance. + */ + <T> 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 <T> the type + * @return a configuring supplier. + */ + <T> Supplier<T> getConfiguredSupplier(Bundle bundle, java.util.function.Supplier<T> supplier); + + /** + * Creates a template implementing the annotated methods based on current configuration data. + * + * @param <T> 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. + */ + <T> T createTemplate(Bundle bundle, Class<T> 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’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">Apache Karaf</h4> +<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> @@ -294,7 +1121,7 @@ as org.apache.tamaya.ext:tamaya-karaf-features:{tamaya-version}:features:xml.</p <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/documentation/extensions/mod_remote.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_remote.html b/documentation/extensions/mod_remote.html index 7b6796c..19aa20e 100644 --- a/documentation/extensions/mod_remote.html +++ b/documentation/extensions/mod_remote.html @@ -256,7 +256,7 @@ first accessible URL determines the configuration read.</p> <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/documentation/extensions/mod_resolver.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_resolver.html b/documentation/extensions/mod_resolver.html index 577ca3a..2dc979f 100644 --- a/documentation/extensions/mod_resolver.html +++ b/documentation/extensions/mod_resolver.html @@ -288,7 +288,7 @@ the default implementation in place.</p> <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/documentation/extensions/mod_resources.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_resources.html b/documentation/extensions/mod_resources.html index e2691cf..9be3747 100644 --- a/documentation/extensions/mod_resources.html +++ b/documentation/extensions/mod_resources.html @@ -323,7 +323,7 @@ on your own.</p> <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/documentation/extensions/mod_server.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_server.html b/documentation/extensions/mod_server.html index dce6a79..5355b4a 100644 --- a/documentation/extensions/mod_server.html +++ b/documentation/extensions/mod_server.html @@ -403,7 +403,7 @@ Configuration: <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/documentation/extensions/mod_spi-support.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_spi-support.html b/documentation/extensions/mod_spi-support.html index 6ca6c71..96c4250 100644 --- a/documentation/extensions/mod_spi-support.html +++ b/documentation/extensions/mod_spi-support.html @@ -237,7 +237,7 @@ of the Tamaya API similarly.</p> <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-06</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/d4fa395c/documentation/extensions/mod_spring.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_spring.html b/documentation/extensions/mod_spring.html index 09b0b20..e902abc 100644 --- a/documentation/extensions/mod_spring.html +++ b/documentation/extensions/mod_spring.html @@ -125,7 +125,7 @@ <h1>Apache Tamaya - Extension: Spring Integration</h1> </div> - <p><em>2017-09-12</em></p> + <p><em>2017-11-20</em></p> <p><div id="preamble"> <div class="sectionbody"> @@ -141,7 +141,7 @@ <div class="sect2"> <h3 id="_what_functionality_this_module_provides">What functionality this module provides ?</h3> <div class="paragraph"> -<p>Tamaya <em>Spring</em> currently provides two implementations also full integration for Spring:</p> +<p>Tamaya <em>Spring</em> currently provides full integration for Spring and Spring Boot:</p> </div> <div class="ulist"> <ul> @@ -166,7 +166,7 @@ which adds all the full fledged Tamaya configuration capabilities to Spring.</p> <div class="sect2"> <h3 id="_compatibility">Compatibility</h3> <div class="paragraph"> -<p>Both modules are based on Java 7, so they will run on Java 7 and beyond. The extension shown here works similarly +<p>Both modules are based on Java 8, so they will run on Java 8 and beyond. The extension shown here works similarly with Spring Framework as well as Spring Boot.</p> </div> </div> @@ -189,7 +189,23 @@ with Spring Framework as well as Spring Boot.</p> <h3 id="_registering_tamaya_spring_configuration">Registering Tamaya Spring Configuration</h3> <div class="paragraph"> <p>Basically to activate the Tamaya Spring support the most simple thing is to a enable the Tamaya package for being -scanned for Spring components, e.g.</p> +scanned for Spring components, e.g. using annotations:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="prettyprint highlight"><code class="language-java" data-lang="java">@SpringBootApplication +@ComponentScan({"org.apache.tamaya.integration.spring"}) +public class SampleWebFreeMarkerApplication { + + public static void main(String[] args) throws Exception { + SpringApplication.run(SampleWebFreeMarkerApplication.class, args); + } + +}</code></pre> +</div> +</div> +<div class="paragraph"> +<p>Of course, you can still use Spring’s XML configuration variant similarly:</p> </div> <div class="listingblock"> <div class="content"> @@ -206,21 +222,9 @@ scanned for Spring components, e.g.</p> </beans></code></pre> </div> </div> -<div class="admonitionblock note"> -<table> -<tr> -<td class="icon"> -<div class="title">Note</div> -</td> -<td class="content"> -Of course you can also use the newer @ComponentScan annotation as described by the Spring documentation. -</td> -</tr> -</table> -</div> <div class="paragraph"> -<p>Similarly if you dont want to use component scanning you can configure things using plain old XML. Simply add the -following lines somewhere into one of your application context configuration files.</p> +<p>Though not recommended you can explicitly register the Tamaya related beans manually as well in your context configuration +files:</p> </div> <div class="listingblock"> <div class="content"> @@ -242,6 +246,9 @@ is resolved from the current Tamaya configuration.</p> </bean></code></pre> </div> </div> +<div class="paragraph"> +<p>Similarly</p> +</div> </div> <div class="sect2"> <h3 id="_configuring_your_beans">Configuring your Beans</h3> @@ -253,47 +260,95 @@ is resolved from the current Tamaya configuration.</p> <pre class="prettyprint highlight"><code class="language-java" data-lang="java">** * Created by Anatole on 25.09.2015. */ -@ConfigDefaultSections +@ConfigDefaultSections("app.root") // optional <b class="conum">(1)</b> +@Component public class ConfiguredSpringBean { + @Value("${application.message:Hello World}") <b class="conum">(2)</b> private String message; @Autowired private Environment env; + @Config(value = "alternateMessage", required = false) <b class="conum">(3)</b> + private String anotherMessage = "N/A"; + @Config("java.version") private String javaVersion; - @Config - @ConfigDefault("23") + @Config(value={"number", "testNum", "[notavailable]"}, defaultValue="23") <b class="conum">(4)</b><b class="conum">(5)</b> private int testNumber; - public String getJavaVersion(){ - return javaVersion; - } - - public int getTestNumber(){ - return testNumber; - } - - public Environment getEnv(){ - return env; - } - - public void setMessage(String message){ - this.message = message; - } - - public String getMessage() { - return message; - } + ... }</code></pre> </div> </div> +<div class="colist arabic"> +<ol> +<li> +<p>You can configure default section prefixes. This is an optional feature.</p> +</li> +<li> +<p>Tamaya does not require you to change your code. You can still work with +Spring injection for your configuration, but Tamaya will override Spring +configuration by default.</p> +</li> +<li> +<p>You can also define entries as not required, which allows you to perform +default inialization using Java idoms.</p> +</li> +<li> +<p>Tamaya allows you to define an ordered list of key candidates, which are +combined with the section prefix, if present, to the full keys. Keys added +in brackets ([]) are interpreted as absolute keys, so the example above +the key candidate list evaluates to app.root.number", "app.root.testNum", +"notavailable".</p> +</li> +<li> +<p>You can configure default values used, if no other value could be evaluated +for the given keyset.</p> +</li> +</ol> +</div> <div class="paragraph"> <p>Summarizing you get all the nice features of Tamaya out of the box running with your Spring code.</p> </div> +<div class="paragraph"> +<p>This also includes for example support for <em>dynamic values</em>:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="prettyprint highlight"><code class="language-java" data-lang="java">@Config(value = "foreground.color", required = false, defaultValue = "#DDDDDD") +private DynamicValue<Color> foregroundColor;</code></pre> +</div> +</div> +<div class="paragraph"> +<p>Dynamic values are a very flexible mechanism for managing configuration changes. +You can even use an update policy to define how you want to handle configuration +changes four your value:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="prettyprint highlight"><code class="language-java" data-lang="java">foregroundColor.setUpdatePolicy(UpdatePolicy.IMMEDEATE); +foregroundColor.addPropertyChangeListener(() -> { + System.out.println("New forground color: " + foregroundColor.get(); +});</code></pre> +</div> +</div> +<div class="admonitionblock important"> +<table> +<tr> +<td class="icon"> +<div class="title">Important</div> +</td> +<td class="content"> +For a full description of Tamaya’s injection API please + refer to the <a href="extensions/mod_injection.html">corresponding documentation</a>. +</td> +</tr> +</table> +</div> </div> </div> </div></p> @@ -308,7 +363,7 @@ with your Spring code.</p> <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/documentation/extensions/mod_usagetracker.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_usagetracker.html b/documentation/extensions/mod_usagetracker.html index 7bf9547..efad59d 100644 --- a/documentation/extensions/mod_usagetracker.html +++ b/documentation/extensions/mod_usagetracker.html @@ -340,7 +340,7 @@ logic can be adapted or replaced.</p> <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/documentation/extensions/mod_validation.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_validation.html b/documentation/extensions/mod_validation.html index 35d5af5..379a08e 100644 --- a/documentation/extensions/mod_validation.html +++ b/documentation/extensions/mod_validation.html @@ -275,7 +275,7 @@ a WARNING message.</p> <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/documentation/extensions/mod_vertx.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_vertx.html b/documentation/extensions/mod_vertx.html index 3bb40a9..dac3455 100644 --- a/documentation/extensions/mod_vertx.html +++ b/documentation/extensions/mod_vertx.html @@ -359,7 +359,7 @@ private String valBusTarget;</code></pre> <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/documentation/extensions/mod_yaml.html ---------------------------------------------------------------------- diff --git a/documentation/extensions/mod_yaml.html b/documentation/extensions/mod_yaml.html index a5f46ca..75c227c 100644 --- a/documentation/extensions/mod_yaml.html +++ b/documentation/extensions/mod_yaml.html @@ -264,7 +264,7 @@ comments -> Late afternoon is best. Backup contact is Nancy Billsmer @ 338-43 <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/documentation/quickstart.html ---------------------------------------------------------------------- diff --git a/documentation/quickstart.html b/documentation/quickstart.html index 9d24f21..81f81d1 100644 --- a/documentation/quickstart.html +++ b/documentation/quickstart.html @@ -444,7 +444,7 @@ MyTypeTemplate type = ConfigurationInjector.createTemplate(MyTypeTemplate.class) <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/documentation/spisupport.html ---------------------------------------------------------------------- diff --git a/documentation/spisupport.html b/documentation/spisupport.html new file mode 100644 index 0000000..c7df1b2 --- /dev/null +++ b/documentation/spisupport.html @@ -0,0 +1,273 @@ +<!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: SPI Support Module</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: SPI Support Module</h1> + </div> + + <p><em>2017-11-20</em></p> + + <p><div id="preamble"> +<div class="sectionbody"> +<!-- toc disabled --> +</div> +</div> +<div class="sect1"> +<h2 id="SPISupport">Tamaya SPI Support (Extension Module)</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>Tamaya <em>SPI Support</em> is a core module only depending on the API. It implements lots of API and SPI related +artifacts in a portable way. Tamaya’s core module reuses this functionality to build up a fully fledged +Tamaya API implementatation.</p> +</div> +<div class="sect2"> +<h3 id="_what_functionality_this_module_provide">What functionality this module provide?</h3> +<div class="paragraph"> +<p>Tamaya <em>SPI Support</em> provides a few helpful base classes that can be used to implement aspects of Tamaya:</p> +</div> +<div class="ulist"> +<ul> +<li> +<p>BasePropertySource provides an abstract <strong>base class</strong> for implementation of your own PropertySources.</p> +</li> +<li> +<p>DefaultConfiguration provides you with a simple implementation of the Configuration interface based on a +ConfigurationContext provided. This is also very useful for mocking configuration during test execution, but +not only constraint to that use case.</p> +</li> +<li> +<p>DefaultConfigurationContext provides you with a working implementation of the ConfigurationContext.</p> +</li> +<li> +<p>Numerous <strong>converters</strong>, including an EnumConverter,that is a converter implementation that can automatically select the currect enumeration values based +on a configured entry.</p> +</li> +<li> +<p>MapPropertySource implements a property source based on java.util.Map.</p> +</li> +<li> +<p>PriorityServiceComparator compares arbitrary services based on their @Priority annotations (also handling the +case, where no such annotation is present).</p> +</li> +<li> +<p>PropertiesResourcePropertySource is an implementation of a PropertySource based on a Properties instance, + loadable from any URL. ++ PropertyConverterManager is a useful service class, when implementing instances of ConfigurationContext. + It manages registered instances of PropertyConverter and provides easy to use type conversion logic. ++ PropertyFiltering provides another helpful class that manages PropertyFilter instances and provides an + easy to use high level API. ++ PropertySourceComparator provides an implementation that compares PropertySources based on their getOrdinal() + values and their class names. ++ The default configuration implementation also allows to replace the raw value evaluation + logic using a ConfigValueEvaluator, similar to Tamaya’s core implementation.</p> +</li> +</ul> +</div> +<div class="admonitionblock note"> +<table> +<tr> +<td class="icon"> +<div class="title">Note</div> +</td> +<td class="content"> +It is highly recommended that you also read the <a href="../core.html">documentation</a> of Tamaya’s + core implementation, since this describes the abstrations in use in more + detail. This module allows to reuse Tamaya’s implementation artifacts but + still allows alternate implementations of the core API to be used. +</td> +</tr> +</table> +</div> +</div> +<div class="sect2"> +<h3 id="_compatibility">Compatibility</h3> +<div class="paragraph"> +<p>The module is based on Java 8, so it will run on Java 8 and beyond.</p> +</div> +</div> +<div class="sect2"> +<h3 id="_installation">Installation</h3> +<div class="paragraph"> +<p>To use Tamaya’s <em>spisupport</em> you only have to 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</groupId> + <artifactId>tamaya-spisupport</artifactId> + <version>{tamaya_version}</version> +</dependency></code></pre> +</div> +</div> +<div class="paragraph"> +<p>The component will not register any components but only provides portable base classes for some common SPI +implementation tasks. It only depends on the API, so it should be safely reusable also with other implementations +of the Tamaya API as well.</p> +</div> +</div> +</div> +</div></p> + + <hr /> + </div> + </div> + <div> + <div id="push"></div> + + <div id="footer"> + <div class="container"> + <p class="muted credit">© 2014-<span>2017</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>2017-11-20</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/d4fa395c/documentation/usecases.html ---------------------------------------------------------------------- diff --git a/documentation/usecases.html b/documentation/usecases.html index a546210..61fde7c 100644 --- a/documentation/usecases.html +++ b/documentation/usecases.html @@ -1046,7 +1046,7 @@ on Configuration.</p> <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/download.html ---------------------------------------------------------------------- diff --git a/download.html b/download.html index 65a371a..ccde5ac 100644 --- a/download.html +++ b/download.html @@ -243,7 +243,7 @@ $ gpg --verify tamaya-project-1.2.0-source-release.zip.asc</code></pre> <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/examples.html ---------------------------------------------------------------------- diff --git a/examples.html b/examples.html index df83a10..b530c4c 100644 --- a/examples.html +++ b/examples.html @@ -209,7 +209,7 @@ adapted.</p> <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/feed.xml ---------------------------------------------------------------------- diff --git a/feed.xml b/feed.xml index 1f7f274..f09dec4 100644 --- a/feed.xml +++ b/feed.xml @@ -6,8 +6,8 @@ <atom:link href="https://tamaya.incubator.apache.org/feed.xml" rel="self" type="application/rss+xml" /> <description>Apache Tamaya RSS feed template</description> <language>en-gb</language> - <pubDate>Di, 12 Sep 2017 22:14:27 +0200</pubDate> - <lastBuildDate>Di, 12 Sep 2017 22:14:27 +0200</lastBuildDate> + <pubDate>Mo, 20 Nov 2017 22:03:13 +0100</pubDate> + <lastBuildDate>Mo, 20 Nov 2017 22:03:13 +0100</lastBuildDate> <item> <title>Homepage improvements - multiple APIs are linked now</title> http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/d4fa395c/highleveldesign.html ---------------------------------------------------------------------- diff --git a/highleveldesign.html b/highleveldesign.html index 64553b9..bd4778c 100644 --- a/highleveldesign.html +++ b/highleveldesign.html @@ -413,7 +413,7 @@ and of its current available <a href="documentation/extensions.html">modules</a> <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/history.html ---------------------------------------------------------------------- diff --git a/history.html b/history.html index d267fc2..c535543 100644 --- a/history.html +++ b/history.html @@ -148,16 +148,22 @@ <td class="tableblock halign-left valign-top"><p class="tableblock">Download</p></td> </tr> <tr> +<td class="tableblock halign-left valign-top"><p class="tableblock">0.3-incubating</p></td> +<td class="tableblock halign-left valign-top"><p class="tableblock">2016-09-12</p></td> +<td class="tableblock halign-left valign-top"><p class="tableblock">n/a</p></td> +<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://www.apache.org/dist/incubator/tamaya/0.3-incubating/" target="_blank">Download of 0.3 incubating</a></p></td> +</tr> +<tr> <td class="tableblock halign-left valign-top"><p class="tableblock">0.2-incubating</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">2016-04-06</p></td> -<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://www.apache.org/dist/incubator/tamaya/0.2-incubating/ReleaseNotes-0.2-incubating.html" target="_blank">Release Notes for 0.2 incubating</a></p></td> -<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://www.apache.org/dist/incubator/tamaya/0.2-incubating/" target="_blank">Download of 0.2 incubating</a></p></td> +<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://www.apache.org/dist/incubator/tamaya/0.2-incubating/ReleaseNotes-0.2-incubating.html" target="_blank">Release Notes for 0.2 incubating</a></p></td> +<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://www.apache.org/dist/incubator/tamaya/0.2-incubating/" target="_blank">Download of 0.2 incubating</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">0.1-incubating</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">2015-08-22</p></td> -<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://www.apache.org/dist/incubator/tamaya/0.1-incubating/ReleaseNotes-0.1-incubating.html" target="_blank">Release Notes for 0.1 incubating</a></p></td> -<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://www.apache.org/dist/incubator/tamaya/0.1-incubating/" target="_blank">Download of 0.1 incubating</a></p></td> +<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://www.apache.org/dist/incubator/tamaya/0.1-incubating/ReleaseNotes-0.1-incubating.html" target="_blank">Release Notes for 0.1 incubating</a></p></td> +<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://www.apache.org/dist/incubator/tamaya/0.1-incubating/" target="_blank">Download of 0.1 incubating</a></p></td> </tr> </tbody> </table> @@ -174,7 +180,7 @@ <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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/d4fa395c/index.html ---------------------------------------------------------------------- diff --git a/index.html b/index.html index 743aefe..4ea9b36 100644 --- a/index.html +++ b/index.html @@ -510,7 +510,7 @@ <div class="container"> <p class="muted credit">© 2014-<span>2017</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>2017-09-12</span> | + at <span>2017-11-20</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>
