marcoantoniobferreira commented on a change in pull request #515: TOMEE-2575 -
translate of examples/cdi-request-scope
URL: https://github.com/apache/tomee/pull/515#discussion_r303286959
##########
File path: examples/cdi-request-scope/README_pt.adoc
##########
@@ -0,0 +1,161 @@
+= CDI @RequestScoped
+:index-group: CDI
+:jbake-type: page
+:jbake-status: published
+
+Este exemplo mostra o uso da anotação `@RequestScoped` para objetos injetados.
Um objeto que é
+definido como `@RequestScoped` é criado uma vez para cada requisição e é
compartilhado por todos os
+beans que o injetam através do mesmo request.
+
+== Exemplo
+
+Este exemplo retrata um cenário similar ao cdi-application-scope. O visitante
de um restaurante
+pede uma sopa ao garçom. O pedido é passado para o chefe que prepara o prato e
o devolve ao garçom
+que entrega para o visitante.
+
+=== Waiter (garçom)
+
+O `Waiter` session bean recebe uma requisição através do método `orderSoup()`
da classe de teste.
+Uma instancia de `Soup` sera criada nesse método e ela sera compartilhada em
toda a requisição com o
+bean `Chef`. O método passa o request para o bean `Chef`. Ele então retorna o
nome da sopa para a
+classe de teste.
+
+....
+@Stateless
+public class Waiter {
+
+ @Inject
+ private Soup soup;
+
+ @EJB
+ private Chef chef;
+
+ public String orderSoup(String name){
+ soup.setName(name);
+ return chef.prepareSoup().getName();
+ }
+}
+....
+
+=== Soup (sopa)
+
+A classe `Soup` é um POJO injetável, definida como `@RequestScoped`. Isso
significa que uma instância
+sera criada apenas uma vez para cada request e sera compartilhada por todos os
beans que a injetam.
+
+....
+@RequestScoped
+public class Soup {
+
+ private String name = "Soup of the day";
+
+ @PostConstruct
+ public void afterCreate() {
+ System.out.println("Soup created");
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name){
+ this.name = name;
+ }
+}
+....
+
+=== Chef
+
+A classe `Chef` é um simples session bean com um campo `Soup` injetado.
Normalmente, o parâmetro soup
+seria passado para o `prepareSoup()` como argumento, mas para as necessidades
deste exemplo será
+passado pelo contexto da requisição.
+
+....
+@Stateless
+public class Chef {
+
+ @Inject
+ private Soup soup;
+
+ public Soup prepareSoup() {
+ return soup;
+ }
+}
+....
+
+== Caso de teste
+
+Esta é a classe de entrada para este exemplo.
+
+....
+public class RestaurantTest {
+
+ private static String TOMATO_SOUP = "Tomato Soup";
+ private EJBContainer container;
+
+ @EJB
+ private Waiter joe;
+
+ @Before
+ public void startContainer() throws Exception {
+ container = EJBContainer.createEJBContainer();
+ container.getContext().bind("inject", this);
+ }
+
+ @Test
+ public void orderSoup(){
+ String soup = joe.orderSoup(TOMATO_SOUP);
+ assertEquals(TOMATO_SOUP, soup);
+ soup = joe.orderSoup(POTATO_SOUP);
+ assertEquals(POTATO_SOUP, soup);
+ }
+
+ @After
+ public void closeContainer() throws Exception {
+ container.close();
+ }
+}
+....
+
+== Executando
+
+Na saida voce pode ver que existem duas instancias de `Soup` criadas - uma
para cada requisição.
Review comment:
the word "voce" is "você", and the word "instancias" = "instâncias"
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services