http://git-wip-us.apache.org/repos/asf/polygene-website/blob/ea4d77b0/content/java/latest/howto-configure-service.html
----------------------------------------------------------------------
diff --git a/content/java/latest/howto-configure-service.html 
b/content/java/latest/howto-configure-service.html
deleted file mode 100644
index a0da0a2..0000000
--- a/content/java/latest/howto-configure-service.html
+++ /dev/null
@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml";><head><meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8" /><title>Configure a Service</title><link 
rel="stylesheet" type="text/css" href="css/style.css" /><meta name="generator" 
content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" 
title="" /><link rel="up" href="tutorials.html" title="Tutorials" /><link 
rel="prev" href="howto-create-entity.html" title="Create an Entity" /><link 
rel="next" href="howto-invocation-annotation.html" title="Use @Invocation" />
-
-
-<!-- favicon -->
-
-<link rel="shortcut icon" href="http://qi4j.org/favicon.ico"; 
type="image/vnd.microsoft.icon" />
-<link rel="icon" href="http://qi4j.org/favicon.ico"; type="image/x-icon" />
-
-<!-- style -->
-
-<link href="css/shCore.css" rel="stylesheet" type="text/css" />
-<link href="css/shCoreEclipse.css" rel="stylesheet" type="text/css" />
-<link href="css/shThemeEclipse.css" rel="stylesheet" type="text/css" />
-<link href="css/qi4j.css" rel="stylesheet" type="text/css" />
-
-<!-- Syntax Highlighter -->
-
-<script type="text/javascript" src="js/shCore.js"></script>
-<script type="text/javascript" src="js/shBrushJava.js"></script>
-<script type="text/javascript" src="js/shBrushScala.js"></script>
-<script type="text/javascript" src="js/shBrushJScript.js"></script>
-<script type="text/javascript" src="js/shBrushBash.js"></script>
-<script type="text/javascript" src="js/shBrushPlain.js"></script>
-<script type="text/javascript" src="js/shBrushXml.js"></script>
-<script type="text/javascript" src="js/shBrushGroovy.js"></script>
-<script type="text/javascript" src="js/shBrushPython.js"></script>
-<script type="text/javascript" src="js/shBrushRuby.js"></script>
-<script type="text/javascript" src="js/shBrushCSharp.js"></script>
-
-<script type="text/javascript">
-  SyntaxHighlighter.defaults['tab-size'] = 4;
-  SyntaxHighlighter.defaults['gutter'] = false;
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all()
-</script>
-
-<!-- JQuery -->
-
-<script type="text/javascript" src="js/jquery-1.6.4.min.js"></script>
-
-<!-- Image Scaler -->
-
-<script type="text/javascript" src="js/imagescaler.js"></script>
-
-<!-- Table Styler -->
-
-<script type="text/javascript" src="js/tablestyler.js"></script>
-
-<!-- Qi4j WebSite Progressive Enhancement -->
-
-<link href="css/progressive-enhancement.css" rel="stylesheet" type="text/css" 
/>
-<script type="text/javascript" src="js/jquery.scrollTo-1.4.2.js"></script>
-<script type="text/javascript" src="js/progressive-enhancement.js"></script>
-
-<!-- Analytics -->
- <script type="text/javascript">
-  var _gaq = _gaq || [];
-  _gaq.push(['_setAccount', 'UA-89723617-1']);
-  _gaq.push(['_trackPageview']);
-
-  (function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-  })();
- </script>
-
-  </head><body><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="logo"><a href="index.html"><img src="images/logo-standard.png" 
/></a></div><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="top-nav"><div xmlns="http://www.w3.org/1999/xhtml"; 
class="toc"><dl><dt><span class="section"><a 
href="index.html#home">Zest™</a></span></dt><dt><span class="section"><a 
href="intro.html">Introduction</a></span></dt><dt><span class="section"><span 
xmlns="" href="tutorials.html">Tutorials</span></span></dt><dt><span 
class="section"><a href="javadocs.html">Javadoc</a></span></dt><dt><span 
class="section"><a href="samples.html">Samples</a></span></dt><dt><span 
class="section"><a href="core.html">Core</a></span></dt><dt><span 
class="section"><a href="libraries.html">Libraries</a></span></dt><dt><span 
class="section"><a href="extensions.html">Extensions</a></span></dt><dt><span 
class="section"><a href="tools.html">Tools</a></span></dt><dt><span 
class="section"><a href="glossary.html">
 Glossary </a></span></dt></dl></div></div><div xmlns="" 
xmlns:exsl="http://exslt.org/common"; class="sub-nav"><div 
xmlns="http://www.w3.org/1999/xhtml"; class="toc"><dl><dt><span 
class="section"><a 
href="tutorials.html#_overview">Overview</a></span></dt><dt><span 
class="section"><a href="two-minutes-intro.html">Zest™ in 2 
minutes</a></span></dt><dt><span class="section"><a 
href="ten-minutes-intro.html">Zest™ in 10 minutes</a></span></dt><dt><span 
class="section"><a href="thirty-minutes-intro.html">Zest™ in 30 
minutes</a></span></dt><dt><span class="section"><a 
href="howto-depend-on-zest.html">Depend on Zest™ in your 
build</a></span></dt><dt><span class="section"><a 
href="howto-assemble-application.html">Assemble an 
Application</a></span></dt><dt><span class="section"><a 
href="tut-composites.html">Transient Composites 
Tutorial</a></span></dt><dt><span class="section"><a 
href="tut-services.html">Services Composites Tutorial</a></span></dt><dt><span 
class="section"><a href="howt
 o-contextual-fragments.html">Use contextual fragments</a></span></dt><dt><span 
class="section"><a href="howto-leverage-properties.html">Leverage 
Properties</a></span></dt><dt><span class="section"><a 
href="howto-create-constraint.html">Create a 
Constraint</a></span></dt><dt><span class="section"><a 
href="howto-create-concern.html">Create a Concern</a></span></dt><dt><span 
class="section"><a href="howto-create-sideeffect.html">Create a 
SideEffect</a></span></dt><dt><span class="section"><a 
href="howto-create-entity.html">Create an Entity</a></span></dt><dt><span 
class="section"><span xmlns="" href="howto-configure-service.html">Configure a 
Service</span></span></dt><dt><span class="section"><a 
href="howto-invocation-annotation.html">Use 
@Invocation</a></span></dt><dt><span class="section"><a 
href="howto-use-io.html">Use I/O API</a></span></dt><dt><span 
class="section"><a href="build-system.html">Zest™ Build 
System</a></span></dt><dt><span class="section"><a href="community-docs.htm
 l">Writing Zest™ Documentation</a></span></dt><dt><span class="section"><a 
href="releasing-apache.html">Releasing 
Zest™</a></span></dt></dl></div></div><div class="section" title="Configure a 
Service"><div class="titlepage"><div><div><h3 class="title"><a 
id="howto-configure-service"></a>Configure a 
Service</h3></div></div></div><p>Zest™ supports a Configuration system for 
services. The configuration instance itself is an Entity and is therefor
-readable, writeable and queryable, just like other Entities. This should make 
Configuration management much simpler,
-since you can easily build GUI tools to allow editing of these in runtime. 
However, to simplify the initial values of
-the Configuration instance, Zest™ also does the initial bootstrapping of the 
Configuration entity for you. This HowTo is
-going to show how.</p><p>If you want to reproduce what’s explained in this 
tutorial, remember to depend on the Core Bootstrap artifact:</p><div 
class="table"><a id="idm371059800928"></a><p class="title"><strong>Table 13. 
Artifact</strong></p><div class="table-contents"><table summary="Artifact" 
border="1"><colgroup><col class="col_1" /><col class="col_2" /><col 
class="col_3" /></colgroup><thead><tr><th align="left" valign="top">Group 
ID</th><th align="left" valign="top">Artifact ID</th><th align="left" 
valign="top">Version</th></tr></thead><tbody><tr><td align="left" 
valign="top"><p>org.qi4j.core</p></td><td align="left" 
valign="top"><p>org.qi4j.core.bootstrap</p></td><td align="left" 
valign="top"><p>2.1</p></td></tr></tbody></table></div></div><br 
class="table-break" /><p>At runtime you will need the Core Runtime artifact 
too. See the <a class="xref" href="howto-depend-on-zest.html" title="Depend on 
Zest™ in your build">Depend on Zest™ in your build</a> tutorial for details
 .</p><div class="section" title="We need a Service"><div 
class="titlepage"><div><div><h4 class="title"><a id="_we_need_a_service"></a>We 
need a Service</h4></div></div></div><p>To illustrate these features we create 
an TravelPlan service, which allows clients to find and make Reservations to
-Destinations. For the sake of simplicity, we are leaving out the domain 
details…</p><pre class="programlisting brush: java">public interface 
TravelPlan
-{
-    // Domain methods, which are beyond the discussion at hand.
-}
-</pre><p>So, then there is the ServiceComposite…</p><pre 
class="programlisting brush: java">// The package is relevant to the Initial 
Values discussed later.
-package org.qi4j.manual.travel;
-  [...snip...]
-
-@Mixins( { TravelPlanMixin.class } )
-public interface TravelPlanService extends TravelPlan, ServiceComposite
-{}
-</pre><p>And then in the Mixin we actually need to connect to a foreign system 
to obtain the various details that the service
-can provide to the clients. For instance, it needs a host name and port and a 
protocol to use. We put these into a
-configuration interface.</p><pre class="programlisting brush: java">public 
interface TravelPlanConfiguration
-{
-    Property&lt;String&gt; hostName();
-
-    @Range( min=0, max=65535 )
-    Property&lt;Integer&gt; portNumber();
-
-    @Matches( "(ssh|rlogin|telnet)" )
-    Property&lt;String&gt; protocol();
-}
-</pre><p>We used the recommended type-safe Property subtype pattern, and for 
each PortNumber and Protocol we have defined a
-Constraint required.</p><p>Now we can access this configuration in the 
TravelPlanMixin like this;</p><pre class="programlisting brush: java">import 
org.qi4j.api.configuration.Configuration;
-
-public class TravelPlanMixin implements TravelPlan
-{
-    @This
-    Configuration&lt;TravelPlanConfiguration&gt; config;
-
-    private void foo()
-    {
-        TravelPlanConfiguration tpConf = config.get();
-        String hostName = tpConf.hostName().get();
-        // ...
-    }
-      [...snip...]
-
-}
-</pre><p>And from the Service point of view, it doesn’t need to worry about 
where the configuration really comes from. But it may
-want to control when the Configuration should be refreshed, to ensure that 
atomic changes are happening. This is done
-with the refresh() method in the Configuration interface;</p><pre 
class="programlisting brush: java">public void doSomething()
-{
-    // Refresh Configuration before reading it.
-    config.refresh();
-
-    TravelPlanConfiguration tpConf = config.get();
-    // ...
-}
-</pre><p>This ensures that any updates to the Configuration that has occurred 
will be retrieved and available to the Service.
-Since Configuration instance is an Entity, the UnitOfWork system will ensure 
that the Configuration is consistent and
-not in the middle of value changes.</p><div class="section" title="Initial 
Values"><div class="titlepage"><div><div><h5 class="title"><a 
id="_initial_values"></a>Initial Values</h5></div></div></div><p>The initial 
Configuration instance will be created automatically behind the scenes, by 
reading a properties file and
-create an Entity with the same identity as the identity of the service. That 
was a handful. Services are, as we know,
-singletons and have an identity specified at assembly. Even if it is not 
provided, one will automatically be assigned.
-The service’s "identifiedBy" will be used as the identifier for the 
Configuration entity and stored in the visible
-EntityStore. This identity is also used to locate a properties file in the 
same package as the ServiceComposite belongs
-to.</p><p>So, we create a properties file, where the keys are the names of the 
properties in TravelPlanConfiguration.</p><pre class="programlisting brush: 
bash"># Hostname to the TravelPlan service
-hostName=niclas.hedhman.org
-
-# Port number to use for the connection
-portNumber=5439
-
-# Protocol to use; Valid options "ssh", "rlogin", "telnet"
-protocol=ssh
-
-</pre><p>File: 
org/hedhman/niclas/travel/TravelPlanService.properties</p><p>Note that the file 
resides in the directory equivalent to the package name of the 
TravelPlanService.</p><p>And this would work with the standard 
assembly.</p><pre class="programlisting brush: java">public void 
assemble(ModuleAssembly module) throws AssemblyException
-{
-    module.addServices(TravelPlanService.class).instantiateOnStartup();
-}
-</pre></div></div><div class="section" title="Non-default Identity"><div 
class="titlepage"><div><div><h4 class="title"><a 
id="_non_default_identity"></a>Non-default Identity</h4></div></div></div><p>If 
you need to use multiple instances of the same service, or that the service has 
a non-default Identity, then you need
-to name the properties file according to the Identity of the service 
declaration, but the file will still need to be in
-the same package as the ServiceComposite sub type, the TravelPlanService in 
the above example. For instance;</p><pre class="programlisting brush: 
java">public void assemble(ModuleAssembly module) throws AssemblyException
-{
-    module.addServices(TravelPlanService.class)
-            .instantiateOnStartup()
-            .identifiedBy("ExpediaService");
-
-    module.addServices(TravelPlanService.class)
-            .instantiateOnStartup()
-            .identifiedBy("OrbitzService");
-}
-</pre><p>And the two files for configuration,</p><pre class="programlisting 
brush: bash"># Hostname to the TravelPlan service
-hostName=expedia.hedhman.org
-
-# Port number to use for the connection
-portNumber=9251
-
-# Protocol to use; Valid options "ssh", "rlogin", "telnet"
-protocol=ssh
-</pre><p>File: org/qi4j/manual/travel/ExpediaService.properties</p><pre 
class="programlisting brush: bash"># Hostname to the TravelPlan service
-hostName=orbitz.hedhman.org
-
-# Port number to use for the connection
-portNumber=7412
-
-# Protocol to use; Valid options "ssh", "rlogin", "telnet"
-protocol=rlogin
-</pre><p>File: org/qi4j/manual/travel/OrbitzService.properties</p></div><div 
class="section" title="Changing Configuration in runtime"><div 
class="titlepage"><div><div><h4 class="title"><a 
id="_changing_configuration_in_runtime"></a>Changing Configuration in 
runtime</h4></div></div></div><p>Unlike most frameworks, the Configuration in 
Zest™ is an active Entity, and once the properties file has been read once
-at the first(!) startup, it no longer serves any purpose. The Configuration 
will always be retrieved from the
-EntityStore. Changes to the properties file are not taken into consideration 
if the Configuration entity is found in the
-entity store.</p><p>But that also means that applications should not cache the 
configuration values, and instead read them from the
-Configuration instance every time needed, and do a refresh() method call when 
it is safe to update the Configuration
-Entity with new values.</p></div></div><div xmlns="" 
xmlns:exsl="http://exslt.org/common"; class="footer"><p>
-        Copyright © 2015 The Apache Software Foundation, Licensed under the 
<a href="http://www.apache.org/licenses/"; target="_blank">Apache License, 
Version 2.0</a>.
-        <br /><small>
-            Apache Zest, Zest, Apache, the Apache feather logo, and the Apache 
Zest project logo are trademarks of The Apache Software Foundation.<br />
-            All other marks mentioned may be trademarks or registered 
trademarks of their respective owners.
-        </small></p></div></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-website/blob/ea4d77b0/content/java/latest/howto-contextual-fragments.html
----------------------------------------------------------------------
diff --git a/content/java/latest/howto-contextual-fragments.html 
b/content/java/latest/howto-contextual-fragments.html
deleted file mode 100644
index f112a10..0000000
--- a/content/java/latest/howto-contextual-fragments.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml";><head><meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8" /><title>Use contextual 
fragments</title><link rel="stylesheet" type="text/css" href="css/style.css" 
/><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><link 
rel="home" href="index.html" title="" /><link rel="up" href="tutorials.html" 
title="Tutorials" /><link rel="prev" href="tut-services.html" title="Services 
Composites Tutorial" /><link rel="next" href="howto-leverage-properties.html" 
title="Leverage Properties" />
-
-
-<!-- favicon -->
-
-<link rel="shortcut icon" href="http://qi4j.org/favicon.ico"; 
type="image/vnd.microsoft.icon" />
-<link rel="icon" href="http://qi4j.org/favicon.ico"; type="image/x-icon" />
-
-<!-- style -->
-
-<link href="css/shCore.css" rel="stylesheet" type="text/css" />
-<link href="css/shCoreEclipse.css" rel="stylesheet" type="text/css" />
-<link href="css/shThemeEclipse.css" rel="stylesheet" type="text/css" />
-<link href="css/qi4j.css" rel="stylesheet" type="text/css" />
-
-<!-- Syntax Highlighter -->
-
-<script type="text/javascript" src="js/shCore.js"></script>
-<script type="text/javascript" src="js/shBrushJava.js"></script>
-<script type="text/javascript" src="js/shBrushScala.js"></script>
-<script type="text/javascript" src="js/shBrushJScript.js"></script>
-<script type="text/javascript" src="js/shBrushBash.js"></script>
-<script type="text/javascript" src="js/shBrushPlain.js"></script>
-<script type="text/javascript" src="js/shBrushXml.js"></script>
-<script type="text/javascript" src="js/shBrushGroovy.js"></script>
-<script type="text/javascript" src="js/shBrushPython.js"></script>
-<script type="text/javascript" src="js/shBrushRuby.js"></script>
-<script type="text/javascript" src="js/shBrushCSharp.js"></script>
-
-<script type="text/javascript">
-  SyntaxHighlighter.defaults['tab-size'] = 4;
-  SyntaxHighlighter.defaults['gutter'] = false;
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all()
-</script>
-
-<!-- JQuery -->
-
-<script type="text/javascript" src="js/jquery-1.6.4.min.js"></script>
-
-<!-- Image Scaler -->
-
-<script type="text/javascript" src="js/imagescaler.js"></script>
-
-<!-- Table Styler -->
-
-<script type="text/javascript" src="js/tablestyler.js"></script>
-
-<!-- Qi4j WebSite Progressive Enhancement -->
-
-<link href="css/progressive-enhancement.css" rel="stylesheet" type="text/css" 
/>
-<script type="text/javascript" src="js/jquery.scrollTo-1.4.2.js"></script>
-<script type="text/javascript" src="js/progressive-enhancement.js"></script>
-
-<!-- Analytics -->
- <script type="text/javascript">
-  var _gaq = _gaq || [];
-  _gaq.push(['_setAccount', 'UA-89723617-1']);
-  _gaq.push(['_trackPageview']);
-
-  (function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-  })();
- </script>
-
-  </head><body><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="logo"><a href="index.html"><img src="images/logo-standard.png" 
/></a></div><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="top-nav"><div xmlns="http://www.w3.org/1999/xhtml"; 
class="toc"><dl><dt><span class="section"><a 
href="index.html#home">Zest™</a></span></dt><dt><span class="section"><a 
href="intro.html">Introduction</a></span></dt><dt><span class="section"><span 
xmlns="" href="tutorials.html">Tutorials</span></span></dt><dt><span 
class="section"><a href="javadocs.html">Javadoc</a></span></dt><dt><span 
class="section"><a href="samples.html">Samples</a></span></dt><dt><span 
class="section"><a href="core.html">Core</a></span></dt><dt><span 
class="section"><a href="libraries.html">Libraries</a></span></dt><dt><span 
class="section"><a href="extensions.html">Extensions</a></span></dt><dt><span 
class="section"><a href="tools.html">Tools</a></span></dt><dt><span 
class="section"><a href="glossary.html">
 Glossary </a></span></dt></dl></div></div><div xmlns="" 
xmlns:exsl="http://exslt.org/common"; class="sub-nav"><div 
xmlns="http://www.w3.org/1999/xhtml"; class="toc"><dl><dt><span 
class="section"><a 
href="tutorials.html#_overview">Overview</a></span></dt><dt><span 
class="section"><a href="two-minutes-intro.html">Zest™ in 2 
minutes</a></span></dt><dt><span class="section"><a 
href="ten-minutes-intro.html">Zest™ in 10 minutes</a></span></dt><dt><span 
class="section"><a href="thirty-minutes-intro.html">Zest™ in 30 
minutes</a></span></dt><dt><span class="section"><a 
href="howto-depend-on-zest.html">Depend on Zest™ in your 
build</a></span></dt><dt><span class="section"><a 
href="howto-assemble-application.html">Assemble an 
Application</a></span></dt><dt><span class="section"><a 
href="tut-composites.html">Transient Composites 
Tutorial</a></span></dt><dt><span class="section"><a 
href="tut-services.html">Services Composites Tutorial</a></span></dt><dt><span 
class="section"><span xmlns="
 " href="howto-contextual-fragments.html">Use contextual 
fragments</span></span></dt><dt><span class="section"><a 
href="howto-leverage-properties.html">Leverage 
Properties</a></span></dt><dt><span class="section"><a 
href="howto-create-constraint.html">Create a 
Constraint</a></span></dt><dt><span class="section"><a 
href="howto-create-concern.html">Create a Concern</a></span></dt><dt><span 
class="section"><a href="howto-create-sideeffect.html">Create a 
SideEffect</a></span></dt><dt><span class="section"><a 
href="howto-create-entity.html">Create an Entity</a></span></dt><dt><span 
class="section"><a href="howto-configure-service.html">Configure a 
Service</a></span></dt><dt><span class="section"><a 
href="howto-invocation-annotation.html">Use 
@Invocation</a></span></dt><dt><span class="section"><a 
href="howto-use-io.html">Use I/O API</a></span></dt><dt><span 
class="section"><a href="build-system.html">Zest™ Build 
System</a></span></dt><dt><span class="section"><a href="community-docs.htm
 l">Writing Zest™ Documentation</a></span></dt><dt><span class="section"><a 
href="releasing-apache.html">Releasing 
Zest™</a></span></dt></dl></div></div><div class="section" title="Use 
contextual fragments"><div class="titlepage"><div><div><h3 class="title"><a 
id="howto-contextual-fragments"></a>Use contextual 
fragments</h3></div></div></div><p>Contextual fragments are fragments that are 
added to the composites during assembly time. That means that they are not
-present in the composite declarations, but a start-up decision what should be 
added. Once the application instance is
-created, it is no longer possible to modify which fragments are 
attached.</p><p>Typical use-case is tracing and debugging. Other potential uses 
are additional security or context interfaces needing
-access to internal mixins not originally intended for, such as GUI frameworks 
doing reflection on certain composites.
-We strongly recommend against using this feature, as it is not needed as 
commonly as you may think.</p><div class="note" title="Note" 
style="margin-left: 0.5in; margin-right: 0.5in;"><h3 
class="title">Note</h3><p>Constraints are not supported to be contextual at the 
moment.</p></div><p>If you want to reproduce what’s explained in this 
tutorial, remember to depend on the Core Bootstrap artifact:</p><div 
class="table"><a id="idm371060011984"></a><p class="title"><strong>Table 7. 
Artifact</strong></p><div class="table-contents"><table summary="Artifact" 
border="1"><colgroup><col class="col_1" /><col class="col_2" /><col 
class="col_3" /></colgroup><thead><tr><th align="left" valign="top">Group 
ID</th><th align="left" valign="top">Artifact ID</th><th align="left" 
valign="top">Version</th></tr></thead><tbody><tr><td align="left" 
valign="top"><p>org.qi4j.core</p></td><td align="left" 
valign="top"><p>org.qi4j.core.bootstrap</p></td><td align="left" 
valign="top"><p>2.1</p></td></tr></tbo
 dy></table></div></div><br class="table-break" /><p>At runtime you will need 
the Core Runtime artifact too. See the <a class="xref" 
href="howto-depend-on-zest.html" title="Depend on Zest™ in your build">Depend 
on Zest™ in your build</a> tutorial for details.</p><p>The mixins, 
sideeffects and concerns are added during the bootstrap phase. It is very 
straight-forward;</p><pre class="programlisting brush: java">public class 
TraceAll
-{
-    public void assemble( ModuleAssembly module )
-            throws AssemblyException
-    {
-        ServiceDeclaration decl = module.addServices( PinSearchService.class );
-        if( Boolean.getBoolean( "trace.all"  ) )
-        {
-            decl.withConcerns( TraceAllConcern.class );
-        }
-    }
-}
-
-</pre><p>In the example above, we add the TraceAllConcern from the Logging 
Library if the system property "trace.all" is true.
-If the system property is not set to true, there will be no TraceAllConcern on 
the PinSearchService.</p><p>Concerns that are added in this way will be at the 
top of the method invocation stack, i.e. will be the first one to be
-called and last one to be completed.</p><p>SideEffects that are added in this 
way will be the last one’s to be executed.</p></div><div xmlns="" 
xmlns:exsl="http://exslt.org/common"; class="footer"><p>
-        Copyright © 2015 The Apache Software Foundation, Licensed under the 
<a href="http://www.apache.org/licenses/"; target="_blank">Apache License, 
Version 2.0</a>.
-        <br /><small>
-            Apache Zest, Zest, Apache, the Apache feather logo, and the Apache 
Zest project logo are trademarks of The Apache Software Foundation.<br />
-            All other marks mentioned may be trademarks or registered 
trademarks of their respective owners.
-        </small></p></div></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-website/blob/ea4d77b0/content/java/latest/howto-create-concern.html
----------------------------------------------------------------------
diff --git a/content/java/latest/howto-create-concern.html 
b/content/java/latest/howto-create-concern.html
deleted file mode 100644
index 68cfe86..0000000
--- a/content/java/latest/howto-create-concern.html
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml";><head><meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8" /><title>Create a Concern</title><link 
rel="stylesheet" type="text/css" href="css/style.css" /><meta name="generator" 
content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" 
title="" /><link rel="up" href="tutorials.html" title="Tutorials" /><link 
rel="prev" href="howto-create-constraint.html" title="Create a Constraint" 
/><link rel="next" href="howto-create-sideeffect.html" title="Create a 
SideEffect" />
-
-
-<!-- favicon -->
-
-<link rel="shortcut icon" href="http://qi4j.org/favicon.ico"; 
type="image/vnd.microsoft.icon" />
-<link rel="icon" href="http://qi4j.org/favicon.ico"; type="image/x-icon" />
-
-<!-- style -->
-
-<link href="css/shCore.css" rel="stylesheet" type="text/css" />
-<link href="css/shCoreEclipse.css" rel="stylesheet" type="text/css" />
-<link href="css/shThemeEclipse.css" rel="stylesheet" type="text/css" />
-<link href="css/qi4j.css" rel="stylesheet" type="text/css" />
-
-<!-- Syntax Highlighter -->
-
-<script type="text/javascript" src="js/shCore.js"></script>
-<script type="text/javascript" src="js/shBrushJava.js"></script>
-<script type="text/javascript" src="js/shBrushScala.js"></script>
-<script type="text/javascript" src="js/shBrushJScript.js"></script>
-<script type="text/javascript" src="js/shBrushBash.js"></script>
-<script type="text/javascript" src="js/shBrushPlain.js"></script>
-<script type="text/javascript" src="js/shBrushXml.js"></script>
-<script type="text/javascript" src="js/shBrushGroovy.js"></script>
-<script type="text/javascript" src="js/shBrushPython.js"></script>
-<script type="text/javascript" src="js/shBrushRuby.js"></script>
-<script type="text/javascript" src="js/shBrushCSharp.js"></script>
-
-<script type="text/javascript">
-  SyntaxHighlighter.defaults['tab-size'] = 4;
-  SyntaxHighlighter.defaults['gutter'] = false;
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all()
-</script>
-
-<!-- JQuery -->
-
-<script type="text/javascript" src="js/jquery-1.6.4.min.js"></script>
-
-<!-- Image Scaler -->
-
-<script type="text/javascript" src="js/imagescaler.js"></script>
-
-<!-- Table Styler -->
-
-<script type="text/javascript" src="js/tablestyler.js"></script>
-
-<!-- Qi4j WebSite Progressive Enhancement -->
-
-<link href="css/progressive-enhancement.css" rel="stylesheet" type="text/css" 
/>
-<script type="text/javascript" src="js/jquery.scrollTo-1.4.2.js"></script>
-<script type="text/javascript" src="js/progressive-enhancement.js"></script>
-
-<!-- Analytics -->
- <script type="text/javascript">
-  var _gaq = _gaq || [];
-  _gaq.push(['_setAccount', 'UA-89723617-1']);
-  _gaq.push(['_trackPageview']);
-
-  (function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-  })();
- </script>
-
-  </head><body><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="logo"><a href="index.html"><img src="images/logo-standard.png" 
/></a></div><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="top-nav"><div xmlns="http://www.w3.org/1999/xhtml"; 
class="toc"><dl><dt><span class="section"><a 
href="index.html#home">Zest™</a></span></dt><dt><span class="section"><a 
href="intro.html">Introduction</a></span></dt><dt><span class="section"><span 
xmlns="" href="tutorials.html">Tutorials</span></span></dt><dt><span 
class="section"><a href="javadocs.html">Javadoc</a></span></dt><dt><span 
class="section"><a href="samples.html">Samples</a></span></dt><dt><span 
class="section"><a href="core.html">Core</a></span></dt><dt><span 
class="section"><a href="libraries.html">Libraries</a></span></dt><dt><span 
class="section"><a href="extensions.html">Extensions</a></span></dt><dt><span 
class="section"><a href="tools.html">Tools</a></span></dt><dt><span 
class="section"><a href="glossary.html">
 Glossary </a></span></dt></dl></div></div><div xmlns="" 
xmlns:exsl="http://exslt.org/common"; class="sub-nav"><div 
xmlns="http://www.w3.org/1999/xhtml"; class="toc"><dl><dt><span 
class="section"><a 
href="tutorials.html#_overview">Overview</a></span></dt><dt><span 
class="section"><a href="two-minutes-intro.html">Zest™ in 2 
minutes</a></span></dt><dt><span class="section"><a 
href="ten-minutes-intro.html">Zest™ in 10 minutes</a></span></dt><dt><span 
class="section"><a href="thirty-minutes-intro.html">Zest™ in 30 
minutes</a></span></dt><dt><span class="section"><a 
href="howto-depend-on-zest.html">Depend on Zest™ in your 
build</a></span></dt><dt><span class="section"><a 
href="howto-assemble-application.html">Assemble an 
Application</a></span></dt><dt><span class="section"><a 
href="tut-composites.html">Transient Composites 
Tutorial</a></span></dt><dt><span class="section"><a 
href="tut-services.html">Services Composites Tutorial</a></span></dt><dt><span 
class="section"><a href="howt
 o-contextual-fragments.html">Use contextual fragments</a></span></dt><dt><span 
class="section"><a href="howto-leverage-properties.html">Leverage 
Properties</a></span></dt><dt><span class="section"><a 
href="howto-create-constraint.html">Create a 
Constraint</a></span></dt><dt><span class="section"><span xmlns="" 
href="howto-create-concern.html">Create a Concern</span></span></dt><dt><span 
class="section"><a href="howto-create-sideeffect.html">Create a 
SideEffect</a></span></dt><dt><span class="section"><a 
href="howto-create-entity.html">Create an Entity</a></span></dt><dt><span 
class="section"><a href="howto-configure-service.html">Configure a 
Service</a></span></dt><dt><span class="section"><a 
href="howto-invocation-annotation.html">Use 
@Invocation</a></span></dt><dt><span class="section"><a 
href="howto-use-io.html">Use I/O API</a></span></dt><dt><span 
class="section"><a href="build-system.html">Zest™ Build 
System</a></span></dt><dt><span class="section"><a href="community-docs.htm
 l">Writing Zest™ Documentation</a></span></dt><dt><span class="section"><a 
href="releasing-apache.html">Releasing 
Zest™</a></span></dt></dl></div></div><div class="section" title="Create a 
Concern"><div class="titlepage"><div><div><h3 class="title"><a 
id="howto-create-concern"></a>Create a 
Concern</h3></div></div></div><p>Concerns are defined in <a class="xref" 
href="glossary.html#def-concern">Concern</a>.</p><p>If you want to reproduce 
what’s explained in this tutorial, remember to depend on the Core Bootstrap 
artifact:</p><div class="table"><a id="idm371059923696"></a><p 
class="title"><strong>Table 10. Artifact</strong></p><div 
class="table-contents"><table summary="Artifact" border="1"><colgroup><col 
class="col_1" /><col class="col_2" /><col class="col_3" 
/></colgroup><thead><tr><th align="left" valign="top">Group ID</th><th 
align="left" valign="top">Artifact ID</th><th align="left" 
valign="top">Version</th></tr></thead><tbody><tr><td align="left" 
valign="top"><p>org.qi4j
 .core</p></td><td align="left" 
valign="top"><p>org.qi4j.core.bootstrap</p></td><td align="left" 
valign="top"><p>2.1</p></td></tr></tbody></table></div></div><br 
class="table-break" /><p>At runtime you will need the Core Runtime artifact 
too. See the <a class="xref" href="howto-depend-on-zest.html" title="Depend on 
Zest™ in your build">Depend on Zest™ in your build</a> tutorial for 
details.</p><div class="section" title="Typed Concern"><div 
class="titlepage"><div><div><h4 class="title"><a id="_typed_concern"></a>Typed 
Concern</h4></div></div></div><p>A typed Concern is a Java class that 
implements the MixinType it can be used on:</p><pre class="programlisting 
brush: java">public class InventoryConcern extends ConcernOf&lt;Order&gt;
-    implements Order
-{
-    @Service
-    private InventoryService inventory;
-
-    @Override
-    public void addLineItem( LineItem item )
-    {
-        String productCode = item.productCode().get();
-        int quantity = item.quantity().get();
-        inventory.remove( productCode, quantity );
-        next.addLineItem( item );
-    }
-
-    @Override
-    public void removeLineItem( LineItem item )
-    {
-        String productCode = item.productCode().get();
-        int quantity = item.quantity().get();
-        inventory.add( productCode, quantity );
-        next.removeLineItem( item );
-    }
-}
-</pre><p>Note that we could have implemented the InventoryConcern as an 
abstract class if we were not interested in <span 
class="emphasis"><em>all</em></span> the methods in the Order interface.
-Extending the ConcernOf is a convenience mechanism, instead of an explicit 
@ConcernFor annotation on
-a private field, which can be used in rare occasions when you are not able to 
extend. This base class defines the next
-field, which is set up by the Zest™ runtime and points to the next fragment 
in the call stack. We can also see that the
-InventoryService is provided to the concern, which is done with dependency 
injection. Zest™ also supports dependency
-injection via constructors and methods.</p><p>It can be used as 
follows;</p><pre class="programlisting brush: java">@Concerns( 
InventoryConcern.class )
-public interface Order
-{
-    void addLineItem( LineItem item );
-    void removeLineItem( LineItem item );
-
-      [...snip...]
-
-</pre><p>Methods of the Concern Fragment will be called before the Mixin 
invocation.</p></div><div class="section" title="Generic Concern"><div 
class="titlepage"><div><div><h4 class="title"><a 
id="_generic_concern"></a>Generic Concern</h4></div></div></div><p>A generic 
Concern is a Java class that implements java.lang.reflect.InvocationHandler 
which allows it to be used on any
-arbitrary MixinType.</p><pre class="programlisting brush: java">public class 
MyGenericConcern extends GenericConcern
-{
-    @Override
-    public Object invoke( Object proxy, Method method, Object[] args )
-        throws Throwable
-    {
-        // Do whatever you want
-
-          [...snip...]
-
-</pre><p>It can be used as follows;</p><pre class="programlisting brush: 
java">@Concerns( MyGenericConcern.class )
-public interface AnyMixinType
-{
-
-  [...snip...]
-
-    @MyAnnotation
-    void doSomething();
-
-    void doSomethingElse();
-
-</pre><p>Methods of the Concern Fragment will be called before the Mixin 
invocation.</p><div class="section" title="AppliesTo"><div 
class="titlepage"><div><div><h5 class="title"><a 
id="_appliesto"></a>AppliesTo</h5></div></div></div><p>For generic Concerns 
that should only trigger on methods with specific annotations or fulfilling 
some expression, add
-@AppliesTo annotation to the Concern class which points to either triggering 
annotation(s), or to AppliesToFilter
-implementation(s).</p><p>The Concern is invoked if one of the triggering 
annotations is found or one of the AppliesToFilter accepts the
-invocation. In other words the AppliesTo arguments are OR’ed.</p><p>Here is 
how the declaration goes ;</p><pre class="programlisting brush: 
java">@AppliesTo( { MyAnnotation.class, MyAppliesToFilter.class } )
-public class MyGenericConcern extends GenericConcern
-{
-</pre><p>And how to use the annotation ;</p><pre class="programlisting brush: 
java">@Concerns( MyGenericConcern.class )
-public interface AnyMixinType
-{
-
-    @MyAnnotation
-    void doSomething();
-
-    void doSomethingElse();
-
-}
-</pre><p>Here only the doSomething() method will see the Concern applied 
whereas the doSomethingElse() method won’t.</p><p>Finally here is how to 
implement an AppliesToFilter:</p><pre class="programlisting brush: java">public 
class MyAppliesToFilter implements AppliesToFilter
-{
-    public boolean appliesTo( Method method, Class&lt;?&gt; mixin, 
Class&lt;?&gt; compositeType, Class&lt;?&gt; modifierClass )
-    {
-        boolean appliesTo = evaluate(method); // Do whatever you want
-        return appliesTo;
-    }
-
-      [...snip...]
-
-    private boolean evaluate( Method method )
-    {
-        return true;
-    }
-</pre></div></div></div><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="footer"><p>
-        Copyright © 2015 The Apache Software Foundation, Licensed under the 
<a href="http://www.apache.org/licenses/"; target="_blank">Apache License, 
Version 2.0</a>.
-        <br /><small>
-            Apache Zest, Zest, Apache, the Apache feather logo, and the Apache 
Zest project logo are trademarks of The Apache Software Foundation.<br />
-            All other marks mentioned may be trademarks or registered 
trademarks of their respective owners.
-        </small></p></div></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-website/blob/ea4d77b0/content/java/latest/howto-create-constraint.html
----------------------------------------------------------------------
diff --git a/content/java/latest/howto-create-constraint.html 
b/content/java/latest/howto-create-constraint.html
deleted file mode 100644
index 3977cbd..0000000
--- a/content/java/latest/howto-create-constraint.html
+++ /dev/null
@@ -1,166 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml";><head><meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8" /><title>Create a Constraint</title><link 
rel="stylesheet" type="text/css" href="css/style.css" /><meta name="generator" 
content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" 
title="" /><link rel="up" href="tutorials.html" title="Tutorials" /><link 
rel="prev" href="howto-leverage-properties.html" title="Leverage Properties" 
/><link rel="next" href="howto-create-concern.html" title="Create a Concern" />
-
-
-<!-- favicon -->
-
-<link rel="shortcut icon" href="http://qi4j.org/favicon.ico"; 
type="image/vnd.microsoft.icon" />
-<link rel="icon" href="http://qi4j.org/favicon.ico"; type="image/x-icon" />
-
-<!-- style -->
-
-<link href="css/shCore.css" rel="stylesheet" type="text/css" />
-<link href="css/shCoreEclipse.css" rel="stylesheet" type="text/css" />
-<link href="css/shThemeEclipse.css" rel="stylesheet" type="text/css" />
-<link href="css/qi4j.css" rel="stylesheet" type="text/css" />
-
-<!-- Syntax Highlighter -->
-
-<script type="text/javascript" src="js/shCore.js"></script>
-<script type="text/javascript" src="js/shBrushJava.js"></script>
-<script type="text/javascript" src="js/shBrushScala.js"></script>
-<script type="text/javascript" src="js/shBrushJScript.js"></script>
-<script type="text/javascript" src="js/shBrushBash.js"></script>
-<script type="text/javascript" src="js/shBrushPlain.js"></script>
-<script type="text/javascript" src="js/shBrushXml.js"></script>
-<script type="text/javascript" src="js/shBrushGroovy.js"></script>
-<script type="text/javascript" src="js/shBrushPython.js"></script>
-<script type="text/javascript" src="js/shBrushRuby.js"></script>
-<script type="text/javascript" src="js/shBrushCSharp.js"></script>
-
-<script type="text/javascript">
-  SyntaxHighlighter.defaults['tab-size'] = 4;
-  SyntaxHighlighter.defaults['gutter'] = false;
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all()
-</script>
-
-<!-- JQuery -->
-
-<script type="text/javascript" src="js/jquery-1.6.4.min.js"></script>
-
-<!-- Image Scaler -->
-
-<script type="text/javascript" src="js/imagescaler.js"></script>
-
-<!-- Table Styler -->
-
-<script type="text/javascript" src="js/tablestyler.js"></script>
-
-<!-- Qi4j WebSite Progressive Enhancement -->
-
-<link href="css/progressive-enhancement.css" rel="stylesheet" type="text/css" 
/>
-<script type="text/javascript" src="js/jquery.scrollTo-1.4.2.js"></script>
-<script type="text/javascript" src="js/progressive-enhancement.js"></script>
-
-<!-- Analytics -->
- <script type="text/javascript">
-  var _gaq = _gaq || [];
-  _gaq.push(['_setAccount', 'UA-89723617-1']);
-  _gaq.push(['_trackPageview']);
-
-  (function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-  })();
- </script>
-
-  </head><body><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="logo"><a href="index.html"><img src="images/logo-standard.png" 
/></a></div><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="top-nav"><div xmlns="http://www.w3.org/1999/xhtml"; 
class="toc"><dl><dt><span class="section"><a 
href="index.html#home">Zest™</a></span></dt><dt><span class="section"><a 
href="intro.html">Introduction</a></span></dt><dt><span class="section"><span 
xmlns="" href="tutorials.html">Tutorials</span></span></dt><dt><span 
class="section"><a href="javadocs.html">Javadoc</a></span></dt><dt><span 
class="section"><a href="samples.html">Samples</a></span></dt><dt><span 
class="section"><a href="core.html">Core</a></span></dt><dt><span 
class="section"><a href="libraries.html">Libraries</a></span></dt><dt><span 
class="section"><a href="extensions.html">Extensions</a></span></dt><dt><span 
class="section"><a href="tools.html">Tools</a></span></dt><dt><span 
class="section"><a href="glossary.html">
 Glossary </a></span></dt></dl></div></div><div xmlns="" 
xmlns:exsl="http://exslt.org/common"; class="sub-nav"><div 
xmlns="http://www.w3.org/1999/xhtml"; class="toc"><dl><dt><span 
class="section"><a 
href="tutorials.html#_overview">Overview</a></span></dt><dt><span 
class="section"><a href="two-minutes-intro.html">Zest™ in 2 
minutes</a></span></dt><dt><span class="section"><a 
href="ten-minutes-intro.html">Zest™ in 10 minutes</a></span></dt><dt><span 
class="section"><a href="thirty-minutes-intro.html">Zest™ in 30 
minutes</a></span></dt><dt><span class="section"><a 
href="howto-depend-on-zest.html">Depend on Zest™ in your 
build</a></span></dt><dt><span class="section"><a 
href="howto-assemble-application.html">Assemble an 
Application</a></span></dt><dt><span class="section"><a 
href="tut-composites.html">Transient Composites 
Tutorial</a></span></dt><dt><span class="section"><a 
href="tut-services.html">Services Composites Tutorial</a></span></dt><dt><span 
class="section"><a href="howt
 o-contextual-fragments.html">Use contextual fragments</a></span></dt><dt><span 
class="section"><a href="howto-leverage-properties.html">Leverage 
Properties</a></span></dt><dt><span class="section"><span xmlns="" 
href="howto-create-constraint.html">Create a 
Constraint</span></span></dt><dt><span class="section"><a 
href="howto-create-concern.html">Create a Concern</a></span></dt><dt><span 
class="section"><a href="howto-create-sideeffect.html">Create a 
SideEffect</a></span></dt><dt><span class="section"><a 
href="howto-create-entity.html">Create an Entity</a></span></dt><dt><span 
class="section"><a href="howto-configure-service.html">Configure a 
Service</a></span></dt><dt><span class="section"><a 
href="howto-invocation-annotation.html">Use 
@Invocation</a></span></dt><dt><span class="section"><a 
href="howto-use-io.html">Use I/O API</a></span></dt><dt><span 
class="section"><a href="build-system.html">Zest™ Build 
System</a></span></dt><dt><span class="section"><a href="community-docs.htm
 l">Writing Zest™ Documentation</a></span></dt><dt><span class="section"><a 
href="releasing-apache.html">Releasing 
Zest™</a></span></dt></dl></div></div><div class="section" title="Create a 
Constraint"><div class="titlepage"><div><div><h3 class="title"><a 
id="howto-create-constraint"></a>Create a 
Constraint</h3></div></div></div><p>Constraints are defined in <a class="xref" 
href="glossary.html#def-constraint">Constraint</a>.</p><p>If you want to 
reproduce what’s explained in this tutorial, remember to depend on the Core 
Bootstrap artifact:</p><div class="table"><a id="idm371059950496"></a><p 
class="title"><strong>Table 9. Artifact</strong></p><div 
class="table-contents"><table summary="Artifact" border="1"><colgroup><col 
class="col_1" /><col class="col_2" /><col class="col_3" 
/></colgroup><thead><tr><th align="left" valign="top">Group ID</th><th 
align="left" valign="top">Artifact ID</th><th align="left" 
valign="top">Version</th></tr></thead><tbody><tr><td align="left" valign=
 "top"><p>org.qi4j.core</p></td><td align="left" 
valign="top"><p>org.qi4j.core.bootstrap</p></td><td align="left" 
valign="top"><p>2.1</p></td></tr></tbody></table></div></div><br 
class="table-break" /><p>At runtime you will need the Core Runtime artifact 
too. See the <a class="xref" href="howto-depend-on-zest.html" title="Depend on 
Zest™ in your build">Depend on Zest™ in your build</a> tutorial for 
details.</p><div class="section" title="Method Constraint"><div 
class="titlepage"><div><div><h4 class="title"><a 
id="_method_constraint"></a>Method Constraint</h4></div></div></div><p>Method 
Constraints are declared with annotations on the method argument. The 
annotation itself is custom, and it is possible to make your own.</p><pre 
class="programlisting brush: java">public interface Dialer
-{
-    void callPhoneNumber(@PhoneNumber String phoneNo);
-
-}
-</pre><p>In the code above we say that we want the argument to the 
callPhoneNumber() method to be a valid phone number. This annotation is not 
built-in, so we need to declare it.</p><pre class="programlisting brush: 
java">@ConstraintDeclaration
-@Retention( RetentionPolicy.RUNTIME )
-@Target( { ElementType.PARAMETER, ElementType.ANNOTATION_TYPE, 
ElementType.METHOD } )
-public @interface PhoneNumber
-{
-}
-</pre><p>We then need to provide the Constraint implementation.</p><pre 
class="programlisting brush: java">public class PhoneNumberConstraint
-        implements Constraint&lt;PhoneNumber, String&gt;
-{
-    public boolean isValid( PhoneNumber annotation, String number )
-    {
-        boolean validPhoneNumber = true; // check phone number format...
-        return validPhoneNumber;  // return true if valid phone number.
-    }
-}
-</pre><p>We also need to include the Constraint on the Composites we want to 
have them present.</p><pre class="programlisting brush: java">@Constraints( 
PhoneNumberConstraint.class )
-public interface DialerComposite extends ServiceComposite, Dialer
-{
-}
-</pre><p>If a Constraint is violated, then a ConstraintViolationException is 
thrown. The Exception contains ALL violations found
-in the method invocation. Concerns can be used to catch and report these 
violations.</p><pre class="programlisting brush: java">public class 
ParameterViolationConcern extends ConcernOf&lt;InvocationHandler&gt;
-    implements InvocationHandler
-{
-    public Object invoke( Object proxy, Method method, Object[] args )
-        throws Throwable
-    {
-        try
-        {
-            return next.invoke( proxy, method, args );
-        }
-        catch( ConstraintViolationException e )
-        {
-            for( ConstraintViolation violation : e.constraintViolations() )
-            {
-                String name = violation.name();
-                Object value = violation.value();
-                Annotation constraint = violation.constraint();
-                report( name, value, constraint );
-            }
-            throw new IllegalArgumentException("Invalid argument(s)", e);
-        }
-    }
-
-      [...snip...]
-
-    private void report( String name, Object value, Annotation constraint )
-    {
-    }
-}
-</pre></div><div class="section" title="Property Constraint"><div 
class="titlepage"><div><div><h4 class="title"><a 
id="_property_constraint"></a>Property 
Constraint</h4></div></div></div><p>Property Constraints are declared on the 
Property method.</p><pre class="programlisting brush: java">public interface 
HasPhoneNumber
-{
-    @PhoneNumber
-    Property&lt;String&gt; phoneNumber();
-}
-</pre><p>In this case, the Constraint associated with the phoneNumber() 
method, will be called before the set() method on that
-Property is called. If there is a constraint violation, the Exception thrown 
will be part of the caller, and not the
-composite containing the Property, so a reporting constraint on the containing 
Composite will not see it. If you want
-the containing Composite to handle the Constraint Violation, then you need to 
add a Concern on the Property itself,
-which can be done like this;</p><pre class="programlisting brush: java">public 
abstract class PhoneNumberParameterViolationConcern extends 
ConcernOf&lt;HasPhoneNumber&gt;
-    implements HasPhoneNumber
-{
-    @Concerns( CheckViolation.class )
-    public abstract Property&lt;String&gt; phoneNumber();
-
-    private abstract class CheckViolation extends 
ConcernOf&lt;Property&lt;String&gt;&gt;
-        implements Property&lt;String&gt;
-    {
-        public void set( String number )
-        {
-            try
-            {
-                next.set( number );
-            }
-            catch( ConstraintViolationException e )
-            {
-                Collection&lt;ConstraintViolation&gt; violations = 
e.constraintViolations();
-                report( violations );
-            }
-        }
-
-          [...snip...]
-
-        private void report( Collection&lt;ConstraintViolation&gt; violations )
-        {
-        }
-    }
-}
-</pre></div></div><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="footer"><p>
-        Copyright © 2015 The Apache Software Foundation, Licensed under the 
<a href="http://www.apache.org/licenses/"; target="_blank">Apache License, 
Version 2.0</a>.
-        <br /><small>
-            Apache Zest, Zest, Apache, the Apache feather logo, and the Apache 
Zest project logo are trademarks of The Apache Software Foundation.<br />
-            All other marks mentioned may be trademarks or registered 
trademarks of their respective owners.
-        </small></p></div></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-website/blob/ea4d77b0/content/java/latest/howto-create-entity.html
----------------------------------------------------------------------
diff --git a/content/java/latest/howto-create-entity.html 
b/content/java/latest/howto-create-entity.html
deleted file mode 100644
index 0b742da..0000000
--- a/content/java/latest/howto-create-entity.html
+++ /dev/null
@@ -1,242 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml";><head><meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8" /><title>Create an Entity</title><link 
rel="stylesheet" type="text/css" href="css/style.css" /><meta name="generator" 
content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" 
title="" /><link rel="up" href="tutorials.html" title="Tutorials" /><link 
rel="prev" href="howto-create-sideeffect.html" title="Create a SideEffect" 
/><link rel="next" href="howto-configure-service.html" title="Configure a 
Service" />
-
-
-<!-- favicon -->
-
-<link rel="shortcut icon" href="http://qi4j.org/favicon.ico"; 
type="image/vnd.microsoft.icon" />
-<link rel="icon" href="http://qi4j.org/favicon.ico"; type="image/x-icon" />
-
-<!-- style -->
-
-<link href="css/shCore.css" rel="stylesheet" type="text/css" />
-<link href="css/shCoreEclipse.css" rel="stylesheet" type="text/css" />
-<link href="css/shThemeEclipse.css" rel="stylesheet" type="text/css" />
-<link href="css/qi4j.css" rel="stylesheet" type="text/css" />
-
-<!-- Syntax Highlighter -->
-
-<script type="text/javascript" src="js/shCore.js"></script>
-<script type="text/javascript" src="js/shBrushJava.js"></script>
-<script type="text/javascript" src="js/shBrushScala.js"></script>
-<script type="text/javascript" src="js/shBrushJScript.js"></script>
-<script type="text/javascript" src="js/shBrushBash.js"></script>
-<script type="text/javascript" src="js/shBrushPlain.js"></script>
-<script type="text/javascript" src="js/shBrushXml.js"></script>
-<script type="text/javascript" src="js/shBrushGroovy.js"></script>
-<script type="text/javascript" src="js/shBrushPython.js"></script>
-<script type="text/javascript" src="js/shBrushRuby.js"></script>
-<script type="text/javascript" src="js/shBrushCSharp.js"></script>
-
-<script type="text/javascript">
-  SyntaxHighlighter.defaults['tab-size'] = 4;
-  SyntaxHighlighter.defaults['gutter'] = false;
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all()
-</script>
-
-<!-- JQuery -->
-
-<script type="text/javascript" src="js/jquery-1.6.4.min.js"></script>
-
-<!-- Image Scaler -->
-
-<script type="text/javascript" src="js/imagescaler.js"></script>
-
-<!-- Table Styler -->
-
-<script type="text/javascript" src="js/tablestyler.js"></script>
-
-<!-- Qi4j WebSite Progressive Enhancement -->
-
-<link href="css/progressive-enhancement.css" rel="stylesheet" type="text/css" 
/>
-<script type="text/javascript" src="js/jquery.scrollTo-1.4.2.js"></script>
-<script type="text/javascript" src="js/progressive-enhancement.js"></script>
-
-<!-- Analytics -->
- <script type="text/javascript">
-  var _gaq = _gaq || [];
-  _gaq.push(['_setAccount', 'UA-89723617-1']);
-  _gaq.push(['_trackPageview']);
-
-  (function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-  })();
- </script>
-
-  </head><body><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="logo"><a href="index.html"><img src="images/logo-standard.png" 
/></a></div><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="top-nav"><div xmlns="http://www.w3.org/1999/xhtml"; 
class="toc"><dl><dt><span class="section"><a 
href="index.html#home">Zest™</a></span></dt><dt><span class="section"><a 
href="intro.html">Introduction</a></span></dt><dt><span class="section"><span 
xmlns="" href="tutorials.html">Tutorials</span></span></dt><dt><span 
class="section"><a href="javadocs.html">Javadoc</a></span></dt><dt><span 
class="section"><a href="samples.html">Samples</a></span></dt><dt><span 
class="section"><a href="core.html">Core</a></span></dt><dt><span 
class="section"><a href="libraries.html">Libraries</a></span></dt><dt><span 
class="section"><a href="extensions.html">Extensions</a></span></dt><dt><span 
class="section"><a href="tools.html">Tools</a></span></dt><dt><span 
class="section"><a href="glossary.html">
 Glossary </a></span></dt></dl></div></div><div xmlns="" 
xmlns:exsl="http://exslt.org/common"; class="sub-nav"><div 
xmlns="http://www.w3.org/1999/xhtml"; class="toc"><dl><dt><span 
class="section"><a 
href="tutorials.html#_overview">Overview</a></span></dt><dt><span 
class="section"><a href="two-minutes-intro.html">Zest™ in 2 
minutes</a></span></dt><dt><span class="section"><a 
href="ten-minutes-intro.html">Zest™ in 10 minutes</a></span></dt><dt><span 
class="section"><a href="thirty-minutes-intro.html">Zest™ in 30 
minutes</a></span></dt><dt><span class="section"><a 
href="howto-depend-on-zest.html">Depend on Zest™ in your 
build</a></span></dt><dt><span class="section"><a 
href="howto-assemble-application.html">Assemble an 
Application</a></span></dt><dt><span class="section"><a 
href="tut-composites.html">Transient Composites 
Tutorial</a></span></dt><dt><span class="section"><a 
href="tut-services.html">Services Composites Tutorial</a></span></dt><dt><span 
class="section"><a href="howt
 o-contextual-fragments.html">Use contextual fragments</a></span></dt><dt><span 
class="section"><a href="howto-leverage-properties.html">Leverage 
Properties</a></span></dt><dt><span class="section"><a 
href="howto-create-constraint.html">Create a 
Constraint</a></span></dt><dt><span class="section"><a 
href="howto-create-concern.html">Create a Concern</a></span></dt><dt><span 
class="section"><a href="howto-create-sideeffect.html">Create a 
SideEffect</a></span></dt><dt><span class="section"><span xmlns="" 
href="howto-create-entity.html">Create an Entity</span></span></dt><dt><span 
class="section"><a href="howto-configure-service.html">Configure a 
Service</a></span></dt><dt><span class="section"><a 
href="howto-invocation-annotation.html">Use 
@Invocation</a></span></dt><dt><span class="section"><a 
href="howto-use-io.html">Use I/O API</a></span></dt><dt><span 
class="section"><a href="build-system.html">Zest™ Build 
System</a></span></dt><dt><span class="section"><a href="community-docs.htm
 l">Writing Zest™ Documentation</a></span></dt><dt><span class="section"><a 
href="releasing-apache.html">Releasing 
Zest™</a></span></dt></dl></div></div><div class="section" title="Create an 
Entity"><div class="titlepage"><div><div><h3 class="title"><a 
id="howto-create-entity"></a>Create an Entity</h3></div></div></div><p>One of 
the most common tasks in Zest™ is the management of the life cycle of 
Entities. Since Zest™ is capable of
-delivering much higher performance than traditional Object-Relational Mapping 
technologies, we also expect that people
-use Entities more frequently in Zest™ applications, so it is a very 
important topic to cover.</p><p>If you want to reproduce what’s explained in 
this tutorial, remember to depend on the Core Bootstrap artifact:</p><div 
class="table"><a id="idm371059863392"></a><p class="title"><strong>Table 12. 
Artifact</strong></p><div class="table-contents"><table summary="Artifact" 
border="1"><colgroup><col class="col_1" /><col class="col_2" /><col 
class="col_3" /></colgroup><thead><tr><th align="left" valign="top">Group 
ID</th><th align="left" valign="top">Artifact ID</th><th align="left" 
valign="top">Version</th></tr></thead><tbody><tr><td align="left" 
valign="top"><p>org.qi4j.core</p></td><td align="left" 
valign="top"><p>org.qi4j.core.bootstrap</p></td><td align="left" 
valign="top"><p>2.1</p></td></tr></tbody></table></div></div><br 
class="table-break" /><p>Moreover, you’ll need an EntityStore for persistence 
and an Indexing engine for querying. Choose among the available
-implementations listed in the <a class="xref" href="extensions.html" 
title="Extensions">Extensions</a> section.</p><p>At runtime you will need the 
Core Runtime artifact too. See the <a class="xref" 
href="howto-depend-on-zest.html" title="Depend on Zest™ in your build">Depend 
on Zest™ in your build</a> tutorial for details.</p><div class="section" 
title="Basics First"><div class="titlepage"><div><div><h4 class="title"><a 
id="_basics_first"></a>Basics First</h4></div></div></div><p>All Entity 
operations MUST be done within a UnitOfWork. UnitOfWorks can be nested and if 
underlying UnitOfWorks are not
-completed (method complete()), then none of the operations will be persisted 
permanently.</p><p>Entity composites are subtypes of the EntityComposite 
interface.</p><p>Domain code typically don’t need to know of the 
EntityComposite types directly, and is instead using the domain specific
-interface. The Visibility rules will be applied to associate the right 
EntityComposite when a domain type is requested.
-Ambiguities are not accepted and will result in runtime 
exceptions.</p><p>Zest™ supports that each entity instance can have more than 
one entity type, and it is managed per instance. This feature
-is beyond the scope of this HowTO and will be covered 
subsequently.</p></div><div class="section" title="Good Practice"><div 
class="titlepage"><div><div><h4 class="title"><a id="_good_practice"></a>Good 
Practice</h4></div></div></div><p>We have made the observation that it is good 
practice to separate the internal state from the observable behavior. By
-this we mean that it is not a good practice to allow client code to manipulate 
or even view the internal states of
-objects, which is such a common (bad) practice in the so called POJO 
world.</p><p>Instead, we recommend that the programmer defines the client 
requirement of what each participant within the client
-context needs to conform to, and then create composites accordingly and hide 
all the state internal to the composite in
-private mixins. By doing so, the same entity can participate in multiple 
contexts with different behavioral requirements
-but using the same internal state.</p><p>We recommend limited use of primitive 
types for Properties and instead subtype the Property.</p><p>And try to use 
ValueComposites instead of Entities.</p></div><div class="section" title="The 
Entity"><div class="titlepage"><div><div><h4 class="title"><a 
id="_the_entity"></a>The Entity</h4></div></div></div><p>We need an entity to 
illustrate how we recommend to separate internal state from public behavior and 
observable state.
-We will for the sake of simplicity use a trivial example. Please refer to 
other (possibly future) HowTos on patterns on
-Entity management.</p><pre class="programlisting brush: java">public interface 
Car
-{
-    @Immutable
-    Association&lt;Manufacturer&gt; manufacturer();
-
-    @Immutable
-    Property&lt;String&gt; model();
-
-    ManyAssociation&lt;Accident&gt; accidents();
-}
-
-</pre><pre class="programlisting brush: java">public interface Manufacturer
-{
-    Property&lt;String&gt; name();
-    Property&lt;String&gt; country();
-
-    @UseDefaults
-    Property&lt;Long&gt; carsProduced();
-}
-
-</pre><pre class="programlisting brush: java">public interface Accident
-{
-    Property&lt;String&gt; description();
-    Property&lt;Date&gt; occured();
-    Property&lt;Date&gt; repaired();
-}
-
-</pre><p>Above we define a Car domain object, which is of a particular 
Manufacturer (also an Entity), a model and a record of
-Accidents.</p><p>We will also need to define the composites for the above 
domain structure;</p><pre class="programlisting brush: java">public interface 
CarEntity extends Car, EntityComposite
-{}
-
-</pre><pre class="programlisting brush: java">public interface 
ManufacturerEntity extends Manufacturer, EntityComposite
-{}
-
-</pre><pre class="programlisting brush: java">public interface AccidentValue 
extends Accident, ValueComposite
-{}
-
-</pre><p>For this case, we define both the Car and the Manufacturer as 
Entities, whereas the Accident is a Value, since it is an
-immutable event that can not be modified.</p></div><div class="section" 
title="Assembly"><div class="titlepage"><div><div><h4 class="title"><a 
id="_assembly"></a>Assembly</h4></div></div></div><p>All of the above must also 
be declared in the assembly. We MUST associate the EntityComposites with a 
relevant Module.
-We must also assemble an EntityStore for the entire application, but that is 
outside the scope of this HowTo.</p><pre class="programlisting brush: 
java">public class MyAssembler
-        implements Assembler
-{
-    public void assemble( ModuleAssembly module )
-    {
-        module.entities( CarEntity.class,
-                ManufacturerEntity.class );
-
-        module.values( AccidentValue.class );
-          [...snip...]
-
-    }
-}
-</pre><p>We have no other Composites involved yet, so we can proceed to look 
at the usage code.</p><p>We recommend that the life cycle management of 
entities is placed inside domain factories, one for each type and made
-available as services.</p></div><div class="section" title="The Entity 
Factory"><div class="titlepage"><div><div><h4 class="title"><a 
id="_the_entity_factory"></a>The Entity Factory</h4></div></div></div><p>The 
entity factory is something you need to write yourself, but as with most things 
in Zest™ it will end up being a
-fairly small implementation. So how is that done?</p><pre 
class="programlisting brush: java">public interface CarEntityFactory
-{
-    Car create(Manufacturer manufacturer, String model);
-}
-
-</pre><p>That is just the domain interface. We now need to make the service 
interface, which Zest™ needs to identify services and
-make it possible for the service injection later.</p><pre 
class="programlisting brush: java">@Mixins( { CarEntityFactoryMixin.class } )
-public interface CarEntityFactoryService
-        extends CarEntityFactory, ServiceComposite
-{}
-</pre><p>Then we need an implementation of the mixin.</p><pre 
class="programlisting brush: java">public class CarEntityFactoryMixin
-        implements CarEntityFactory
-{
-
-</pre><p>And doing that, first of all we need to request Zest™ runtime to 
give us the Module
-that our code belongs to, and the UnitOfWork current context the execution is 
happening in.</p><p>Injections that are related to the Visibility rules are 
handled by the @Structure annotation. And the easiest way for us
-to obtain a Module is simply to;</p><pre class="programlisting brush: 
java">public class CarEntityFactoryMixin
-        implements CarEntityFactory
-{
-
-    @Structure
-    Module module;
-</pre><p>Here Zest™ will inject the member module with the correct Module. 
In case we only need the Module
-during the construction, we can also request it in the same manner as 
constructor argument.</p><pre class="programlisting brush: java">public 
CarEntityFactoryMixin( @Structure Module module )
-{
-}
-
-</pre><p>This is important to know, since the injected member will not be 
available until AFTER the constructor has been
-completed.</p><p>We then need to provide the implementation for the create() 
method.</p><pre class="programlisting brush: java">public Car 
create(Manufacturer manufacturer, String model)
-{
-    UnitOfWork uow = module.currentUnitOfWork();
-    EntityBuilder&lt;Car&gt; builder = uow.newEntityBuilder( Car.class );
-
-    Car prototype = builder.instance();
-    prototype.manufacturer().set( manufacturer );
-    prototype.model().set( model );
-
-    return builder.newInstance();
-}
-</pre><p>So far so good. But how about the Manufacturer input into the 
create() method?</p><p>DDD promotes the use of Repositories. They are the 
type-safe domain interfaces into locating entities without getting
-bogged down with querying infrastructure details. And one Repository per 
Entity type, so we keep it nice, tidy and
-re-usable. So let’s create one for the Manufacturer type.</p><pre 
class="programlisting brush: java">public interface ManufacturerRepository
-{
-    Manufacturer findByIdentity(String identity);
-
-    Manufacturer findByName(String name);
-}
-</pre><p>And then we repeat the process for creating a Service…</p><pre 
class="programlisting brush: java">@Mixins( ManufacturerRepositoryMixin.class  )
-public interface ManufacturerRepositoryService
-        extends ManufacturerRepository, ServiceComposite
-{}
-</pre><p>and a Mixin that implements it…</p><pre class="programlisting 
brush: java">public class ManufacturerRepositoryMixin
-        implements ManufacturerRepository
-{
-    @Structure
-    private UnitOfWorkFactory uowf;
-
-    @Structure
-    private Module module;
-
-    public Manufacturer findByIdentity( String identity )
-    {
-        UnitOfWork uow = uowf.currentUnitOfWork();
-        return uow.get(Manufacturer.class, identity);
-    }
-
-    public Manufacturer findByName( String name )
-    {
-        UnitOfWork uow = uowf.currentUnitOfWork();
-        QueryBuilder&lt;Manufacturer&gt; builder =
-                module.newQueryBuilder( Manufacturer.class );
-
-        Manufacturer template = templateFor( Manufacturer.class );
-        builder.where( eq( template.name(), name ) );
-
-        Query&lt;Manufacturer&gt; query = uow.newQuery( builder);
-        return query.find();
-    }
-}
-
-</pre><p>But now we have introduced 2 services that also are required to be 
declared in the assembly. In this case, we want the
-Services to be available to the application layer above, and not restricted to 
within this domain model.</p><pre class="programlisting brush: java">public 
class MyAssembler
-        implements Assembler
-{
-    public void assemble( ModuleAssembly module )
-    {
-        module.entities( CarEntity.class,
-                ManufacturerEntity.class );
-
-        module.values( AccidentValue.class );
-        module.addServices(
-                ManufacturerRepositoryService.class,
-                CarEntityFactoryService.class
-        ).visibleIn( Visibility.application );
-    }
-}
-</pre></div><div class="section" title="The UnitOfWork"><div 
class="titlepage"><div><div><h4 class="title"><a id="_the_unitofwork"></a>The 
UnitOfWork</h4></div></div></div><p>If you notice, there is a couple of calls 
to Module.currentUnitOfWork(), but what is current UnitOfWork, and
-who is setting that up?</p><p>Well, the domain layer should not worry about 
UoW, it is probably the responsibility of the application/service layer
-sitting on top. That could be a web application creating and completing a UoW 
per request, or some other co-ordinator
-doing long-running UnitOfWorks.</p><p>There are of course a lot more details 
to get all this completed, but that is beyond the scope of this HowTo.
-See <a class="xref" href="core-api.html#core-api-unitofwork" title="Unit Of 
Work">UnitOfWork</a> in Core API.</p></div></div><div xmlns="" 
xmlns:exsl="http://exslt.org/common"; class="footer"><p>
-        Copyright © 2015 The Apache Software Foundation, Licensed under the 
<a href="http://www.apache.org/licenses/"; target="_blank">Apache License, 
Version 2.0</a>.
-        <br /><small>
-            Apache Zest, Zest, Apache, the Apache feather logo, and the Apache 
Zest project logo are trademarks of The Apache Software Foundation.<br />
-            All other marks mentioned may be trademarks or registered 
trademarks of their respective owners.
-        </small></p></div></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-website/blob/ea4d77b0/content/java/latest/howto-create-sideeffect.html
----------------------------------------------------------------------
diff --git a/content/java/latest/howto-create-sideeffect.html 
b/content/java/latest/howto-create-sideeffect.html
deleted file mode 100644
index f11edcb..0000000
--- a/content/java/latest/howto-create-sideeffect.html
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml";><head><meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8" /><title>Create a SideEffect</title><link 
rel="stylesheet" type="text/css" href="css/style.css" /><meta name="generator" 
content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" 
title="" /><link rel="up" href="tutorials.html" title="Tutorials" /><link 
rel="prev" href="howto-create-concern.html" title="Create a Concern" /><link 
rel="next" href="howto-create-entity.html" title="Create an Entity" />
-
-
-<!-- favicon -->
-
-<link rel="shortcut icon" href="http://qi4j.org/favicon.ico"; 
type="image/vnd.microsoft.icon" />
-<link rel="icon" href="http://qi4j.org/favicon.ico"; type="image/x-icon" />
-
-<!-- style -->
-
-<link href="css/shCore.css" rel="stylesheet" type="text/css" />
-<link href="css/shCoreEclipse.css" rel="stylesheet" type="text/css" />
-<link href="css/shThemeEclipse.css" rel="stylesheet" type="text/css" />
-<link href="css/qi4j.css" rel="stylesheet" type="text/css" />
-
-<!-- Syntax Highlighter -->
-
-<script type="text/javascript" src="js/shCore.js"></script>
-<script type="text/javascript" src="js/shBrushJava.js"></script>
-<script type="text/javascript" src="js/shBrushScala.js"></script>
-<script type="text/javascript" src="js/shBrushJScript.js"></script>
-<script type="text/javascript" src="js/shBrushBash.js"></script>
-<script type="text/javascript" src="js/shBrushPlain.js"></script>
-<script type="text/javascript" src="js/shBrushXml.js"></script>
-<script type="text/javascript" src="js/shBrushGroovy.js"></script>
-<script type="text/javascript" src="js/shBrushPython.js"></script>
-<script type="text/javascript" src="js/shBrushRuby.js"></script>
-<script type="text/javascript" src="js/shBrushCSharp.js"></script>
-
-<script type="text/javascript">
-  SyntaxHighlighter.defaults['tab-size'] = 4;
-  SyntaxHighlighter.defaults['gutter'] = false;
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all()
-</script>
-
-<!-- JQuery -->
-
-<script type="text/javascript" src="js/jquery-1.6.4.min.js"></script>
-
-<!-- Image Scaler -->
-
-<script type="text/javascript" src="js/imagescaler.js"></script>
-
-<!-- Table Styler -->
-
-<script type="text/javascript" src="js/tablestyler.js"></script>
-
-<!-- Qi4j WebSite Progressive Enhancement -->
-
-<link href="css/progressive-enhancement.css" rel="stylesheet" type="text/css" 
/>
-<script type="text/javascript" src="js/jquery.scrollTo-1.4.2.js"></script>
-<script type="text/javascript" src="js/progressive-enhancement.js"></script>
-
-<!-- Analytics -->
- <script type="text/javascript">
-  var _gaq = _gaq || [];
-  _gaq.push(['_setAccount', 'UA-89723617-1']);
-  _gaq.push(['_trackPageview']);
-
-  (function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-  })();
- </script>
-
-  </head><body><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="logo"><a href="index.html"><img src="images/logo-standard.png" 
/></a></div><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="top-nav"><div xmlns="http://www.w3.org/1999/xhtml"; 
class="toc"><dl><dt><span class="section"><a 
href="index.html#home">Zest™</a></span></dt><dt><span class="section"><a 
href="intro.html">Introduction</a></span></dt><dt><span class="section"><span 
xmlns="" href="tutorials.html">Tutorials</span></span></dt><dt><span 
class="section"><a href="javadocs.html">Javadoc</a></span></dt><dt><span 
class="section"><a href="samples.html">Samples</a></span></dt><dt><span 
class="section"><a href="core.html">Core</a></span></dt><dt><span 
class="section"><a href="libraries.html">Libraries</a></span></dt><dt><span 
class="section"><a href="extensions.html">Extensions</a></span></dt><dt><span 
class="section"><a href="tools.html">Tools</a></span></dt><dt><span 
class="section"><a href="glossary.html">
 Glossary </a></span></dt></dl></div></div><div xmlns="" 
xmlns:exsl="http://exslt.org/common"; class="sub-nav"><div 
xmlns="http://www.w3.org/1999/xhtml"; class="toc"><dl><dt><span 
class="section"><a 
href="tutorials.html#_overview">Overview</a></span></dt><dt><span 
class="section"><a href="two-minutes-intro.html">Zest™ in 2 
minutes</a></span></dt><dt><span class="section"><a 
href="ten-minutes-intro.html">Zest™ in 10 minutes</a></span></dt><dt><span 
class="section"><a href="thirty-minutes-intro.html">Zest™ in 30 
minutes</a></span></dt><dt><span class="section"><a 
href="howto-depend-on-zest.html">Depend on Zest™ in your 
build</a></span></dt><dt><span class="section"><a 
href="howto-assemble-application.html">Assemble an 
Application</a></span></dt><dt><span class="section"><a 
href="tut-composites.html">Transient Composites 
Tutorial</a></span></dt><dt><span class="section"><a 
href="tut-services.html">Services Composites Tutorial</a></span></dt><dt><span 
class="section"><a href="howt
 o-contextual-fragments.html">Use contextual fragments</a></span></dt><dt><span 
class="section"><a href="howto-leverage-properties.html">Leverage 
Properties</a></span></dt><dt><span class="section"><a 
href="howto-create-constraint.html">Create a 
Constraint</a></span></dt><dt><span class="section"><a 
href="howto-create-concern.html">Create a Concern</a></span></dt><dt><span 
class="section"><span xmlns="" href="howto-create-sideeffect.html">Create a 
SideEffect</span></span></dt><dt><span class="section"><a 
href="howto-create-entity.html">Create an Entity</a></span></dt><dt><span 
class="section"><a href="howto-configure-service.html">Configure a 
Service</a></span></dt><dt><span class="section"><a 
href="howto-invocation-annotation.html">Use 
@Invocation</a></span></dt><dt><span class="section"><a 
href="howto-use-io.html">Use I/O API</a></span></dt><dt><span 
class="section"><a href="build-system.html">Zest™ Build 
System</a></span></dt><dt><span class="section"><a href="community-docs.htm
 l">Writing Zest™ Documentation</a></span></dt><dt><span class="section"><a 
href="releasing-apache.html">Releasing 
Zest™</a></span></dt></dl></div></div><div class="section" title="Create a 
SideEffect"><div class="titlepage"><div><div><h3 class="title"><a 
id="howto-create-sideeffect"></a>Create a 
SideEffect</h3></div></div></div><p>SideEffects are defined in <a class="xref" 
href="glossary.html#def-sideeffect">SideEffect</a>.</p><p>If you want to 
reproduce what’s explained in this tutorial, remember to depend on the Core 
Bootstrap artifact:</p><div class="table"><a id="idm371059893520"></a><p 
class="title"><strong>Table 11. Artifact</strong></p><div 
class="table-contents"><table summary="Artifact" border="1"><colgroup><col 
class="col_1" /><col class="col_2" /><col class="col_3" 
/></colgroup><thead><tr><th align="left" valign="top">Group ID</th><th 
align="left" valign="top">Artifact ID</th><th align="left" 
valign="top">Version</th></tr></thead><tbody><tr><td align="left" valign
 ="top"><p>org.qi4j.core</p></td><td align="left" 
valign="top"><p>org.qi4j.core.bootstrap</p></td><td align="left" 
valign="top"><p>2.1</p></td></tr></tbody></table></div></div><br 
class="table-break" /><p>At runtime you will need the Core Runtime artifact 
too. See the <a class="xref" href="howto-depend-on-zest.html" title="Depend on 
Zest™ in your build">Depend on Zest™ in your build</a> tutorial for 
details.</p><div class="section" title="Typed SideEffect"><div 
class="titlepage"><div><div><h4 class="title"><a 
id="_typed_sideeffect"></a>Typed SideEffect</h4></div></div></div><p>A typed 
SideEffect is a Java class that implements the MixinType it can be used 
on:</p><pre class="programlisting brush: java">public abstract class 
MailNotifySideEffect extends SideEffectOf&lt;Confirmable&gt;
-    implements Confirmable
-{
-    @Service
-    private MailService mailer;
-
-    @This
-    private HasLineItems hasItems;
-
-    @This
-    private HasCustomer hasCustomer;
-
-    @Override
-    public void confirm()
-    {
-        StringBuilder builder = new StringBuilder();
-        builder.append( "An Order has been made.\n\n\n" );
-        builder.append( "Customer:" );
-        builder.append( hasCustomer.name().get() );
-        builder.append( "\n\nItems ordered:\n" );
-        for( LineItem item : hasItems.lineItems().get() )
-        {
-            builder.append( item.name().get() );
-            builder.append( " : " );
-            builder.append( item.quantity().get() );
-            builder.append( "\n" );
-        }
-        mailer.send( "[email protected]", builder.toString() );
-    }
-}
-</pre><p>The MailNotifySideEffect is implemented as an abstract class, since 
we are not interested in the many other methods in
-the Confirmable interface. Extending the SideEffectOf is a convenience 
mechanism, instead of an explicit @SideEffectFor
-annotation on a private field, which can be used in rare occasions when you 
are not able to extend. This base class
-defines the next field, which is set up by the Zest™ runtime and points to 
the next fragment in the call stack. We can
-also see that the MailService, HasLineItems and HasCustomer are provided to 
the side-effect, which is done with
-dependency injection. Zest™ also supports dependency injection via 
constructors and methods.</p><p>It can be used as follows;</p><pre 
class="programlisting brush: java">@SideEffects( MailNotifySideEffect.class )
-public interface OrderEntity
-    extends Order, HasSequenceNumber, HasCustomer,
-            HasLineItems, Confirmable, EntityComposite
-{
-}
-</pre><p>Methods of the SideEffect Fragment will be called after the Mixin 
invocation.</p></div><div class="section" title="Generic SideEffect"><div 
class="titlepage"><div><div><h4 class="title"><a 
id="_generic_sideeffect"></a>Generic SideEffect</h4></div></div></div><p>A 
generic SideEffect is a Java class that implements 
java.lang.reflect.InvocationHandler which allows it to be used on any
-arbitrary MixinType.</p><pre class="programlisting brush: java">public class 
MyGenericSideEffect extends GenericSideEffect
-{
-    @Override
-    public Object invoke( Object proxy, Method method, Object[] args )
-        throws Throwable
-    {
-        // Do whatever you need...
-
-        try
-        {
-            // It is possible to obtain the returned values by using 'result' 
member;
-            Object returnedValue = result.invoke( proxy, method, args );
-        } catch( NumberFormatException e )
-        {
-            // And Exception will be thrown accordingly, in case you need to 
know.
-            throw new IllegalArgumentException(); // But any thrown exceptions 
are ignored.
-        }
-        return 23; // Return values will also be ignored.
-    }
-}
-</pre><p>It can be used as follows;</p><pre class="programlisting brush: 
java">@Concerns( MyGenericSideEffect.class )
-public interface AnyMixinType
-{
-  [...snip...]
-
-}
-</pre><p>Methods of the SideEffect Fragment will be called before the Mixin 
invocation.</p><div class="section" title="AppliesTo"><div 
class="titlepage"><div><div><h5 class="title"><a 
id="_appliesto_2"></a>AppliesTo</h5></div></div></div><p>For generic 
SideEffects that should only trigger on methods with specific annotations or 
fulfilling some expression, add
-@AppliesTo annotation to the SideEffect class which points to either 
triggering annotation(s), or to AppliesToFilter
-implementation(s).</p><p>The SideEffect is invoked if one of the triggering 
annotations is found or one of the AppliesToFilter accepts the
-invocation. In other words the AppliesTo arguments are OR’ed.</p><p>Here is 
how the declaration goes ;</p><pre class="programlisting brush: 
java">@AppliesTo( { MyAnnotation.class, MyAppliesToFilter.class } )
-public class MyGenericSideEffect extends GenericSideEffect
-{
-  [...snip...]
-
-}
-</pre><p>And how to use the annotation ;</p><pre class="programlisting brush: 
java">@Concerns( MyGenericSideEffect.class )
-public interface AnyMixinType
-{
-
-    @MyAnnotation
-    void doSomething();
-
-    void doSomethingElse();
-
-}
-  [...snip...]
-
-</pre><p>Here only the doSomething() method will see the SideEffect applied 
whereas the doSomethingElse() method won’t.</p><p>Finally here is how to 
implement an AppliesToFilter:</p><pre class="programlisting brush: java">public 
class MyAppliesToFilter implements AppliesToFilter
-{
-    public boolean appliesTo( Method method, Class&lt;?&gt; mixin, 
Class&lt;?&gt; compositeType, Class&lt;?&gt; modifierClass )
-    {
-        boolean appliesTo = evaluate(method); // Do whatever you want
-        return appliesTo;
-    }
-
-      [...snip...]
-
-    private boolean evaluate( Method method )
-    {
-        return true;
-    }
-</pre></div></div></div><div xmlns="" xmlns:exsl="http://exslt.org/common"; 
class="footer"><p>
-        Copyright © 2015 The Apache Software Foundation, Licensed under the 
<a href="http://www.apache.org/licenses/"; target="_blank">Apache License, 
Version 2.0</a>.
-        <br /><small>
-            Apache Zest, Zest, Apache, the Apache feather logo, and the Apache 
Zest project logo are trademarks of The Apache Software Foundation.<br />
-            All other marks mentioned may be trademarks or registered 
trademarks of their respective owners.
-        </small></p></div></body></html>
\ No newline at end of file

Reply via email to