diff --git a/documentation/reference/pt-BR/arquetipo.xml b/documentation/reference/pt-BR/arquetipo.xml index 1c64289..6664e55 100644 --- a/documentation/reference/pt-BR/arquetipo.xml +++ b/documentation/reference/pt-BR/arquetipo.xml @@ -6,9 +6,9 @@ Arquétipos - Como o projeto Demoiselle recomenda e usa a ferramenta Apache-Maven , para gerenciamento do ciclo de vida do desenvolvimento + O projeto Demoiselle recomenda e usa a ferramenta Apache-Maven , para gerenciamento do ciclo de vida do desenvolvimento de projeto. Baseada nesta ferramenta, além do fornecimento dos POMs Parentes, também fornece as estruturas chamadas arquétipos - para facilitar a criação de aplicações, garantido a estrutura recomendada pelo framework e conceito de gerenciamento do próprio Maven. + para facilitar a criação de aplicações, garantido a estrutura recomendada pelo framework e o conceito de gerenciamento do próprio Maven. Atualmente estão disponíveis os seguintes artefatos: @@ -27,7 +27,7 @@ é baseado no Demoiselle-JSF-Parent, e que já traz uma estrutura padrão de pacotes e todas as dependências necessárias para rodar a aplicação. Ao usar este - arquétipo, você já terá uma pequena aplicação de + arquétipo, você terá uma pequena aplicação de Bookmarks já pronta para rodar. Para isto, basta instalá-la em um servidor da sua preferência! Para mais detalhes sobre esta aplicação de exemplo e em como usar o arquétipo, acesse diff --git a/documentation/reference/pt-BR/arquitetura.xml b/documentation/reference/pt-BR/arquitetura.xml index eb3ed56..1d8be75 100644 --- a/documentation/reference/pt-BR/arquitetura.xml +++ b/documentation/reference/pt-BR/arquitetura.xml @@ -30,7 +30,9 @@ Já os Componentes são artefatos separados e que, portanto, não são dependentes diretamente do Core. Aliás, os Componentes podem até mesmo existir sem referenciar o Core. Desta forma, o seu ciclo de vida é totalmente independente do Core e Extensões. Um componente não precisa, necessariamente, estender o comportamento do Core, mas - permitir disponibilizar novas funcionalidades ao usuário. Um exemplo é o demoiselle-validation. + permitir disponibilizar novas funcionalidades ao usuário. Outra diferença importante é que, diferente de Core e + Extensões, os Componentes não necessariamente são aderentes a alguma especificação. Um exemplo é o + demoiselle-validation. diff --git a/documentation/reference/pt-BR/authorgroup.xml b/documentation/reference/pt-BR/authorgroup.xml index 523d65e..6d4487e 100644 --- a/documentation/reference/pt-BR/authorgroup.xml +++ b/documentation/reference/pt-BR/authorgroup.xml @@ -8,9 +8,17 @@ Emerson + Oliveira + + + Emerson Saito + Luciano + Borges + + Marlon Carvalho @@ -34,12 +42,4 @@ Wilson Guimarães - - Emerson - Oliveira - - - Luciano - Borges - diff --git a/documentation/reference/pt-BR/bookinfo.xml b/documentation/reference/pt-BR/bookinfo.xml index 2704de4..de1ebdb 100644 --- a/documentation/reference/pt-BR/bookinfo.xml +++ b/documentation/reference/pt-BR/bookinfo.xml @@ -3,11 +3,11 @@ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []> - Framework Demoiselle 2.2.0 + Framework Demoiselle 2.3.0 Guia de Referência - Demoiselle 2.2.0: Framework de Código Aberto para o Desenvolvimento de Aplicações Java EE 6 - Demoiselle 2.2.0 - Guia de Referência + Demoiselle 2.3.0: Framework de Código Aberto para o Desenvolvimento de Aplicações Java EE 6 + Demoiselle 2.3.0 - Guia de Referência diff --git a/documentation/reference/pt-BR/configuracao.xml b/documentation/reference/pt-BR/configuracao.xml index d612668..1bd62ca 100644 --- a/documentation/reference/pt-BR/configuracao.xml +++ b/documentation/reference/pt-BR/configuracao.xml @@ -46,6 +46,7 @@ +
As classes de configuração @@ -233,7 +235,8 @@ general.load.initial.data = true Além de String e boolean, existe a possibilidade de se recuperar valores de qualquer tipo primitivo do Java (i.e., int, byte, short, char, long, float, double e boolean) - e também arrays desses tipos. + e também arrays desses tipos e de alguns tipos complexos (i.e., Integer, BigDecimal, BigInteger, Calendar, Date, + Color, Locale, URL e String).
diff --git a/documentation/reference/pt-BR/controlador.xml b/documentation/reference/pt-BR/controlador.xml index c239cd3..39193d2 100644 --- a/documentation/reference/pt-BR/controlador.xml +++ b/documentation/reference/pt-BR/controlador.xml @@ -42,7 +42,7 @@ public @interface SeuController { }]]> - Neste exemplo foi criado um controlador chamado SeuController quem tem a característica de ter um escopo de + Neste exemplo foi criado um controlador chamado SeuController que tem a característica de ter um escopo de View. Isto quer dizer que toda classe que seja desse tipo de controlador, também terá o escopo de View. diff --git a/documentation/reference/pt-BR/excecao.xml b/documentation/reference/pt-BR/excecao.xml index 54c7712..ab0cf9d 100644 --- a/documentation/reference/pt-BR/excecao.xml +++ b/documentation/reference/pt-BR/excecao.xml @@ -122,10 +122,10 @@ public class Simples {
Exceção de Aplicação - 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 rollback. - 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 - diferenciada. Estas duas opções são possíveis através do uso da anotação @ApplicationException. Utilize-a em suas exceções e informe - os atributos rollback e severity para alcançar os objetivos acima. + 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 + rollback. 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 diferenciada. Estas duas opções são possíveis através do uso da anotação @ApplicationException. + Utilize-a em suas exceções e informe os atributos rollback e severity para alcançar os objetivos acima. Tratamento Padrão - 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 - 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 - que possa ser exibida de forma elegante para o usuário. No caso do JSF, é utilizado o mecanismo de Messages próprio desta tecnologia. + 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 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 que possa ser exibida de forma elegante para o usuário. No caso do JSF, é utilizado o mecanismo + de Messages próprio desta tecnologia. - 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 - exceções que não usam a anotação @ApplicationException, um rollback é realizado de forma automática. Por último, sem o uso desta - anotação, toda exceção é vista como tendo nível de gravidade igual a ERROR. + 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 exceções que não usam a anotação @ApplicationException, um rollback é realizado + de forma automática. Por último, sem o uso desta anotação, toda exceção é vista como tendo nível de gravidade igual a ERROR.
diff --git a/documentation/reference/pt-BR/inicializacao.xml b/documentation/reference/pt-BR/inicializacao.xml index 66ec8ad..a8cd6ad 100644 --- a/documentation/reference/pt-BR/inicializacao.xml +++ b/documentation/reference/pt-BR/inicializacao.xml @@ -36,25 +36,27 @@ As instruções contidas em um método anotado com @Startup serão executadas automaticamente quando a aplicação Java for inicializada, seja ela hospedada em um contêiner Web ou executada através de um método main(). - Nenhum outro arquivo ou classe precisa ser definido. A anotação @Startup permite a indicação do argumento - priority, um número inteiro que serve para definir a prioridade de execução do respectivo método na existência - de mais de um inicializador para a aplicação. + Nenhum outro arquivo ou classe precisa ser definido. A anotação @Startup pode ser utilizada em conjunto com a anotação + @Priority, que recebe como parametro um número inteiro que serve para definir a prioridade de execução do respectivo + método, na existência de mais de um inicializador para a aplicação. De maneira análoga, um método anotado com @Shutdown será executado no momento de finalização de uma aplicação, - obedecendo também à ordem de prioridade definida com o argumento priority. + obedecendo também à ordem de prioridade definida com a anotação @Priority. Eis um exemplo de implementação de inicializador em uma aplicação: Para a definição de prioridade de execução de um método na inicialização ou finalização, podem ser utilizadas as constantes MIN_PRIORITY ou MAX_PRIORITY presentes em - br.gov.frameworkdemoiselle.annotation.Startup. + br.gov.frameworkdemoiselle.annotation.Priority. @@ -75,11 +77,11 @@ Eis um interessante caso de uso de inicialização e finalização: rodar um servidor de modo standalone em paralelo à execução da aplicação principal. Eis o código referente à essa implementação: - O nome Demoiselle é uma homenagem à série de aeroplanos construídos por Santos Dummont entre 1907 e 1909. Também conhecido como - Libellule, as Demoiselles foram os melhores, - menores e mais baratos aviões da sua época. Como sua intenção era popularizar a - aviação com fabricação em larga escala, o inventor disponibilizou os planos em revistas técnicas para qualquer pessoa - que se interessasse. + Libellule, as Demoiselles foram os melhores, menores e mais baratos aviões da sua época. Como + sua intenção era popularizar a aviação com fabricação em larga escala, o inventor disponibilizou os planos em revistas + técnicas para qualquer pessoa que se interessasse. - O framework Demoiselle - usa a mesma filosofia do Pai da Aviação, - tendo sido disponibilizado como software livre em abril de 2009, sob a - licença livre LGPL version 3. Mais informações no portal + O framework Demoiselle usa a mesma filosofia do Pai da Aviação, tendo sido + disponibilizado como software livre em abril de 2009, sob a licença livre LGPL version 3. Mais informações no portal "www.frameworkdemoiselle.gov.br diff --git a/documentation/reference/pt-BR/master.xml b/documentation/reference/pt-BR/master.xml index c25dce9..b745f3f 100644 --- a/documentation/reference/pt-BR/master.xml +++ b/documentation/reference/pt-BR/master.xml @@ -14,7 +14,7 @@ - Esta documentação refere-se à release 2.2 do Framework Demoiselle + Esta documentação refere-se à release 2.3 do Framework Demoiselle e pode diferir significativamente das versões anteriores. diff --git a/documentation/reference/pt-BR/mensagem.xml b/documentation/reference/pt-BR/mensagem.xml index 4b53e7f..346b9ce 100644 --- a/documentation/reference/pt-BR/mensagem.xml +++ b/documentation/reference/pt-BR/mensagem.xml @@ -8,8 +8,8 @@
Mensagens em uma aplicação - Uma aplicação bem estruturada, seja na plataforma Web ou desktop, deve exibir mensagens informativas, - de aviso ou de erro ao usuário após efetuar determinadas tarefas. Por exemplo, após gravar um registro + Uma aplicação bem estruturada, seja na plataforma Web ou Desktop, deve exibir mensagens informativas, + de aviso, ou de erro para o usuário após efetuar determinadas tarefas. Por exemplo, após gravar um registro no banco de dados, é aconselhável que a aplicação exiba uma mensagem informativa. Se alguma exceção ocorreu, é preciso exibir uma mensagem de erro. Ou seja, a severidade da mensagem deve ser escolhida de acordo com o resultado da execução. diff --git a/documentation/reference/pt-BR/paginacao.xml b/documentation/reference/pt-BR/paginacao.xml index 74c69f5..0f520fa 100644 --- a/documentation/reference/pt-BR/paginacao.xml +++ b/documentation/reference/pt-BR/paginacao.xml @@ -20,7 +20,7 @@ A apresentação de conjuntos de registros de médio a grande porte em formato de tabelas em aplicações Web geralmente requer um mecanismo de paginação, o qual permite ao cliente ver apenas um pedaço do resultado final, podendo este navegar para frente e para trás através dos registros. A menos que o conjunto de registros seja garantidamente pequeno, qualquer - aplicação do tipo Web com funcionalidades de busca precisa ser dotada de paginação. + aplicação do tipo Web com funcionalidades de busca e/ou listagem de registros, precisa ser dotada de paginação. O mecanismo de paginação para as aplicações fornecido pelo Demoiselle Framework consiste em um algoritmo diff --git a/documentation/reference/pt-BR/parametro.xml b/documentation/reference/pt-BR/parametro.xml index 66dec3d..8d4b820 100644 --- a/documentation/reference/pt-BR/parametro.xml +++ b/documentation/reference/pt-BR/parametro.xml @@ -43,7 +43,7 @@ nome diferente ao objeto, ele pode anotá-lo com @Name e no valor dessa anotação, colocar o nome do parâmetro. Por default o objeto criado tem o escopo de request, mas é possível usar o escopo de sessão ou de visão, bastando anotar o objeto com @SessionScoped ou @ViewScoped, - respectivamente. Veja abaixo como ficaria essa passagem de parãmetros na versão 2.X do Demoiselle. + respectivamente. Veja abaixo como ficaria essa passagem de parâmetros na versão 2.X do Demoiselle. Passagem do parâmetro diff --git a/documentation/reference/pt-BR/parentsPom.xml b/documentation/reference/pt-BR/parentsPom.xml index 1947c23..17a304d 100644 --- a/documentation/reference/pt-BR/parentsPom.xml +++ b/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
- Demoiselle-WEB-Parent + Demoiselle-SE-Parent - 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 - qual camada de apresentação utilizará. + Especialização do POM mínimo, contendo configurações úteis para todas as aplicações Desktop que utilizam o framework, mas sem definição da + camada de apresentação que será utilizada. + +
+ +
+ Demoiselle-Servlet-Parent + + 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 + 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 + por este POM está a extensão Demoiselle-Servlet.
Demoiselle-JSF-Parent - 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 - para camada de apresentação. - Entre as dependências referênciadas por este POM está obviamente a extensão Demoiselle-JSF. + 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 + para camada de apresentação. Entre as dependências referênciadas por este POM está obviamente a extensão Demoiselle-JSF. + +
+ +
+ Demoiselle-Archetype-Parent + + Contém configurações comuns a todos os projetos geradores de arquétipos.
diff --git a/documentation/reference/pt-BR/properties.xml b/documentation/reference/pt-BR/properties.xml index 1474494..45b6df9 100644 --- a/documentation/reference/pt-BR/properties.xml +++ b/documentation/reference/pt-BR/properties.xml @@ -8,14 +8,14 @@ Em um projeto com o Demoiselle Framework, algumas propriedades e configurações do Framework podem ser ajustadas no arquivo demoiselle.properties. - Além disso, a partir da versão 2.3.0 também é nesse arquivo que devem ser definidas as estratégias de - Transação, Autorização e Autenticação. + A seguir listamos as propriedades e configurações do Demoiselle Framework que o usuário pode modificar, - acompanhados de alguns exemplos ilustrativos. Também mostraremos como escolher as estratégias para + acompanhados de alguns exemplos ilustrativos.
@@ -151,7 +151,7 @@
-
+ diff --git a/documentation/reference/pt-BR/security.xml b/documentation/reference/pt-BR/security.xml index ea2edc3..042712c 100644 --- a/documentation/reference/pt-BR/security.xml +++ b/documentation/reference/pt-BR/security.xml @@ -20,7 +20,7 @@
Configurando - Para um correto funcionamento do Demoiselle é necessário inserir od interceptadores de segurança no arquivo src/main/WEB-INF/beans.xml. + Para um correto funcionamento do Demoiselle é necessário inserir os interceptadores de segurança no arquivo src/main/WEB-INF/beans.xml. - O primeiro passo é criar classes para implementar as interfaces Authenticator e Authorizer. Essas classes devem ser - anotadas com @Alternative para que o CDI saiba que se trata de uma estratégia: + O primeiro passo é criar classes para implementar as interfaces Authenticator e Authorizer. O Demoiselle detecta automaticamente + a implementação, e torna essa classe a implementação padrão dessas interfaces: - - - + - À partir desse momento, a aplicação já possui uma implementação de segurança definida. + 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 + forem chamadas, o framework lançará uma exceção informando que a aplicação precisa implementá-las. + + Se você tem mais de uma implementação de Authenticator e/ou Authorizer (o que pode acontecer, por exemplo, quando + se necessite de uma implementação na aplicação principal, e outra para os testes), deverá definir no arquivo demoiselle.properties + qual classe será a padrão: + + frameworkdemoiselle.security.authenticator.class=projeto.MeuAuthenticatorPadrao + frameworkdemoiselle.security.authorizer.class=projeto.MeuAuthorizerPadrao + +
- O Demoiselle também oferece o componente Authorization - 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 - POM.XML e se for o caso retire esse dependência. + O Demoiselle também oferece o componente + Authorization + 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 POM.XML e se for o caso retire essa dependência. \ No newline at end of file diff --git a/documentation/reference/pt-BR/transacao.xml b/documentation/reference/pt-BR/transacao.xml index 0f60a33..4ed9d37 100644 --- a/documentation/reference/pt-BR/transacao.xml +++ b/documentation/reference/pt-BR/transacao.xml @@ -6,8 +6,8 @@ Transação - Esta funcionalidade utiliza os recursos do CDI para interceptar e delegar o tratamento adequado das transações - para quem é de direito. Em outras palavras, não reinventamos a roda. Criamos algumas estratégias de delegação e + Esta funcionalidade utiliza os recursos do CDI para interceptar e delegar adequadamente o tratamento das transações. + Em outras palavras, não reinventamos a roda. Criamos algumas estratégias de delegação e controle de transação com base no que está sendo mais utilizado no mercado, algumas mais simples de configurar, outras mais completas para utilizar. @@ -74,7 +74,7 @@ public class Simples { E se acontecer uma Exception? Caso ocorra uma exceção na execução de um método transacional o mecanismo fará rollback na transação - automaticamente. É possível mudar este comportamento utilizando exceções de aplicação. + automaticamente. É possível mudar este comportamento utilizando exceções de aplicação (para maiores detalhes ver Exceção). Você pode optar também por não utilizar controle de transação. Neste caso, basta não utilizar a anotação @Transactional. Contudo, - caso você a utilize e não defina qual estratégia deseja utilizar, o framework lançará uma exceção lhe avisando sobre isto! + caso você a utilize, você poderá escolher entre as estratégias JPA, JTA (ambas fornecidas pelo Framework) e uma estratégia que você + pode criar ou importar para seu projeto. + + + 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, + o framework lançará uma exceção lhe avisando sobre isto!
@@ -118,11 +123,16 @@ public class AbacaxiException { A transação JPA é simples de configurar e não exige nenhum recurso externo à sua aplicação. - Basta definir no arquivo demoiselle.properties a seguinte configuração: + Para utilizá-la basta que seu projeto adicione no arquivo POM.XML dependência à extensão demoiselle-jpa, que o + Demoiselle fará a seleção por essa estratégia de forma automática. + + + Caso não esteja utilizando o arquétipo JSF-JPA fornecidos pelo Demoiselle, confira se a dependência para a extensão está indicada corretamente no arquivo POM.XML. @@ -135,17 +145,24 @@ public class AbacaxiException {
Estratégia JTA - Esta estratégia, também está disponível através de uma extensão: demoiselle-jta e é + Esta estratégia, também está disponível através de uma extensão (demoiselle-jta), e é responsável por delegar o controle de transação para um container JEE. Com a JTATransaction é possível incluir várias unidades de persistência de uma mesma aplicação no mesmo contexto transacional. Isso mesmo, o famoso Two-Phase Commit (2PC). A estratégia JTA não serve apenas para persistência em banco de dados, serve também para integrar com - tecnologias que façam acesso ao contexto JTA, como é o caso do EJB. Para ativar esta estratégia defina no + tecnologias que façam acesso ao contexto JTA, como é o caso do EJB. Para ativar esta estratégia basta + que seu projeto adicione no arquivo POM.XML a dependência à extensão demoiselle-jta, que o + Demoiselle fará a seleção por essa estratégia de forma automática, pois essa estratégia tem prioridade em relação + a estratégia JPA. + + Feito isto, o controle transacional será delegado para a transação acessível via JNDI com o nome UserTransaction. A estratégia acessa o objeto da seguinte maneira: @@ -156,14 +173,15 @@ public class AbacaxiException { É preciso também informar no arquivo persistence.xml o endereço da conexão 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: - - + - + java:jboss/datasources/ExampleDS @@ -172,12 +190,13 @@ public class AbacaxiException { - -]]> + + ]]> Caso não esteja utilizando o arquétipo JSF-JPA fornecidos pelo Demoiselle, confira se a dependência para a extensão está indicada corretamente, no arquivo POM.XML. - + br.gov.frameworkdemoiselle demoiselle-jta compile @@ -190,19 +209,19 @@ public class AbacaxiException { Caso nenhuma das estratégias oferecidas sirva para você, crie a sua. Basta escrever uma classe não-final que implemente a interface Transaction do pacote - br.gov.frameworkdemoiselle.transaction. Anote a classe com + br.gov.frameworkdemoiselle.transaction. É preciso que sua classe não possua construtores explícitos ou que possua um construtor público sem parâmetros. É possível fazer injeções nesta classe. + + Pronto, é só isso! Agora, os métodos anotados com @Transactional irão utilizar a estratégia criada em seu projeto de forma automática, + mesmo que as extensões demoiselle-jpa e demoiselle-jta sejam adicionadas ao projeto, pois o framework da prioridade + máxima à estratégia criada no projeto. + + +
+ +
+ Escolhendo estratégias manualmente + + 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 + 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 + arquivo demoiselle.properties qual estratégia será utilizada. Veja alguns exemplos de definição de estratégias própria, + JTATransaction e JPATransaction (importante notar que apenas uma estratégia pode estar ativa por vez): + + + frameworkdemoiselle.transaction.class=projeto.MyTransaction + + + frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JTATransaction + + + frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JPATransaction
-- libgit2 0.21.2