diff --git a/documentation/reference/pt-BR/arquetipo.xml b/documentation/reference/pt-BR/arquetipo.xml index 6664e55..0b302fa 100644 --- a/documentation/reference/pt-BR/arquetipo.xml +++ b/documentation/reference/pt-BR/arquetipo.xml @@ -38,7 +38,7 @@
Vaadin com JPA - Uma das principais novidades com relação à esta nova versão do Framework Demoiselle + Uma das principais novidades com relação à esta nova versão do Demoiselle Framework é sua integração mais completa à 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 diff --git a/documentation/reference/pt-BR/bookinfo.xml b/documentation/reference/pt-BR/bookinfo.xml index de1ebdb..ecf1b2b 100644 --- a/documentation/reference/pt-BR/bookinfo.xml +++ b/documentation/reference/pt-BR/bookinfo.xml @@ -9,7 +9,9 @@ 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/bundle.xml b/documentation/reference/pt-BR/bundle.xml index 07c117b..6457f36 100644 --- a/documentation/reference/pt-BR/bundle.xml +++ b/documentation/reference/pt-BR/bundle.xml @@ -67,7 +67,7 @@ button.save=Salvar]]> @@ -75,9 +75,8 @@ public String metodoQueRetornaOValorDaChavebuttonedit() { Utilizando Resource Bundle sem uso de injeção: Na classe os atributos devem ser tratados como sendo somente de leitura, possuindo apenas seus respectivos métodos @@ -193,7 +189,6 @@ public class BookmarkConfig { public boolean isLoadInitialData() { return loadInitialData; } - }]]> @@ -258,7 +253,6 @@ general.load.initial.data = true ... } } - }]]> @@ -302,7 +296,6 @@ public class EscolaConfig { public List getPapeis() { return papeis; } - }]]>
@@ -332,7 +325,6 @@ public class EscolaConfig { public String getJavaDirectory() { return javaDirectory; } - }]]> diff --git a/documentation/reference/pt-BR/excecao.xml b/documentation/reference/pt-BR/excecao.xml index ab0cf9d..a0f1922 100644 --- a/documentation/reference/pt-BR/excecao.xml +++ b/documentation/reference/pt-BR/excecao.xml @@ -17,18 +17,14 @@ Para um correto funcionamento do Demoiselle é necessário inserir o interceptador de exceção no arquivo src/main/WEB-INF/beans.xml. - - - - br.gov.frameworkdemoiselle.internal.interceptor.ExceptionHandlerInterceptor - - - ]]> - + + + br.gov.frameworkdemoiselle.internal.interceptor.ExceptionHandlerInterceptor + +]]>
@@ -43,13 +39,9 @@ public class Simples { @ExceptionHandler public void tratador(NullPointerException cause) { } - public void inserir() { } - public void alterar() { } - public void excluir() { } - }]]> Neste exemplo, qualquer exceção do tipo NullPointerException que ocorrer nos métodos @@ -68,16 +60,11 @@ public class Simples { @ExceptionHandler public void tratador(NullPointerException cause) { } - @ExceptionHandler - public void tratador(AbacaxiException cause) { } - - public void inserir() { } - - public void alterar() { } - - public void excluir() { } - + public void tratador(AbacaxiException cause) { } + public void inserir() { } + public void alterar() { } + public void excluir() { } }]]> Caso as exceções NullPointerException ou AbacaxiException ocorram @@ -100,7 +87,6 @@ public class Simples { @ExceptionHandler public void tratador(NullPointerException cause) { } - public void inserir() { try { // tenta algo @@ -108,11 +94,8 @@ public class Simples { // trata o problema } } - public void alterar() { } - public void excluir() { } - }]]> Neste caso a exceção AbacaxiException só será tratada no método inserir(). diff --git a/documentation/reference/pt-BR/inicializacao.xml b/documentation/reference/pt-BR/inicializacao.xml index a8cd6ad..f59b94f 100644 --- a/documentation/reference/pt-BR/inicializacao.xml +++ b/documentation/reference/pt-BR/inicializacao.xml @@ -48,7 +48,7 @@ Eis um exemplo de implementação de inicializador em uma aplicação: @@ -106,7 +105,6 @@ public class DatabaseServer { public void shutdown() { server.stop(); } - }]]>
diff --git a/documentation/reference/pt-BR/intro.xml b/documentation/reference/pt-BR/intro.xml index cfc51cf..0f900f2 100644 --- a/documentation/reference/pt-BR/intro.xml +++ b/documentation/reference/pt-BR/intro.xml @@ -8,7 +8,7 @@
O que é o Demoiselle? - O framework Demoiselle implementa o conceito de + O Demoiselle Framework implementa o conceito de framework integrador. Seu objetivo é facilitar a construção de aplicações minimizando tempo dedicado à escolha e integração de frameworks especialistas, o que resulta no aumento da produtividade e garante a manutenibilidade dos sistemas. Disponibiliza @@ -23,7 +23,7 @@ técnicas para qualquer pessoa que se interessasse. - O framework Demoiselle usa a mesma filosofia do Pai da Aviação, tendo sido + O Demoiselle Framework 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 @@ -33,7 +33,7 @@ Sobre a versão 2 O principal objetivo da versão 2 do - framework Demoiselle + Demoiselle Framework é a completa aderência à especificação JSR 316: Java Platform, Enterprise Edition 6, ou simplesmente Java EE 6. Para saber mais, recomendamos os links diff --git a/documentation/reference/pt-BR/logger.xml b/documentation/reference/pt-BR/logger.xml index efbaa7a..09e5a11 100644 --- a/documentation/reference/pt-BR/logger.xml +++ b/documentation/reference/pt-BR/logger.xml @@ -17,12 +17,11 @@ @Inject private Logger logger; - + public void meuMetodo() { logger.debug("logando meu metodo"); logger.warn("mensagem de alerta do meu metodo"); } - }]]> diff --git a/documentation/reference/pt-BR/master.xml b/documentation/reference/pt-BR/master.xml index b745f3f..d313a14 100644 --- a/documentation/reference/pt-BR/master.xml +++ b/documentation/reference/pt-BR/master.xml @@ -14,16 +14,35 @@ - Esta documentação refere-se à release 2.3 do Framework Demoiselle + Esta documentação refere-se à release 2.3.0 do Demoiselle Framework 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 346b9ce..069e163 100644 --- a/documentation/reference/pt-BR/mensagem.xml +++ b/documentation/reference/pt-BR/mensagem.xml @@ -122,9 +122,7 @@ private MessageContext messageContext;]]> A classe DefaultMessage fornecida pelo Demoiselle Framework @@ -145,7 +143,6 @@ private MessageContext messageContext;]]> exemplo disso utilizando a classe DefaultMessage: Uma vez inseridas no contexto em determinada camada da aplicação, as mensagens podem ser posteriormente @@ -204,14 +201,11 @@ messageContext.add(message);]]> da mensagem e ao inseri-la no contexto especificar os parâmetros: Eis um exemplo mais avançado do uso de parametrizações em mensagens: - O resultado da execução deste código seria um texto como: @@ -245,7 +239,6 @@ messageContext.add(message, new Integer(502), new Date(), "falta de professor"); chaves, tal como no exemplo a seguir: Ou seja, ao invés de usar a string literal, passamos o identificador da chave presente no arquivo de propriedades. @@ -333,7 +326,6 @@ ALUNO_EXCLUIR_OK = L'étudiant {0} a été supprimé avec succès]]> No exemplo em questão, o texto das mensagens será recuperado do arquivo de recursos messages.properties @@ -375,7 +367,6 @@ BOOKMARK_UPDATE_OK = Bookmark atualizado: {0}]]> public SeverityType getSeverity() { return msg.getSeverity(); } - }]]> A fim de adicionar mensagens ao contexto, eis um exemplo de código que faz uso do artefato InfoMessages, @@ -413,7 +404,6 @@ public class BookmarkBC { messageContext.add(InfoMessages.BOOKMARK_DELETE_OK, bookmark.getDescription()); } - }]]> diff --git a/documentation/reference/pt-BR/paginacao.xml b/documentation/reference/pt-BR/paginacao.xml index b747dc2..7715f54 100644 --- a/documentation/reference/pt-BR/paginacao.xml +++ b/documentation/reference/pt-BR/paginacao.xml @@ -73,101 +73,77 @@ - Códigos internos de suporte no Core: - - , Pagination> map; - - public Pagination getPagination(Class clazz) { ... } - - public Pagination getPagination(Class clazz, boolean create) { ... } - - } - - @Configuration - public class PaginationConfig { - - @Key("default_page_size") - private int defaultPageSize = 10; - - @Key("max_page_links") - private int maxPageLinks = 5; - - } - ]]> - - Códigos internos de suporte em JPA: - - implements Crud { - - @Inject - private PaginationContext paginationContext; - - // ... - - public List findAll() { - - final String jpql = "select this from " + getBeanClass().getSimpleName() + " this"; - final Query query = getEntityManager().createQuery(jpql); - - final Pagination pagination = paginationContext.getPagination(getBeanClass()); - if (pagination != null) { - if (pagination.getTotalPages() == null) { - pagination.setTotalResults(this.countAll()); - } - query.setFirstResult(pagination.getFirstResult()); - query.setMaxResults(pagination.getPageSize()); - } - - // ... - } - + Códigos internos de suporte no Core:, Pagination> map; + public Pagination getPagination(Class clazz) { ... } + public Pagination getPagination(Class clazz, boolean create) { ... } +} + +@Configuration +public class PaginationConfig { + + @Key("default_page_size") + private int defaultPageSize = 10; + + @Key("max_page_links") + private int maxPageLinks = 5; +}]]> + + Códigos internos de suporte em JPA: implements Crud { + + @Inject + private PaginationContext paginationContext; + // ... + + public List findAll() { + + final String jpql = "select this from " + getBeanClass().getSimpleName() + " this"; + final Query query = getEntityManager().createQuery(jpql); + final Pagination pagination = paginationContext.getPagination(getBeanClass()); + + if (pagination != null) { + if (pagination.getTotalPages() == null) { + pagination.setTotalResults(this.countAll()); } - ]]> + query.setFirstResult(pagination.getFirstResult()); + query.setMaxResults(pagination.getPageSize()); + } + // ... + } +}]]> - Códigos internos de suporte em JSF: - - extends AbstractPage - implements ListPageBean { - - @Inject - private PaginationContext paginationContext; - - @Inject - private PaginationConfig paginationConfig; - - // ... - - public Pagination getPagination() { - return paginationContext.getPagination(getBeanClass(), true); - } - - public int getPageSize() { - return paginationConfig.getDefaultPageSize(); - } - - public int getMaxPageLinks() { - return paginationConfig.getMaxPageLinks(); - } - - } - ]]> + Códigos internos de suporte em JSF: extends AbstractPage implements ListPageBean { + + @Inject + private PaginationContext paginationContext; + + @Inject + private PaginationConfig paginationConfig; + // ... + + public Pagination getPagination() { + return paginationContext.getPagination(getBeanClass(), true); + } + + public int getPageSize() { + return paginationConfig.getDefaultPageSize(); + } + + public int getMaxPageLinks() { + return paginationConfig.getMaxPageLinks(); + } +}]]>
@@ -194,73 +170,54 @@ À classe BookmarkList devem ser adicionados os seguintes trechos de código: - - - lazyModel; - - public BookmarkListMB() { - lazyModel = new LazyDataModel() { - - @Override - public List load (int first, int pageSize, String sortField, - SortOrder sortOrder, Map filters){ - - Pagination pagination = getPagination(); - pagination.setPageSize(pageSize); - pagination.setFirstResult(first); - - List itemsList = bc.findAll(); - - lazyModel.setRowCount(pagination.getTotalResults()); - - return itemsList; - } - }; - } - - // ... - - public LazyDataModel getLazyModel() { - return lazyModel; - } - - // ... - ]]> + lazyModel; + lazyModel = new LazyDataModel() { + + @Override + public List load (int first, int pageSize, String sortField, + SortOrder sortOrder, Map filters){ + + Pagination pagination = getPagination(); + pagination.setPageSize(pageSize); + pagination.setFirstResult(first); + + List itemsList = bc.findAll(); + + lazyModel.setRowCount(pagination.getTotalResults()); + + return itemsList; + } + }; + // ... + public LazyDataModel getLazyModel() { + return lazyModel; + } + // ... +}]]> No arquivo messages.properties adicione as linhas: - - - - + Na página JSF bookmark_list.xhtml, substitua a linha: - - - ]]> + ]]> por: - - - - ]]> + ]]> Com essas alterações simples, a aplicação Bookmarks passa a utilizar o mecanismo de paginação oferecido pelo Demoiselle Framework. diff --git a/documentation/reference/pt-BR/parametro.xml b/documentation/reference/pt-BR/parametro.xml index 8d4b820..5817fbe 100644 --- a/documentation/reference/pt-BR/parametro.xml +++ b/documentation/reference/pt-BR/parametro.xml @@ -20,13 +20,12 @@ Captura do parâmetro pelo Page Bean
@@ -54,16 +53,15 @@ http://localhost:8080/aplicacao/pagina.jsf?parametroString=valorParametroString] Captura do parâmetro pelo Page Bean parametro; - + @Name("parametroString") @SessionScoped @Inject private Parameter objetoComNomeDiferenteDoParametro; - }]]>
@@ -78,15 +76,14 @@ http://localhost:8080/aplicacao/pagina.jsf?parametroString=valorParametroString] getValue(), tal como mostrado a seguir: parametro; - + public void metodo() { System.out.println("Valor do parâmetro: " + parametro.getValue()); } - }]]>
diff --git a/documentation/reference/pt-BR/parentsPom.xml b/documentation/reference/pt-BR/parentsPom.xml index 17a304d..8696098 100644 --- a/documentation/reference/pt-BR/parentsPom.xml +++ b/documentation/reference/pt-BR/parentsPom.xml @@ -21,7 +21,11 @@ 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 + + + Para excluir uma dependência vinda do Parent, mas não necessária utilize a tag Exclusions + +
Demoiselle-Minimal-Parent diff --git a/documentation/reference/pt-BR/security.xml b/documentation/reference/pt-BR/security.xml index 042712c..8bad17e 100644 --- a/documentation/reference/pt-BR/security.xml +++ b/documentation/reference/pt-BR/security.xml @@ -22,19 +22,15 @@ Para um correto funcionamento do Demoiselle é necessário inserir os interceptadores de segurança no arquivo src/main/WEB-INF/beans.xml. - - - - br.gov.frameworkdemoiselle.internal.interceptor.RequiredPermissionInterceptor - br.gov.frameworkdemoiselle.internal.interceptor.RequiredRoleInterceptor - - - ]]> - + + + br.gov.frameworkdemoiselle.internal.interceptor.RequiredPermissionInterceptor + br.gov.frameworkdemoiselle.internal.interceptor.RequiredRoleInterceptor + +]]>
@@ -66,11 +62,8 @@ public class Credential { private String login; - private String senha; - // ... - }]]> Feito isso, podemos implementar a classe na qual se deseja adicionar o mecanismo de segurança: @@ -90,7 +83,6 @@ public class Credential { // codigo do metodo context.logout(); } - }]]> Neste caso, a interface SecurityContext e o bean Credential estão sendo injetados na classe utilizando o CDI. @@ -129,7 +121,6 @@ public class Credential { @RequiredPermission(resource = "contact", operation = "insert") public void requiredPermissionWithDeclaredResourceAndOperation() { } - }]]> Observe o método cuja anotação não possui parâmetros. Nesse caso serão considerados como recurso e operação o nome da classe e @@ -158,7 +149,6 @@ public class Credential { @RequiredRole({ "firstRole", "secondRole", "thirdRole", "fourthRole", "fifthRole" }) public void requiredRoleWithArrayOfRoles() { } - }]]> As restrições de segurança pode ser utilizadas, ainda, em páginas web, com o auxílio de Expression Language, como no @@ -183,8 +173,7 @@ public class Credential { a implementação, e torna essa classe a implementação padrão dessas interfaces: - -