Modified: zest/site/content/java/develop/core-functional.html URL: http://svn.apache.org/viewvc/zest/site/content/java/develop/core-functional.html?rev=1689843&r1=1689842&r2=1689843&view=diff ============================================================================== --- zest/site/content/java/develop/core-functional.html (original) +++ zest/site/content/java/develop/core-functional.html Wed Jul 8 11:08:41 2015 @@ -66,8 +66,8 @@ })(); </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">Qi4j</a></span></dt><dt><span class="section"><a href="intro.html">Introduction</a></span></dt><dt><span class="section"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="core.html">Core</span></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">Glo ssary </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="core.html#_overview_3">Overview</a></span></dt><dt><span class="section"><a href="core-api.html">Core API</a></span></dt><dt><span class="section"><a href="core-bootstrap-assembly.html">Core Bootstrap</a></span></dt><dt><span class="section"><a href="core-testsupport.html">Core Test Support</a></span></dt><dt><span class="section"><span xmlns="" href="core-functional.html">Core Functional API</span></span></dt><dt><span class="section"><a href="core-io.html">Core I/O API</a></span></dt><dt><span class="section"><a href="core-spi.html">Core Extension SPI</a></span></dt><dt><span class="section"><a href="core-runtime.html">Core Runtime</a></span></dt></dl></div></div><div class="section" title="Core Functional API"><div class="titlepage"><div><div><h3 class="title"><a id="core-functiona l"></a>Core Functional API</h3></div></div></div><p class="remark"><em><span class="comment"></span></em></p><p class="devstatus-code-beta">code</p><p class="devstatus-docs-good">docs</p><p class="devstatus-tests-good">tests</p><p>The Qi4j Core Functional API is a generic package to work with Iterables in a "functional programming language" style.</p><p>This package is completely independent of everything else in Qi4j and may be used on its own in any kind of environment -such as Spring or Java EE applications.</p><div class="table"><a id="idm78347700240"></a><p class="title"><strong>Table 18. 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.functional</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><div class="section" title="First Example"><div class="titlepage"><div><div><h4 class="title"><a id="_first_example"></a>First Example</h4></div></div></div><p>Letâs say that you have an Iterable of Integers and you want to sum them all up. Most people would create a loop and + </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"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="core.html">Core</span></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.htm l">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="core.html#_overview_3">Overview</a></span></dt><dt><span class="section"><a href="core-api.html">Core API</a></span></dt><dt><span class="section"><a href="core-bootstrap-assembly.html">Core Bootstrap</a></span></dt><dt><span class="section"><a href="core-testsupport.html">Core Test Support</a></span></dt><dt><span class="section"><span xmlns="" href="core-functional.html">Core Functional API</span></span></dt><dt><span class="section"><a href="core-io.html">Core I/O API</a></span></dt><dt><span class="section"><a href="core-spi.html">Core Extension SPI</a></span></dt><dt><span class="section"><a href="core-runtime.html">Core Runtime</a></span></dt></dl></div></div><div class="section" title="Core Functional API"><div class="titlepage"><div><div><h3 class="title"><a id="core-fun ctional"></a>Core Functional API</h3></div></div></div><p class="remark"><em><span class="comment"></span></em></p><p class="devstatus-code-beta">code</p><p class="devstatus-docs-good">docs</p><p class="devstatus-tests-good">tests</p><p>The Zest⢠Core Functional API is a generic package to work with Iterables in a "functional programming language" style.</p><p>This package is completely independent of everything else in Zest⢠and may be used on its own in any kind of environment +such as Spring or Java EE applications.</p><div class="table"><a id="idm415577558752"></a><p class="title"><strong>Table 18. 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.functional</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><div class="section" title="First Example"><div class="titlepage"><div><div><h4 class="title"><a id="_first_example"></a>First Example</h4></div></div></div><p>Letâs say that you have an Iterable of Integers and you want to sum them all up. Most people would create a loop and sum it all up in something like this;</p><pre class="programlisting brush: java">Iterable<Long> data = new ArrayList<Long>(); [...snip...] @@ -78,7 +78,7 @@ for( Long point : data ) sum = sum + point; } System.out.println( "The sum is " + sum ); -</pre><p>With the Qi4j Core Functional API, you go about it in a different way. The code ends up looking like this;</p><pre class="programlisting brush: java">import static org.qi4j.functional.ForEach.forEach; +</pre><p>With the Zest⢠Core Functional API, you go about it in a different way. The code ends up looking like this;</p><pre class="programlisting brush: java">import static org.qi4j.functional.ForEach.forEach; import static org.qi4j.functional.Functions.longSum; [...snip...] @@ -86,10 +86,10 @@ import static org.qi4j.functional.Functi Long sum = forEach( data ).map( longSum() ).last(); System.out.println( "The sum is " + sum ); -</pre><p>And this is just the tip of the iceberg.</p></div><div class="section" title="The Big Picture"><div class="titlepage"><div><div><h4 class="title"><a id="_the_big_picture"></a>The Big Picture</h4></div></div></div><p>The Qi4j Core Functional API are divided a handful of powerful concepts, especially when used together;</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"> +</pre><p>And this is just the tip of the iceberg.</p></div><div class="section" title="The Big Picture"><div class="titlepage"><div><div><h4 class="title"><a id="_the_big_picture"></a>The Big Picture</h4></div></div></div><p>The Zest⢠Core Functional API are divided a handful of powerful concepts, especially when used together;</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"> <span class="strong"><strong>Iterables</strong></span> - many methods to deal with Iterable data, so that the loops in your programs can largely be removed. </li><li class="listitem"> -<span class="strong"><strong>Functions</strong></span> - f(x) and f(x,y) are well-know from mathematics and used in functional programming languages. Qi4j is +<span class="strong"><strong>Functions</strong></span> - f(x) and f(x,y) are well-know from mathematics and used in functional programming languages. Zest⢠is not capable of introducing lambda calculus due to limitations in Java itself, but we can simulate a lot to allow people to create more readable code. </li><li class="listitem">
Modified: zest/site/content/java/develop/core-io.html URL: http://svn.apache.org/viewvc/zest/site/content/java/develop/core-io.html?rev=1689843&r1=1689842&r2=1689843&view=diff ============================================================================== --- zest/site/content/java/develop/core-io.html (original) +++ zest/site/content/java/develop/core-io.html Wed Jul 8 11:08:41 2015 @@ -66,22 +66,22 @@ })(); </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">Qi4j</a></span></dt><dt><span class="section"><a href="intro.html">Introduction</a></span></dt><dt><span class="section"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="core.html">Core</span></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">Glo ssary </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="core.html#_overview_3">Overview</a></span></dt><dt><span class="section"><a href="core-api.html">Core API</a></span></dt><dt><span class="section"><a href="core-bootstrap-assembly.html">Core Bootstrap</a></span></dt><dt><span class="section"><a href="core-testsupport.html">Core Test Support</a></span></dt><dt><span class="section"><a href="core-functional.html">Core Functional API</a></span></dt><dt><span class="section"><span xmlns="" href="core-io.html">Core I/O API</span></span></dt><dt><span class="section"><a href="core-spi.html">Core Extension SPI</a></span></dt><dt><span class="section"><a href="core-runtime.html">Core Runtime</a></span></dt></dl></div></div><div class="section" title="Core I/O API"><div class="titlepage"><div><div><h3 class="title"><a id="core-io"></a>Core I/O API</h3></div></div></div><p class="remark"><em><span class="comment"></span></em></p><p class="devstatus-code-beta">code</p><p class="devstatus-docs-good">docs</p><p class="devstatus-tests-good">tests</p><p>The Qi4j Core I/O API is completely generic and not tied to the Qi4j programming model as a whole. It can be used -independently of Qi4j, together with the Qi4j Core Functional API, which the Core I/O API depends on.</p><p>The Qi4j Core I/O API tries to address the problem around shuffling data around from various I/O inputs and outputs, + </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"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="core.html">Core</span></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.htm l">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="core.html#_overview_3">Overview</a></span></dt><dt><span class="section"><a href="core-api.html">Core API</a></span></dt><dt><span class="section"><a href="core-bootstrap-assembly.html">Core Bootstrap</a></span></dt><dt><span class="section"><a href="core-testsupport.html">Core Test Support</a></span></dt><dt><span class="section"><a href="core-functional.html">Core Functional API</a></span></dt><dt><span class="section"><span xmlns="" href="core-io.html">Core I/O API</span></span></dt><dt><span class="section"><a href="core-spi.html">Core Extension SPI</a></span></dt><dt><span class="section"><a href="core-runtime.html">Core Runtime</a></span></dt></dl></div></div><div class="section" title="Core I/O API"><div class="titlepage"><div><div><h3 class="title"><a id="core-io"></a>Co re I/O API</h3></div></div></div><p class="remark"><em><span class="comment"></span></em></p><p class="devstatus-code-beta">code</p><p class="devstatus-docs-good">docs</p><p class="devstatus-tests-good">tests</p><p>The Zest⢠Core I/O API is completely generic and not tied to the Zest⢠programming model as a whole. It can be used +independently of Zest, together with the Zest⢠Core Functional API, which the Core I/O API depends on.</p><p>The Zest⢠Core I/O API tries to address the problem around shuffling data around from various I/O inputs and outputs, possibly with transformations and filtering along the way. It was identified that there is a general mix-up of concerns in the stereotypical I/O handling codebases that people deal with all the time. The reasoning around this, can be found -in the <a class="xref" href="howto-use-io.html" title="Use I/O API">Use I/O API</a>, and is recommended reading.</p><div class="table"><a id="idm78347664224"></a><p class="title"><strong>Table 19. 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.io</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><div class="section" title="The Problem"><div class="titlepage"><div><div><h4 class="title"><a id="_the_problem"></a>The Problem</h4></div></div></div><p>Why does I/O operations in Java have to be so complicated, with nested try/catch/finally and loops? Donât you wish +in the <a class="xref" href="howto-use-io.html" title="Use I/O API">Use I/O API</a>, and is recommended reading.</p><div class="table"><a id="idm415577520400"></a><p class="title"><strong>Table 19. 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.io</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><div class="section" title="The Problem"><div class="titlepage"><div><div><h4 class="title"><a id="_the_problem"></a>The Problem</h4></div></div></div><p>Why does I/O operations in Java have to be so complicated, with nested try/catch/finally and loops? Donât you wish that the operations could be expressed in a more natural way, such as;</p><pre class="programlisting brush: java">File source = ... File destination = ... source.copyTo( destination );</pre><p>It seems natural to do, yet it is not present for us. We need to involve FileInputStream/FileOutputStream, wrap them in Buffered versions of it, do our own looping, close the streams afterwards and what not. So, the java.io.File does -not have this simple feature and in the Qi4j Core API, we need to work around this limitation. We also want to +not have this simple feature and in the Zest⢠Core API, we need to work around this limitation. We also want to make the abstraction a little bit more encompassing than "just" files. So how does that look like then?</p></div><div class="section" title="First Examples"><div class="titlepage"><div><div><h4 class="title"><a id="_first_examples"></a>First Examples</h4></div></div></div><p>The most common inputs and outputs are collected in the org.qi4j.io.Inputs and org.qi4j.io.Outputs classes as static factory methods, but you can create your (more about that later).</p><p>So, we want to read a text file and write the content into another text file, right? This is how it is done;</p><pre class="programlisting brush: java">File source = new File( "source.txt" ); File destination = new File( "destination.txt" ); Inputs.text( source ).transferTo( Outputs.text( destination ) ); </pre><p>Pretty much self-explanatory, wouldnât you say? But what happened to the handling of exceptions and closing of -resources? It is all handled inside the Qi4j Core I/O API. There is nothing you can forget to do.</p><p>Another simple example, where we want to count the number of lines in the text;</p><pre class="programlisting brush: java">import org.qi4j.io.Transforms.Counter; +resources? It is all handled inside the Zest⢠Core I/O API. There is nothing you can forget to do.</p><p>Another simple example, where we want to count the number of lines in the text;</p><pre class="programlisting brush: java">import org.qi4j.io.Transforms.Counter; import static org.qi4j.io.Transforms.map; [...snip...] @@ -117,7 +117,7 @@ the Output as such. Instead, the Output to which Receiver the content should be sent to.</p><p>Complicated? Perhaps not trivial to get your head around it at first, but the chain is;</p><p>Input passes a Sender to the Output which tells the Sender which Receiver the data should be sent to.</p><p>The reason for this is that we need to separate the concerns properly. Input is a starting point, but it emits something which is represented by the Sender. Likewise the destination is an Output, but it receives the data via its Receiver interface. For O/S resources, they are handled purely inside the Input and Output implementations, where are the -Sender/Receiver are effectively dealing with the data itself.</p></div><div class="section" title="org.qi4j.io.Transforms"><div class="titlepage"><div><div><h4 class="title"><a id="_org_qi4j_io_transforms"></a>org.qi4j.io.Transforms</h4></div></div></div><p>The 3 component in the Qi4j Core I/O API is the transformations that are possible. Interestingly enough, with the +Sender/Receiver are effectively dealing with the data itself.</p></div><div class="section" title="org.qi4j.io.Transforms"><div class="titlepage"><div><div><h4 class="title"><a id="_org_qi4j_io_transforms"></a>org.qi4j.io.Transforms</h4></div></div></div><p>The 3 component in the Zest⢠Core I/O API is the transformations that are possible. Interestingly enough, with the above separation of concerns, we donât need an InputOutput type that can both receive and send data. Instead, we simply need to prepare easy to use static factory methods, which are found in the org.qi4j.io.Transforms class. Again, it is fairly straight forward to create your own Transforms if you need something not provided here.</p><p>The current transformations available are;</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"> @@ -207,7 +207,7 @@ transfer is complete, or in a separate t } </pre><p>It combines the Counter and the Log implementations, so that the count is forwarded to the Log at a given interval, such as every 1000 items. This may not be what you think a ProgressLog should look like, but it serves as a good example on -how you can combine the general principles found in the Qi4j Core API package.</p></div><div class="section" title="How to write a filter specification?"><div class="titlepage"><div><div><h4 class="title"><a id="_how_to_write_a_filter_specification"></a>How to write a filter specification?</h4></div></div></div><p>The filter transform takes a specification implementation which has a very simple method, isSatisfiedBy() (read more +how you can combine the general principles found in the Zest⢠Core API package.</p></div><div class="section" title="How to write a filter specification?"><div class="titlepage"><div><div><h4 class="title"><a id="_how_to_write_a_filter_specification"></a>How to write a filter specification?</h4></div></div></div><p>The filter transform takes a specification implementation which has a very simple method, isSatisfiedBy() (read more about that in <a class="xref" href="core-functional.html" title="Core Functional API">Function</a>.</p><pre class="programlisting brush: java">public interface Specification<T> { [...snip...] Modified: zest/site/content/java/develop/core-runtime.html URL: http://svn.apache.org/viewvc/zest/site/content/java/develop/core-runtime.html?rev=1689843&r1=1689842&r2=1689843&view=diff ============================================================================== --- zest/site/content/java/develop/core-runtime.html (original) +++ zest/site/content/java/develop/core-runtime.html Wed Jul 8 11:08:41 2015 @@ -66,9 +66,9 @@ })(); </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">Qi4j</a></span></dt><dt><span class="section"><a href="intro.html">Introduction</a></span></dt><dt><span class="section"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="core.html">Core</span></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">Glo ssary </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="core.html#_overview_3">Overview</a></span></dt><dt><span class="section"><a href="core-api.html">Core API</a></span></dt><dt><span class="section"><a href="core-bootstrap-assembly.html">Core Bootstrap</a></span></dt><dt><span class="section"><a href="core-testsupport.html">Core Test Support</a></span></dt><dt><span class="section"><a href="core-functional.html">Core Functional API</a></span></dt><dt><span class="section"><a href="core-io.html">Core I/O API</a></span></dt><dt><span class="section"><a href="core-spi.html">Core Extension SPI</a></span></dt><dt><span class="section"><span xmlns="" href="core-runtime.html">Core Runtime</span></span></dt></dl></div></div><div class="section" title="Core Runtime"><div class="titlepage"><div><div><h3 class="title"><a id="core-runtime"></a>Cor e Runtime</h3></div></div></div><p class="remark"><em><span class="comment"></span></em></p><p class="devstatus-code-stable">code</p><p class="devstatus-docs-brief">docs</p><p class="devstatus-tests-good">tests</p><p>First of all, your code should never, ever, have a dependency on Core Runtime. If you think you need this, you should + </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"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="core.html">Core</span></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.htm l">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="core.html#_overview_3">Overview</a></span></dt><dt><span class="section"><a href="core-api.html">Core API</a></span></dt><dt><span class="section"><a href="core-bootstrap-assembly.html">Core Bootstrap</a></span></dt><dt><span class="section"><a href="core-testsupport.html">Core Test Support</a></span></dt><dt><span class="section"><a href="core-functional.html">Core Functional API</a></span></dt><dt><span class="section"><a href="core-io.html">Core I/O API</a></span></dt><dt><span class="section"><a href="core-spi.html">Core Extension SPI</a></span></dt><dt><span class="section"><span xmlns="" href="core-runtime.html">Core Runtime</span></span></dt></dl></div></div><div class="section" title="Core Runtime"><div class="titlepage"><div><div><h3 class="title"><a id="core-runtime">< /a>Core Runtime</h3></div></div></div><p class="remark"><em><span class="comment"></span></em></p><p class="devstatus-code-stable">code</p><p class="devstatus-docs-brief">docs</p><p class="devstatus-tests-good">tests</p><p>First of all, your code should never, ever, have a dependency on Core Runtime. If you think you need this, you should probably contact qi4j-dev forum at Google Groups and see if your usecase can either be solved in a existing way or perhaps -that a new Core SPI Extension is needed.</p><div class="table"><a id="idm78347532528"></a><p class="title"><strong>Table 21. 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.runtime</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><p>Letâs repeat that; <span class="strong"><strong>Never, never, ever depend on Core Runtime</strong></span>. Make sure that the compile dependency does NOT include +that a new Core SPI Extension is needed.</p><div class="table"><a id="idm415577379984"></a><p class="title"><strong>Table 21. 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.runtime</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><p>Letâs repeat that; <span class="strong"><strong>Never, never, ever depend on Core Runtime</strong></span>. Make sure that the compile dependency does NOT include the <code class="literal">org.qi4j.core.runtime</code> jar.</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> Modified: zest/site/content/java/develop/core-spi.html URL: http://svn.apache.org/viewvc/zest/site/content/java/develop/core-spi.html?rev=1689843&r1=1689842&r2=1689843&view=diff ============================================================================== --- zest/site/content/java/develop/core-spi.html (original) +++ zest/site/content/java/develop/core-spi.html Wed Jul 8 11:08:41 2015 @@ -66,9 +66,9 @@ })(); </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">Qi4j</a></span></dt><dt><span class="section"><a href="intro.html">Introduction</a></span></dt><dt><span class="section"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="core.html">Core</span></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">Glo ssary </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="core.html#_overview_3">Overview</a></span></dt><dt><span class="section"><a href="core-api.html">Core API</a></span></dt><dt><span class="section"><a href="core-bootstrap-assembly.html">Core Bootstrap</a></span></dt><dt><span class="section"><a href="core-testsupport.html">Core Test Support</a></span></dt><dt><span class="section"><a href="core-functional.html">Core Functional API</a></span></dt><dt><span class="section"><a href="core-io.html">Core I/O API</a></span></dt><dt><span class="section"><span xmlns="" href="core-spi.html">Core Extension SPI</span></span></dt><dt><span class="section"><a href="core-runtime.html">Core Runtime</a></span></dt></dl></div></div><div class="section" title="Core Extension SPI"><div class="titlepage"><div><div><h3 class="title"><a id="core-spi"></a>C ore Extension SPI</h3></div></div></div><p class="remark"><em><span class="comment"></span></em></p><p class="devstatus-code-stable">code</p><p class="devstatus-docs-brief">docs</p><p class="devstatus-tests-good">tests</p><p>The Qi4j Core Runtime has a number of extension points, which we call the <span class="emphasis"><em>Qi4j Core Extension SPI</em></span>. These are defined + </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"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="core.html">Core</span></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.htm l">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="core.html#_overview_3">Overview</a></span></dt><dt><span class="section"><a href="core-api.html">Core API</a></span></dt><dt><span class="section"><a href="core-bootstrap-assembly.html">Core Bootstrap</a></span></dt><dt><span class="section"><a href="core-testsupport.html">Core Test Support</a></span></dt><dt><span class="section"><a href="core-functional.html">Core Functional API</a></span></dt><dt><span class="section"><a href="core-io.html">Core I/O API</a></span></dt><dt><span class="section"><span xmlns="" href="core-spi.html">Core Extension SPI</span></span></dt><dt><span class="section"><a href="core-runtime.html">Core Runtime</a></span></dt></dl></div></div><div class="section" title="Core Extension SPI"><div class="titlepage"><div><div><h3 class="title"><a id="core-spi" ></a>Core Extension SPI</h3></div></div></div><p class="remark"><em><span >class="comment"></span></em></p><p class="devstatus-code-stable">code</p><p >class="devstatus-docs-brief">docs</p><p >class="devstatus-tests-good">tests</p><p>The Zest⢠Core Runtime has a >number of extension points, which we call the <span class="emphasis"><em>Qi4j >Core Extension SPI</em></span>. These are defined interfaces used <span class="strong"><strong>only</strong></span> by the Core Runtime and <span class="strong"><strong>never</strong></span> directly by application code. <a class="xref" href="extensions.html" title="Extensions">Extensions</a> are assembled in -applications during the bootstrap phase.</p><div class="table"><a id="idm78347588592"></a><p class="title"><strong>Table 20. 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.spi</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><p>There are currently 5 Core SPI extensions;</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"> +applications during the bootstrap phase.</p><div class="table"><a id="idm415577440624"></a><p class="title"><strong>Table 20. 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.spi</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><p>There are currently 5 Core SPI extensions;</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"> <a class="xref" href="core-spi.html#core-spi-valueserialization" title="ValueSerialization SPI">ValueSerialization SPI</a> </li><li class="listitem"> <a class="xref" href="core-spi.html#core-spi-entitystore" title="EntityStore SPI">EntityStore SPI</a> @@ -78,10 +78,10 @@ applications during the bootstrap phase. <a class="xref" href="core-spi.html#core-spi-indexing" title="Indexing/Query SPI">Indexing/Query SPI</a> </li><li class="listitem"> <a class="xref" href="core-spi.html#core-spi-metrics" title="Metrics SPI">Metrics SPI</a> -</li></ul></div><p>Qi4j Runtime Extensions implementations may depend on Qi4j Libraries, but Libraries are NOT ALLOWED to depend on +</li></ul></div><p>Zest⢠Runtime Extensions implementations may depend on Zest⢠Libraries, but Libraries are NOT ALLOWED to depend on Extensions. Applications code is NOT ALLOWED to depend on extensions. And application code SHOULD NOT depend on the Core Extension SPI. If you think that is needed, please contact qi4j-dev forum at Google Groups, to see if your usecase -can be solved in a support manner, or that we need to extend the Core API to support it.</p><div class="section" title="ValueSerialization SPI"><div class="titlepage"><div><div><h4 class="title"><a id="core-spi-valueserialization"></a>ValueSerialization SPI</h4></div></div></div><div class="section" title="Overview"><div class="titlepage"><div><div><h5 class="title"><a id="_overview_4"></a>Overview</h5></div></div></div><p>The Qi4j Core Runtime use ValueSerialization to provide string representation of ValueComposites via their <code class="literal">toString()</code> +can be solved in a support manner, or that we need to extend the Core API to support it.</p><div class="section" title="ValueSerialization SPI"><div class="titlepage"><div><div><h4 class="title"><a id="core-spi-valueserialization"></a>ValueSerialization SPI</h4></div></div></div><div class="section" title="Overview"><div class="titlepage"><div><div><h5 class="title"><a id="_overview_4"></a>Overview</h5></div></div></div><p>The Zest⢠Core Runtime use ValueSerialization to provide string representation of ValueComposites via their <code class="literal">toString()</code> method, and, their instanciation from the very same representation via the <code class="literal">newValueFromSerializedState(..)</code> method of the ValueBuilderFactory API.</p><p>If no ValueSerialization service is visible, a default implementation supporting the JSON format used but note that it wonât be available as a Service. So, in order to use the full ValueSerialization API a ValueSerialization service must @@ -116,7 +116,7 @@ Float or float, </li><li class="listitem"> Double or double. </li></ul></div><p>Serialization is always done in a streaming manner using a pull-parsing based approach.</p><p>Deserialization is done in a streaming manner using a pull-parsing based approach except when encountering a -ValueComposite. ValueComposite types are deserialized using a tree-parsing based approach.</p><p>All this means that you can serialize and deserialize large collections of values without filling the heap.</p></div></div><div class="section" title="EntityStore SPI"><div class="titlepage"><div><div><h4 class="title"><a id="core-spi-entitystore"></a>EntityStore SPI</h4></div></div></div><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This SPI has no documentation yet. Learn how to contribute in <a class="xref" href="community-docs.html" title="Writing Qi4j Documentation">Writing Documentation</a>.</p></div></div><div class="section" title="Cache SPI"><div class="titlepage"><div><div><h4 class="title"><a id="core-spi-cache"></a>Cache SPI</h4></div></div></div><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This SPI has no documentation yet. Learn how to contribute in <a class="xref" href="community-docs.html" title="Writing Qi4j Documentation">Writing Documentation</a>.</p></div></div><div class="section" title="Indexing/Query SPI"><div class="titlepage"><div><div><h4 class="title"><a id="core-spi-indexing"></a>Indexing/Query SPI</h4></div></div></div><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This SPI has no documentation yet. Learn how to contribute in <a class="xref" href="community-docs.html" title="Writing Qi4j Documentation">Writing Documentation</a>.</p></div></div><div class="section" title="Metrics SPI"><div class="titlepage"><div><div><h4 class="title"><a id="core-spi-metrics"></a>Metrics SPI</h4></div></div></div><p>It is very easy to create an extension for the Metrics SPI, simply by implementing the MetricsProvider. If only a +ValueComposite. ValueComposite types are deserialized using a tree-parsing based approach.</p><p>All this means that you can serialize and deserialize large collections of values without filling the heap.</p></div></div><div class="section" title="EntityStore SPI"><div class="titlepage"><div><div><h4 class="title"><a id="core-spi-entitystore"></a>EntityStore SPI</h4></div></div></div><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This SPI has no documentation yet. Learn how to contribute in <a class="xref" href="community-docs.html" title="Writing Zest⢠Documentation">Writing Documentation</a>.</p></div></div><div class="section" title="Cache SPI"><div class="titlepage"><div><div><h4 class="title"><a id="core-spi-cache"></a>Cache SPI</h4></div></div></div><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This SPI has no documentation yet. Learn how to contr ibute in <a class="xref" href="community-docs.html" title="Writing Zest⢠Documentation">Writing Documentation</a>.</p></div></div><div class="section" title="Indexing/Query SPI"><div class="titlepage"><div><div><h4 class="title"><a id="core-spi-indexing"></a>Indexing/Query SPI</h4></div></div></div><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This SPI has no documentation yet. Learn how to contribute in <a class="xref" href="community-docs.html" title="Writing Zest⢠Documentation">Writing Documentation</a>.</p></div></div><div class="section" title="Metrics SPI"><div class="titlepage"><div><div><h4 class="title"><a id="core-spi-metrics"></a>Metrics SPI</h4></div></div></div><p>It is very easy to create an extension for the Metrics SPI, simply by implementing the MetricsProvider. If only a subset of the factories/types are supported, there is a convenience adapter call MetricsProviderAdapter in the Metrics SPI package.</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>. Modified: zest/site/content/java/develop/core-testsupport.html URL: http://svn.apache.org/viewvc/zest/site/content/java/develop/core-testsupport.html?rev=1689843&r1=1689842&r2=1689843&view=diff ============================================================================== --- zest/site/content/java/develop/core-testsupport.html (original) +++ zest/site/content/java/develop/core-testsupport.html Wed Jul 8 11:08:41 2015 @@ -66,15 +66,15 @@ })(); </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">Qi4j</a></span></dt><dt><span class="section"><a href="intro.html">Introduction</a></span></dt><dt><span class="section"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="core.html">Core</span></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">Glo ssary </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="core.html#_overview_3">Overview</a></span></dt><dt><span class="section"><a href="core-api.html">Core API</a></span></dt><dt><span class="section"><a href="core-bootstrap-assembly.html">Core Bootstrap</a></span></dt><dt><span class="section"><span xmlns="" href="core-testsupport.html">Core Test Support</span></span></dt><dt><span class="section"><a href="core-functional.html">Core Functional API</a></span></dt><dt><span class="section"><a href="core-io.html">Core I/O API</a></span></dt><dt><span class="section"><a href="core-spi.html">Core Extension SPI</a></span></dt><dt><span class="section"><a href="core-runtime.html">Core Runtime</a></span></dt></dl></div></div><div class="section" title="Core Test Support"><div class="titlepage"><div><div><h3 class="title"><a id="core-testsupport "></a>Core Test Support</h3></div></div></div><p class="remark"><em><span class="comment"></span></em></p><p class="devstatus-code-stable">code</p><p class="devstatus-docs-brief">docs</p><p class="devstatus-tests-none">tests</p><p>Qi4j comes with classes to help with testing. For general development, only a couple of classes are of interest as the + </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"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="core.html">Core</span></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.htm l">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="core.html#_overview_3">Overview</a></span></dt><dt><span class="section"><a href="core-api.html">Core API</a></span></dt><dt><span class="section"><a href="core-bootstrap-assembly.html">Core Bootstrap</a></span></dt><dt><span class="section"><span xmlns="" href="core-testsupport.html">Core Test Support</span></span></dt><dt><span class="section"><a href="core-functional.html">Core Functional API</a></span></dt><dt><span class="section"><a href="core-io.html">Core I/O API</a></span></dt><dt><span class="section"><a href="core-spi.html">Core Extension SPI</a></span></dt><dt><span class="section"><a href="core-runtime.html">Core Runtime</a></span></dt></dl></div></div><div class="section" title="Core Test Support"><div class="titlepage"><div><div><h3 class="title"><a id="core-tests upport"></a>Core Test Support</h3></div></div></div><p class="remark"><em><span class="comment"></span></em></p><p class="devstatus-code-stable">code</p><p class="devstatus-docs-brief">docs</p><p class="devstatus-tests-none">tests</p><p>Zest⢠comes with classes to help with testing. For general development, only a couple of classes are of interest as the others are mostly for EntityStore and Index/Query SPI implementations. There is also some mocking support, to allow -some of Qi4jâs unique aspects to be mocked, but since Qi4j is so flexible at a fine-granular level, we have found that -mocking is seldom, if ever, needed.</p><div class="table"><a id="idm78347742480"></a><p class="title"><strong>Table 17. 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.testsupport</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><div class="section" title="Your First Testcase"><div class="titlepage"><div><div><h4 class="title"><a id="_your_first_testcase"></a>Your First Testcase</h4></div></div></div><p>In most cases, you will probably use the AbstractQi4jTest class to simplify starting a Qi4j test instance.</p><pre class="programlist ing brush: java">public class HelloTest extends AbstractQi4jTest +some of Zestâs unique aspects to be mocked, but since Zest⢠is so flexible at a fine-granular level, we have found that +mocking is seldom, if ever, needed.</p><div class="table"><a id="idm415577585936"></a><p class="title"><strong>Table 17. 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.testsupport</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><div class="section" title="Your First Testcase"><div class="titlepage"><div><div><h4 class="title"><a id="_your_first_testcase"></a>Your First Testcase</h4></div></div></div><p>In most cases, you will probably use the AbstractQi4jTest class to simplify starting a Zest⢠test instance.</p><pre class="prog ramlisting brush: java">public class HelloTest extends AbstractQi4jTest { [...snip...] } -</pre><p>This will do all the initialization of a Qi4j runtime instance and create a single layer with a single module in it. +</pre><p>This will do all the initialization of a Zest⢠runtime instance and create a single layer with a single module in it. What goes into that module is declared in the assembly() method;</p><pre class="programlisting brush: java">@Override public void assemble( ModuleAssembly module ) throws AssemblyException Modified: zest/site/content/java/develop/core.html URL: http://svn.apache.org/viewvc/zest/site/content/java/develop/core.html?rev=1689843&r1=1689842&r2=1689843&view=diff ============================================================================== --- zest/site/content/java/develop/core.html (original) +++ zest/site/content/java/develop/core.html Wed Jul 8 11:08:41 2015 @@ -66,21 +66,21 @@ })(); </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">Qi4j</a></span></dt><dt><span class="section"><a href="intro.html">Introduction</a></span></dt><dt><span class="section"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="core.html">Core</span></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">Glo ssary </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"><span xmlns="" href="core.html#_overview_3">Overview</span></span></dt><dt><span class="section"><a href="core-api.html">Core API</a></span></dt><dt><span class="section"><a href="core-bootstrap-assembly.html">Core Bootstrap</a></span></dt><dt><span class="section"><a href="core-testsupport.html">Core Test Support</a></span></dt><dt><span class="section"><a href="core-functional.html">Core Functional API</a></span></dt><dt><span class="section"><a href="core-io.html">Core I/O API</a></span></dt><dt><span class="section"><a href="core-spi.html">Core Extension SPI</a></span></dt><dt><span class="section"><a href="core-runtime.html">Core Runtime</a></span></dt></dl></div></div><div class="section" title="Core"><div class="titlepage"><div><div><h2 class="title"><a id="core"></a>Core</h2></div></di v></div><div class="section" title="Overview"><div class="titlepage"><div><div><h3 class="title"><a id="_overview_3"></a>Overview</h3></div></div></div><p>The Qi4j Core is composed of several artifacts described in this section.</p><p>The following figure show the Core artifacts alongside <a class="link" href="libraries.html" title="Libraries">libraries</a> and <a class="link" href="extensions.html" title="Extensions">extensions</a>, and, in green, + </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"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="core.html">Core</span></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.htm l">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"><span xmlns="" href="core.html#_overview_3">Overview</span></span></dt><dt><span class="section"><a href="core-api.html">Core API</a></span></dt><dt><span class="section"><a href="core-bootstrap-assembly.html">Core Bootstrap</a></span></dt><dt><span class="section"><a href="core-testsupport.html">Core Test Support</a></span></dt><dt><span class="section"><a href="core-functional.html">Core Functional API</a></span></dt><dt><span class="section"><a href="core-io.html">Core I/O API</a></span></dt><dt><span class="section"><a href="core-spi.html">Core Extension SPI</a></span></dt><dt><span class="section"><a href="core-runtime.html">Core Runtime</a></span></dt></dl></div></div><div class="section" title="Core"><div class="titlepage"><div><div><h2 class="title"><a id="core"></a>Core</h2></di v></div></div><div class="section" title="Overview"><div class="titlepage"><div><div><h3 class="title"><a id="_overview_3"></a>Overview</h3></div></div></div><p>The Zest⢠Core is composed of several artifacts described in this section.</p><p>The following figure show the Core artifacts alongside <a class="link" href="libraries.html" title="Libraries">libraries</a> and <a class="link" href="extensions.html" title="Extensions">extensions</a>, and, in green, typical applications artifacts. This is not a full code dependency graph but should give you a good overview of how the -pieces fit together. Find out more about each of the Qi4j Core artifacts below.</p><div class="figure"><a id="idm78348255840"></a><p class="title"><strong>Figure 1. Qi4j Core Overview</strong></p><div class="figure-contents"><a class="ulink" href="images/core-overview.png" target="_top"> +pieces fit together. Find out more about each of the Zest⢠Core artifacts below.</p><div class="figure"><a id="idm415578151280"></a><p class="title"><strong>Figure 1. Zest⢠Core Overview</strong></p><div class="figure-contents"><a class="ulink" href="images/core-overview.png" target="_top"> <span class="inlinemediaobject"><img src="images/core-overview.png" alt="core-overview.png" /></span> -</a></div></div><br class="figure-break" /><div class="section" title="Core API"><div class="titlepage"><div><div><h4 class="title"><a id="_core_api"></a>Core API</h4></div></div></div><p>The Qi4j Core API is the primary interface for client application code during the main execution phase, i.e. after the -application has been activated.</p><p><a class="link" href="core-api.html" title="Core API">Learn more</a></p></div><div class="section" title="Core Bootstrap"><div class="titlepage"><div><div><h4 class="title"><a id="_core_bootstrap"></a>Core Bootstrap</h4></div></div></div><p>Qi4j has a distinct bootstrap phase, also known as the <span class="emphasis"><em>Assembly</em></span> of an application, where the applications structure +</a></div></div><br class="figure-break" /><div class="section" title="Core API"><div class="titlepage"><div><div><h4 class="title"><a id="_core_api"></a>Core API</h4></div></div></div><p>The Zest⢠Core API is the primary interface for client application code during the main execution phase, i.e. after the +application has been activated.</p><p><a class="link" href="core-api.html" title="Core API">Learn more</a></p></div><div class="section" title="Core Bootstrap"><div class="titlepage"><div><div><h4 class="title"><a id="_core_bootstrap"></a>Core Bootstrap</h4></div></div></div><p>Zest⢠has a distinct bootstrap phase, also known as the <span class="emphasis"><em>Assembly</em></span> of an application, where the applications structure is defined programmatically. Once all the layers, modules and all the composite types in each module have been defined -the model is instantiated into an application. This enables the entire <span class="emphasis"><em>structure</em></span> system in Qi4j, where types "belongs" -to a module and visibility rules define default behaviors, enforcement of architectural integrity and much more.</p><p><a class="link" href="core-bootstrap-assembly.html" title="Core Bootstrap">Learn more</a></p></div><div class="section" title="Core Test Support"><div class="titlepage"><div><div><h4 class="title"><a id="_core_test_support"></a>Core Test Support</h4></div></div></div><p>Qi4j comes with classes to help with testing. There is also some mocking support, to allow some of Qi4jâs unique -aspects to be mocked, but since Qi4j is so flexible at a fine-granular level, we have found that mocking is seldom, -if ever, needed.</p><p><a class="link" href="core-testsupport.html" title="Core Test Support">Learn more</a></p></div><div class="section" title="Core Functional API"><div class="titlepage"><div><div><h4 class="title"><a id="_core_functional_api"></a>Core Functional API</h4></div></div></div><p>The Qi4j Core Functional API is a generic package to work with Iterables in a "functional programming language" style.</p><p>This package is completely independent of everything else in Qi4j and may be used on its own in any kind of environment -such as Spring or Java EE applications.</p><p><a class="link" href="core-functional.html" title="Core Functional API">Learn more</a></p></div><div class="section" title="Core I/O API"><div class="titlepage"><div><div><h4 class="title"><a id="_core_i_o_api"></a>Core I/O API</h4></div></div></div><p>The Qi4j Core I/O API tries to address the problem around shuffling data around from various I/O inputs and outputs, -possibly with transformations and filtering along the way.</p><p><a class="link" href="core-io.html" title="Core I/O API">Learn more</a></p></div><div class="section" title="Core Extension SPI"><div class="titlepage"><div><div><h4 class="title"><a id="_core_extension_spi"></a>Core Extension SPI</h4></div></div></div><p>The Qi4j Core Runtime has a number of extension points, which we call the <span class="emphasis"><em>Qi4j Core Extension SPI</em></span>. These are defined +the model is instantiated into an application. This enables the entire <span class="emphasis"><em>structure</em></span> system in Zest, where types "belongs" +to a module and visibility rules define default behaviors, enforcement of architectural integrity and much more.</p><p><a class="link" href="core-bootstrap-assembly.html" title="Core Bootstrap">Learn more</a></p></div><div class="section" title="Core Test Support"><div class="titlepage"><div><div><h4 class="title"><a id="_core_test_support"></a>Core Test Support</h4></div></div></div><p>Zest⢠comes with classes to help with testing. There is also some mocking support, to allow some of Zestâs unique +aspects to be mocked, but since Zest⢠is so flexible at a fine-granular level, we have found that mocking is seldom, +if ever, needed.</p><p><a class="link" href="core-testsupport.html" title="Core Test Support">Learn more</a></p></div><div class="section" title="Core Functional API"><div class="titlepage"><div><div><h4 class="title"><a id="_core_functional_api"></a>Core Functional API</h4></div></div></div><p>The Zest⢠Core Functional API is a generic package to work with Iterables in a "functional programming language" style.</p><p>This package is completely independent of everything else in Zest⢠and may be used on its own in any kind of environment +such as Spring or Java EE applications.</p><p><a class="link" href="core-functional.html" title="Core Functional API">Learn more</a></p></div><div class="section" title="Core I/O API"><div class="titlepage"><div><div><h4 class="title"><a id="_core_i_o_api"></a>Core I/O API</h4></div></div></div><p>The Zest⢠Core I/O API tries to address the problem around shuffling data around from various I/O inputs and outputs, +possibly with transformations and filtering along the way.</p><p><a class="link" href="core-io.html" title="Core I/O API">Learn more</a></p></div><div class="section" title="Core Extension SPI"><div class="titlepage"><div><div><h4 class="title"><a id="_core_extension_spi"></a>Core Extension SPI</h4></div></div></div><p>The Zest⢠Core Runtime has a number of extension points, which we call the <span class="emphasis"><em>Qi4j Core Extension SPI</em></span>. These are defined interfaces used <span class="strong"><strong>only</strong></span> by the Core Runtime and <span class="strong"><strong>never</strong></span> directly by application code. <a class="xref" href="extensions.html" title="Extensions">Extensions</a> are assembled in -applications during the bootstrap phase.</p><p><a class="link" href="core-spi.html" title="Core Extension SPI">Learn more</a></p></div><div class="section" title="Core Runtime"><div class="titlepage"><div><div><h4 class="title"><a id="_core_runtime"></a>Core Runtime</h4></div></div></div><p>Your code should <span class="strong"><strong>never</strong></span>, <span class="strong"><strong>ever</strong></span>, have a dependency on Qi4j Core Runtime. If you think you need this, you should +applications during the bootstrap phase.</p><p><a class="link" href="core-spi.html" title="Core Extension SPI">Learn more</a></p></div><div class="section" title="Core Runtime"><div class="titlepage"><div><div><h4 class="title"><a id="_core_runtime"></a>Core Runtime</h4></div></div></div><p>Your code should <span class="strong"><strong>never</strong></span>, <span class="strong"><strong>ever</strong></span>, have a dependency on Zest⢠Core Runtime. If you think you need this, you should probably contact qi4j-dev forum at Google Groups and see if your usecase can either be solved in a existing way or perhaps that a new Core Extension SPI is needed.</p><p><a class="link" href="core-runtime.html" title="Core Runtime">Learn more</a></p></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>. Modified: zest/site/content/java/develop/extension-cache-ehcache.html URL: http://svn.apache.org/viewvc/zest/site/content/java/develop/extension-cache-ehcache.html?rev=1689843&r1=1689842&r2=1689843&view=diff ============================================================================== --- zest/site/content/java/develop/extension-cache-ehcache.html (original) +++ zest/site/content/java/develop/extension-cache-ehcache.html Wed Jul 8 11:08:41 2015 @@ -66,7 +66,7 @@ })(); </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">Qi4j</a></span></dt><dt><span class="section"><a href="intro.html">Introduction</a></span></dt><dt><span class="section"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="extensions.html">Extensions</span></span></dt><dt><span class="section"><a href="tools.html">Tools</a></span></dt><dt><span class="section"><a href="glossary.html">Glo ssary </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="extensions.html#_overview_7">Overview</a></span></dt><dt><span class="section"><a href="extension-vs-orgjson.html">org.json ValueSerialization</a></span></dt><dt><span class="section"><a href="extension-vs-jackson.html">Jackson ValueSerialization</a></span></dt><dt><span class="section"><a href="extension-vs-stax.html">StAX ValueSerialization</a></span></dt><dt><span class="section"><span xmlns="" href="extension-cache-ehcache.html">Ehcache Cache</span></span></dt><dt><span class="section"><a href="extension-cache-memcache.html">Memcache Cache</a></span></dt><dt><span class="section"><a href="extension-es-memory.html">Memory EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-file.html">File EntityStore</a></span></dt><dt><span class="section"><a href="extension -es-hazelcast.html">Hazelcast EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-jclouds.html">JClouds EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-jdbm.html">JDBM EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-leveldb.html">LevelDB EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-mongodb.html">MongoDB EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-preferences.html">Preferences EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-redis.html">Redis EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-riak.html">Riak EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-sql.html">SQL EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-voldemort.html">Voldemort EntityStore</a></span></dt><dt><span class="section"><a href="extension-index-elasticsearch.html">ElasticS earch Index/Query</a></span></dt><dt><span class="section"><a href="extension-index-rdf.html">OpenRDF Index/Query</a></span></dt><dt><span class="section"><a href="extension-index-solr.html">Apache Solr Index/Query</a></span></dt><dt><span class="section"><a href="extension-indexing-sql.html">SQL Index/Query</a></span></dt><dt><span class="section"><a href="extension-metrics-yammer.html">Yammer Metrics</a></span></dt><dt><span class="section"><a href="extension-migration.html">Migration</a></span></dt><dt><span class="section"><a href="extension-reindexer.html">Reindexer</a></span></dt></dl></div></div><div class="section" title="Ehcache Cache"><div class="titlepage"><div><div><h3 class="title"><a id="extension-cache-ehcache"></a>Ehcache Cache</h3></div></div></div><p class="remark"><em><span class="comment"></span></em></p><p class="devstatus-code-beta">code</p><p class="devstatus-docs-brief">docs</p><p class="devstatus-tests-some">tests</p><p>EntityStore cache backed by <a class=" ulink" href="http://ehcache.org/" target="_top">EhCache</a>.</p><div class="table"><a id="idm78346426032"></a><p class="title"><strong>Table 57. 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.extension</p></td><td align="left" valign="top"><p>org.qi4j.extension.cache-ehcache</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><p>Not all EntityStore implementations use the Cache extension, so check the implementation details of the + </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"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="extensions.html">Extensions</span></span></dt><dt><span class="section"><a href="tools.html">Tools</a></span></dt><dt><span class="section"><a href="glossary.htm l">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="extensions.html#_overview_7">Overview</a></span></dt><dt><span class="section"><a href="extension-vs-orgjson.html">org.json ValueSerialization</a></span></dt><dt><span class="section"><a href="extension-vs-jackson.html">Jackson ValueSerialization</a></span></dt><dt><span class="section"><a href="extension-vs-stax.html">StAX ValueSerialization</a></span></dt><dt><span class="section"><span xmlns="" href="extension-cache-ehcache.html">Ehcache Cache</span></span></dt><dt><span class="section"><a href="extension-cache-memcache.html">Memcache Cache</a></span></dt><dt><span class="section"><a href="extension-es-memory.html">Memory EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-file.html">File EntityStore</a></span></dt><dt><span class="section"><a href="ext ension-es-hazelcast.html">Hazelcast EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-jclouds.html">JClouds EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-jdbm.html">JDBM EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-leveldb.html">LevelDB EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-mongodb.html">MongoDB EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-preferences.html">Preferences EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-redis.html">Redis EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-riak.html">Riak EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-sql.html">SQL EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-voldemort.html">Voldemort EntityStore</a></span></dt><dt><span class="section"><a href="extension-index-elasticsearch.html">El asticSearch Index/Query</a></span></dt><dt><span class="section"><a href="extension-index-rdf.html">OpenRDF Index/Query</a></span></dt><dt><span class="section"><a href="extension-index-solr.html">Apache Solr Index/Query</a></span></dt><dt><span class="section"><a href="extension-indexing-sql.html">SQL Index/Query</a></span></dt><dt><span class="section"><a href="extension-metrics-yammer.html">Yammer Metrics</a></span></dt><dt><span class="section"><a href="extension-migration.html">Migration</a></span></dt><dt><span class="section"><a href="extension-reindexer.html">Reindexer</a></span></dt></dl></div></div><div class="section" title="Ehcache Cache"><div class="titlepage"><div><div><h3 class="title"><a id="extension-cache-ehcache"></a>Ehcache Cache</h3></div></div></div><p class="remark"><em><span class="comment"></span></em></p><p class="devstatus-code-beta">code</p><p class="devstatus-docs-brief">docs</p><p class="devstatus-tests-some">tests</p><p>EntityStore cache backed by <a c lass="ulink" href="http://ehcache.org/" target="_top">EhCache</a>.</p><div class="table"><a id="idm415586899600"></a><p class="title"><strong>Table 57. 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.extension</p></td><td align="left" valign="top"><p>org.qi4j.extension.cache-ehcache</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><p>Not all EntityStore implementations use the Cache extension, so check the implementation details of the EntityStore whether the cache extension can bring any benefits or not.</p><div class="section" title="Assembly"><div class="titlepage"><div><div><h4 class="title"><a id="_assembly_8"></a>Assembly</h4></div></div></div><p>Assembly is done using the provided Assembler:</p><pre class="programlisting brush: java">public void assemble( ModuleAssembly module ) throws AssemblyException { Modified: zest/site/content/java/develop/extension-cache-memcache.html URL: http://svn.apache.org/viewvc/zest/site/content/java/develop/extension-cache-memcache.html?rev=1689843&r1=1689842&r2=1689843&view=diff ============================================================================== --- zest/site/content/java/develop/extension-cache-memcache.html (original) +++ zest/site/content/java/develop/extension-cache-memcache.html Wed Jul 8 11:08:41 2015 @@ -66,9 +66,9 @@ })(); </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">Qi4j</a></span></dt><dt><span class="section"><a href="intro.html">Introduction</a></span></dt><dt><span class="section"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="extensions.html">Extensions</span></span></dt><dt><span class="section"><a href="tools.html">Tools</a></span></dt><dt><span class="section"><a href="glossary.html">Glo ssary </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="extensions.html#_overview_7">Overview</a></span></dt><dt><span class="section"><a href="extension-vs-orgjson.html">org.json ValueSerialization</a></span></dt><dt><span class="section"><a href="extension-vs-jackson.html">Jackson ValueSerialization</a></span></dt><dt><span class="section"><a href="extension-vs-stax.html">StAX ValueSerialization</a></span></dt><dt><span class="section"><a href="extension-cache-ehcache.html">Ehcache Cache</a></span></dt><dt><span class="section"><span xmlns="" href="extension-cache-memcache.html">Memcache Cache</span></span></dt><dt><span class="section"><a href="extension-es-memory.html">Memory EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-file.html">File EntityStore</a></span></dt><dt><span class="section"><a href="extension -es-hazelcast.html">Hazelcast EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-jclouds.html">JClouds EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-jdbm.html">JDBM EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-leveldb.html">LevelDB EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-mongodb.html">MongoDB EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-preferences.html">Preferences EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-redis.html">Redis EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-riak.html">Riak EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-sql.html">SQL EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-voldemort.html">Voldemort EntityStore</a></span></dt><dt><span class="section"><a href="extension-index-elasticsearch.html">ElasticS earch Index/Query</a></span></dt><dt><span class="section"><a href="extension-index-rdf.html">OpenRDF Index/Query</a></span></dt><dt><span class="section"><a href="extension-index-solr.html">Apache Solr Index/Query</a></span></dt><dt><span class="section"><a href="extension-indexing-sql.html">SQL Index/Query</a></span></dt><dt><span class="section"><a href="extension-metrics-yammer.html">Yammer Metrics</a></span></dt><dt><span class="section"><a href="extension-migration.html">Migration</a></span></dt><dt><span class="section"><a href="extension-reindexer.html">Reindexer</a></span></dt></dl></div></div><div class="section" title="Memcache Cache"><div class="titlepage"><div><div><h3 class="title"><a id="extension-cache-memcache"></a>Memcache Cache</h3></div></div></div><p class="remark"><em><span class="comment"></span></em></p><p class="devstatus-code-beta">code</p><p class="devstatus-docs-brief">docs</p><p class="devstatus-tests-some">tests</p><p>EntityStore cache backed by a Memca che server like <a class="ulink" href="http://memcached.org/" target="_top">Memcached</a>.</p><p>Memcached is an in-memory key-value store for small chunks of arbitrary data. + </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"><a href="tutorials.html">Tutorials</a></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"><span xmlns="" href="extensions.html">Extensions</span></span></dt><dt><span class="section"><a href="tools.html">Tools</a></span></dt><dt><span class="section"><a href="glossary.htm l">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="extensions.html#_overview_7">Overview</a></span></dt><dt><span class="section"><a href="extension-vs-orgjson.html">org.json ValueSerialization</a></span></dt><dt><span class="section"><a href="extension-vs-jackson.html">Jackson ValueSerialization</a></span></dt><dt><span class="section"><a href="extension-vs-stax.html">StAX ValueSerialization</a></span></dt><dt><span class="section"><a href="extension-cache-ehcache.html">Ehcache Cache</a></span></dt><dt><span class="section"><span xmlns="" href="extension-cache-memcache.html">Memcache Cache</span></span></dt><dt><span class="section"><a href="extension-es-memory.html">Memory EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-file.html">File EntityStore</a></span></dt><dt><span class="section"><a href="ext ension-es-hazelcast.html">Hazelcast EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-jclouds.html">JClouds EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-jdbm.html">JDBM EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-leveldb.html">LevelDB EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-mongodb.html">MongoDB EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-preferences.html">Preferences EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-redis.html">Redis EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-riak.html">Riak EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-sql.html">SQL EntityStore</a></span></dt><dt><span class="section"><a href="extension-es-voldemort.html">Voldemort EntityStore</a></span></dt><dt><span class="section"><a href="extension-index-elasticsearch.html">El asticSearch Index/Query</a></span></dt><dt><span class="section"><a href="extension-index-rdf.html">OpenRDF Index/Query</a></span></dt><dt><span class="section"><a href="extension-index-solr.html">Apache Solr Index/Query</a></span></dt><dt><span class="section"><a href="extension-indexing-sql.html">SQL Index/Query</a></span></dt><dt><span class="section"><a href="extension-metrics-yammer.html">Yammer Metrics</a></span></dt><dt><span class="section"><a href="extension-migration.html">Migration</a></span></dt><dt><span class="section"><a href="extension-reindexer.html">Reindexer</a></span></dt></dl></div></div><div class="section" title="Memcache Cache"><div class="titlepage"><div><div><h3 class="title"><a id="extension-cache-memcache"></a>Memcache Cache</h3></div></div></div><p class="remark"><em><span class="comment"></span></em></p><p class="devstatus-code-beta">code</p><p class="devstatus-docs-brief">docs</p><p class="devstatus-tests-some">tests</p><p>EntityStore cache backed by a Memcache server like <a class="ulink" href="http://memcached.org/" target="_top">Memcached</a>.</p><p>Memcached is an in-memory key-value store for small chunks of arbitrary data. By default, entities serialized state must not exceed 1MB.</p><p>Other implementations such as <a class="ulink" href="https://www.memcachier.com/" target="_top">MemCachier</a> have different peculiarities, -see their documentation.</p><div class="table"><a id="idm78346401408"></a><p class="title"><strong>Table 58. 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.extension</p></td><td align="left" valign="top"><p>org.qi4j.extension.cache-memcache</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><p>Not all EntityStore implementations use the Cache extension, so check the implementation details of the +see their documentation.</p><div class="table"><a id="idm415586874976"></a><p class="title"><strong>Table 58. 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.extension</p></td><td align="left" valign="top"><p>org.qi4j.extension.cache-memcache</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><p>Not all EntityStore implementations use the Cache extension, so check the implementation details of the EntityStore whether the cache extension can bring any benefits or not.</p><div class="section" title="Assembly"><div class="titlepage"><div><div><h4 class="title"><a id="_assembly_9"></a>Assembly</h4></div></div></div><p>Assembly is done using the <code class="literal">MemcacheAssembler</code>:</p><pre class="programlisting brush: java">public void assemble( ModuleAssembly module ) throws AssemblyException {
