openwebbeans-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r897044 - in /websites/staging/openwebbeans/trunk/content: ./ testing_arquillian.html testing_general.html testing_test-control.html
Date Sun, 09 Feb 2014 19:18:58 GMT
Author: buildbot
Date: Sun Feb  9 19:18:57 2014
New Revision: 897044

Log:
Staging update by buildbot for openwebbeans

Added:
    websites/staging/openwebbeans/trunk/content/testing_arquillian.html
    websites/staging/openwebbeans/trunk/content/testing_general.html
    websites/staging/openwebbeans/trunk/content/testing_test-control.html
Modified:
    websites/staging/openwebbeans/trunk/content/   (props changed)

Propchange: websites/staging/openwebbeans/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Sun Feb  9 19:18:57 2014
@@ -1 +1 @@
-1564706
+1566360

Added: websites/staging/openwebbeans/trunk/content/testing_arquillian.html
==============================================================================
--- websites/staging/openwebbeans/trunk/content/testing_arquillian.html (added)
+++ websites/staging/openwebbeans/trunk/content/testing_arquillian.html Sun Feb  9 19:18:57 2014
@@ -0,0 +1,318 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <meta charset="utf-8">
+    <title>Apache OpenWebBeans</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <!-- Le styles -->
+    <link href="./resources/css/bootstrap.css" rel="stylesheet">
+    <style type="text/css">
+        body {
+            padding-top: 60px;
+            padding-bottom: 40px;
+        }
+    </style>
+    <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap-responsive.css" rel="stylesheet">
+    <link href="./resources/css/main.css" rel="stylesheet">
+
+</head>
+
+<body>
+
+<div class="navbar navbar-fixed-top">
+    <div class="navbar-inner">
+        <div class="container">
+            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </a>
+            <a class="brand" href="index.html"><img src="./resources/images/logo_dbg-small.png" height="25px"
+                                                    alt="owb_logo_small"/></a>
+
+            <div class="nav-collapse">
+                <ul class="nav">
+                    <li class="active"><a href="./index.html">Home</a></li>
+                    <li><a href="./documentation.html">Documentation</a></li>
+                    <li><a href="./source.html">Source</a></li>
+                    <li><a href="./download.html">Download</a></li>
+                    <li><a href="./community.html">Community</a></li>
+                    <!-- <li><a href="./news.html">News</a></li> -->
+                    <li class="dropdown">
+                        <a class="dropdown-toggle"
+                           data-toggle="dropdown"
+                           href="#">
+                            Misc
+                            <b class="caret"></b>
+                        </a>
+                        <ul class="dropdown-menu">
+                            <li><a href="http://www.apache.org">Apache Home</a></li>
+                            <li><a href="./misc/contact.html">Contact</a></li>
+                            <li><a href="./misc/legal.html">Legal</a></li>
+                            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+                            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+                            <!-- <li class="divider"/> -->
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+            <!--/.nav-collapse -->
+            <form id="search-form" action="http://www.google.com/search" method="get" class="navbar-search pull-right">
+                <input value="openwebbeans.apache.org" name="sitesearch" type="hidden"/>
+                <input class="search-query" name="q" id="query" type="text"/>
+            </form>
+            <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+        </div>
+    </div>
+</div>
+
+<div class="container">
+
+
+        <div id="OwbContent_" class="wiki-content">
+<h1 id="testing-your-application-with-apache-deltaspike-cdictrl">Testing your application with Apache DeltaSpike CdiCtrl</h1>
+<h2 id="about-cdictrl">About CdiCtrl</h2>
+<p><code>CdiCtrl</code> is <em>not</em> part of Apache OpenWebBeans but a module of 
+<a href="http://deltaspike.apache.org">Apache DeltaSpike</a>. </p>
+<p>The <code>CdiCtrl</code> interface abstracts away all the logic to boot a CDI Container
+and controls the lifecycle of it's Contexts (Request Context, Session Context, etc).</p>
+<p>The actual CDI Container is determined by using the <code>java.util.ServiceLoader</code>.
+There are a few different implementations available. Besides Apache OpenWebBeans
+there are also plugins for JBoss Weld and <a href="http://tomee.apache.org">Apache TomEE</a>. </p>
+<h2 id="adding-openwebbeans-cdictrl-to-your-project">Adding OpenWebBeans CdiCtrl to your project</h2>
+<p>The following are the dependencies you need in your Apache Maven pom.xml file in addition to
+OWB itself:</p>
+<div class="codehilite"><pre><span class="nt">&lt;dependency&gt;</span>
+    <span class="nt">&lt;groupId&gt;</span>org.apache.deltaspike.cdictrl<span class="nt">&lt;/groupId&gt;</span>
+    <span class="nt">&lt;artifactId&gt;</span>deltaspike-cdictrl-api<span class="nt">&lt;/artifactId&gt;</span>
+    <span class="nt">&lt;version&gt;</span><span class="cp">${</span><span class="n">deltaspike</span><span class="o">.</span><span class="n">version</span><span class="cp">}</span><span class="nt">&lt;/version&gt;</span>
+    <span class="nt">&lt;scope&gt;</span>test<span class="nt">&lt;/scope&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span>
+<span class="nt">&lt;dependency&gt;</span>
+    <span class="nt">&lt;groupId&gt;</span>org.apache.deltaspike.cdictrl<span class="nt">&lt;/groupId&gt;</span>
+    <span class="nt">&lt;artifactId&gt;</span>deltaspike-cdictrl-owb<span class="nt">&lt;/artifactId&gt;</span>
+    <span class="nt">&lt;version&gt;</span><span class="cp">${</span><span class="n">deltaspike</span><span class="o">.</span><span class="n">version</span><span class="cp">}</span><span class="nt">&lt;/version&gt;</span>
+    <span class="nt">&lt;scope&gt;</span>test<span class="nt">&lt;/scope&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span>
+</pre></div>
+
+
+<h2 id="why-use-cdictrl-for-your-unit-tests">Why use CdiCtrl for your unit tests?</h2>
+<p>Whenever you need to write unit tests for a full application, then you will need to 
+have a CDI container scann all your classes, create <code>Bean&lt;T&gt;</code> from it and provide 
+them for injection. All this can be done by either using JUnits <code>@RunWith</code> or 
+by simply creating a common base class for your unit tests which boots up the 
+container on your test classpath.</p>
+<p>There is no need to restart the container for each and every of your unit tests
+as this would cause a big performance loss. Instead it is usually sufficient to 
+use the CdiCtrls <code>ContextControl</code> mechanism to just stop and restart the 
+respective CDI Contexts.</p>
+<p>Such a base class could look roughly like the following:</p>
+<div class="codehilite"><pre><span class="kn">import</span> <span class="nn">org.apache.deltaspike.cdise.api.CdiContainer</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.deltaspike.cdise.api.CdiContainerLoader</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.deltaspike.core.api.projectstage.ProjectStage</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.deltaspike.core.util.ProjectStageProducer</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.deltaspike.core.api.provider.BeanProvider</span><span class="o">;</span>
+
+<span class="kd">public</span> <span class="kd">abstract</span> <span class="kd">class</span> <span class="nc">ContainerTest</span> <span class="o">{</span>
+
+    <span class="kd">protected</span> <span class="kd">static</span> <span class="kd">volatile</span> <span class="n">CdiContainer</span> <span class="n">cdiContainer</span><span class="o">;</span>
+    <span class="c1">// nice to know, since testng executes tests in parallel.</span>
+    <span class="kd">protected</span> <span class="kd">static</span> <span class="kt">int</span> <span class="n">containerRefCount</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
+
+    <span class="kd">protected</span> <span class="n">ProjectStage</span> <span class="nf">runInProjectStage</span><span class="o">()</span> <span class="o">{</span>
+        <span class="k">return</span> <span class="n">ProjectStage</span><span class="o">.</span><span class="na">UnitTest</span><span class="o">;</span>
+    <span class="o">}</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * Starts container</span>
+<span class="cm">     * @throws Exception in case of severe problem</span>
+<span class="cm">     */</span>
+    <span class="nd">@BeforeMethod</span>
+    <span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">beforeMethod</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="n">containerRefCount</span><span class="o">++;</span>
+
+        <span class="k">if</span> <span class="o">(</span><span class="n">cdiContainer</span> <span class="o">==</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+            <span class="c1">// setting up the Apache DeltaSpike ProjectStage</span>
+            <span class="n">ProjectStage</span> <span class="n">projectStage</span> <span class="o">=</span> <span class="n">runInProjectStage</span><span class="o">();</span>
+            <span class="n">ProjectStageProducer</span><span class="o">.</span><span class="na">setProjectStage</span><span class="o">(</span><span class="n">projectStage</span><span class="o">);</span>
+
+            <span class="n">cdiContainer</span> <span class="o">=</span> <span class="n">CdiContainerLoader</span><span class="o">.</span><span class="na">getCdiContainer</span><span class="o">();</span>
+
+            <span class="n">cdiContainer</span><span class="o">.</span><span class="na">boot</span><span class="o">();</span>
+            <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">startContexts</span><span class="o">();</span>
+        <span class="o">}</span>
+        <span class="k">else</span> <span class="o">{</span>
+            <span class="n">cleanInstances</span><span class="o">();</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+
+    <span class="kd">public</span> <span class="kd">static</span> <span class="n">CdiContainer</span> <span class="nf">getCdiContainer</span><span class="o">()</span> <span class="o">{</span>
+        <span class="k">return</span> <span class="n">cdiContainer</span><span class="o">;</span>
+    <span class="o">}</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * This will fill all the InjectionPoints of the current test class for you</span>
+<span class="cm">     */</span>
+    <span class="nd">@BeforeClass</span>
+    <span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">beforeClass</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="n">beforeMethod</span><span class="o">();</span>
+
+        <span class="c1">// perform injection into the very own test class</span>
+        <span class="n">BeanManager</span> <span class="n">beanManager</span> <span class="o">=</span> <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getBeanManager</span><span class="o">();</span>
+
+        <span class="n">CreationalContext</span> <span class="n">creationalContext</span> <span class="o">=</span> <span class="n">beanManager</span><span class="o">.</span><span class="na">createCreationalContext</span><span class="o">(</span><span class="kc">null</span><span class="o">);</span>
+
+        <span class="n">AnnotatedType</span> <span class="n">annotatedType</span> <span class="o">=</span> <span class="n">beanManager</span><span class="o">.</span><span class="na">createAnnotatedType</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="na">getClass</span><span class="o">());</span>
+        <span class="n">InjectionTarget</span> <span class="n">injectionTarget</span> <span class="o">=</span> <span class="n">beanManager</span><span class="o">.</span><span class="na">createInjectionTarget</span><span class="o">(</span><span class="n">annotatedType</span><span class="o">);</span>
+        <span class="n">injectionTarget</span><span class="o">.</span><span class="na">inject</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="n">creationalContext</span><span class="o">);</span>
+
+        <span class="c1">// this is a trick we use to have proper DB transactions when using the entitymanager-per-request pattern</span>
+        <span class="n">cleanInstances</span><span class="o">();</span>
+        <span class="n">cleanUpDb</span><span class="o">();</span>
+        <span class="n">cleanInstances</span><span class="o">();</span>
+    <span class="o">}</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * Shuts down container.</span>
+<span class="cm">     * @throws Exception in case of severe problem</span>
+<span class="cm">     */</span>
+    <span class="nd">@AfterMethod</span>
+    <span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">afterMethod</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="k">if</span> <span class="o">(</span><span class="n">cdiContainer</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+            <span class="n">cleanInstances</span><span class="o">();</span>
+            <span class="n">containerRefCount</span><span class="o">--;</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * clean the NormalScoped contextual instances by stopping and restarting</span>
+<span class="cm">     * some contexts. You could also restart the ApplicationScoped context</span>
+<span class="cm">     * if you have some caches in your classes. </span>
+<span class="cm">     */</span>
+    <span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">cleanInstances</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">stopContext</span><span class="o">(</span><span class="n">RequestScoped</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">startContext</span><span class="o">(</span><span class="n">RequestScoped</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">stopContext</span><span class="o">(</span><span class="n">SessionScoped</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">startContext</span><span class="o">(</span><span class="n">SessionScoped</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+    <span class="o">}</span>
+
+    <span class="nd">@AfterSuite</span>
+    <span class="kd">public</span> <span class="kd">synchronized</span> <span class="kt">void</span> <span class="nf">shutdownContainer</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="k">if</span> <span class="o">(</span><span class="n">cdiContainer</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+            <span class="n">cdiContainer</span><span class="o">.</span><span class="na">shutdown</span><span class="o">();</span>
+            <span class="n">cdiContainer</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">finalize</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Throwable</span> <span class="o">{</span>
+        <span class="n">shutdownContainer</span><span class="o">();</span>
+        <span class="kd">super</span><span class="o">.</span><span class="na">finalize</span><span class="o">();</span>
+    <span class="o">}</span>
+
+
+    <span class="cm">/**</span>
+<span class="cm">     * Override this method for database clean up.</span>
+<span class="cm">     *</span>
+<span class="cm">     * @throws Exception in case of severe problem</span>
+<span class="cm">     */</span>
+    <span class="kd">protected</span> <span class="kt">void</span> <span class="nf">cleanUpDb</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="c1">//Override in subclasses when needed</span>
+    <span class="o">}</span>
+
+    <span class="kd">protected</span> <span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">T</span> <span class="n">getInstance</span><span class="o">(</span><span class="n">Class</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">type</span><span class="o">,</span> <span class="n">Qualifier</span><span class="o">...</span> <span class="n">qualifiers</span><span class="o">)</span> <span class="o">{</span>
+        <span class="k">return</span> <span class="n">BeanProvider</span><span class="o">.</span><span class="na">getContextualReference</span><span class="o">(</span><span class="n">type</span><span class="o">,</span> <span class="n">qualifiers</span><span class="o">);</span>
+    <span class="o">}</span>
+
+<span class="o">}</span>
+</pre></div>
+
+
+<h2 id="testing-javaee-applications">Testing JavaEE applications</h2>
+<p>You can also plug in a cdictrl backend for <a href="http://tomee.apache.org">Apache TomEE</a> whenever you need to not only test CDI applications 
+but a full JavaEE application which has EJBs, managed DataSources, JTA, etc
+The only thing you need to do is to replace your <code>deltaspike-cdictrl-owb</code> dependency in your pom with
+<code>deltaspike-cdictrl-openejb</code>. Since Apache TomEE and Apache OpenEJB both contain OpenWebBeans as CDI container
+you will get all the OWB functionality plus other JavaEE functionality.  </p>
+<p>You can pass DataSource configuration by simply providing a <code>Properties</code> instance to 
+<code>CdiContainer.boot(dbConfiguration)</code> in the beforeMethod method of the test class above:</p>
+<div class="codehilite"><pre><span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">beforeMethod</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+    <span class="n">containerRefCount</span><span class="o">++;</span>
+
+    <span class="k">if</span> <span class="o">(</span><span class="n">cdiContainer</span> <span class="o">==</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+        <span class="c1">// setting up the Apache DeltaSpike ProjectStage</span>
+        <span class="n">ProjectStage</span> <span class="n">projectStage</span> <span class="o">=</span> <span class="n">runInProjectStage</span><span class="o">();</span>
+        <span class="n">ProjectStageProducer</span><span class="o">.</span><span class="na">setProjectStage</span><span class="o">(</span><span class="n">projectStage</span><span class="o">);</span>
+        <span class="n">cdiContainer</span> <span class="o">=</span> <span class="n">CdiContainerLoader</span><span class="o">.</span><span class="na">getCdiContainer</span><span class="o">();</span>
+
+        <span class="n">Properties</span> <span class="n">dbProperties</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Properties</span><span class="o">();</span>
+        <span class="n">String</span> <span class="n">dbvendor</span> <span class="o">=</span> <span class="n">ConfigResolver</span><span class="o">.</span><span class="na">getPropertyValue</span><span class="o">(</span><span class="s">&quot;dbvendor&quot;</span><span class="o">,</span> <span class="s">&quot;h2&quot;</span><span class="o">);</span>
+        <span class="n">URL</span> <span class="n">dbPropertiesUrl</span> <span class="o">=</span>  <span class="n">getClass</span><span class="o">().</span><span class="na">getResource</span><span class="o">(</span><span class="s">&quot;/db/db-&quot;</span> <span class="o">+</span> <span class="n">dbvendor</span> <span class="o">+</span> <span class="s">&quot;.properties&quot;</span><span class="o">);</span>
+        <span class="k">if</span> <span class="o">(</span><span class="n">dbPropertiesUrl</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+            <span class="n">InputStream</span> <span class="n">is</span> <span class="o">=</span> <span class="n">dbPropertiesUrl</span><span class="o">.</span><span class="na">openStream</span><span class="o">();</span>
+            <span class="k">try</span> <span class="o">{</span>
+                <span class="n">dbProperties</span><span class="o">.</span><span class="na">load</span><span class="o">(</span><span class="n">is</span><span class="o">);</span>
+            <span class="o">}</span>
+            <span class="k">finally</span> <span class="o">{</span>
+                <span class="n">is</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
+            <span class="o">}</span>
+        <span class="o">}</span>
+
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">boot</span><span class="o">(</span><span class="n">dbProperties</span><span class="o">);</span>
+    <span class="o">}</span>
+    <span class="k">else</span> <span class="o">{</span>
+        <span class="n">cleanInstances</span><span class="o">();</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>The <code>db/db-mysql.properties</code> file for Apache OpenEJB (the former name of TomEE) would look like:</p>
+<div class="codehilite"><pre><span class="n">MYDS</span> <span class="p">=</span> <span class="n">new</span><span class="p">:</span><span class="o">//</span><span class="n">Resource</span>?<span class="n">type</span><span class="p">=</span><span class="n">DataSource</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">JdbcDriver</span> <span class="p">=</span> <span class="n">org</span><span class="p">.</span><span class="n">h2</span><span class="p">.</span><span class="n">Driver</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">JdbcUrl</span> <span class="p">=</span> <span class="n">jdbc</span><span class="p">:</span><span class="n">h2</span><span class="p">:</span><span class="n">file</span><span class="p">:</span><span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">h2</span><span class="o">/</span><span class="n">myappdb</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">JtaManaged</span> <span class="p">=</span> <span class="n">true</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">UserName</span> <span class="p">=</span> <span class="n">sa</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">Password</span> <span class="p">=</span>
+</pre></div>
+        </div>
+
+        <hr>
+
+        <footer>
+            <p>
+                <a class="brand" href="http://www.apache.org"><img src="http://www.apache.org/images/asf_logo_wide.png" height="55px" alt="asf_feather"/></a>
+            </p>
+            <p>Copyright &copy; 2008-2013 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
+            <p>OpenWebBeans, Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+        </footer>
+
+    </div> <!-- /container -->
+
+    <!-- Javascript
+    ================================================== -->
+    <!-- Placed at the end of the document so the pages load faster -->
+    <script src=".//resources/js/jquery.js"></script>
+    <script src=".//resources/js/bootstrap-transition.js"></script>
+    <script src=".//resources/js/bootstrap-alert.js"></script>
+    <script src=".//resources/js/bootstrap-modal.js"></script>
+    <script src=".//resources/js/bootstrap-dropdown.js"></script>
+    <script src=".//resources/js/bootstrap-scrollspy.js"></script>
+    <script src=".//resources/js/bootstrap-tab.js"></script>
+    <script src=".//resources/js/bootstrap-tooltip.js"></script>
+    <script src=".//resources/js/bootstrap-popover.js"></script>
+    <script src=".//resources/js/bootstrap-button.js"></script>
+    <script src=".//resources/js/bootstrap-collapse.js"></script>
+    <script src=".//resources/js/bootstrap-carousel.js"></script>
+    <script src=".//resources/js/bootstrap-typeahead.js"></script>
+
+</body></html>
+
+
+
+

Added: websites/staging/openwebbeans/trunk/content/testing_general.html
==============================================================================
--- websites/staging/openwebbeans/trunk/content/testing_general.html (added)
+++ websites/staging/openwebbeans/trunk/content/testing_general.html Sun Feb  9 19:18:57 2014
@@ -0,0 +1,318 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <meta charset="utf-8">
+    <title>Apache OpenWebBeans</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <!-- Le styles -->
+    <link href="./resources/css/bootstrap.css" rel="stylesheet">
+    <style type="text/css">
+        body {
+            padding-top: 60px;
+            padding-bottom: 40px;
+        }
+    </style>
+    <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap-responsive.css" rel="stylesheet">
+    <link href="./resources/css/main.css" rel="stylesheet">
+
+</head>
+
+<body>
+
+<div class="navbar navbar-fixed-top">
+    <div class="navbar-inner">
+        <div class="container">
+            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </a>
+            <a class="brand" href="index.html"><img src="./resources/images/logo_dbg-small.png" height="25px"
+                                                    alt="owb_logo_small"/></a>
+
+            <div class="nav-collapse">
+                <ul class="nav">
+                    <li class="active"><a href="./index.html">Home</a></li>
+                    <li><a href="./documentation.html">Documentation</a></li>
+                    <li><a href="./source.html">Source</a></li>
+                    <li><a href="./download.html">Download</a></li>
+                    <li><a href="./community.html">Community</a></li>
+                    <!-- <li><a href="./news.html">News</a></li> -->
+                    <li class="dropdown">
+                        <a class="dropdown-toggle"
+                           data-toggle="dropdown"
+                           href="#">
+                            Misc
+                            <b class="caret"></b>
+                        </a>
+                        <ul class="dropdown-menu">
+                            <li><a href="http://www.apache.org">Apache Home</a></li>
+                            <li><a href="./misc/contact.html">Contact</a></li>
+                            <li><a href="./misc/legal.html">Legal</a></li>
+                            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+                            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+                            <!-- <li class="divider"/> -->
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+            <!--/.nav-collapse -->
+            <form id="search-form" action="http://www.google.com/search" method="get" class="navbar-search pull-right">
+                <input value="openwebbeans.apache.org" name="sitesearch" type="hidden"/>
+                <input class="search-query" name="q" id="query" type="text"/>
+            </form>
+            <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+        </div>
+    </div>
+</div>
+
+<div class="container">
+
+
+        <div id="OwbContent_" class="wiki-content">
+<h1 id="testing-your-application-with-apache-deltaspike-cdictrl">Testing your application with Apache DeltaSpike CdiCtrl</h1>
+<h2 id="about-cdictrl">About CdiCtrl</h2>
+<p><code>CdiCtrl</code> is <em>not</em> part of Apache OpenWebBeans but a module of 
+<a href="http://deltaspike.apache.org">Apache DeltaSpike</a>. </p>
+<p>The <code>CdiCtrl</code> interface abstracts away all the logic to boot a CDI Container
+and controls the lifecycle of it's Contexts (Request Context, Session Context, etc).</p>
+<p>The actual CDI Container is determined by using the <code>java.util.ServiceLoader</code>.
+There are a few different implementations available. Besides Apache OpenWebBeans
+there are also plugins for JBoss Weld and <a href="http://tomee.apache.org">Apache TomEE</a>. </p>
+<h2 id="adding-openwebbeans-cdictrl-to-your-project">Adding OpenWebBeans CdiCtrl to your project</h2>
+<p>The following are the dependencies you need in your Apache Maven pom.xml file in addition to
+OWB itself:</p>
+<div class="codehilite"><pre><span class="nt">&lt;dependency&gt;</span>
+    <span class="nt">&lt;groupId&gt;</span>org.apache.deltaspike.cdictrl<span class="nt">&lt;/groupId&gt;</span>
+    <span class="nt">&lt;artifactId&gt;</span>deltaspike-cdictrl-api<span class="nt">&lt;/artifactId&gt;</span>
+    <span class="nt">&lt;version&gt;</span><span class="cp">${</span><span class="n">deltaspike</span><span class="o">.</span><span class="n">version</span><span class="cp">}</span><span class="nt">&lt;/version&gt;</span>
+    <span class="nt">&lt;scope&gt;</span>test<span class="nt">&lt;/scope&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span>
+<span class="nt">&lt;dependency&gt;</span>
+    <span class="nt">&lt;groupId&gt;</span>org.apache.deltaspike.cdictrl<span class="nt">&lt;/groupId&gt;</span>
+    <span class="nt">&lt;artifactId&gt;</span>deltaspike-cdictrl-owb<span class="nt">&lt;/artifactId&gt;</span>
+    <span class="nt">&lt;version&gt;</span><span class="cp">${</span><span class="n">deltaspike</span><span class="o">.</span><span class="n">version</span><span class="cp">}</span><span class="nt">&lt;/version&gt;</span>
+    <span class="nt">&lt;scope&gt;</span>test<span class="nt">&lt;/scope&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span>
+</pre></div>
+
+
+<h2 id="why-use-cdictrl-for-your-unit-tests">Why use CdiCtrl for your unit tests?</h2>
+<p>Whenever you need to write unit tests for a full application, then you will need to 
+have a CDI container scann all your classes, create <code>Bean&lt;T&gt;</code> from it and provide 
+them for injection. All this can be done by either using JUnits <code>@RunWith</code> or 
+by simply creating a common base class for your unit tests which boots up the 
+container on your test classpath.</p>
+<p>There is no need to restart the container for each and every of your unit tests
+as this would cause a big performance loss. Instead it is usually sufficient to 
+use the CdiCtrls <code>ContextControl</code> mechanism to just stop and restart the 
+respective CDI Contexts.</p>
+<p>Such a base class could look roughly like the following:</p>
+<div class="codehilite"><pre><span class="kn">import</span> <span class="nn">org.apache.deltaspike.cdise.api.CdiContainer</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.deltaspike.cdise.api.CdiContainerLoader</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.deltaspike.core.api.projectstage.ProjectStage</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.deltaspike.core.util.ProjectStageProducer</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.deltaspike.core.api.provider.BeanProvider</span><span class="o">;</span>
+
+<span class="kd">public</span> <span class="kd">abstract</span> <span class="kd">class</span> <span class="nc">ContainerTest</span> <span class="o">{</span>
+
+    <span class="kd">protected</span> <span class="kd">static</span> <span class="kd">volatile</span> <span class="n">CdiContainer</span> <span class="n">cdiContainer</span><span class="o">;</span>
+    <span class="c1">// nice to know, since testng executes tests in parallel.</span>
+    <span class="kd">protected</span> <span class="kd">static</span> <span class="kt">int</span> <span class="n">containerRefCount</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
+
+    <span class="kd">protected</span> <span class="n">ProjectStage</span> <span class="nf">runInProjectStage</span><span class="o">()</span> <span class="o">{</span>
+        <span class="k">return</span> <span class="n">ProjectStage</span><span class="o">.</span><span class="na">UnitTest</span><span class="o">;</span>
+    <span class="o">}</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * Starts container</span>
+<span class="cm">     * @throws Exception in case of severe problem</span>
+<span class="cm">     */</span>
+    <span class="nd">@BeforeMethod</span>
+    <span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">beforeMethod</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="n">containerRefCount</span><span class="o">++;</span>
+
+        <span class="k">if</span> <span class="o">(</span><span class="n">cdiContainer</span> <span class="o">==</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+            <span class="c1">// setting up the Apache DeltaSpike ProjectStage</span>
+            <span class="n">ProjectStage</span> <span class="n">projectStage</span> <span class="o">=</span> <span class="n">runInProjectStage</span><span class="o">();</span>
+            <span class="n">ProjectStageProducer</span><span class="o">.</span><span class="na">setProjectStage</span><span class="o">(</span><span class="n">projectStage</span><span class="o">);</span>
+
+            <span class="n">cdiContainer</span> <span class="o">=</span> <span class="n">CdiContainerLoader</span><span class="o">.</span><span class="na">getCdiContainer</span><span class="o">();</span>
+
+            <span class="n">cdiContainer</span><span class="o">.</span><span class="na">boot</span><span class="o">();</span>
+            <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">startContexts</span><span class="o">();</span>
+        <span class="o">}</span>
+        <span class="k">else</span> <span class="o">{</span>
+            <span class="n">cleanInstances</span><span class="o">();</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+
+    <span class="kd">public</span> <span class="kd">static</span> <span class="n">CdiContainer</span> <span class="nf">getCdiContainer</span><span class="o">()</span> <span class="o">{</span>
+        <span class="k">return</span> <span class="n">cdiContainer</span><span class="o">;</span>
+    <span class="o">}</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * This will fill all the InjectionPoints of the current test class for you</span>
+<span class="cm">     */</span>
+    <span class="nd">@BeforeClass</span>
+    <span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">beforeClass</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="n">beforeMethod</span><span class="o">();</span>
+
+        <span class="c1">// perform injection into the very own test class</span>
+        <span class="n">BeanManager</span> <span class="n">beanManager</span> <span class="o">=</span> <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getBeanManager</span><span class="o">();</span>
+
+        <span class="n">CreationalContext</span> <span class="n">creationalContext</span> <span class="o">=</span> <span class="n">beanManager</span><span class="o">.</span><span class="na">createCreationalContext</span><span class="o">(</span><span class="kc">null</span><span class="o">);</span>
+
+        <span class="n">AnnotatedType</span> <span class="n">annotatedType</span> <span class="o">=</span> <span class="n">beanManager</span><span class="o">.</span><span class="na">createAnnotatedType</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="na">getClass</span><span class="o">());</span>
+        <span class="n">InjectionTarget</span> <span class="n">injectionTarget</span> <span class="o">=</span> <span class="n">beanManager</span><span class="o">.</span><span class="na">createInjectionTarget</span><span class="o">(</span><span class="n">annotatedType</span><span class="o">);</span>
+        <span class="n">injectionTarget</span><span class="o">.</span><span class="na">inject</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="n">creationalContext</span><span class="o">);</span>
+
+        <span class="c1">// this is a trick we use to have proper DB transactions when using the entitymanager-per-request pattern</span>
+        <span class="n">cleanInstances</span><span class="o">();</span>
+        <span class="n">cleanUpDb</span><span class="o">();</span>
+        <span class="n">cleanInstances</span><span class="o">();</span>
+    <span class="o">}</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * Shuts down container.</span>
+<span class="cm">     * @throws Exception in case of severe problem</span>
+<span class="cm">     */</span>
+    <span class="nd">@AfterMethod</span>
+    <span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">afterMethod</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="k">if</span> <span class="o">(</span><span class="n">cdiContainer</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+            <span class="n">cleanInstances</span><span class="o">();</span>
+            <span class="n">containerRefCount</span><span class="o">--;</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * clean the NormalScoped contextual instances by stopping and restarting</span>
+<span class="cm">     * some contexts. You could also restart the ApplicationScoped context</span>
+<span class="cm">     * if you have some caches in your classes. </span>
+<span class="cm">     */</span>
+    <span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">cleanInstances</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">stopContext</span><span class="o">(</span><span class="n">RequestScoped</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">startContext</span><span class="o">(</span><span class="n">RequestScoped</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">stopContext</span><span class="o">(</span><span class="n">SessionScoped</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">startContext</span><span class="o">(</span><span class="n">SessionScoped</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+    <span class="o">}</span>
+
+    <span class="nd">@AfterSuite</span>
+    <span class="kd">public</span> <span class="kd">synchronized</span> <span class="kt">void</span> <span class="nf">shutdownContainer</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="k">if</span> <span class="o">(</span><span class="n">cdiContainer</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+            <span class="n">cdiContainer</span><span class="o">.</span><span class="na">shutdown</span><span class="o">();</span>
+            <span class="n">cdiContainer</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">finalize</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Throwable</span> <span class="o">{</span>
+        <span class="n">shutdownContainer</span><span class="o">();</span>
+        <span class="kd">super</span><span class="o">.</span><span class="na">finalize</span><span class="o">();</span>
+    <span class="o">}</span>
+
+
+    <span class="cm">/**</span>
+<span class="cm">     * Override this method for database clean up.</span>
+<span class="cm">     *</span>
+<span class="cm">     * @throws Exception in case of severe problem</span>
+<span class="cm">     */</span>
+    <span class="kd">protected</span> <span class="kt">void</span> <span class="nf">cleanUpDb</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="c1">//Override in subclasses when needed</span>
+    <span class="o">}</span>
+
+    <span class="kd">protected</span> <span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">T</span> <span class="n">getInstance</span><span class="o">(</span><span class="n">Class</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">type</span><span class="o">,</span> <span class="n">Qualifier</span><span class="o">...</span> <span class="n">qualifiers</span><span class="o">)</span> <span class="o">{</span>
+        <span class="k">return</span> <span class="n">BeanProvider</span><span class="o">.</span><span class="na">getContextualReference</span><span class="o">(</span><span class="n">type</span><span class="o">,</span> <span class="n">qualifiers</span><span class="o">);</span>
+    <span class="o">}</span>
+
+<span class="o">}</span>
+</pre></div>
+
+
+<h2 id="testing-javaee-applications">Testing JavaEE applications</h2>
+<p>You can also plug in a cdictrl backend for <a href="http://tomee.apache.org">Apache TomEE</a> whenever you need to not only test CDI applications 
+but a full JavaEE application which has EJBs, managed DataSources, JTA, etc
+The only thing you need to do is to replace your <code>deltaspike-cdictrl-owb</code> dependency in your pom with
+<code>deltaspike-cdictrl-openejb</code>. Since Apache TomEE and Apache OpenEJB both contain OpenWebBeans as CDI container
+you will get all the OWB functionality plus other JavaEE functionality.  </p>
+<p>You can pass DataSource configuration by simply providing a <code>Properties</code> instance to 
+<code>CdiContainer.boot(dbConfiguration)</code> in the beforeMethod method of the test class above:</p>
+<div class="codehilite"><pre><span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">beforeMethod</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+    <span class="n">containerRefCount</span><span class="o">++;</span>
+
+    <span class="k">if</span> <span class="o">(</span><span class="n">cdiContainer</span> <span class="o">==</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+        <span class="c1">// setting up the Apache DeltaSpike ProjectStage</span>
+        <span class="n">ProjectStage</span> <span class="n">projectStage</span> <span class="o">=</span> <span class="n">runInProjectStage</span><span class="o">();</span>
+        <span class="n">ProjectStageProducer</span><span class="o">.</span><span class="na">setProjectStage</span><span class="o">(</span><span class="n">projectStage</span><span class="o">);</span>
+        <span class="n">cdiContainer</span> <span class="o">=</span> <span class="n">CdiContainerLoader</span><span class="o">.</span><span class="na">getCdiContainer</span><span class="o">();</span>
+
+        <span class="n">Properties</span> <span class="n">dbProperties</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Properties</span><span class="o">();</span>
+        <span class="n">String</span> <span class="n">dbvendor</span> <span class="o">=</span> <span class="n">ConfigResolver</span><span class="o">.</span><span class="na">getPropertyValue</span><span class="o">(</span><span class="s">&quot;dbvendor&quot;</span><span class="o">,</span> <span class="s">&quot;h2&quot;</span><span class="o">);</span>
+        <span class="n">URL</span> <span class="n">dbPropertiesUrl</span> <span class="o">=</span>  <span class="n">getClass</span><span class="o">().</span><span class="na">getResource</span><span class="o">(</span><span class="s">&quot;/db/db-&quot;</span> <span class="o">+</span> <span class="n">dbvendor</span> <span class="o">+</span> <span class="s">&quot;.properties&quot;</span><span class="o">);</span>
+        <span class="k">if</span> <span class="o">(</span><span class="n">dbPropertiesUrl</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+            <span class="n">InputStream</span> <span class="n">is</span> <span class="o">=</span> <span class="n">dbPropertiesUrl</span><span class="o">.</span><span class="na">openStream</span><span class="o">();</span>
+            <span class="k">try</span> <span class="o">{</span>
+                <span class="n">dbProperties</span><span class="o">.</span><span class="na">load</span><span class="o">(</span><span class="n">is</span><span class="o">);</span>
+            <span class="o">}</span>
+            <span class="k">finally</span> <span class="o">{</span>
+                <span class="n">is</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
+            <span class="o">}</span>
+        <span class="o">}</span>
+
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">boot</span><span class="o">(</span><span class="n">dbProperties</span><span class="o">);</span>
+    <span class="o">}</span>
+    <span class="k">else</span> <span class="o">{</span>
+        <span class="n">cleanInstances</span><span class="o">();</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>The <code>db/db-mysql.properties</code> file for Apache OpenEJB (the former name of TomEE) would look like:</p>
+<div class="codehilite"><pre><span class="n">MYDS</span> <span class="p">=</span> <span class="n">new</span><span class="p">:</span><span class="o">//</span><span class="n">Resource</span>?<span class="n">type</span><span class="p">=</span><span class="n">DataSource</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">JdbcDriver</span> <span class="p">=</span> <span class="n">org</span><span class="p">.</span><span class="n">h2</span><span class="p">.</span><span class="n">Driver</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">JdbcUrl</span> <span class="p">=</span> <span class="n">jdbc</span><span class="p">:</span><span class="n">h2</span><span class="p">:</span><span class="n">file</span><span class="p">:</span><span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">h2</span><span class="o">/</span><span class="n">myappdb</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">JtaManaged</span> <span class="p">=</span> <span class="n">true</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">UserName</span> <span class="p">=</span> <span class="n">sa</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">Password</span> <span class="p">=</span>
+</pre></div>
+        </div>
+
+        <hr>
+
+        <footer>
+            <p>
+                <a class="brand" href="http://www.apache.org"><img src="http://www.apache.org/images/asf_logo_wide.png" height="55px" alt="asf_feather"/></a>
+            </p>
+            <p>Copyright &copy; 2008-2013 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
+            <p>OpenWebBeans, Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+        </footer>
+
+    </div> <!-- /container -->
+
+    <!-- Javascript
+    ================================================== -->
+    <!-- Placed at the end of the document so the pages load faster -->
+    <script src=".//resources/js/jquery.js"></script>
+    <script src=".//resources/js/bootstrap-transition.js"></script>
+    <script src=".//resources/js/bootstrap-alert.js"></script>
+    <script src=".//resources/js/bootstrap-modal.js"></script>
+    <script src=".//resources/js/bootstrap-dropdown.js"></script>
+    <script src=".//resources/js/bootstrap-scrollspy.js"></script>
+    <script src=".//resources/js/bootstrap-tab.js"></script>
+    <script src=".//resources/js/bootstrap-tooltip.js"></script>
+    <script src=".//resources/js/bootstrap-popover.js"></script>
+    <script src=".//resources/js/bootstrap-button.js"></script>
+    <script src=".//resources/js/bootstrap-collapse.js"></script>
+    <script src=".//resources/js/bootstrap-carousel.js"></script>
+    <script src=".//resources/js/bootstrap-typeahead.js"></script>
+
+</body></html>
+
+
+
+

Added: websites/staging/openwebbeans/trunk/content/testing_test-control.html
==============================================================================
--- websites/staging/openwebbeans/trunk/content/testing_test-control.html (added)
+++ websites/staging/openwebbeans/trunk/content/testing_test-control.html Sun Feb  9 19:18:57 2014
@@ -0,0 +1,318 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <meta charset="utf-8">
+    <title>Apache OpenWebBeans</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <!-- Le styles -->
+    <link href="./resources/css/bootstrap.css" rel="stylesheet">
+    <style type="text/css">
+        body {
+            padding-top: 60px;
+            padding-bottom: 40px;
+        }
+    </style>
+    <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap-responsive.css" rel="stylesheet">
+    <link href="./resources/css/main.css" rel="stylesheet">
+
+</head>
+
+<body>
+
+<div class="navbar navbar-fixed-top">
+    <div class="navbar-inner">
+        <div class="container">
+            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </a>
+            <a class="brand" href="index.html"><img src="./resources/images/logo_dbg-small.png" height="25px"
+                                                    alt="owb_logo_small"/></a>
+
+            <div class="nav-collapse">
+                <ul class="nav">
+                    <li class="active"><a href="./index.html">Home</a></li>
+                    <li><a href="./documentation.html">Documentation</a></li>
+                    <li><a href="./source.html">Source</a></li>
+                    <li><a href="./download.html">Download</a></li>
+                    <li><a href="./community.html">Community</a></li>
+                    <!-- <li><a href="./news.html">News</a></li> -->
+                    <li class="dropdown">
+                        <a class="dropdown-toggle"
+                           data-toggle="dropdown"
+                           href="#">
+                            Misc
+                            <b class="caret"></b>
+                        </a>
+                        <ul class="dropdown-menu">
+                            <li><a href="http://www.apache.org">Apache Home</a></li>
+                            <li><a href="./misc/contact.html">Contact</a></li>
+                            <li><a href="./misc/legal.html">Legal</a></li>
+                            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+                            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+                            <!-- <li class="divider"/> -->
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+            <!--/.nav-collapse -->
+            <form id="search-form" action="http://www.google.com/search" method="get" class="navbar-search pull-right">
+                <input value="openwebbeans.apache.org" name="sitesearch" type="hidden"/>
+                <input class="search-query" name="q" id="query" type="text"/>
+            </form>
+            <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+        </div>
+    </div>
+</div>
+
+<div class="container">
+
+
+        <div id="OwbContent_" class="wiki-content">
+<h1 id="testing-your-application-with-apache-deltaspike-cdictrl">Testing your application with Apache DeltaSpike CdiCtrl</h1>
+<h2 id="about-cdictrl">About CdiCtrl</h2>
+<p><code>CdiCtrl</code> is <em>not</em> part of Apache OpenWebBeans but a module of 
+<a href="http://deltaspike.apache.org">Apache DeltaSpike</a>. </p>
+<p>The <code>CdiCtrl</code> interface abstracts away all the logic to boot a CDI Container
+and controls the lifecycle of it's Contexts (Request Context, Session Context, etc).</p>
+<p>The actual CDI Container is determined by using the <code>java.util.ServiceLoader</code>.
+There are a few different implementations available. Besides Apache OpenWebBeans
+there are also plugins for JBoss Weld and <a href="http://tomee.apache.org">Apache TomEE</a>. </p>
+<h2 id="adding-openwebbeans-cdictrl-to-your-project">Adding OpenWebBeans CdiCtrl to your project</h2>
+<p>The following are the dependencies you need in your Apache Maven pom.xml file in addition to
+OWB itself:</p>
+<div class="codehilite"><pre><span class="nt">&lt;dependency&gt;</span>
+    <span class="nt">&lt;groupId&gt;</span>org.apache.deltaspike.cdictrl<span class="nt">&lt;/groupId&gt;</span>
+    <span class="nt">&lt;artifactId&gt;</span>deltaspike-cdictrl-api<span class="nt">&lt;/artifactId&gt;</span>
+    <span class="nt">&lt;version&gt;</span><span class="cp">${</span><span class="n">deltaspike</span><span class="o">.</span><span class="n">version</span><span class="cp">}</span><span class="nt">&lt;/version&gt;</span>
+    <span class="nt">&lt;scope&gt;</span>test<span class="nt">&lt;/scope&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span>
+<span class="nt">&lt;dependency&gt;</span>
+    <span class="nt">&lt;groupId&gt;</span>org.apache.deltaspike.cdictrl<span class="nt">&lt;/groupId&gt;</span>
+    <span class="nt">&lt;artifactId&gt;</span>deltaspike-cdictrl-owb<span class="nt">&lt;/artifactId&gt;</span>
+    <span class="nt">&lt;version&gt;</span><span class="cp">${</span><span class="n">deltaspike</span><span class="o">.</span><span class="n">version</span><span class="cp">}</span><span class="nt">&lt;/version&gt;</span>
+    <span class="nt">&lt;scope&gt;</span>test<span class="nt">&lt;/scope&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span>
+</pre></div>
+
+
+<h2 id="why-use-cdictrl-for-your-unit-tests">Why use CdiCtrl for your unit tests?</h2>
+<p>Whenever you need to write unit tests for a full application, then you will need to 
+have a CDI container scann all your classes, create <code>Bean&lt;T&gt;</code> from it and provide 
+them for injection. All this can be done by either using JUnits <code>@RunWith</code> or 
+by simply creating a common base class for your unit tests which boots up the 
+container on your test classpath.</p>
+<p>There is no need to restart the container for each and every of your unit tests
+as this would cause a big performance loss. Instead it is usually sufficient to 
+use the CdiCtrls <code>ContextControl</code> mechanism to just stop and restart the 
+respective CDI Contexts.</p>
+<p>Such a base class could look roughly like the following:</p>
+<div class="codehilite"><pre><span class="kn">import</span> <span class="nn">org.apache.deltaspike.cdise.api.CdiContainer</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.deltaspike.cdise.api.CdiContainerLoader</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.deltaspike.core.api.projectstage.ProjectStage</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.deltaspike.core.util.ProjectStageProducer</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.deltaspike.core.api.provider.BeanProvider</span><span class="o">;</span>
+
+<span class="kd">public</span> <span class="kd">abstract</span> <span class="kd">class</span> <span class="nc">ContainerTest</span> <span class="o">{</span>
+
+    <span class="kd">protected</span> <span class="kd">static</span> <span class="kd">volatile</span> <span class="n">CdiContainer</span> <span class="n">cdiContainer</span><span class="o">;</span>
+    <span class="c1">// nice to know, since testng executes tests in parallel.</span>
+    <span class="kd">protected</span> <span class="kd">static</span> <span class="kt">int</span> <span class="n">containerRefCount</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
+
+    <span class="kd">protected</span> <span class="n">ProjectStage</span> <span class="nf">runInProjectStage</span><span class="o">()</span> <span class="o">{</span>
+        <span class="k">return</span> <span class="n">ProjectStage</span><span class="o">.</span><span class="na">UnitTest</span><span class="o">;</span>
+    <span class="o">}</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * Starts container</span>
+<span class="cm">     * @throws Exception in case of severe problem</span>
+<span class="cm">     */</span>
+    <span class="nd">@BeforeMethod</span>
+    <span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">beforeMethod</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="n">containerRefCount</span><span class="o">++;</span>
+
+        <span class="k">if</span> <span class="o">(</span><span class="n">cdiContainer</span> <span class="o">==</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+            <span class="c1">// setting up the Apache DeltaSpike ProjectStage</span>
+            <span class="n">ProjectStage</span> <span class="n">projectStage</span> <span class="o">=</span> <span class="n">runInProjectStage</span><span class="o">();</span>
+            <span class="n">ProjectStageProducer</span><span class="o">.</span><span class="na">setProjectStage</span><span class="o">(</span><span class="n">projectStage</span><span class="o">);</span>
+
+            <span class="n">cdiContainer</span> <span class="o">=</span> <span class="n">CdiContainerLoader</span><span class="o">.</span><span class="na">getCdiContainer</span><span class="o">();</span>
+
+            <span class="n">cdiContainer</span><span class="o">.</span><span class="na">boot</span><span class="o">();</span>
+            <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">startContexts</span><span class="o">();</span>
+        <span class="o">}</span>
+        <span class="k">else</span> <span class="o">{</span>
+            <span class="n">cleanInstances</span><span class="o">();</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+
+    <span class="kd">public</span> <span class="kd">static</span> <span class="n">CdiContainer</span> <span class="nf">getCdiContainer</span><span class="o">()</span> <span class="o">{</span>
+        <span class="k">return</span> <span class="n">cdiContainer</span><span class="o">;</span>
+    <span class="o">}</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * This will fill all the InjectionPoints of the current test class for you</span>
+<span class="cm">     */</span>
+    <span class="nd">@BeforeClass</span>
+    <span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">beforeClass</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="n">beforeMethod</span><span class="o">();</span>
+
+        <span class="c1">// perform injection into the very own test class</span>
+        <span class="n">BeanManager</span> <span class="n">beanManager</span> <span class="o">=</span> <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getBeanManager</span><span class="o">();</span>
+
+        <span class="n">CreationalContext</span> <span class="n">creationalContext</span> <span class="o">=</span> <span class="n">beanManager</span><span class="o">.</span><span class="na">createCreationalContext</span><span class="o">(</span><span class="kc">null</span><span class="o">);</span>
+
+        <span class="n">AnnotatedType</span> <span class="n">annotatedType</span> <span class="o">=</span> <span class="n">beanManager</span><span class="o">.</span><span class="na">createAnnotatedType</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="na">getClass</span><span class="o">());</span>
+        <span class="n">InjectionTarget</span> <span class="n">injectionTarget</span> <span class="o">=</span> <span class="n">beanManager</span><span class="o">.</span><span class="na">createInjectionTarget</span><span class="o">(</span><span class="n">annotatedType</span><span class="o">);</span>
+        <span class="n">injectionTarget</span><span class="o">.</span><span class="na">inject</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="n">creationalContext</span><span class="o">);</span>
+
+        <span class="c1">// this is a trick we use to have proper DB transactions when using the entitymanager-per-request pattern</span>
+        <span class="n">cleanInstances</span><span class="o">();</span>
+        <span class="n">cleanUpDb</span><span class="o">();</span>
+        <span class="n">cleanInstances</span><span class="o">();</span>
+    <span class="o">}</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * Shuts down container.</span>
+<span class="cm">     * @throws Exception in case of severe problem</span>
+<span class="cm">     */</span>
+    <span class="nd">@AfterMethod</span>
+    <span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">afterMethod</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="k">if</span> <span class="o">(</span><span class="n">cdiContainer</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+            <span class="n">cleanInstances</span><span class="o">();</span>
+            <span class="n">containerRefCount</span><span class="o">--;</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * clean the NormalScoped contextual instances by stopping and restarting</span>
+<span class="cm">     * some contexts. You could also restart the ApplicationScoped context</span>
+<span class="cm">     * if you have some caches in your classes. </span>
+<span class="cm">     */</span>
+    <span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">cleanInstances</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">stopContext</span><span class="o">(</span><span class="n">RequestScoped</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">startContext</span><span class="o">(</span><span class="n">RequestScoped</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">stopContext</span><span class="o">(</span><span class="n">SessionScoped</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">getContextControl</span><span class="o">().</span><span class="na">startContext</span><span class="o">(</span><span class="n">SessionScoped</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+    <span class="o">}</span>
+
+    <span class="nd">@AfterSuite</span>
+    <span class="kd">public</span> <span class="kd">synchronized</span> <span class="kt">void</span> <span class="nf">shutdownContainer</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="k">if</span> <span class="o">(</span><span class="n">cdiContainer</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+            <span class="n">cdiContainer</span><span class="o">.</span><span class="na">shutdown</span><span class="o">();</span>
+            <span class="n">cdiContainer</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">finalize</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Throwable</span> <span class="o">{</span>
+        <span class="n">shutdownContainer</span><span class="o">();</span>
+        <span class="kd">super</span><span class="o">.</span><span class="na">finalize</span><span class="o">();</span>
+    <span class="o">}</span>
+
+
+    <span class="cm">/**</span>
+<span class="cm">     * Override this method for database clean up.</span>
+<span class="cm">     *</span>
+<span class="cm">     * @throws Exception in case of severe problem</span>
+<span class="cm">     */</span>
+    <span class="kd">protected</span> <span class="kt">void</span> <span class="nf">cleanUpDb</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+        <span class="c1">//Override in subclasses when needed</span>
+    <span class="o">}</span>
+
+    <span class="kd">protected</span> <span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">T</span> <span class="n">getInstance</span><span class="o">(</span><span class="n">Class</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">type</span><span class="o">,</span> <span class="n">Qualifier</span><span class="o">...</span> <span class="n">qualifiers</span><span class="o">)</span> <span class="o">{</span>
+        <span class="k">return</span> <span class="n">BeanProvider</span><span class="o">.</span><span class="na">getContextualReference</span><span class="o">(</span><span class="n">type</span><span class="o">,</span> <span class="n">qualifiers</span><span class="o">);</span>
+    <span class="o">}</span>
+
+<span class="o">}</span>
+</pre></div>
+
+
+<h2 id="testing-javaee-applications">Testing JavaEE applications</h2>
+<p>You can also plug in a cdictrl backend for <a href="http://tomee.apache.org">Apache TomEE</a> whenever you need to not only test CDI applications 
+but a full JavaEE application which has EJBs, managed DataSources, JTA, etc
+The only thing you need to do is to replace your <code>deltaspike-cdictrl-owb</code> dependency in your pom with
+<code>deltaspike-cdictrl-openejb</code>. Since Apache TomEE and Apache OpenEJB both contain OpenWebBeans as CDI container
+you will get all the OWB functionality plus other JavaEE functionality.  </p>
+<p>You can pass DataSource configuration by simply providing a <code>Properties</code> instance to 
+<code>CdiContainer.boot(dbConfiguration)</code> in the beforeMethod method of the test class above:</p>
+<div class="codehilite"><pre><span class="kd">public</span> <span class="kd">final</span> <span class="kt">void</span> <span class="nf">beforeMethod</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+    <span class="n">containerRefCount</span><span class="o">++;</span>
+
+    <span class="k">if</span> <span class="o">(</span><span class="n">cdiContainer</span> <span class="o">==</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+        <span class="c1">// setting up the Apache DeltaSpike ProjectStage</span>
+        <span class="n">ProjectStage</span> <span class="n">projectStage</span> <span class="o">=</span> <span class="n">runInProjectStage</span><span class="o">();</span>
+        <span class="n">ProjectStageProducer</span><span class="o">.</span><span class="na">setProjectStage</span><span class="o">(</span><span class="n">projectStage</span><span class="o">);</span>
+        <span class="n">cdiContainer</span> <span class="o">=</span> <span class="n">CdiContainerLoader</span><span class="o">.</span><span class="na">getCdiContainer</span><span class="o">();</span>
+
+        <span class="n">Properties</span> <span class="n">dbProperties</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Properties</span><span class="o">();</span>
+        <span class="n">String</span> <span class="n">dbvendor</span> <span class="o">=</span> <span class="n">ConfigResolver</span><span class="o">.</span><span class="na">getPropertyValue</span><span class="o">(</span><span class="s">&quot;dbvendor&quot;</span><span class="o">,</span> <span class="s">&quot;h2&quot;</span><span class="o">);</span>
+        <span class="n">URL</span> <span class="n">dbPropertiesUrl</span> <span class="o">=</span>  <span class="n">getClass</span><span class="o">().</span><span class="na">getResource</span><span class="o">(</span><span class="s">&quot;/db/db-&quot;</span> <span class="o">+</span> <span class="n">dbvendor</span> <span class="o">+</span> <span class="s">&quot;.properties&quot;</span><span class="o">);</span>
+        <span class="k">if</span> <span class="o">(</span><span class="n">dbPropertiesUrl</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+            <span class="n">InputStream</span> <span class="n">is</span> <span class="o">=</span> <span class="n">dbPropertiesUrl</span><span class="o">.</span><span class="na">openStream</span><span class="o">();</span>
+            <span class="k">try</span> <span class="o">{</span>
+                <span class="n">dbProperties</span><span class="o">.</span><span class="na">load</span><span class="o">(</span><span class="n">is</span><span class="o">);</span>
+            <span class="o">}</span>
+            <span class="k">finally</span> <span class="o">{</span>
+                <span class="n">is</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
+            <span class="o">}</span>
+        <span class="o">}</span>
+
+        <span class="n">cdiContainer</span><span class="o">.</span><span class="na">boot</span><span class="o">(</span><span class="n">dbProperties</span><span class="o">);</span>
+    <span class="o">}</span>
+    <span class="k">else</span> <span class="o">{</span>
+        <span class="n">cleanInstances</span><span class="o">();</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>The <code>db/db-mysql.properties</code> file for Apache OpenEJB (the former name of TomEE) would look like:</p>
+<div class="codehilite"><pre><span class="n">MYDS</span> <span class="p">=</span> <span class="n">new</span><span class="p">:</span><span class="o">//</span><span class="n">Resource</span>?<span class="n">type</span><span class="p">=</span><span class="n">DataSource</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">JdbcDriver</span> <span class="p">=</span> <span class="n">org</span><span class="p">.</span><span class="n">h2</span><span class="p">.</span><span class="n">Driver</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">JdbcUrl</span> <span class="p">=</span> <span class="n">jdbc</span><span class="p">:</span><span class="n">h2</span><span class="p">:</span><span class="n">file</span><span class="p">:</span><span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">h2</span><span class="o">/</span><span class="n">myappdb</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">JtaManaged</span> <span class="p">=</span> <span class="n">true</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">UserName</span> <span class="p">=</span> <span class="n">sa</span>
+<span class="n">MYDS</span><span class="p">.</span><span class="n">Password</span> <span class="p">=</span>
+</pre></div>
+        </div>
+
+        <hr>
+
+        <footer>
+            <p>
+                <a class="brand" href="http://www.apache.org"><img src="http://www.apache.org/images/asf_logo_wide.png" height="55px" alt="asf_feather"/></a>
+            </p>
+            <p>Copyright &copy; 2008-2013 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
+            <p>OpenWebBeans, Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+        </footer>
+
+    </div> <!-- /container -->
+
+    <!-- Javascript
+    ================================================== -->
+    <!-- Placed at the end of the document so the pages load faster -->
+    <script src=".//resources/js/jquery.js"></script>
+    <script src=".//resources/js/bootstrap-transition.js"></script>
+    <script src=".//resources/js/bootstrap-alert.js"></script>
+    <script src=".//resources/js/bootstrap-modal.js"></script>
+    <script src=".//resources/js/bootstrap-dropdown.js"></script>
+    <script src=".//resources/js/bootstrap-scrollspy.js"></script>
+    <script src=".//resources/js/bootstrap-tab.js"></script>
+    <script src=".//resources/js/bootstrap-tooltip.js"></script>
+    <script src=".//resources/js/bootstrap-popover.js"></script>
+    <script src=".//resources/js/bootstrap-button.js"></script>
+    <script src=".//resources/js/bootstrap-collapse.js"></script>
+    <script src=".//resources/js/bootstrap-carousel.js"></script>
+    <script src=".//resources/js/bootstrap-typeahead.js"></script>
+
+</body></html>
+
+
+
+



Mime
View raw message