Commit 024b3776cbf78da6f7557ed0b351adb62ee30a92
1 parent
ff0beac2
Exists in
master
Atualização da documentação de referência, relativa as mudanças do
framework para a versão 2.3.0-RC3.
Showing
17 changed files
with
173 additions
and
96 deletions
Show diff stats
documentation/reference/pt-BR/arquetipo.xml
| ... | ... | @@ -6,9 +6,9 @@ |
| 6 | 6 | <title>Arquétipos</title> |
| 7 | 7 | |
| 8 | 8 | <para> |
| 9 | - Como o projeto Demoiselle recomenda e usa a ferramenta <ulink url="http://maven.apache.org/">Apache-Maven</ulink> , para gerenciamento do ciclo de vida do desenvolvimento | |
| 9 | + O projeto Demoiselle recomenda e usa a ferramenta <ulink url="http://maven.apache.org/">Apache-Maven</ulink> , para gerenciamento do ciclo de vida do desenvolvimento | |
| 10 | 10 | de projeto. Baseada nesta ferramenta, além do fornecimento dos POMs Parentes, também fornece as estruturas chamadas <ulink url="http://maven.apache.org/archetype/maven-archetype-plugin/">arquétipos</ulink> |
| 11 | - para facilitar a criação de aplicações, garantido a estrutura recomendada pelo framework e conceito de gerenciamento do próprio Maven. | |
| 11 | + para facilitar a criação de aplicações, garantido a estrutura recomendada pelo framework e o conceito de gerenciamento do próprio Maven. | |
| 12 | 12 | Atualmente estão disponíveis os seguintes artefatos: |
| 13 | 13 | </para> |
| 14 | 14 | |
| ... | ... | @@ -27,7 +27,7 @@ |
| 27 | 27 | é baseado no Demoiselle-JSF-Parent, |
| 28 | 28 | e que já traz uma estrutura padrão de pacotes e todas |
| 29 | 29 | as dependências necessárias para rodar a aplicação. Ao usar este |
| 30 | - arquétipo, você já terá uma pequena aplicação de | |
| 30 | + arquétipo, você terá uma pequena aplicação de | |
| 31 | 31 | Bookmarks já pronta para rodar. Para isto, basta instalá-la em um |
| 32 | 32 | servidor da sua preferência! Para mais detalhes |
| 33 | 33 | sobre esta aplicação de exemplo e em como usar o arquétipo, acesse | ... | ... |
documentation/reference/pt-BR/arquitetura.xml
| ... | ... | @@ -30,7 +30,9 @@ |
| 30 | 30 | Já os Componentes são artefatos separados e que, portanto, não são dependentes diretamente do Core. Aliás, os |
| 31 | 31 | Componentes podem até mesmo existir sem referenciar o Core. Desta forma, o seu ciclo de vida é totalmente |
| 32 | 32 | independente do Core e Extensões. Um componente não precisa, necessariamente, estender o comportamento do Core, mas |
| 33 | - permitir disponibilizar novas funcionalidades ao usuário. Um exemplo é o <literal>demoiselle-validation</literal>. | |
| 33 | + permitir disponibilizar novas funcionalidades ao usuário. Outra diferença importante é que, diferente de Core e | |
| 34 | + Extensões, os Componentes não necessariamente são aderentes a alguma especificação. Um exemplo é o | |
| 35 | + <literal>demoiselle-validation</literal>. | |
| 34 | 36 | </para> |
| 35 | 37 | </section> |
| 36 | 38 | ... | ... |
documentation/reference/pt-BR/authorgroup.xml
| ... | ... | @@ -8,9 +8,17 @@ |
| 8 | 8 | </author> |
| 9 | 9 | <author> |
| 10 | 10 | <firstname>Emerson</firstname> |
| 11 | + <surname>Oliveira</surname> | |
| 12 | + </author> | |
| 13 | + <author> | |
| 14 | + <firstname>Emerson</firstname> | |
| 11 | 15 | <surname>Saito</surname> |
| 12 | 16 | </author> |
| 13 | 17 | <author> |
| 18 | + <firstname>Luciano</firstname> | |
| 19 | + <surname>Borges</surname> | |
| 20 | + </author> | |
| 21 | + <author> | |
| 14 | 22 | <firstname>Marlon</firstname> |
| 15 | 23 | <surname>Carvalho</surname> |
| 16 | 24 | </author> |
| ... | ... | @@ -34,12 +42,4 @@ |
| 34 | 42 | <firstname>Wilson</firstname> |
| 35 | 43 | <surname>Guimarães</surname> |
| 36 | 44 | </author> |
| 37 | - <author> | |
| 38 | - <firstname>Emerson</firstname> | |
| 39 | - <surname>Oliveira</surname> | |
| 40 | - </author> | |
| 41 | - <author> | |
| 42 | - <firstname>Luciano</firstname> | |
| 43 | - <surname>Borges</surname> | |
| 44 | - </author> | |
| 45 | 45 | </authorgroup> | ... | ... |
documentation/reference/pt-BR/bookinfo.xml
| ... | ... | @@ -3,11 +3,11 @@ |
| 3 | 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []> |
| 4 | 4 | <bookinfo> |
| 5 | 5 | |
| 6 | - <title>Framework Demoiselle 2.2.0</title> | |
| 6 | + <title>Framework Demoiselle 2.3.0</title> | |
| 7 | 7 | <subtitle>Guia de Referência</subtitle> |
| 8 | 8 | |
| 9 | - <abstract>Demoiselle 2.2.0: Framework de Código Aberto para o Desenvolvimento de Aplicações Java EE 6</abstract> | |
| 10 | - <titleabbrev>Demoiselle 2.2.0 - Guia de Referência</titleabbrev> | |
| 9 | + <abstract>Demoiselle 2.3.0: Framework de Código Aberto para o Desenvolvimento de Aplicações Java EE 6</abstract> | |
| 10 | + <titleabbrev>Demoiselle 2.3.0 - Guia de Referência</titleabbrev> | |
| 11 | 11 | |
| 12 | 12 | <xi:include href="revhistory.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> |
| 13 | 13 | <xi:include href="authorgroup.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | ... | ... |
documentation/reference/pt-BR/configuracao.xml
| ... | ... | @@ -46,6 +46,7 @@ |
| 46 | 46 | </para> |
| 47 | 47 | </section> |
| 48 | 48 | |
| 49 | + <!-- | |
| 49 | 50 | <section> |
| 50 | 51 | <title>Configurando</title> |
| 51 | 52 | <para> |
| ... | ... | @@ -64,6 +65,7 @@ |
| 64 | 65 | ]]> |
| 65 | 66 | </programlisting> |
| 66 | 67 | </section> |
| 68 | + --> | |
| 67 | 69 | |
| 68 | 70 | <section> |
| 69 | 71 | <title>As classes de configuração</title> |
| ... | ... | @@ -233,7 +235,8 @@ general.load.initial.data = true |
| 233 | 235 | <para> |
| 234 | 236 | Além de <literal>String</literal> e <literal>boolean</literal>, existe a possibilidade de se recuperar valores de qualquer |
| 235 | 237 | tipo primitivo do Java (i.e., <literal>int, byte, short, char, long, float, double</literal> e <literal>boolean</literal>) |
| 236 | - e também arrays desses tipos. | |
| 238 | + e também arrays desses tipos e de alguns tipos complexos (i.e., <literal>Integer, BigDecimal, BigInteger, Calendar, Date, | |
| 239 | + Color, Locale, URL</literal> e <literal>String</literal>). | |
| 237 | 240 | </para> |
| 238 | 241 | </tip> |
| 239 | 242 | </section> | ... | ... |
documentation/reference/pt-BR/controlador.xml
| ... | ... | @@ -42,7 +42,7 @@ |
| 42 | 42 | public @interface SeuController { |
| 43 | 43 | }]]></programlisting> |
| 44 | 44 | <para> |
| 45 | - Neste exemplo foi criado um controlador chamado <literal>SeuController</literal> quem tem a característica de ter um escopo de | |
| 45 | + Neste exemplo foi criado um controlador chamado <literal>SeuController</literal> que tem a característica de ter um escopo de | |
| 46 | 46 | View. Isto quer dizer que toda classe que seja desse tipo de controlador, também terá o escopo de View. |
| 47 | 47 | </para> |
| 48 | 48 | <!-- TODO: qual a vantagem em se criar um controlador customizado? incluir um exemplo possível e prático de utilização disso --> | ... | ... |
documentation/reference/pt-BR/excecao.xml
| ... | ... | @@ -122,10 +122,10 @@ public class Simples { |
| 122 | 122 | <section> |
| 123 | 123 | <title>Exceção de Aplicação</title> |
| 124 | 124 | <para> |
| 125 | - Imagine que você precise informar que caso um determinado tipo de exceção seja lançado através do seu método, a transação atual sofrerá um <emphasis>rollback</emphasis>. | |
| 126 | - Ou, então, que haja necessidade de informar o grau de severidade da exceção, de forma que uma camada de apresentação específica a trate de forma | |
| 127 | - diferenciada. Estas duas opções são possíveis através do uso da anotação <literal>@ApplicationException</literal>. Utilize-a em suas exceções e informe | |
| 128 | - os atributos <literal>rollback</literal> e <literal>severity</literal> para alcançar os objetivos acima. | |
| 125 | + Imagine que você precise informar que caso um determinado tipo de exceção seja lançado através do seu método, a transação atual sofrerá um | |
| 126 | + <emphasis>rollback</emphasis>. Ou, então, que haja necessidade de informar o grau de severidade da exceção, de forma que uma camada de apresentação | |
| 127 | + específica a trate de forma diferenciada. Estas duas opções são possíveis através do uso da anotação <literal>@ApplicationException</literal>. | |
| 128 | + Utilize-a em suas exceções e informe os atributos <literal>rollback</literal> e <literal>severity</literal> para alcançar os objetivos acima. | |
| 129 | 129 | </para> |
| 130 | 130 | <programlisting role="JAVA"><![CDATA[@ApplicationException(rollback=true, severity=SeverityType.INFO) |
| 131 | 131 | public class MinhaException extends Exception { |
| ... | ... | @@ -141,14 +141,15 @@ public class MinhaException extends Exception { |
| 141 | 141 | <section> |
| 142 | 142 | <title>Tratamento Padrão</title> |
| 143 | 143 | <para> |
| 144 | - As exceções lançadas a partir da camada de negócio, ou de persistência, não causam a interrupção de sua aplicação. Muito menos, apresentam a tela padrão de erro do JSF ou | |
| 145 | - de outra tecnologia de visão. Qualquer exceção lançada, e que chega até a camada de apresentação, recebe um tratamento especial. Inicialmente, ela é encapsulada de forma | |
| 146 | - que possa ser exibida de forma elegante para o usuário. No caso do JSF, é utilizado o mecanismo de Messages próprio desta tecnologia. | |
| 144 | + As exceções lançadas a partir da camada de negócio, ou de persistência, não causam a interrupção de sua aplicação. Muito menos, apresentam a tela | |
| 145 | + padrão de erro do JSF ou de outra tecnologia de visão. Qualquer exceção lançada, e que chega até a camada de apresentação, recebe um tratamento | |
| 146 | + especial. Inicialmente, ela é encapsulada de forma que possa ser exibida de forma elegante para o usuário. No caso do JSF, é utilizado o mecanismo | |
| 147 | + de Messages próprio desta tecnologia. | |
| 147 | 148 | </para> |
| 148 | 149 | <para> |
| 149 | - No caso do Vaadin, o tratamento é bem semelhante, contudo, a exceção é tratada de forma que possa ser exibida adotando os mecanismos próprios da tecnologia. No caso de | |
| 150 | - exceções que não usam a anotação <literal>@ApplicationException</literal>, um <emphasis>rollback</emphasis> é realizado de forma automática. Por último, sem o uso desta | |
| 151 | - anotação, toda exceção é vista como tendo nível de gravidade igual a <literal>ERROR</literal>. | |
| 150 | + No caso do Vaadin, o tratamento é bem semelhante, contudo, a exceção é tratada de forma que possa ser exibida adotando os mecanismos próprios da | |
| 151 | + tecnologia. No caso de exceções que não usam a anotação <literal>@ApplicationException</literal>, um <emphasis>rollback</emphasis> é realizado | |
| 152 | + de forma automática. Por último, sem o uso desta anotação, toda exceção é vista como tendo nível de gravidade igual a <literal>ERROR</literal>. | |
| 152 | 153 | </para> |
| 153 | 154 | </section> |
| 154 | 155 | ... | ... |
documentation/reference/pt-BR/inicializacao.xml
| ... | ... | @@ -36,25 +36,27 @@ |
| 36 | 36 | <para> |
| 37 | 37 | As instruções contidas em um método anotado com <literal>@Startup</literal> serão executadas automaticamente quando a aplicação |
| 38 | 38 | Java for inicializada, seja ela hospedada em um contêiner Web ou executada através de um método <literal>main()</literal>. |
| 39 | - Nenhum outro arquivo ou classe precisa ser definido. A anotação <literal>@Startup</literal> permite a indicação do argumento | |
| 40 | - <literal>priority</literal>, um número inteiro que serve para definir a prioridade de execução do respectivo método na existência | |
| 41 | - de mais de um inicializador para a aplicação. | |
| 39 | + Nenhum outro arquivo ou classe precisa ser definido. A anotação <literal>@Startup</literal> pode ser utilizada em conjunto com a anotação | |
| 40 | + <literal>@Priority</literal>, que recebe como parametro um número inteiro que serve para definir a prioridade de execução do respectivo | |
| 41 | + método, na existência de mais de um inicializador para a aplicação. | |
| 42 | 42 | </para> |
| 43 | 43 | <para> |
| 44 | 44 | De maneira análoga, um método anotado com <literal>@Shutdown</literal> será executado no momento de finalização de uma aplicação, |
| 45 | - obedecendo também à ordem de prioridade definida com o argumento <literal>priority</literal>. | |
| 45 | + obedecendo também à ordem de prioridade definida com a anotação <literal>@Priority</literal>. | |
| 46 | 46 | </para> |
| 47 | 47 | <para> |
| 48 | 48 | Eis um exemplo de implementação de inicializador em uma aplicação: |
| 49 | 49 | </para> |
| 50 | 50 | <programlisting role="JAVA"><![CDATA[public class BookmarkInitializer { |
| 51 | 51 | |
| 52 | - @Startup(priority = 1) | |
| 52 | + @Startup | |
| 53 | + @Priority(1) | |
| 53 | 54 | public void initialize() { |
| 54 | 55 | ... |
| 55 | 56 | } |
| 56 | 57 | |
| 57 | - @Shutdown(priority = 5) | |
| 58 | + @Shutdown | |
| 59 | + @Priority(5) | |
| 58 | 60 | public void finalize() { |
| 59 | 61 | ... |
| 60 | 62 | } |
| ... | ... | @@ -64,7 +66,7 @@ |
| 64 | 66 | <para> |
| 65 | 67 | Para a definição de prioridade de execução de um método na inicialização ou finalização, podem ser |
| 66 | 68 | utilizadas as constantes <literal>MIN_PRIORITY</literal> ou <literal>MAX_PRIORITY</literal> presentes em |
| 67 | - <literal>br.gov.frameworkdemoiselle.annotation.Startup</literal>. | |
| 69 | + <literal>br.gov.frameworkdemoiselle.annotation.Priority</literal>. | |
| 68 | 70 | </para> |
| 69 | 71 | </tip> |
| 70 | 72 | </section> |
| ... | ... | @@ -75,11 +77,11 @@ |
| 75 | 77 | Eis um interessante caso de uso de inicialização e finalização: rodar um servidor de modo standalone em paralelo à |
| 76 | 78 | execução da aplicação principal. Eis o código referente à essa implementação: |
| 77 | 79 | </para> |
| 78 | - <programlisting role="JAVA"><![CDATA[import br.gov.frameworkdemoiselle.annotation.Shutdown; | |
| 79 | -import br.gov.frameworkdemoiselle.annotation.Startup; | |
| 80 | + <programlisting role="JAVA"><![CDATA[import br.gov.frameworkdemoiselle.lifecycle.Shutdown; | |
| 81 | +import br.gov.frameworkdemoiselle.lifecycle.Startup; | |
| 80 | 82 | |
| 81 | -import static br.gov.frameworkdemoiselle.annotation.Startup.MAX_PRIORITY; | |
| 82 | -import static br.gov.frameworkdemoiselle.annotation.Startup.MIN_PRIORITY; | |
| 83 | +import static br.gov.frameworkdemoiselle.annotation.Priority.MAX_PRIORITY; | |
| 84 | +import static br.gov.frameworkdemoiselle.annotation.Priority.MIN_PRIORITY; | |
| 83 | 85 | |
| 84 | 86 | public class DatabaseServer { |
| 85 | 87 | |
| ... | ... | @@ -93,12 +95,14 @@ public class DatabaseServer { |
| 93 | 95 | server.setSilent(true); |
| 94 | 96 | } |
| 95 | 97 | |
| 96 | - @Startup(priority = MAX_PRIORITY) | |
| 98 | + @Startup | |
| 99 | + @Priority(MAX_PRIORITY) | |
| 97 | 100 | public void startup() { |
| 98 | 101 | server.start(); |
| 99 | 102 | } |
| 100 | 103 | |
| 101 | - @Shutdown(priority = MIN_PRIORITY) | |
| 104 | + @Shutdown | |
| 105 | + @Priority (MIN_PRIORITY) | |
| 102 | 106 | public void shutdown() { |
| 103 | 107 | server.stop(); |
| 104 | 108 | } | ... | ... |
documentation/reference/pt-BR/intro.xml
| ... | ... | @@ -18,16 +18,13 @@ |
| 18 | 18 | <para> |
| 19 | 19 | O nome <emphasis>Demoiselle</emphasis> |
| 20 | 20 | é uma homenagem à série de aeroplanos construídos por Santos Dummont entre 1907 e 1909. Também conhecido como |
| 21 | - <emphasis>Libellule</emphasis>, as Demoiselles foram os melhores, | |
| 22 | - menores e mais baratos aviões da sua época. Como sua intenção era popularizar a | |
| 23 | - aviação com fabricação em larga escala, o inventor disponibilizou os planos em revistas técnicas para qualquer pessoa | |
| 24 | - que se interessasse. | |
| 21 | + <emphasis>Libellule</emphasis>, as Demoiselles foram os melhores, menores e mais baratos aviões da sua época. Como | |
| 22 | + sua intenção era popularizar a aviação com fabricação em larga escala, o inventor disponibilizou os planos em revistas | |
| 23 | + técnicas para qualquer pessoa que se interessasse. | |
| 25 | 24 | </para> |
| 26 | 25 | <para> |
| 27 | - O <emphasis>framework Demoiselle</emphasis> | |
| 28 | - usa a mesma filosofia do <quote>Pai da Aviação</quote>, | |
| 29 | - tendo sido disponibilizado como software livre em abril de 2009, sob a | |
| 30 | - licença livre LGPL version 3. Mais informações no portal | |
| 26 | + O <emphasis>framework Demoiselle</emphasis> usa a mesma filosofia do <quote>Pai da Aviação</quote>, tendo sido | |
| 27 | + disponibilizado como software livre em abril de 2009, sob a licença livre LGPL version 3. Mais informações no portal | |
| 31 | 28 | <ulink url="http://www.frameworkdemoiselle.gov.br">"www.frameworkdemoiselle.gov.br</ulink> |
| 32 | 29 | </para> |
| 33 | 30 | </section> | ... | ... |
documentation/reference/pt-BR/master.xml
| ... | ... | @@ -14,7 +14,7 @@ |
| 14 | 14 | </para> |
| 15 | 15 | <note> |
| 16 | 16 | <para> |
| 17 | - Esta documentação refere-se à release 2.2 do <emphasis>Framework Demoiselle</emphasis> | |
| 17 | + Esta documentação refere-se à release 2.3 do <emphasis>Framework Demoiselle</emphasis> | |
| 18 | 18 | e pode diferir significativamente das versões anteriores. |
| 19 | 19 | </para> |
| 20 | 20 | </note> | ... | ... |
documentation/reference/pt-BR/mensagem.xml
| ... | ... | @@ -8,8 +8,8 @@ |
| 8 | 8 | <section> |
| 9 | 9 | <title>Mensagens em uma aplicação</title> |
| 10 | 10 | <para> |
| 11 | - Uma aplicação bem estruturada, seja na plataforma Web ou desktop, deve exibir mensagens informativas, | |
| 12 | - de aviso ou de erro ao usuário após efetuar determinadas tarefas. Por exemplo, após gravar um registro | |
| 11 | + Uma aplicação bem estruturada, seja na plataforma Web ou Desktop, deve exibir mensagens informativas, | |
| 12 | + de aviso, ou de erro para o usuário após efetuar determinadas tarefas. Por exemplo, após gravar um registro | |
| 13 | 13 | no banco de dados, é aconselhável que a aplicação exiba uma mensagem informativa. Se alguma exceção |
| 14 | 14 | ocorreu, é preciso exibir uma mensagem de erro. Ou seja, a severidade da mensagem deve ser escolhida de |
| 15 | 15 | acordo com o resultado da execução. | ... | ... |
documentation/reference/pt-BR/paginacao.xml
| ... | ... | @@ -20,7 +20,7 @@ |
| 20 | 20 | A apresentação de conjuntos de registros de médio a grande porte em formato de tabelas em aplicações Web geralmente requer um |
| 21 | 21 | <emphasis>mecanismo de paginação</emphasis>, o qual permite ao cliente ver apenas um pedaço do resultado final, podendo este |
| 22 | 22 | navegar para frente e para trás através dos registros. A menos que o conjunto de registros seja garantidamente pequeno, qualquer |
| 23 | - aplicação do tipo Web com funcionalidades de busca precisa ser dotada de paginação. | |
| 23 | + aplicação do tipo Web com funcionalidades de busca e/ou listagem de registros, precisa ser dotada de paginação. | |
| 24 | 24 | </para> |
| 25 | 25 | <para> |
| 26 | 26 | O mecanismo de paginação para as aplicações fornecido pelo <emphasis>Demoiselle Framework</emphasis> consiste em um algoritmo | ... | ... |
documentation/reference/pt-BR/parametro.xml
| ... | ... | @@ -43,7 +43,7 @@ |
| 43 | 43 | nome diferente ao objeto, ele pode anotá-lo com <literal>@Name</literal> e no valor dessa anotação, colocar o |
| 44 | 44 | nome do parâmetro. Por default o objeto criado tem o escopo de request, mas é possível usar o escopo de sessão |
| 45 | 45 | ou de visão, bastando anotar o objeto com <literal>@SessionScoped</literal> ou <literal>@ViewScoped</literal>, |
| 46 | - respectivamente. Veja abaixo como ficaria essa passagem de parãmetros na versão 2.X do Demoiselle. | |
| 46 | + respectivamente. Veja abaixo como ficaria essa passagem de parâmetros na versão 2.X do Demoiselle. | |
| 47 | 47 | </para> |
| 48 | 48 | <para> |
| 49 | 49 | Passagem do parâmetro | ... | ... |
documentation/reference/pt-BR/parentsPom.xml
| ... | ... | @@ -32,19 +32,34 @@ Assim, a alteração no POM.XML da aplicação será a minima possível. Outra v |
| 32 | 32 | </section> |
| 33 | 33 | |
| 34 | 34 | <section> |
| 35 | - <title>Demoiselle-WEB-Parent</title> | |
| 35 | + <title>Demoiselle-SE-Parent</title> | |
| 36 | 36 | <para> |
| 37 | - Especialização do POM mínimo, contendo configurações úteis para todas as aplicações JEE6/Web que utilizam o Demoiselle, mas sem a definição de | |
| 38 | - qual camada de apresentação utilizará. | |
| 37 | + Especialização do POM mínimo, contendo configurações úteis para todas as aplicações <!-- SE -->Desktop que utilizam o framework, mas sem definição da | |
| 38 | + camada de apresentação que será utilizada. | |
| 39 | + </para> | |
| 40 | + </section> | |
| 41 | + | |
| 42 | + <section> | |
| 43 | + <title>Demoiselle-Servlet-Parent</title> | |
| 44 | + <para> | |
| 45 | + Especialização do POM mínimo, contendo profiles para Tomcat 6, Tomcat 7, GAE, Glassfish 3, JBoss 6 e JBoss 7, e outras configurações úteis para todas | |
| 46 | + as aplicações JEE6/Web que utilizam o Demoiselle, mas sem a definição de qual camada de apresentação utilizará. Entre as dependências referênciadas | |
| 47 | + por este POM está a extensão Demoiselle-Servlet. | |
| 39 | 48 | </para> |
| 40 | 49 | </section> |
| 41 | 50 | |
| 42 | 51 | <section> |
| 43 | 52 | <title>Demoiselle-JSF-Parent</title> |
| 44 | 53 | <para> |
| 45 | - Especialização do POM demoiselle-web-parent, contendo configurações úteis e necessárias para todas as aplicações que utilizarão a tecnologia JSF2 | |
| 46 | - para camada de apresentação. | |
| 47 | - Entre as dependências referênciadas por este POM está obviamente a extensão Demoiselle-JSF. | |
| 54 | + Especialização do POM demoiselle-servlet-parent, contendo configurações úteis e necessárias para todas as aplicações que utilizarão a tecnologia JSF2 | |
| 55 | + para camada de apresentação. Entre as dependências referênciadas por este POM está obviamente a extensão Demoiselle-JSF. | |
| 56 | + </para> | |
| 57 | + </section> | |
| 58 | + | |
| 59 | + <section> | |
| 60 | + <title>Demoiselle-Archetype-Parent</title> | |
| 61 | + <para> | |
| 62 | + Contém configurações comuns a todos os projetos geradores de arquétipos. | |
| 48 | 63 | </para> |
| 49 | 64 | </section> |
| 50 | 65 | ... | ... |
documentation/reference/pt-BR/properties.xml
| ... | ... | @@ -8,14 +8,14 @@ |
| 8 | 8 | <para> |
| 9 | 9 | Em um projeto com o <emphasis>Demoiselle Framework</emphasis>, algumas propriedades e configurações |
| 10 | 10 | do <emphasis>Framework</emphasis> podem ser ajustadas no arquivo <literal>demoiselle.properties</literal>. |
| 11 | - Além disso, a partir da versão 2.3.0 também é nesse arquivo que devem ser definidas as estratégias de | |
| 12 | - <emphasis>Transação</emphasis>, <emphasis>Autorização</emphasis> e <emphasis>Autenticação</emphasis>. | |
| 11 | + <!--Além disso, a partir da versão 2.3.0 também é nesse arquivo que devem ser definidas as estratégias de | |
| 12 | + <emphasis>Transação</emphasis>, <emphasis>Autorização</emphasis> e <emphasis>Autenticação</emphasis>. | |
| 13 | 13 | </para> |
| 14 | - <para> | |
| 14 | + <para>--> | |
| 15 | 15 | A seguir listamos as propriedades e configurações do <emphasis>Demoiselle Framework</emphasis> que o usuário pode modificar, |
| 16 | - acompanhados de alguns exemplos ilustrativos. Também mostraremos como escolher as estratégias para | |
| 16 | + acompanhados de alguns exemplos ilustrativos. <!-- Também mostraremos como escolher as estratégias para | |
| 17 | 17 | <emphasis>Transação</emphasis>, <emphasis>Autorização</emphasis> e <emphasis>Autenticação</emphasis>, oferecidas pelo |
| 18 | - <emphasis>Demoiselle</emphasis>. | |
| 18 | + <emphasis>Demoiselle</emphasis>. --> | |
| 19 | 19 | </para> |
| 20 | 20 | |
| 21 | 21 | <section> |
| ... | ... | @@ -151,7 +151,7 @@ |
| 151 | 151 | </para> |
| 152 | 152 | </section> |
| 153 | 153 | |
| 154 | - <section> | |
| 154 | + <!-- <section> | |
| 155 | 155 | <title>Escolhendo Estratégias</title> |
| 156 | 156 | <para> |
| 157 | 157 | Para escolher as estratégias de <emphasis>Transação</emphasis>, <emphasis>Autorização</emphasis> e <emphasis>Autenticação</emphasis> |
| ... | ... | @@ -184,5 +184,5 @@ |
| 184 | 184 | As instruções para você construir e utilizar sua própria estratégia estãodescritas nos capítulos <link linkend="transacao">Transação</link> |
| 185 | 185 | e <link linkend="security">Segurança</link>. |
| 186 | 186 | </para> |
| 187 | - </section> | |
| 187 | + </section> --> | |
| 188 | 188 | </chapter> | ... | ... |
documentation/reference/pt-BR/security.xml
| ... | ... | @@ -20,7 +20,7 @@ |
| 20 | 20 | <section> |
| 21 | 21 | <title>Configurando</title> |
| 22 | 22 | <para> |
| 23 | - Para um correto funcionamento do Demoiselle é necessário inserir od interceptadores de segurança no arquivo <filename>src/main/WEB-INF/beans.xml</filename>. | |
| 23 | + Para um correto funcionamento do Demoiselle é necessário inserir os interceptadores de segurança no arquivo <filename>src/main/WEB-INF/beans.xml</filename>. | |
| 24 | 24 | </para> |
| 25 | 25 | <programlisting role="XML"> |
| 26 | 26 | <![CDATA[ |
| ... | ... | @@ -179,10 +179,11 @@ public class Credential { |
| 179 | 179 | Após toda essa explicação, fica a dúvida: como implementar um esquema de segurança sem utilizar a extensão existente? |
| 180 | 180 | </para> |
| 181 | 181 | <para> |
| 182 | - O primeiro passo é criar classes para implementar as interfaces Authenticator e Authorizer. Essas classes devem ser | |
| 183 | - anotadas com @Alternative para que o CDI saiba que se trata de uma estratégia: | |
| 182 | + O primeiro passo é criar classes para implementar as interfaces Authenticator e Authorizer. O <literal>Demoiselle</literal> detecta automaticamente | |
| 183 | + a implementação, e torna essa classe a implementação padrão dessas interfaces:<!-- Essas classes devem ser | |
| 184 | + anotadas com @Alternative para que o CDI saiba que se trata de uma estratégia: --> | |
| 184 | 185 | </para> |
| 185 | - <programlisting role="JAVA"><![CDATA[@Alternative | |
| 186 | + <programlisting role="JAVA"><![CDATA[ | |
| 186 | 187 | public class MeuAuthenticator implements Authenticator { |
| 187 | 188 | |
| 188 | 189 | @Override |
| ... | ... | @@ -204,7 +205,7 @@ public class MeuAuthenticator implements Authenticator { |
| 204 | 205 | } |
| 205 | 206 | |
| 206 | 207 | }]]></programlisting> |
| 207 | - <programlisting role="JAVA"><![CDATA[@Alternative | |
| 208 | + <programlisting role="JAVA"><![CDATA[ | |
| 208 | 209 | public class MeuAuthorizer implements Authorizer { |
| 209 | 210 | |
| 210 | 211 | @Override |
| ... | ... | @@ -220,19 +221,30 @@ public class MeuAuthorizer implements Authorizer { |
| 220 | 221 | } |
| 221 | 222 | |
| 222 | 223 | }]]></programlisting> |
| 223 | - <para> | |
| 224 | + <!-- <para> | |
| 224 | 225 | Feito isso deve-se definir no arquivo <filename>demoiselle.properties</filename>, as classes criadas: |
| 225 | 226 | </para> |
| 226 | 227 | <programlisting> |
| 227 | 228 | frameworkdemoiselle.security.authenticator.class=projeto.MeuAuthenticator |
| 228 | 229 | frameworkdemoiselle.security.authorizer.class=projeto.MeuAuthorizer |
| 229 | - </programlisting> | |
| 230 | + </programlisting> --> | |
| 230 | 231 | <para> |
| 231 | - À partir desse momento, a aplicação já possui uma implementação de segurança definida. | |
| 232 | + Pronto! Sua aplicação já possui uma implementação de segurança definida. Caso sua ela não implemente essas interfaces, no momento em que | |
| 233 | + forem chamadas, o framework lançará uma exceção informando que a aplicação precisa implementá-las. | |
| 232 | 234 | </para> |
| 235 | + <para> | |
| 236 | + Se você tem mais de uma implementação de <literal>Authenticator</literal> e/ou <literal>Authorizer</literal> (o que pode acontecer, por exemplo, quando | |
| 237 | + se necessite de uma implementação na aplicação principal, e outra para os testes), deverá definir no arquivo <filename>demoiselle.properties</filename> | |
| 238 | + qual classe será a padrão: | |
| 239 | + <programlisting> | |
| 240 | + frameworkdemoiselle.security.authenticator.class=projeto.MeuAuthenticatorPadrao | |
| 241 | + frameworkdemoiselle.security.authorizer.class=projeto.MeuAuthorizerPadrao | |
| 242 | + </programlisting> | |
| 243 | + </para> | |
| 233 | 244 | </section> |
| 234 | - <caution> <para>O Demoiselle também oferece o componente <ulink url="http://demoiselle.sourceforge.net/docs/demoiselle-guide-components/1.2.0/html/authorization-master.html">Authorization</ulink> | |
| 235 | - que facilita o uso de segurança com JAAS. Obviamente, não é possível utilizá-los ao mesmo tempo. Há arquétipos Maven que já trazem esse componente como dependência, por isso sempre confira o arquivo | |
| 236 | - POM.XML e se for o caso retire esse dependência.</para> </caution> | |
| 245 | + <caution> <para>O Demoiselle também oferece o componente | |
| 246 | + <ulink url="http://demoiselle.sourceforge.net/docs/demoiselle-guide-components/1.2.0/html/authorization-master.html">Authorization</ulink> | |
| 247 | + que facilita o uso de segurança com JAAS. Obviamente, não é possível utilizá-los ao mesmo tempo. Há arquétipos Maven que já trazem esse componente | |
| 248 | + como dependência, por isso sempre confira o arquivo POM.XML e se for o caso retire essa dependência.</para> </caution> | |
| 237 | 249 | |
| 238 | 250 | </chapter> |
| 239 | 251 | \ No newline at end of file | ... | ... |
documentation/reference/pt-BR/transacao.xml
| ... | ... | @@ -6,8 +6,8 @@ |
| 6 | 6 | <title>Transação</title> |
| 7 | 7 | |
| 8 | 8 | <para> |
| 9 | - Esta funcionalidade utiliza os recursos do CDI para interceptar e delegar o tratamento adequado das transações | |
| 10 | - para quem é de direito. Em outras palavras, não reinventamos a roda. Criamos algumas estratégias de delegação e | |
| 9 | + Esta funcionalidade utiliza os recursos do CDI para interceptar e delegar adequadamente o tratamento das transações. | |
| 10 | + Em outras palavras, não reinventamos a roda. Criamos algumas estratégias de delegação e | |
| 11 | 11 | controle de transação com base no que está sendo mais utilizado no mercado, algumas mais simples de configurar, |
| 12 | 12 | outras mais completas para utilizar. |
| 13 | 13 | </para> |
| ... | ... | @@ -74,7 +74,7 @@ public class Simples { |
| 74 | 74 | <title>E se acontecer uma Exception?</title> |
| 75 | 75 | <para> |
| 76 | 76 | Caso ocorra uma exceção na execução de um método transacional o mecanismo fará rollback na transação |
| 77 | - automaticamente. É possível mudar este comportamento utilizando exceções de aplicação. | |
| 77 | + automaticamente. É possível mudar este comportamento utilizando exceções de aplicação (para maiores detalhes ver <link linkend="excecao">Exceção</link>). | |
| 78 | 78 | </para> |
| 79 | 79 | <programlisting role="JAVA"><![CDATA[@ApplicationException(rollback = false) |
| 80 | 80 | public class AbacaxiException { |
| ... | ... | @@ -103,7 +103,12 @@ public class AbacaxiException { |
| 103 | 103 | </para> |
| 104 | 104 | <para> |
| 105 | 105 | Você pode optar também por não utilizar controle de transação. Neste caso, basta não utilizar a anotação <literal>@Transactional</literal>. Contudo, |
| 106 | - caso você a utilize e não defina qual estratégia deseja utilizar, o framework lançará uma exceção lhe avisando sobre isto! | |
| 106 | + caso você a utilize, você poderá escolher entre as estratégias JPA, JTA (ambas fornecidas pelo <literal>Framework</literal>) e uma estratégia que você | |
| 107 | + pode criar ou importar para seu projeto. | |
| 108 | + </para> | |
| 109 | + <para> | |
| 110 | + A forma de selecionar cada uma dessas estratégias é descrita abaixo. Caso tente utilizar o controle de transação e não selecione nenhuma estratégia, | |
| 111 | + o framework lançará uma exceção lhe avisando sobre isto! | |
| 107 | 112 | </para> |
| 108 | 113 | </section> |
| 109 | 114 | |
| ... | ... | @@ -118,11 +123,16 @@ public class AbacaxiException { |
| 118 | 123 | </para> |
| 119 | 124 | <para> |
| 120 | 125 | A transação JPA é simples de configurar e não exige nenhum recurso externo à sua aplicação. |
| 121 | - Basta definir no arquivo <filename>demoiselle.properties</filename> a seguinte configuração: | |
| 126 | + Para utilizá-la basta que seu projeto adicione no arquivo POM.XML dependência à extensão <literal>demoiselle-jpa</literal>, que o | |
| 127 | + Demoiselle fará a seleção por essa estratégia de forma automática. | |
| 128 | +<!-- Basta definir no arquivo <filename>demoiselle.properties</filename> a seguinte configuração: --> | |
| 122 | 129 | </para> |
| 130 | + | |
| 131 | + <!-- | |
| 123 | 132 | <programlisting> |
| 124 | 133 | frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JPATransaction |
| 125 | 134 | </programlisting> |
| 135 | + --> | |
| 126 | 136 | <tip><para> Caso não esteja utilizando o arquétipo JSF-JPA fornecidos pelo Demoiselle, confira se a dependência para a |
| 127 | 137 | extensão está indicada corretamente no arquivo POM.XML.</para> |
| 128 | 138 | <programlisting role="XML"><![CDATA[<dependency> |
| ... | ... | @@ -135,17 +145,24 @@ public class AbacaxiException { |
| 135 | 145 | <section> |
| 136 | 146 | <title>Estratégia JTA</title> |
| 137 | 147 | <para> |
| 138 | - Esta estratégia, também está disponível através de uma extensão: <literal>demoiselle-jta</literal> e é | |
| 148 | + Esta estratégia, também está disponível através de uma extensão (<literal>demoiselle-jta</literal>), e é | |
| 139 | 149 | responsável por delegar o controle de transação para um container JEE. Com a <literal>JTATransaction</literal> |
| 140 | 150 | é possível incluir várias unidades de persistência de uma mesma aplicação no mesmo contexto transacional. |
| 141 | 151 | Isso mesmo, o famoso <emphasis>Two-Phase Commit (2PC)</emphasis>. |
| 142 | 152 | </para> |
| 143 | 153 | <para> |
| 144 | 154 | A estratégia JTA não serve apenas para persistência em banco de dados, serve também para integrar com |
| 145 | - tecnologias que façam acesso ao contexto JTA, como é o caso do EJB. Para ativar esta estratégia defina no | |
| 155 | + tecnologias que façam acesso ao contexto JTA, como é o caso do EJB. Para ativar esta estratégia basta | |
| 156 | + que seu projeto adicione no arquivo POM.XML a dependência à extensão <literal>demoiselle-jta</literal>, que o | |
| 157 | + Demoiselle fará a seleção por essa estratégia de forma automática, pois essa estratégia tem prioridade em relação | |
| 158 | + a estratégia JPA. | |
| 159 | + </para> | |
| 160 | + <!-- | |
| 161 | + defina no | |
| 146 | 162 | arquivo <filename>demoiselle.properties</filename> a seguinte configuração: |
| 147 | 163 | </para> |
| 148 | 164 | <programlisting>frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JTATransaction</programlisting> |
| 165 | + --> | |
| 149 | 166 | <para> |
| 150 | 167 | Feito isto, o controle transacional será delegado para a transação acessível via JNDI com o nome |
| 151 | 168 | <literal>UserTransaction</literal>. A estratégia acessa o objeto da seguinte maneira: |
| ... | ... | @@ -156,14 +173,15 @@ public class AbacaxiException { |
| 156 | 173 | É preciso também informar no arquivo <filename>persistence.xml</filename> o endereço da conexão |
| 157 | 174 | JTA gerenciada. Veja um exemplo utilizando o servidor de aplicações JBoss-AS6 e com o provider Hibernate (embutido no JBoss-AS) como implementação JPA: |
| 158 | 175 | </para> |
| 159 | - <programlisting role="XML"><![CDATA[<?xml version="1.0" encoding="UTF-8"?> | |
| 160 | -<persistence version="2.0" | |
| 176 | + <programlisting role="XML"><![CDATA[ | |
| 177 | + <?xml version="1.0" encoding="UTF-8"?> | |
| 178 | + <persistence version="2.0" | |
| 161 | 179 | xmlns="http://java.sun.com/xml/ns/persistence" |
| 162 | 180 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| 163 | 181 | xsi:schemaLocation="http://java.sun.com/xml/ns/persistence |
| 164 | 182 | http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> |
| 165 | 183 | |
| 166 | - <persistence-unit name="bookmark-ds" transaction-type="JTA"> | |
| 184 | + <persistence-unit name="bookmark-ds" transaction-type="JTA"> | |
| 167 | 185 | <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source> |
| 168 | 186 | <properties> |
| 169 | 187 | <property name="hibernate.show_sql" value="true" /> |
| ... | ... | @@ -172,12 +190,13 @@ public class AbacaxiException { |
| 172 | 190 | <property name="hibernate.transaction.jta.platform" |
| 173 | 191 | value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" /> |
| 174 | 192 | </properties> |
| 175 | - </persistence-unit> | |
| 176 | -</persistence>]]></programlisting> | |
| 193 | + </persistence-unit> | |
| 194 | + </persistence>]]></programlisting> | |
| 177 | 195 | |
| 178 | 196 | <tip><para> Caso não esteja utilizando o arquétipo JSF-JPA fornecidos pelo Demoiselle, confira se a dependência para a |
| 179 | 197 | extensão está indicada corretamente, no arquivo POM.XML.</para> |
| 180 | - <programlisting role="XML"><![CDATA[<dependency> | |
| 198 | + <programlisting role="XML"><![CDATA[ | |
| 199 | + <dependency> | |
| 181 | 200 | <groupId>br.gov.frameworkdemoiselle</groupId> |
| 182 | 201 | <artifactId>demoiselle-jta</artifactId> |
| 183 | 202 | <scope>compile</scope> |
| ... | ... | @@ -190,19 +209,19 @@ public class AbacaxiException { |
| 190 | 209 | <para> |
| 191 | 210 | Caso nenhuma das estratégias oferecidas sirva para você, crie a sua. Basta escrever uma |
| 192 | 211 | classe não-final que implemente a interface <literal>Transaction</literal> do pacote |
| 193 | - <literal>br.gov.frameworkdemoiselle.transaction</literal>. Anote a classe com | |
| 212 | + <literal>br.gov.frameworkdemoiselle.transaction</literal>. <!--Anote a classe com | |
| 194 | 213 | <literal>@SessionScoped</literal> e <literal>@Alternative</literal> para que o CDI saiba |
| 195 | - que se trata de uma estratégia. É preciso que sua classe não possua construtores explícitos ou | |
| 214 | + que se trata de uma estratégia.-->É preciso que sua classe não possua construtores explícitos ou | |
| 196 | 215 | que possua um construtor público sem parâmetros. É possível fazer injeções nesta classe. |
| 197 | 216 | </para> |
| 217 | + <!-- import javax.enterprise.context.SessionScoped; | |
| 218 | + import javax.enterprise.inject.Alternative; | |
| 219 | + @Alternative | |
| 220 | + @SessionScoped --> | |
| 198 | 221 | <programlisting role="JAVA"><![CDATA[package projeto; |
| 199 | 222 | |
| 200 | -import javax.enterprise.context.SessionScoped; | |
| 201 | -import javax.enterprise.inject.Alternative; | |
| 202 | 223 | import br.gov.frameworkdemoiselle.transaction.Transaction; |
| 203 | 224 | |
| 204 | -@Alternative | |
| 205 | -@SessionScoped | |
| 206 | 225 | public class MegaTransaction implements Transaction { |
| 207 | 226 | |
| 208 | 227 | public void begin() { } |
| ... | ... | @@ -224,10 +243,34 @@ public class MegaTransaction implements Transaction { |
| 224 | 243 | } |
| 225 | 244 | ]]></programlisting> |
| 226 | 245 | <para> |
| 246 | + Pronto, é só isso! Agora, os métodos anotados com <literal>@Transactional</literal> irão utilizar a estratégia criada em seu projeto de forma automática, | |
| 247 | + mesmo que as extensões <literal>demoiselle-jpa</literal> e <literal>demoiselle-jta</literal> sejam adicionadas ao projeto, pois o framework da prioridade | |
| 248 | + máxima à estratégia criada no projeto. | |
| 249 | + </para> | |
| 250 | +<!-- <para> | |
| 227 | 251 | Basta agora definir no arquivo <filename>demoiselle.properties</filename> a sua estratégia: |
| 228 | 252 | </para> |
| 229 | 253 | <programlisting> |
| 230 | 254 | frameworkdemoiselle.transaction.class=projeto.MegaTransaction |
| 255 | + </programlisting>--> | |
| 256 | + </section> | |
| 257 | + | |
| 258 | + <section> | |
| 259 | + <title>Escolhendo estratégias manualmente</title> | |
| 260 | + <para> | |
| 261 | + Existem alguns casos nos quais você vai ter que definir a estratégia manualmente. Um exemplo é quando seu projeto implementa mais do que uma estratégia | |
| 262 | + de transação. Outra situação pode acontecer em casos de teste, nos quais você queira utilizar estratégia diferente. Nesses casos você deve definir no | |
| 263 | + arquivo <filename>demoiselle.properties</filename> qual estratégia será utilizada. Veja alguns exemplos de definição de estratégias própria, | |
| 264 | + <literal>JTATransaction</literal> e <literal>JPATransaction</literal> (importante notar que apenas uma estratégia pode estar ativa por vez): | |
| 265 | + </para> | |
| 266 | + <programlisting> | |
| 267 | + frameworkdemoiselle.transaction.class=projeto.MyTransaction | |
| 268 | + </programlisting> | |
| 269 | + <programlisting> | |
| 270 | + frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JTATransaction | |
| 271 | + </programlisting> | |
| 272 | + <programlisting> | |
| 273 | + frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JPATransaction | |
| 231 | 274 | </programlisting> |
| 232 | 275 | </section> |
| 233 | 276 | ... | ... |