Merge branch 'master' of https://github.com/apache/tomee into TOMEE-2900
diff --git a/examples/injection-of-ejbs/README.adoc b/examples/injection-of-ejbs/README.adoc
index ff4d61c..9c10add 100644
--- a/examples/injection-of-ejbs/README.adoc
+++ b/examples/injection-of-ejbs/README.adoc
@@ -3,12 +3,12 @@
 :jbake-status: status=published
 = Injection Of Ejbs
 
-This example shows how to use the @EJB annotation on a bean class to
+This example shows how to use the `@EJB` annotation on a bean class to
 refer to other beans.
 
 This functionality is often referred as dependency injection (see
 http://www.martinfowler.com/articles/injection.html), and has been
-recently introduced in Java EE 5.
+introduced in Java EE 5.
 
 In this particular example, we will create two session stateless beans
 
@@ -17,7 +17,7 @@
 
 The DataReader bean uses the DataStore to retrieve some informations,
 and we will see how we can, inside the DataReader bean, get a reference
-to the DataStore bean using the @EJB annotation, thus avoiding the use
+to the DataStore bean using the `@EJB` annotation, thus avoiding the use
 of the JNDI API.
 
 == DataReader
@@ -44,7 +44,7 @@
  * this means that the application server, at runtime, will inject in this instance
  * variable a reference to the EJB DataStoreLocal
  */
-//START SNIPPET: code
+
 @Stateless
 public class DataReader {
 
@@ -85,7 +85,7 @@
  * This EJB has 2 business interfaces: DataStoreRemote, a remote business
  * interface, and DataStoreLocal, a local business interface
  */
-//START SNIPPET: code
+
 @Stateless
 @LocalBean
 public class DataStore implements DataStoreLocal, DataStoreRemote {
@@ -110,7 +110,7 @@
  * annotation, but it's optional. A business interface which is
  * not annotated with @Local or @Remote is assumed to be Local
  */
-//START SNIPPET: code
+
 @Local
 public interface DataStoreLocal {
 
@@ -131,7 +131,7 @@
  * A remote business interface must be annotated with the @Remote
  * annotation
  */
-//START SNIPPET: code
+
 @Remote
 public interface DataStoreRemote {
 
@@ -153,7 +153,7 @@
 /**
  * A test case for DataReaderImpl ejb, testing both the remote and local interface
  */
-//START SNIPPET: code
+
 public class EjbDependencyTest extends TestCase {
 
     public void test() throws Exception {
diff --git a/examples/injection-of-ejbs/README_es.adoc b/examples/injection-of-ejbs/README_es.adoc
new file mode 100644
index 0000000..f4abb14
--- /dev/null
+++ b/examples/injection-of-ejbs/README_es.adoc
@@ -0,0 +1,216 @@
+:index-group: Referencing EJBs
+:jbake-type: page
+:jbake-status: status=published
+= Inyección de Ejbs
+
+Este ejemplo muestra cómo usar la anotación `@EJB` en una clase de bean para
+referenciar otros beans.
+
+Esta funcionalidad a menudo se denomina inyección de dependencia (consulte
+http://www.martinfowler.com/articles/injection.html), y ha sido
+introducido en Java EE 5.
+
+En este ejemplo particular, crearemos dos beans de sesión sin estado (stateless) 
+
+* un bean de sesión de DataStore
+* un bean de sesión DataReader
+
+El bean DataReader usa el bean DataStore para recuperar información,
+dentro del bean DataReader se obtiene una referencia
+al bean DataStore usando la anotación `@EJB`, evitando así el uso
+de la API JNDI.
+
+== DataReader
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+
+/**
+ * Este es un bean pojo sesión sin estado estilo EJB 3.1
+ * Cada implementación de bean de sesión sin estado debe estar anotada
+ * usando la anotación @Stateless
+ * Este EJB tiene 2 interfaces de negocio: DataReaderRemote, una interfaz remota
+ *  negocio y DataReaderLocal, una interfaz de nogocio local
+ * <p />
+ * Las variables de instancia 'dataStoreRemote' están anotadas con la anotación @EJB:
+ * esto significa que el servidor de aplicaciones, en tiempo de ejecución, inyectará en esta instancia variable una referencia al EJB DataStoreRemote
+ * <p />
+ * Las variables de instancia 'dataStoreLocal' están anotadas con la anotación @EJB:
+ * esto significa que el servidor de aplicaciones, en tiempo de ejecución inyectará en esta instancia
+ * variable una referencia a EJB DataStoreLocal
+ */
+
+@Stateless
+public class DataReader {
+
+    @EJB
+    private DataStoreRemote dataStoreRemote;
+    @EJB
+    private DataStoreLocal dataStoreLocal;
+    @EJB
+    private DataStore dataStore;
+
+    public String readDataFromLocalStore() {
+        return "LOCAL:" + dataStoreLocal.getData();
+    }
+
+    public String readDataFromLocalBeanStore() {
+        return "LOCALBEAN:" + dataStore.getData();
+    }
+
+    public String readDataFromRemoteStore() {
+        return "REMOTE:" + dataStoreRemote.getData();
+    }
+}
+----
+
+== DataStore
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import javax.ejb.LocalBean;
+import javax.ejb.Stateless;
+
+/**
+ * Este es un bean pojo de sesión sin estado estilo EJB 3
+ * Cada implementación de bean de sesión sin estado debe estar anotada
+ * usando la anotación @Stateless
+ * Este EJB tiene 2 interfaces de negocio: DataStoreRemote, una interfaz de negocio remota
+ * y DataStoreLocal, una interfaz de negocio local
+ */
+
+@Stateless
+@LocalBean
+public class DataStore implements DataStoreLocal, DataStoreRemote {
+
+    public String getData() {
+        return "42";
+    }
+}
+----
+
+== DataStoreLocal
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import javax.ejb.Local;
+
+/**
+ * Esta es una interfaz de negociolocal EJB 3
+ * Una interfaz de negocio local se puede anotar con la anotación @Local,
+ * @Local es una anotación opcional. Una interfaz de negocio que
+ * no esta anotado con @Local o @Remote se supone se asume como Local
+ */
+
+@Local
+public interface DataStoreLocal {
+
+    public String getData();
+}
+----
+
+== DataStoreRemote
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import javax.ejb.Remote;
+
+/**
+ * Esta es una interfaz de negocio remota EJB 3
+ * Se debe anotar una interfaz de negocio remota con la anotación @Remote
+ */
+
+@Remote
+public interface DataStoreRemote {
+
+    public String getData();
+}
+----
+
+== EjbDependencyTest
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+
+/**
+ * Un caso de prueba para DataReaderImpl ejb, probando tanto la interfaz remota 
+ * como la local
+ */
+
+public class EjbDependencyTest extends TestCase {
+
+    public void test() throws Exception {
+        final Context context = EJBContainer.createEJBContainer().getContext();
+
+        DataReader dataReader = (DataReader) context.lookup("java:global/injection-of-ejbs/DataReader");
+
+        assertNotNull(dataReader);
+
+        assertEquals("LOCAL:42", dataReader.readDataFromLocalStore());
+        assertEquals("REMOTE:42", dataReader.readDataFromRemoteStore());
+        assertEquals("LOCALBEAN:42", dataReader.readDataFromLocalBeanStore());
+    }
+}
+----
+
+== Ejecución
+
+[source,console]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.EjbDependencyTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/injection-of-ejbs
+INFO - openejb.base = /Users/dblevins/examples/injection-of-ejbs
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-ejbs/target/classes
+INFO - Beginning load: /Users/dblevins/examples/injection-of-ejbs/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-ejbs
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean DataReader: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.EjbDependencyTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/injection-of-ejbs" loaded.
+INFO - Assembling app: /Users/dblevins/examples/injection-of-ejbs
+INFO - Jndi(name="java:global/injection-of-ejbs/DataReader!org.superbiz.injection.DataReader")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataReader")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStore")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStoreLocal")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStoreRemote")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataStore")
+INFO - Jndi(name="java:global/EjbModule355598874/org.superbiz.injection.EjbDependencyTest!org.superbiz.injection.EjbDependencyTest")
+INFO - Jndi(name="java:global/EjbModule355598874/org.superbiz.injection.EjbDependencyTest")
+INFO - Created Ejb(deployment-id=DataReader, ejb-name=DataReader, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=DataStore, ejb-name=DataStore, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.EjbDependencyTest, ejb-name=org.superbiz.injection.EjbDependencyTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=DataReader, ejb-name=DataReader, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=DataStore, ejb-name=DataStore, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.EjbDependencyTest, ejb-name=org.superbiz.injection.EjbDependencyTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-ejbs)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.225 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
diff --git a/examples/injection-of-ejbs/README_pt.adoc b/examples/injection-of-ejbs/README_pt.adoc
index 2ae02d7..a9ef4ff 100644
--- a/examples/injection-of-ejbs/README_pt.adoc
+++ b/examples/injection-of-ejbs/README_pt.adoc
@@ -7,7 +7,7 @@
 
 Essa funcionalidade é geralmente chamada de injeção de dependência (consulte
 http://www.martinfowler.com/articles/injection.html) e foi
-recentemente introduzido no Java EE 5.
+ introduzido no Java EE 5.
 
 Neste exemplo em particular, nós vamos criar dois bean de sessão sem estado
 
diff --git a/examples/rest-applicationcomposer-mockito/README_pt.adoc b/examples/rest-applicationcomposer-mockito/README_pt.adoc
new file mode 100644
index 0000000..a61e0f6
--- /dev/null
+++ b/examples/rest-applicationcomposer-mockito/README_pt.adoc
@@ -0,0 +1,87 @@
+= Exemplo do Application Composer e Mockito
+:index-group: Testing Techniques
+:jbake-type: page
+:jbake-status: published
+
+Neste exemplo, um serviço REST vai ser testado, usando Aplication Composer e Mockito.
+
+http://tomee.apache.org/tomee-8.0/docs/application-composer/index.html[Application Composer] é uma API de teste para o TomEE. É mais rápido inicializar do que o Arquillian. https://site.mockito.org/[Mockito] é uma estrutura de simulação. Ambos serão usados para testar um serviço REST.
+
+== Exemplo
+
+O exemplo de serviço REST é definido pela seguinte classe:
+
+[source,java]
+----
+@Singleton
+@Path("/greeting")
+public class GreetingService {
+
+    @Inject
+    private Messager messager;
+
+    @GET
+    public String message() {
+        return messager.message();
+    }
+}
+----
+
+Um bean, `messenger`, é injetado. Quando um cliente acessa o recurso `GET/greeting`, o conteúdo retornado ao cliente será o resultado da execução do método `messenger.message()`.
+
+A funcionalidade `Messager` é definida por esta interface:
+
+[source,java]
+----
+public interface Messager {
+
+    String message();
+}
+----
+
+== Testando o serviço REST
+
+Para testar este serviço REST, o Application Composer será usado em combinação com o Mockito:
+
+[source,java]
+----
+@RunWith(ApplicationComposer.class)
+public class GreetingServiceTest {
+
+    @Mock
+    private Messager messager;
+
+    @Configuration
+    public Properties configuration() {
+        return new Properties() {{
+            setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, Boolean.TRUE.toString());
+        }};
+    }
+
+    @MockInjector
+    public Class<?> mockitoInjector() {
+        return MockitoInjector.class;
+    }
+
+    @Module
+    public Class<?>[] app() {
+        return new Class<?>[]{GreetingService.class, Messager.class};
+    }
+
+    @Test
+    public void checkMockIsUsed() throws IOException {
+        when(messager.message()).thenReturn("mockito");
+
+        final String message = IO.slurp(new URL("http://localhost:4204/GreetingServiceTest/greeting/"));
+        assertEquals("mockito", message);
+    }
+}
+----
+
+Podemos ver o uso e a configuração do ApplicationComposer. Mais informações podem ser encontradas em http://tomee.apache.org/tomee-8.0/docs/application-composer/index.html[aqui].
+
+Outra anotação interessante é `@MockInjector`. Isso informa ao contêiner iniciado pelo application composer que o Mockito é usado, para que as propriedades simuladas sejam injetadas.
+
+O método de teste substitui o método `messenger.message()`, retornando o valor "mockito". Em seguida, verifica se, acessando `GET greeting`, o conteúdo recuperado é "mockito ".
+
+Exemplo de código completo pode ser encontrado em https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer-mockito[aqui]. É um projeto maven, e os testes podem ser executados pelo comando `mvn clean install`.