gabrielferreirapro commented on a change in pull request #502: 
TOMEE-2558-Translate to portuguese to applicationcomposer-jaxws-cdi
URL: https://github.com/apache/tomee/pull/502#discussion_r301996454
 
 

 ##########
 File path: examples/applicationcomposer-jaxws-cdi/README_pt.adoc
 ##########
 @@ -0,0 +1,233 @@
+= Application Composer com JAX-WS and CDI
+:index-group: Testing Techniques
+:jbake-type: page
+:jbake-status: published
+
+
+Application Composer é uma API para criar uma aplicação EE programaticamente. 
Ísto é muito útil em um contexto de texto, por isso não é de admirar que se 
originou a partir daqui.
+Para mais informação sobre o Application Composer, por favor acessar o link 
http://tomee.apache.org/tomee-8.0/docs/application-composer/index.html[Seção do 
Compositor de Aplicativos na documentação].
+
+Neste exemplo, vamos usar o `@ApplicationComposer` no contexto de uma 
aplicação JAX-WS .
+
+== Exemplo
+
+Este exemplo é uma aplicação de planejamemento de reuniões . É um aplicativo 
JAX-WS e aceita solicitações de reunião de reserva recebidas.. A aplicação 
primeiro verifica se a requisão pode ser reservada, se possivel, ele é 
reservada 
+e retorna para o chamador se o pedido foi reservado (um valor booleano). Este 
é um simples, aplicação demo propósta, então é muito simplificado. Uma 
solicitação de livro é representada apenas pela data de início da reunião (um 
valor `java.util.Date`).
+Uma solicitação de livro pode ser reservada se começar após a data atual.
+
+A logica de negócio é implementada usando uma classe `MeetingPlannerImpl` 
(implementando` MeetingPlanner`). Esta classe é um serviço JAX-WS, expondo o 
seguinte método: `boolean book (final Date date)`.
+O cliente vai enviar uma requisão, contendo uma data; o serviço vai retornar 
true ou false, se o pedido pode ser reservado. O serviço JAX-WS exposto usa, 
além disso, uma característica diferente, CDI, injetar um
+classe de serviço de lógica de negócios, verificando se a solicitação pode ser 
reservada. Então, quando chegar a hora de testar a anotação `@ 
ApplicationComposer`, verificaremos se o CDI funcionou em nossa programação
+aplicativo iniciado e que o serviço JAX-WS está em execução.
+
+A lógica de negócios que verifica se uma solicitação é registrável é definida 
pela seguinte interface:
+
+....
+import java.util.Date;
+
+public interface Agenda {
+    boolean isBookable(Date d);
+}
+....
+
+A implementação é simples, sem entrar detalhes:
+
+....
+import java.util.Date;
+
+public class LazyAgenda implements Agenda {
+    @Override
+    public boolean isBookable(final Date d) {
+        return d.after(new Date());
+    }
+}
+....
+
+O serviço JAX-WS é definida pela seguinte interface:
+
+....
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import java.util.Date;
+
+@WebService
+public interface MeetingPlanner {
+
+    @WebMethod(operationName = "book", exclude = false)
+    boolean book(final Date date);
+}
+....
+
+A classe que implementa essa interface é:
+
+....
+import javax.inject.Inject;
+import javax.jws.WebService;
+import java.util.Date;
+
+@WebService
+public class MeetingPlannerImpl implements MeetingPlanner {
+    @Inject
+    private Agenda agenda;
+
+    @Override
+    public boolean book(final Date date) {
+        return agenda.isBookable(date);
+    }
+}
+....
+
+== Usando o Application Composer
+
+Agora, que a aplicação está completa, é hora de testá-lo. Pra isto, iremos 
adcionar um teste unitario que via usar o Application Composer para iniciar e 
fazer deploy da nossa aplicação em um ambiente Java EE Full .
+
+O teste completo:
+
+....
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.Configuration;
+import org.apache.openejb.testing.EnableServices;
+import org.apache.openejb.testing.Module;
+import org.apache.openejb.testng.PropertiesBuilder;
+import org.apache.openejb.util.NetworkUtil;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+import java.net.URL;
+import java.util.Date;
+import java.util.Properties;
+
+import static org.junit.Assert.assertTrue;
+
+@EnableServices("jax-ws")
+@RunWith(ApplicationComposer.class)
+public class MeetingPlannerTest {
+    private static final int JAX_WS_PORT = NetworkUtil.getNextAvailablePort();
+
+    @Configuration
+    public Properties configuration() {
+        return new PropertiesBuilder().p("httpejbd.port", 
Integer.toString(JAX_WS_PORT)).build();
+    }
+
+    @Module
+    @Classes(cdi = true, value = {MeetingPlannerImpl.class, LazyAgenda.class})
+    public WebApp war() {
+        return new WebApp()
+                .contextRoot("/demo")
+                .addServlet("jaxws", MeetingPlannerImpl.class.getName(), 
"/meeting-planner");
+    }
+
+    @Test
+    public void bookPort() throws Exception {
+        final Service service = Service.create(
+                new URL("http://127.0.0.1:"; + JAX_WS_PORT + 
"/demo/meeting-planner?wsdl"),
+                new QName("http://jaxws.example.superbiz.org/";, 
"MeetingPlannerImplService"));
+        final MeetingPlanner planner = service.getPort(MeetingPlanner.class);
+        assertTrue(planner.book(new Date(System.currentTimeMillis() + 
1000000)));
+    }
+}
+....
+
+Primeira coisa a ver, nós usamos o  Application Composer como executor JUnit. 
Então, Nosso teste se integra com as ferramentas atuais, assim como qualquer 
outro teste JUnit. A configuração do teste é definida no método anotado com `@ 
Configuration`.
 
 Review comment:
   "Primeira coisa a ver" poderia ser "A primeira coisa que podemos notar é que"

----------------------------------------------------------------
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

Reply via email to