From 70d786e3cf940ef665db1a33719d568ce3184b12 Mon Sep 17 00:00:00 2001 From: rodrigorgs Date: Wed, 31 Oct 2012 10:03:30 -0200 Subject: [PATCH] Revisão leve da redação do Guia de Referência. --- documentation/reference/pt-BR/arquetipo.xml | 14 +++++++------- documentation/reference/pt-BR/arquitetura.xml | 8 ++++---- documentation/reference/pt-BR/bundle.xml | 4 ++-- documentation/reference/pt-BR/configuracao.xml | 2 +- documentation/reference/pt-BR/controlador.xml | 6 +++--- documentation/reference/pt-BR/excecao.xml | 10 +++++----- documentation/reference/pt-BR/inicializacao.xml | 4 ++-- documentation/reference/pt-BR/mensagem.xml | 2 +- documentation/reference/pt-BR/paginacao.xml | 14 +++++++------- documentation/reference/pt-BR/parentsPom.xml | 10 +++++----- documentation/reference/pt-BR/properties.xml | 4 ++-- documentation/reference/pt-BR/security.xml | 2 +- documentation/reference/pt-BR/templates.xml | 4 ++-- documentation/reference/pt-BR/transacao.xml | 12 ++++++------ 14 files changed, 48 insertions(+), 48 deletions(-) diff --git a/documentation/reference/pt-BR/arquetipo.xml b/documentation/reference/pt-BR/arquetipo.xml index 6664e55..5bc5068 100644 --- a/documentation/reference/pt-BR/arquetipo.xml +++ b/documentation/reference/pt-BR/arquetipo.xml @@ -6,7 +6,7 @@ Arquétipos - 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 o conceito de gerenciamento do próprio Maven. Atualmente estão disponíveis os seguintes artefatos: @@ -15,7 +15,7 @@
Mínimo - Fornece um conjunto mínimo de artefatos para criar uma aplicação Java, utiliza o Demoiselle-Minimal-Parent + Fornece um conjunto mínimo de artefatos para criar uma aplicação Java, utiliza o Demoiselle-Minimal-Parent, sendo útil quando os outros arquétipos disponíveis não se enquadram nas características do projeto a ser criado.
@@ -24,22 +24,22 @@ JSF com JPA Útil para os projetos que precisam de uma arquitetura que utilize as tecnologias JSF e JPA, - é baseado no Demoiselle-JSF-Parent, - e que já traz uma estrutura padrão de pacotes e todas + é baseado no Demoiselle-JSF-Parent + e 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ê 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 - a sessão de documentação chamada Quickstart. + a sessão de documentação chamada QuickStart.
Vaadin com JPA - Uma das principais novidades com relação à esta nova versão do Framework Demoiselle - é sua integração mais completa à outras tecnologias de apresentação. Na versão anterior + Uma das principais novidades com relação a esta nova versão do Framework Demoiselle + é sua integração mais completa com outras tecnologias de apresentação. Na versão anterior, apesar de ser possível a utilização de outra soluções, não havia ainda facilitadores realmente integrados ao Demoiselle. Seguindo este princípio, um dos arquétipos disponibilizados pelo Framework gera uma aplicação de exemplo, nos mesmo moldes que é disponibilizado para a tecnologia JSF, mas com a tecnologia de apresentação chamada VAADIN. diff --git a/documentation/reference/pt-BR/arquitetura.xml b/documentation/reference/pt-BR/arquitetura.xml index 1d8be75..340b03d 100644 --- a/documentation/reference/pt-BR/arquitetura.xml +++ b/documentation/reference/pt-BR/arquitetura.xml @@ -21,7 +21,7 @@ As Extensões, como o próprio nome sugere, estendem o Core com funcionalidades extras e bem específicas a um domínio ou tecnologia. Neste contexto, caso sua aplicação necessite de persistência com JPA, o framework fornecerá facilidades - para você, contudo, estas funcionalidades não estão no Core. Para este propósito existem as extensões como a + para você; contudo, estas funcionalidades não estão no Core. Para este propósito existem as extensões como a demoiselle-jpa, por exemplo. Cabe destacar que as extensões não possuem vida própria, pois estão diretamente ligadas ao núcleo do framework, inclusive o ciclo de vida das extensões está totalmente acoplado ao do Core. @@ -43,7 +43,7 @@ interfaces ou, como alguns costumam dizer, depender de contratos. As interfaces existem para isto: definem um contrato, enquanto as implementações deste contrato ficam à parte, de preferência, distante do programador da aplicação. O mecanismo de injeção de dependência fortalece ainda mais esta - idéia. Sua aplicação precisará apenas depender das interfaces que o Demoiselle provê. A implementação específica será + ideia. Sua aplicação precisará apenas depender das interfaces que o Demoiselle provê. A implementação específica será injetada automaticamente pelo CDI. @@ -68,12 +68,12 @@ Arquitetura das aplicações É importante reforçar que o Demoiselle não obriga nenhum tipo de arquitetura para as aplicações, que podem ser - constituídas com quantas camadas forem necessárias. Contudo, é prudente não exagerar! Para quem não sabe por onde + constituídas por quantas camadas forem necessárias. Contudo, é prudente não exagerar! Para quem não sabe por onde começar, sugerimos uma arquitetura e padrões largamente utilizados pelo mercado, de forma a facilitar a manutenção e para melhor modularização de seu projeto. - Usualmente, as aplicações são constituídas com pelo menos três camadas, desta forma é comum separar as lógicas de + Usualmente, as aplicações são constituídas por pelo menos três camadas, desta forma é comum separar as lógicas de apresentação, regras de negócio e persistência. O Demoiselle já fornece estereótipos que visam tornar esta separação mais clara, respectivamente: @ViewController, @BusinessController e @PersistenceController. diff --git a/documentation/reference/pt-BR/bundle.xml b/documentation/reference/pt-BR/bundle.xml index 07c117b..a75606c 100644 --- a/documentation/reference/pt-BR/bundle.xml +++ b/documentation/reference/pt-BR/bundle.xml @@ -6,7 +6,7 @@ Resource Bundle - Um dos requisitos para se construir uma aplicação nos dias de hoje, é o de que seja utilizada por pessoas + Um dos requisitos para se construir uma aplicação nos dias de hoje é o de que seja utilizada por pessoas em vários lugares no mundo e em diferentes línguas. Portanto, é preciso que as aplicações sejam facilmente internacionalizáveis. Para isso, existe um recurso no java chamado de Resource Bundle, que nada mais é do que um esquema de arquivos properties, onde cada arquivo representa @@ -50,7 +50,7 @@ button.save=Salvar]]> Na versão 2.X do Demoiselle Framework, existe uma fábrica de Resource Bundle que fica no Core e permite seu uso através da injeção ou através de uma instanciação normal. O grande detalhe é que nessa fábrica é injetado um objeto do tipo Locale, isso quer dizer que é necessário criar também - uma fabrica de Locale. Como a definição de Locale varia de acordo com a + uma fábrica de Locale. Como a definição de Locale varia de acordo com a camada de apresentação, essas fábricas foram criadas nas extensões de apresentação: demoiselle-jsf, demoiselle-se e demoiselle-vaadin. Na extensão demoiselle-se a definição do Locale é dada através do diff --git a/documentation/reference/pt-BR/configuracao.xml b/documentation/reference/pt-BR/configuracao.xml index 1bd62ca..a0db6ed 100644 --- a/documentation/reference/pt-BR/configuracao.xml +++ b/documentation/reference/pt-BR/configuracao.xml @@ -8,7 +8,7 @@
Configurações em uma aplicação - Em aplicações no modelo Java EE, as quais são executadas hospedadas em um servidor de aplicações ou contêiner Web, + Em aplicações no modelo Java EE, as quais são hospedadas em um servidor de aplicações ou contêiner Web, existem diversos papéis além do desenvolvedor, tais como assembler e deployer. É comum nestas aplicações que informações de configuração de ambiente, especialmente por questões de segurança, sejam de conhecimento restrito. Por exemplo, o usuário e senha de um banco de dados ou o nome de uma fila de mensagens são informações que o desenvolvedor não deve diff --git a/documentation/reference/pt-BR/controlador.xml b/documentation/reference/pt-BR/controlador.xml index 39193d2..f303350 100644 --- a/documentation/reference/pt-BR/controlador.xml +++ b/documentation/reference/pt-BR/controlador.xml @@ -21,10 +21,10 @@ Além de identificar as camadas, os controllers são pré-requisitos para utilização da funcionalidade de tratamento de exceções, através do uso da anotação @ExceptionHandler. Isso quer dizer que para utilizar essa funcionalidade, a classe - precisa usar um dos controllers citados acima ou a própria anotação @Controller ou ainda um controller criado + precisa usar um dos controllers citados acima ou a própria anotação @Controller, ou ainda um controller criado exclusivamente para sua aplicação. Todos os controllers criados no framework são estereótipos e podem ser usados também para definição de características como, por exemplo, o escopo. Isso quer dizer que se um controller tem um determinado escopo, todas - as classes desse controller, também terão o mesmo escopo. Foi falado que é possível criar um controller para uso exclusivo em sua + as classes desse controller também terão o mesmo escopo. Foi falado que é possível criar um controller para uso exclusivo em sua aplicação, mas como fazer isso? Veja na seção abaixo. @@ -43,7 +43,7 @@ public @interface SeuController { }]]> 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. + 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 ab0cf9d..059d598 100644 --- a/documentation/reference/pt-BR/excecao.xml +++ b/documentation/reference/pt-BR/excecao.xml @@ -8,7 +8,7 @@ Esta funcionalidade foi feita para você que acha muito verboso encher o código de try/catch. E o que dizer de repetir o tratamento de exceções em vários métodos da mesma classe na base do copiar/colar? - Oferecemos à você uma alternativa para resolver estes problemas, mas você estará livre para usá-la: isoladamente, + Oferecemos a você uma alternativa para resolver estes problemas, mas você estará livre para usá-la: isoladamente, misturando com a forma verbosa ou até mesmo não usá-la. @@ -122,7 +122,7 @@ 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 + 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. @@ -141,13 +141,13 @@ public class MinhaException extends Exception {
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 + 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 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 + 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 a8cd6ad..5a318a0 100644 --- a/documentation/reference/pt-BR/inicializacao.xml +++ b/documentation/reference/pt-BR/inicializacao.xml @@ -37,7 +37,7 @@ 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 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 + @Priority, que recebe como parâmetro 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. @@ -75,7 +75,7 @@ Um exemplo prático 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: + execução da aplicação principal. Eis o código referente a essa implementação: O contexto de mensagens, representado pela interface MessageContext, é capaz de - armazenar diversas mensagens em uma mesma requisição. Ele não é restrito à aplicações do tipo Web, + armazenar diversas mensagens em uma mesma requisição. Ele não é restrito a aplicações do tipo Web, isto é, pode ser usado também para aplicações do tipo desktop (i.e., Swing). diff --git a/documentation/reference/pt-BR/paginacao.xml b/documentation/reference/pt-BR/paginacao.xml index b747dc2..82b1e07 100644 --- a/documentation/reference/pt-BR/paginacao.xml +++ b/documentation/reference/pt-BR/paginacao.xml @@ -46,7 +46,7 @@ O mecanismo de paginação do Demoiselle Framework permite que os parâmetros para a consulta no banco sejam configurados de forma bastante prática. Por outro lado, a consulta paginada ao banco já é feita pela extensão - demoiselle-jpa. Dessa forma, basta ajustar os parametros da paginação, e pedir as consultas normalmente. + demoiselle-jpa. Dessa forma, basta ajustar os parâmetros da paginação, e pedir as consultas normalmente. O resultado da consulta é então passado para algum componente de iteração de dados com suporte ao mecanismo conhecido como Lazy Load (ou Lazy Loading). @@ -94,7 +94,7 @@ public Pagination getPagination(Class clazz) { ... } - public Pagination getPagination(Class clazz, boolean create) { ... } + public Pagination get -->Pagination(Class clazz, boolean create) { ... } } @@ -173,7 +173,7 @@
Implementação na aplicação - Veremos nessa seção como implementar a paginação em uma aplicação Java. Para esse exemplo tomamos como base a aplicação de Bookmarks + Veremos nessa seção como implementar a paginação em uma aplicação Java. Para esse exmplo tomamos como base a aplicação de Bookmarks fornecida pelo arquétipo JSF com JPA do Demoiselle Framework (para maiores detalhes ver Arquétipos). Iremos utilizar o componente DataTable do PrimeFaces, que oferece o mecanismo de Lazy Loading conhecido como LazyDataModel, muito útil para paginação @@ -181,15 +181,15 @@ Primeiro é preciso configurar um objeto LazyDataModel no construtor do Managed Bean - (BookmarkList nesse exemplo): instanciá-lo e sobrescrever o método abstrado load, que recebe + (BookmarkList nesse exemplo): instancia-lo e sobrescrever o método abstrado load, que recebe vários argumentos. Esses argumentos são recuperados na página jsf que carrega a instância do objeto LazyDataModel. Dentro do método load iremos pegar do contexto de paginação uma instância da implementação da interface Pagination e ajustar alguns dos seus parâmetros para: indicar a partir de qual item a paginação deve iniciar, e o tamanho (quantidade de itens) de cada página. Esses dados são usados no método findAll(), da classe JPACrud (extensão JPA), que utiliza o contexto de - paginação para pegar os parametros e fazer a consulta no banco buscando apenas os itens que estão dentro da pagina que o parametro - first indicar. O resultado é passado para a instância do LazyDataModel, que é responsável por exibir + paginação para pegar os parâmetros e fazer a consulta no banco buscando apenas os itens que estão dentro da página que o parâmetro + first indicar. O resultado é passado para a instancia do LazyDataModel, que é responsável por exibir os dados de forma apropriada. @@ -289,7 +289,7 @@ Um exemplo usando PrimeFaces Eis um interessante caso de uso de paginação: ????. - A seguir o código referente à essa implementação: + A seguir o código referente a essa implementação: // camada de persistência O Demoiselle faz uso da solução proposta pelo Apache Maven para diversas fases do desenvolvimento de software. - O artefato principal do Maven é o POM.XML que é o arquivo XML que contém todas as informações necessárias para a ferramenta gerenciar o projeto, - entre as quais está o gerenciamento de dependências(bibliotecas), build do projeto, etc. + O artefato principal do Maven é o POM.XML, que é o arquivo XML que contém todas as informações necessárias para a ferramenta gerenciar o projeto, + entre as quais está o gerenciamento de dependências (bibliotecas), build do projeto, etc. Mas é muito comum que vários projetos, vinculados ou não, utilizem muitas configurações em comum. Para o “reaproveitamento” dessas configurações, evitando a cópia de texto, o Maven provê dois tipos de estratégia: @@ -18,10 +18,10 @@ No Demoiselle 2 a estratégia adota foi também o da herança. E o termo usado no Demoiselle para identificar essa estratégia é que chamamos de Parent POM. - Seguindo esse conceito, foram criados alguns arquivos (pom.xml) e também disponibilizados no repositório Maven do Demoiselle , que facilitam a configuração dos projetos, e inclusive para o desenvolvimento do próprio Demoiselle. + Seguindo esse conceito, foram criados alguns arquivos (pom.xml) e também disponibilizados no repositório Maven do Demoiselle, que facilitam a configuração dos projetos, e inclusive para o desenvolvimento do próprio Demoiselle. Os arquivos gerados foram divididos em perfis, para que o desenvolvedor possa escolher qual usar de acordo com o tipo de aplicação que está desenvolvendo. -Assim, a alteração no POM.XML da aplicação será a minima possível. Outra vantagem, é que as bibliotecas apontadas como dependências são testadas pela equipe do Demoiselle o que evita eventuais incompatibilidades. - Para excluir uma dependência vinda do Parent, mas não necessária utilize a tag Exclusions +Assim, a alteração no POM.XML da aplicação será a minima possível. Outra vantagem é que as bibliotecas apontadas como dependências são testadas pela equipe do Demoiselle, o que evita eventuais incompatibilidades. + Para excluir uma dependência desnecessária vinda do Parent, utilize a tag Exclusions.
Demoiselle-Minimal-Parent diff --git a/documentation/reference/pt-BR/properties.xml b/documentation/reference/pt-BR/properties.xml index 45b6df9..ff78cd4 100644 --- a/documentation/reference/pt-BR/properties.xml +++ b/documentation/reference/pt-BR/properties.xml @@ -46,7 +46,7 @@ frameworkdemoiselle.security.enabled - Configura a habilitação das funcionalidades do Demoiselle relacionadas a segurança (como autenticação de usuário e verificação de - permissão de acesso à recursos). Por padrão, essas funcionalidades ficam habilitadas. + permissão de acesso a recursos). Por padrão, essas funcionalidades ficam habilitadas. Exemplo de configuração: frameworkdemoiselle.security.enabled = false, desabilita as @@ -138,7 +138,7 @@ frameworkdemoiselle.persistence.unit.name - Quando é definida mais de uma unidade de persitencia no arquivo persistence.xml, muitas vezes é conveniente escolher uma unidade padrão, ao invés de - definir as unidades individualmente em cada Entity Manager. Esse parametro é utilizado para + definir as unidades individualmente em cada Entity Manager. Esse parâmetro é utilizado para indicar qual é a unidade de persistência que deve ser utilizada quando no Entity Manager não houver essa definição. diff --git a/documentation/reference/pt-BR/security.xml b/documentation/reference/pt-BR/security.xml index 042712c..455e9d8 100644 --- a/documentation/reference/pt-BR/security.xml +++ b/documentation/reference/pt-BR/security.xml @@ -138,7 +138,7 @@ public class Credential { Assim como na autenticação, o contexto de segurança possui métodos destinados a delegar as requisições de autorização para - a implementação de segurança. No caso da anotação @RequiredPermission , o método hasPermission(String resource, String + a implementação de segurança. No caso da anotação @RequiredPermission, o método hasPermission(String resource, String operation) executa esta tarefa. Para tanto, deve existir uma classe que implemente a interface Authorizer, cujo método hasPermission(Object resource, String operation) verifica se o usuário logado possui permissão para executar uma determinada operação em um recurso específico. diff --git a/documentation/reference/pt-BR/templates.xml b/documentation/reference/pt-BR/templates.xml index d1114fc..397deeb 100644 --- a/documentation/reference/pt-BR/templates.xml +++ b/documentation/reference/pt-BR/templates.xml @@ -11,7 +11,7 @@ persistência. Tais classes podem ser encontradas no pacote br.gov.frameworkdemoiselle.template e auxiliam o desenvolvedor ao disponibilizar métodos comuns à maioria das - aplicações. À seguir iremos exemplificar o uso de cada uma delas. + aplicações. A seguir iremos exemplificar o uso de cada uma delas.
@@ -61,7 +61,7 @@ public class SuaEntidadeDAO extends JPACrud { Segue abaixo um exemplo da utilização do DelegateCrud. Neste caso, foi implementado um método para validar a entidade antes de proceder com a inclusão no banco de dados. Para isso, o método - insert() fornecido pela classe foi sobreescrito. + insert() fornecido pela classe foi sobrescrito. { diff --git a/documentation/reference/pt-BR/transacao.xml b/documentation/reference/pt-BR/transacao.xml index 4ed9d37..c2b6e7e 100644 --- a/documentation/reference/pt-BR/transacao.xml +++ b/documentation/reference/pt-BR/transacao.xml @@ -47,7 +47,7 @@ Vamos começar pelo mais importante: como declarar os métodos como transacionais? Como informar ao Demoiselle Framework que o método deve participar da sessão transacional? - A resposta é muito simples, anote seu método com @Transactional. + A resposta é muito simples: anote seu método com @Transactional. @@ -73,7 +73,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 + 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 (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, + Você também pode optar por não utilizar controle de transação. Neste caso, basta não utilizar a anotação @Transactional. Contudo, 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. @@ -145,7 +145,7 @@ 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 disponível através de uma extensão (demoiselle-jta), é 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). @@ -155,7 +155,7 @@ public class AbacaxiException { 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. + à estratégia JPA.