From 73c38d092a2aaa92f1bb78b9e8bae9219beb7ecf Mon Sep 17 00:00:00 2001 From: lusabo Date: Mon, 29 Oct 2012 11:25:24 -0300 Subject: [PATCH] Atualização para ficar aderente à versão 2.3 --- documentation/quickstart/pt-BR/authorgroup.xml | 40 ++++++++++++++++++++++------------------ documentation/quickstart/pt-BR/bookinfo.xml | 17 +++++------------ documentation/quickstart/pt-BR/criacao.xml | 745 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ documentation/quickstart/pt-BR/images/appedit.png | Bin 41873 -> 0 bytes documentation/quickstart/pt-BR/images/apphome.png | Bin 90385 -> 0 bytes documentation/quickstart/pt-BR/images/appvalid.png | Bin 47613 -> 0 bytes documentation/quickstart/pt-BR/images/viewserver.png | Bin 22680 -> 0 bytes documentation/quickstart/pt-BR/instalacao.xml | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------- documentation/quickstart/pt-BR/master.xml | 49 ++++++++++++------------------------------------- documentation/quickstart/pt-BR/melhoria.xml | 585 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- documentation/quickstart/pt-BR/preface.xml | 30 ++++++++++++++++++++++++++++++ impl/core/src/test/java/br/gov/frameworkdemoiselle/internal/bootstrap/StartupBootstrapTest.java | 4 ++-- impl/extension/servlet/src/test/java/br/gov/frameworkdemoiselle/internal/proxy/HttpServletRequestProxyTest.java | 11 +++++++++++ 13 files changed, 711 insertions(+), 932 deletions(-) create mode 100644 documentation/quickstart/pt-BR/preface.xml create mode 100644 impl/extension/servlet/src/test/java/br/gov/frameworkdemoiselle/internal/proxy/HttpServletRequestProxyTest.java diff --git a/documentation/quickstart/pt-BR/authorgroup.xml b/documentation/quickstart/pt-BR/authorgroup.xml index e290d4b..8559022 100755 --- a/documentation/quickstart/pt-BR/authorgroup.xml +++ b/documentation/quickstart/pt-BR/authorgroup.xml @@ -1,21 +1,25 @@ - - - Emerson - Saito - - - Marlon - Carvalho - - - Rodrigo - Hjort - - - Serge - Rehem - - \ No newline at end of file + + + Emerson + Saito + + + Luciano + Borges + + + Marlon + Carvalho + + + Rodrigo + Hjort + + + Serge + Rehem + + \ No newline at end of file diff --git a/documentation/quickstart/pt-BR/bookinfo.xml b/documentation/quickstart/pt-BR/bookinfo.xml index 9e76a71..eef54c3 100644 --- a/documentation/quickstart/pt-BR/bookinfo.xml +++ b/documentation/quickstart/pt-BR/bookinfo.xml @@ -1,15 +1,8 @@ - - - Framework Demoiselle 2.0 - QuickStart - - Demoiselle 2.0: Framework de Código Aberto para o Desenvolvimento de Aplicações Java EE 6 - Demoiselle 2.0 - QuickStart - - - - - \ No newline at end of file + + Framework Demoiselle 2.3 + QuickStart + + diff --git a/documentation/quickstart/pt-BR/criacao.xml b/documentation/quickstart/pt-BR/criacao.xml index 681180e..01696f9 100644 --- a/documentation/quickstart/pt-BR/criacao.xml +++ b/documentation/quickstart/pt-BR/criacao.xml @@ -1,14 +1,13 @@ - + Criação da aplicação -
Nossa primeira aplicação - Para iniciar o uso do Demoiselle Framework 2.X, criaremos uma aplicação + Para iniciar o uso do Demoiselle Framework 2.3, criaremos uma aplicação Java do tipo Web utilizando o Apache Maven, através do plugin para IDE Eclipse (M2Eclipse) para gerenciar todo o clico de vida do Projeto, desde a criação até o deploy. @@ -23,91 +22,57 @@
Construindo o projeto usando um arquétipo Maven - - - O procedimento a seguir pode ser comumente executado de forma visual com o auxílio de um - assistente (i.e., wizard) de dentro da IDE Eclipse, como será demonstrado logo após o modo linha de comando. - - -
- Linha de comando - - Para criar a aplicação usando o arquétipo em linha de comando, abra um terminal e execute o comando mvn - do Maven com os argumentos ilustrados a seguir: - - - -
-
- Modo assistido com Eclipse + + Para criar esse projeto utilizando a IDE Eclipse, acesse o menu File, + New, Other... digite e selecione Maven Project: + conforme mostrado na figura abaixo: + + + + + + + + + + + Na tela seguinte, recomenda-se manter os valores "default": + + + + + + + + + + + Na tela abaixo, no combo-box chamado Catalog, selecione o item com o nome Demoiselle e + no campo Filter digite JSF e em seguida selecione o item demoiselle-jsf-jpa: + + + + + + + + + + - Para criar esse projeto utilizando a IDE Eclipse, acesse o menu File, - New, Other... digite e selecione Maven Project: - conforme mostrado na figura abaixo: - - - - - - - - - - - Na tela seguinte, recomenda-se manter os valores "default": - - - - - - - - + Se as opções anteriores não aparecem, é porque será necessário incluir o catálogo remoto de arquétipos Maven do Demoiselle. + Caso contrário pule o subitem Incluindo catálogo remoto e siga as demais instruções. - - Na tela abaixo, no combo-box chamado Catalog, selecione o item com o nome Demoiselle e - no campo Filter digite JSF e em seguida selecione o item demoiselle-jsf-jpa: - - - - - - - - + + + + A versão do arquétipo irá variar conforme surjam novas versões do Demoiselle. A imagem deste guia apresenta a versão 2.3, contudo, + fique sempre atento para as novas versões do Demoiselle em nosso site e sempre utilize a versão do arquétipo mais recente. - - - Se as opções anteriores não aparecem, é porque será necessário incluir o catálogo remoto de arquétipos Maven do Demoiselle. - Caso contrário pule o subitem Incluindo catálogo remoto e siga as demais instruções. - - - - - A versão do arquétipo irá variar conforme surjam novas versões do Demoiselle. A imagem deste guia apresenta a versão 2.0.0, contudo, - fique sempre atento para as novas versões do Demoiselle em nosso site e sempre utilize a versão do arquétipo mais recente. - - -
- Incluindo catálogo remoto - + +
+ Incluindo catálogo remoto + Ainda na tela criação do novo projeto, clique no botão Configure à direita do combo-box Catalog, para que apareça a tela de configuração de arquétipos Maven no Eclipse. @@ -132,8 +97,8 @@ mvn archetype:generate \ Na campo Catalog File coloque este conteúdo: - http://demoiselle.sourceforge.net/repository/archetype-catalog.xml. - No campo Description informe: Demoiselle. Em seguida, clique no botão + https://oss.sonatype.org/content/repositories/releases. + No campo Description informe: Nexus. Em seguida, clique no botão Verify... para certificar-se que o conteúdo está correto. Retorne então ao item anterior e siga as instruções. @@ -154,87 +119,137 @@ mvn archetype:generate \ Ao término do processo será criado o projeto bookmark gerenciado pelo Maven e com a seguinte estrutura de diretórios: - + -
+|-- src +| |-- main +| | |-- java +| | | |-- br +| | | |-- gov +| | | |-- frameworkdemoiselle +| | | |-- sample +| | | |-- bookmark +| | | |-- business +| | | | |-- BookmarkBC.java +| | | |-- constant +| | | | |-- readme.txt +| | | |-- domain +| | | | |-- Bookmark.java +| | | |-- exception +| | | | |-- readme.txt +| | | |-- message +| | | | |-- readme.txt +| | | |-- persistence +| | | | |-- BookmarkDAO.java +| | | |-- util +| | | | |-- readme.txt +| | | |-- view +| | | |-- BookmarkEditMB.java +| | | |-- BookmarkListMB.java +| | |-- resources +| | | |-- demoiselle.properties +| | | |-- log4j.properties +| | | |-- messages.properties +| | | |-- META-INF +| | | | |-- beans.xml +| | | | |-- persistence.xml +| | | |-- ValidationMessages.properties +| | |-- webapp +| | |-- bookmark_edit.xhtml +| | |-- bookmark_list.xhtml +| | |-- images +| | | |-- logo.png +| | |-- index.html +| | |-- index.xhtml +| | |-- menu.xhtml +| | |-- template +| | | |-- main.xhtml +| | |-- WEB-INF +| | |-- beans.xml +| | |-- faces-config.xml +| | |-- lib +| | |-- web.xml +| |-- test +| |-- java +| | |-- br +| | |-- gov +| | |-- frameworkdemoiselle +| | |-- sample +| | |-- bookmark +| | |-- business +| | |-- BookmarkBCTest.java +| |-- resources +| |-- demoiselle.properties +| |-- META-INF +| |-- beans.xml +| |-- persistence.xml]]> + +
- Criando a entidade de domínio + Entidade de Domínio - Dentro do pacote br.gov.frameworkdemoiselle.sample.domain crie a classe + Dentro do pacote br.gov.frameworkdemoiselle.sample.bookmark.domain foi criada a classe Bookmark, a qual será responsável por representar um objeto de bookmark a ser persistido no banco de dados usando JPA: - - - - Lembre-se de criar os respectivos métodos getter e - setter para as propriedades dessa classe. - - + + + Os dois construtores da classe Bookmark serão utilizados posteriormente na aplicação. As anotações @Entity, @Id, @GeneratedValue e @@ -243,147 +258,182 @@ public class Bookmark {
- Implementando a camada de persistência + Camada de Persistência - Dentro do pacote br.gov.frameworkdemoiselle.sample.persistence crie a classe + Dentro do pacote br.gov.frameworkdemoiselle.sample.bookmark.persistence foi criada a classe BookmarkDAO, a qual será responsável por manipular os dados: - { - - private static final long serialVersionUID = 1L; - -}]]> - + + { + + private static final long serialVersionUID = 1L; + + } + ]]> + + A anotação @PersistenceController trata-se de um estereótipo fornecido - pelo Demoiselle Framework 2.X para indicar que uma classe será tratada + pelo Demoiselle Framework 2 para indicar que uma classe será tratada como controlador da camada de persistência na aplicação. - + A classe abstrata JPACrud faz parte do código de suporte fornecido pelo - Demoiselle Framework 2.X (especificamente na extensão JPA). Ao utilizá-la, + Demoiselle Framework 2 (especificamente na extensão JPA). Ao utilizá-la, o desenvolvedor não precisará implementar métodos de manipulação de uma entidade, tais como busca, listagem, inclusão, alteração e exclusão de registros. Dessa forma, apenas métodos específicos do caso de uso necessitam ser criados manualmente. - + Recomenda-se usar o sufixo DAO nessa classe para indicar que se trata de um objeto de acesso a dados (i.e., um DAO - Data Access Object). - - - No diretório /src/main/resources/META-INF/, altere o arquivo - persistence.xml com o conteúdo seguinte: - - - - - java:/DefaultDS - br.gov.frameworkdemoiselle.sample.domain.Bookmark - - - - - - - - - ]]> - - Este arquivo armazenará as configurações de acesso ao banco de dados via JPA. Neste caso, o gerenciamento das conexões - ficará a cargo do servidor de aplicações (ex: JBoss AS). Será usada a fonte de dados java:/DefaultDS. - + - No diretório /src/main/resources/, altere o arquivo - demoiselle.properties com o conteúdo seguinte: + No diretório /src/main/resources/META-INF/ foi criado o arquivo persistence.xml + utilizado para armazenar as configurações de acesso ao banco de dados via JPA (conexões controladas por um JPA Provider, ex: Hibernate) + ou JTA (conexões controladas pelo Application Server, ex: JBossAS) e como pode ser observado o Demoiselle Framework 2 + já traz neste arquivo vários exemplos de configurações para os mais distintos Application Servers, como: + JBoss AS7, JBoss AS6, GlassFish 3, Tomcat 6 e Tomcat7. - - No diretório /src/main/resources/META-INF/, altere o arquivo - beans.xml com o conteúdo seguinte: + O projeto criado pelo arquétipo demoiselle-jsf-jpa já vem configurado para usar conexão JPA com o HSQLDB, conforme código abaixo: - - + + + - - br.gov.frameworkdemoiselle.transaction.JTATransaction - + + java:jboss/datasources/ExampleDS + + br.gov.frameworkdemoiselle.sample.bookmark.domain.Bookmark -]]> + + + + + + + + ]]> +
- Implementando a camada de negócio + Camada de Negócio - Dentro do pacote br.gov.frameworkdemoiselle.sample.business crie a classe - BookmarkBC, a qual será responsável por gerenciar as regras de negócio - referentes aos bookmarks: + Dentro do pacote br.gov.frameworkdemoiselle.sample.bookmark.business foi criada a classe + BookmarkBC, a qual será responsável por gerenciar as regras de negócio referentes aos bookmarks: - { - - private static final long serialVersionUID = 1L; - - @Startup - @Transactional - public void startup() { - if (findAll().isEmpty()) { - insert(new Bookmark("Demoiselle Portal", "http://www.frameworkdemoiselle.gov.br")); - insert(new Bookmark("Demoiselle SourceForge", "http://sf.net/projects/demoiselle")); - insert(new Bookmark("Twitter", "http://twitter.frameworkdemoiselle.gov.br")); - insert(new Bookmark("Blog", "http://blog.frameworkdemoiselle.gov.br")); - insert(new Bookmark("Wiki", "http://wiki.frameworkdemoiselle.gov.br")); - insert(new Bookmark("Bug Tracking", "http://tracker.frameworkdemoiselle.gov.br")); - insert(new Bookmark("Forum", "http://forum.frameworkdemoiselle.gov.br")); - insert(new Bookmark("SVN", "http://svn.frameworkdemoiselle.gov.br")); - insert(new Bookmark("Maven", "http://repository.frameworkdemoiselle.gov.br")); - insert(new Bookmark("Downloads", "http://download.frameworkdemoiselle.gov.br")); - } - } - -}]]> + + { + + private static final long serialVersionUID = 1L; + + @Startup + @Transactional + public void load() { + if (findAll().isEmpty()) { + insert(new Bookmark("Demoiselle Portal", "http://www.frameworkdemoiselle.gov.br")); + insert(new Bookmark("Demoiselle SourceForge", "http://sf.net/projects/demoiselle")); + insert(new Bookmark("Twitter", "http://twitter.frameworkdemoiselle.gov.br")); + insert(new Bookmark("Blog", "http://blog.frameworkdemoiselle.gov.br")); + insert(new Bookmark("Wiki", "http://wiki.frameworkdemoiselle.gov.br")); + insert(new Bookmark("Bug Tracking", "http://tracker.frameworkdemoiselle.gov.br")); + insert(new Bookmark("Forum", "http://forum.frameworkdemoiselle.gov.br")); + insert(new Bookmark("SVN", "http://svn.frameworkdemoiselle.gov.br")); + insert(new Bookmark("Maven", "http://repository.frameworkdemoiselle.gov.br")); + insert(new Bookmark("Downloads", "http://download.frameworkdemoiselle.gov.br")); + } + } + + } + ]]> + O método startup() nessa classe será invocado automaticamente durante a inicialização da aplicação e fará com que a tabela seja populada com dados iniciais de bookmarks. - + A anotação @BusinessController trata-se de um estereótipo fornecido - pelo Demoiselle Framework 2.X para indicar que uma classe será tratada + pelo Demoiselle Framework 2 para indicar que uma classe será tratada como controlador da camada de negócio na aplicação. - + A classe DelegateCrud faz parte do código de suporte fornecido pelo - Demoiselle Framework 2.0. Ao utilizá-la, o desenvolvedor não precisará + Demoiselle Framework 2. Ao utilizá-la, o desenvolvedor não precisará implementar métodos de negócio triviais de uma entidade e tampouco programar a injeção de dependência entre as camadas de negócio e persistência. Tal injeção será realizada de forma implícita. - + Recomenda-se usar o sufixo BC nessa classe para indicar que se trata de um controlador de negócio (i.e., um BC - Business Controller). - +
- Implementando a camada de apresentação + Camada de Apresentação - Dentro do pacote br.gov.frameworkdemoiselle.sample.view crie a classe - BookmarkListMB, a qual será responsável por exibir as informações sobre - os bookmarks para o usuário: + Dentro do pacote package br.gov.frameworkdemoiselle.sample.bookmark.view foram criadas as + classes BookmarkEditMB e BookmarkListMB, onde a primeira é responsável + por controlar as modificações sobre os bookmarks efetuadas pelo usuário e a segunda é responsável por + exibir as informações sobre os bookmarks. - + { + + private static final long serialVersionUID = 1L; + + @Inject + private BookmarkBC bookmarkBC; + + @Override + @Transactional + public String delete() { + this.bookmarkBC.delete(getId()); + return getPreviousView(); + } + + @Override + @Transactional + public String insert() { + this.bookmarkBC.insert(getBean()); + return getPreviousView(); + } + + @Override + @Transactional + public String update() { + this.bookmarkBC.update(getBean()); + return getPreviousView(); + } + + @Override + protected void handleLoad() { + setBean(this.bookmarkBC.load(getId())); + } + +}]]> + + + { private static final long serialVersionUID = 1L; @@ -393,141 +443,106 @@ public class BookmarkListMB extends AbstractListPageBean { @Override protected List handleResultList() { - return bc.findAll(); + return this.bc.findAll(); } - -}]]> - - - A anotação @ViewController trata-se de um estereótipo fornecido - pelo Demoiselle Framework para indicar que uma classe será tratada - como controlador da camada de apresentação (i.e., visão) na aplicação. - - + + @Transactional + public String deleteSelection() { + boolean delete; + for (Iterator iter = getSelection().keySet().iterator(); iter.hasNext();) { + Long id = iter.next(); + delete = getSelection().get(id); + + if (delete) { + bc.delete(id); + iter.remove(); + } + } + return getPreviousView(); + } + +}]]> + + - A classe AbstractListPageBean faz parte do código de suporte fornecido pelo - Demoiselle Framework (especificamente na extensão JSF). Ao utilizá-la, - o desenvolvedor não precisará implementar métodos específicos de navegação para uma tela de - cadastro (i.e., do tipo CRUD). + A anotação @ViewController trata-se de um estereótipo fornecido + pelo Demoiselle Framework 2 para indicar que uma classe será tratada + como controlador da camada de apresentação (i.e., visão) na aplicação. + + + A anotação @NextView serve para definir a próxima + visão a ser direcionado o fluxo de navegação JSF. De forma semelhante, + a anotação @PreviousView define a visão anterior + de um fluxo. A anotação @Inject é fornecida pela especificação CDI. Ela realiza a injeção de dependência da camada de negócio dentro do artefato da camada de apresentação. + + + A anotação @Transactional trata-se de uma anotação fornecida pelo + Demoiselle Framework 2 para indicar que o método em questão + será incluído na sessão transacional. Caso essa anotação esteja vinculada na classe, + todos os seus métodos serão considerados transacionais. - + + As classes AbstractEditPageBean e AbstractListPageBean fazem parte + do código de suporte fornecido pelo Demoiselle Framework 2 (especificamente na extensão JSF). + Ao utilizá-las, o desenvolvedor não precisará implementar métodos específicos de navegação para uma tela de + cadastro (i.e., do tipo CRUD). + + Recomenda-se usar o sufixo MB nessa classe para indicar que se trata de um bean gerenciado do JSF (i.e., um MB - Managed Bean). - + - No diretório /src/main/webapp/, crie o arquivo - bookmark_list.xhtml com o conteúdo seguinte: + No diretório /src/main/webapp/ foram criados os arquivos: + + bookmark_edit.xhtml - página JSF de cadastro e edição de bookmark; + bookmark_list.xhtml - página JSF de cadastro e edição de bookmark; + index.html - página HTML que redireciona para a página jsf; + index.xhtml - página JSF inicial do sistema; + menu.xhtml - página JSF que monta o menu de navegação. + - - - - - #{messages['bookmark.list.table.title']} - - - - - #{messages['bookmark.label.id']} - - - - #{messages['bookmark.label.description']} - - - - - - - #{messages['bookmark.label.link']} - - - - - - - - -]]> - + + No diretório /src/main/webapp/template foi criado o arquivo: + + main.xhtml - página JSF que serve de template referenciada na demais páginas JSF. + + + Nos arquivos XHTML listados neste exemplo foi empregado o framework PrimeFaces, o qual foi um dos primeiros a oferecer suporte completo à especificação JSF 2.0. - - - No diretório /src/main/webapp/, altere o arquivo - menu.xhtml com o conteúdo seguinte: - - - - - - - - - - - - - - -]]> + - No diretório /src/main/resources/, altere o arquivo - messages.properties incluindo as linhas a seguir: + No diretório /src/main/resources/ podemos observar que foi criado o arquivo de recursos + messages.properties. Ao invés de manter fixas as descrições em rótulos, links, botões e + mensagens em uma aplicação, recomenda-se parametrizar esses textos em arquivos de recursos. Além de ser considerada + boa prática, essa medida facilita uma posterior internacionalização da aplicação para diversos idiomas. - O arquivo de recursos messages.properties armazenará textos no idioma default da aplicação (neste caso, em Português do Brasil). - - - Ao invés de manter fixas as descrições em rótulos, links, botões e mensagens em uma - aplicação, recomenda-se parametrizar esses textos em arquivos de recursos. Além de - ser considerada boa prática, essa medida facilita uma posterior internacionalização - da aplicação para diversos idiomas. - -
Executando no servidor - A última etapa consiste na construção da aplicação Java Web e no respectivo deploy em um servidor - de aplicações. + A última etapa consiste em fazer o deploy da Java Web em um servidor de aplicações. Utilizando a IDE Eclipse, basta clicar com o botão direito no projeto bookmark e acessar o menu Run As, Run on Server. Em seguida, escolha um - servidor compatível com Java EE 6 (ex: JBoss AS 6) e aguarde a inicialização deste. + servidor compatível com Java EE 6 (ex: JBoss AS 7) e aguarde a inicialização deste. @@ -555,14 +570,6 @@ menu.bookmark=Bookmarks]]> direito no servidor desejado e selecione a opção Debug. - - - Também é possível efetuar esses passos em linha de comando. Para isso, execute o comando - mvn package, copie o arquivo bookmark.war resultante - para a pasta de deploy do servidor (ex: JBOSS_HOME/server/default/deploy) e - inicie este último através de seu comando próprio (ex: JBOSS_HOME/bin/run.sh). - - Em seguida, abra o navegador Web de sua preferência e acesse o endereço http://localhost:8080/bookmark. Esta é a @@ -582,6 +589,24 @@ menu.bookmark=Bookmarks]]> + + Para cadastrar um novo bookmark basta ir no menu principal: Bookmarks, + Novo. Executando-a, será exibida a página a seguir: + +
+ Tela de cadastro e edição dos dados na aplicação Bookmark + + + + + + + + + Aplicação Bookmark em funcionamento + + +
\ No newline at end of file diff --git a/documentation/quickstart/pt-BR/images/appedit.png b/documentation/quickstart/pt-BR/images/appedit.png index 8117a2f..3c2cc20 100644 Binary files a/documentation/quickstart/pt-BR/images/appedit.png and b/documentation/quickstart/pt-BR/images/appedit.png differ diff --git a/documentation/quickstart/pt-BR/images/apphome.png b/documentation/quickstart/pt-BR/images/apphome.png index 0e5e6b6..9af62d1 100644 Binary files a/documentation/quickstart/pt-BR/images/apphome.png and b/documentation/quickstart/pt-BR/images/apphome.png differ diff --git a/documentation/quickstart/pt-BR/images/appvalid.png b/documentation/quickstart/pt-BR/images/appvalid.png index ee905c6..59f598f 100644 Binary files a/documentation/quickstart/pt-BR/images/appvalid.png and b/documentation/quickstart/pt-BR/images/appvalid.png differ diff --git a/documentation/quickstart/pt-BR/images/viewserver.png b/documentation/quickstart/pt-BR/images/viewserver.png index f154cdb..b2da74c 100644 Binary files a/documentation/quickstart/pt-BR/images/viewserver.png and b/documentation/quickstart/pt-BR/images/viewserver.png differ diff --git a/documentation/quickstart/pt-BR/instalacao.xml b/documentation/quickstart/pt-BR/instalacao.xml index 89ae46a..b89e2fd 100644 --- a/documentation/quickstart/pt-BR/instalacao.xml +++ b/documentation/quickstart/pt-BR/instalacao.xml @@ -1,79 +1,95 @@ - - - Instalação - -
- Pré-requisitos - - - - - - - - - Software - - - Versão - - - Site (Download) - - - - Java Development Kit (JDK) - 6.0 - openjdk.org - - - Apache Maven - 2.2 - maven.apache.org - - - Eclipse IDE - 3.7 - www.eclipse.org - - - m2eclipse plugin - 0.12 - m2eclipse.sonatype.org - - - JBoss Application Server - 6.0 - www.jboss.org - - - - -
- -
- Demoiselle Infra - - Para auxiliar no preparo do ambiente integrado de desenvolvimento utilizado na presente - documentação, recomenda-se a utilização dos pacotes de software fornecidos pelo projeto - Demoiselle Infra. - Neste link você encontrará as orientações necessárias para a sua configuração. + + Instalação +
+ Pré-requisitos + + + + + + + + + Software + + + Versão + + + Site (Download) + + + + Java Development Kit (JDK) + 6.0 + + + openjdk.org + + + + + Apache Maven + 2.2 + + + maven.apache.org + + + + + Eclipse IDE + 3.7 + + + www.eclipse.org + + + + + m2eclipse plugin + 0.12 + + + m2eclipse.sonatype.org + + + + + JBoss Application Server + 7.1.1 + + + www.jboss.org + + + + + + +
+
+ Demoiselle Infra + + Para auxiliar no preparo do ambiente integrado de desenvolvimento utilizado na presente + documentação, recomenda-se a utilização dos pacotes de software fornecidos pelo projeto + Demoiselle Infra. + Neste link você encontrará as orientações necessárias para a sua configuração. + + + + Atualmente são disponibilizados pacotes exclusivamente para a plataforma GNU/Linux + e distribuições baseadas no Debian, tal como Ubuntu. - - - Atualmente são disponibilizados pacotes exclusivamente para a plataforma GNU/Linux - e distribuições baseadas no Debian, tal como Ubuntu. - - - + + Se você não utiliza nenhum dos sistemas operacionais citados, terá que baixar e instalar todos os softwares listados acima. Para auxiliar um pouco o processo, disponibilizamos alguns - vídeos - aqui de demonstração de algumas fases. - -
- -
\ No newline at end of file + vídeos + aqui de demonstração de algumas fases. +
+
+
diff --git a/documentation/quickstart/pt-BR/master.xml b/documentation/quickstart/pt-BR/master.xml index adc8d72..4c51b10 100644 --- a/documentation/quickstart/pt-BR/master.xml +++ b/documentation/quickstart/pt-BR/master.xml @@ -1,41 +1,16 @@ - + + + + + + + + + - - - - Sobre o QuickStart - - Este documento é um tutorial do tipo "passo a passo" que visa ilustrar de forma rápida, clara e prática - a criação de uma aplicação simples utilizando o Demoiselle Framework 2.X. - - - - Apesar de o Demoiselle Framework 2.X ser simples de usar, o desenvolvimento de - aplicações não triviais requer o conhecimento das diversas tecnologias envolvidas na especificação - Java EE, incluindo: - - Linguagem Java - Servlets, JSP e Tag Libraries - JavaBeans - HTML e XML - Contêineres e Servidores Web - - - - - - Esta documentação refere-se à release 2.2.X do Demoiselle Framework - e pode diferir significativamente das versões anteriores. - - - - - - - - - - \ No newline at end of file diff --git a/documentation/quickstart/pt-BR/melhoria.xml b/documentation/quickstart/pt-BR/melhoria.xml index feace62..899af07 100644 --- a/documentation/quickstart/pt-BR/melhoria.xml +++ b/documentation/quickstart/pt-BR/melhoria.xml @@ -6,359 +6,80 @@ Melhorando a aplicação
- Implementando funcionalidade de edição - - Agora que a aplicação inicial já está rodando, iremos aumentar sua complexidade adicionando a - funcionalidade de edição dos registros de bookmark. - - - Dentro do pacote br.gov.frameworkdemoiselle.sample.view crie a classe - BookmarkEditMB, a qual será responsável por controlar as modificações sobre - os bookmarks efetuadas pelo usuário: - - { - - private static final long serialVersionUID = 1L; - - @Inject - private BookmarkBC bc; - - @Override - @Transactional - public String delete() { - bc.delete(getId()); - return getPreviousView(); - } - - @Override - @Transactional - public String insert() { - bc.insert(getBean()); - return getPreviousView(); - } - - @Override - @Transactional - public String update() { - bc.update(getBean()); - return getPreviousView(); - } - - @Override - protected void handleLoad() { - setBean(bc.load(getId())); - } - -}]]> - - - A anotação @Transactional trata-se de uma anotação fornecida pelo - Demoiselle Framework para indicar que o método em questão - será incluído na sessão transacional. Caso essa anotação esteja vinculada na classe, - todos os seus métodos serão considerados transacionais. - - - - A classe AbstractEditPageBean faz parte do código de suporte fornecido pelo - Demoiselle Framework (especificamente na extensão JSF). Ao utilizá-la, - o desenvolvedor não precisará implementar métodos específicos de navegação para uma tela de - cadastro (i.e., do tipo CRUD). - - - Ainda no pacote br.gov.frameworkdemoiselle.sample.view altere a classe - BookmarkListMB: - - - - - - - { - - private static final long serialVersionUID = 1L; - - @Inject - private BookmarkBC bc; - - @Override - protected List handleResultList() { - return bc.findAll(); - } - - @Transactional - public String deleteSelection() { - boolean delete = false; - Iterator iter = getSelection().keySet().iterator(); - while (iter.hasNext()) { - Long id = iter.next(); - delete = getSelection().get(id); - if (delete) { - bc.delete(id); - iter.remove(); - } - } - return getPreviousView(); - } - -}]]> - - - - A anotação @NextView serve para definir a próxima - visão a ser direcionado o fluxo de navegação JSF. De forma semelhante, - a anotação @PreviousView define a visão anterior - de um fluxo. - - - - - O novo método deleteSelection() servirá para - permitir a funcionalidade de exclusão de múltiplas linhas da tabela. - A anotação @Transactional nele faz com que o método - seja considerado como transacional, incluindo-o na respectiva sessão. - - - - - - No diretório /src/main/webapp/, crie o arquivo - bookmark_edit.xhtml com o conteúdo seguinte: - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - -
-
-]]>
- - Ainda no diretório /src/main/webapp/, modifique o arquivo - bookmark_list.xhtml com o conteúdo seguinte: - - - - - - - - - - - - - - - - #{messages['bookmark.list.table.title']} - - - - - #{messages['bookmark.label.id']} - - - - #{messages['bookmark.label.description']} - - - - - - - #{messages['bookmark.label.link']} - - - - - - - - -]]> - - No diretório /src/main/webapp/, altere o arquivo - menu.xhtml conforme o conteúdo seguinte: - - - - - - - - - - - - - - - -]]> - - Tendo feito todas essas alterações, reconstrua o projeto Java e faça novo deploy no - servidor de aplicações. Ao acessar a aplicação bookmark pelo browser, - verá que agora existe uma opção nova no menu principal: Bookmarks, - Novo. Executando-a, será exibida a página a seguir: - -
- Edição dos dados na aplicação Bookmark - - - - - - - - - Aplicação Bookmark em funcionamento - - -
-
- -
Exibindo mensagens para o usuário Uma vez que o objetivo principal da aplicação foi concluído (i.e., listagem e edição de bookmarks), - veremos algumas funcionalidades adicionais fornecidas pelo Demoiselle Framework, + veremos algumas funcionalidades adicionais fornecidas pelo Demoiselle Framework 2, iniciando pelo tratamento de mensagens. - Dentro do pacote br.gov.frameworkdemoiselle.sample.message crie a interface + Dentro do pacote br.gov.frameworkdemoiselle.sample.bookmark.message crie a interface InfoMessages, a qual servirá para armazenar mensagens informativas a serem exibidas ao usuário: - + + - - A unidade básica de manipulação de mensagens no Demoiselle Framework - é a interface Message. Ou seja, basta que esta última seja implementada na - aplicação para que o contexto de mensagens possa manipulá-la. - A classe DefaultMessage é oferecida como implementação padrão dessa interface. - + + A unidade básica de manipulação de mensagens no Demoiselle Framework 2 + é a interface Message. Ou seja, basta que esta última seja implementada na + aplicação para que o contexto de mensagens possa manipulá-la. + A classe DefaultMessage é oferecida como implementação padrão dessa interface. + No exemplo em questão, o texto das mensagens será recuperado do arquivo de recursos messages.properties previamente criado no diretório /src/main/resources/. Para isso, adicione as seguintes linhas nesse arquivo: - + +bookmark-update-ok=Bookmark atualizado: {0}]]> + - Dentro do pacote br.gov.frameworkdemoiselle.sample.business altere a classe + Dentro do pacote br.gov.frameworkdemoiselle.sample.bookmark.business altere a classe BookmarkBC incluindo os trechos de código indicados a seguir: - - - + + + - { + + { - @Inject - private MessageContext messageContext; + @Inject + private MessageContext messageContext; - ... + ... - @Override - public void insert(Bookmark bookmark) { - super.insert(bookmark); - messageContext.add(InfoMessages.BOOKMARK_INSERT_OK, - bookmark.getDescription()); - } - - @Override - public void update(Bookmark bookmark) { - super.update(bookmark); - messageContext.add(InfoMessages.BOOKMARK_UPDATE_OK, - bookmark.getDescription()); - } + @Override + public void insert(Bookmark bookmark) { + super.insert(bookmark); + messageContext.add(InfoMessages.BOOKMARK_INSERT_OK, bookmark.getDescription()); + } - @Override - public void delete(Long id) { - super.delete(id); - messageContext.add(InfoMessages.BOOKMARK_DELETE_OK, id); - } + @Override + public void update(Bookmark bookmark) { + super.update(bookmark); + messageContext.add(InfoMessages.BOOKMARK_UPDATE_OK, bookmark.getDescription()); + } + @Override + public void delete(Long id) { + super.delete(id); + messageContext.add(InfoMessages.BOOKMARK_DELETE_OK, id); + } }]]> @@ -410,119 +131,123 @@ public class BookmarkBC extends DelegateCrud {
- Criando regras de validação nos campos - - Sendo aderente à especificação Java EE 6, o Demoiselle Framework - recomenda e faz uso do mecanismo de validação provido pela especificação - JSR-303 (Bean Validation). - - - A fim de testarmos mais essa funcionalidade, utilizaremos a implementação de validação - Hibernate Validator. Para tal, abra o arquivo pom.xml - do projeto bookmark e inclua nele a seguinte dependência: - - - ... - - org.hibernate - hibernate-validator - 4.1.0.Final - -]]> - + Criando regras de validação nos campos - O objetivo dessa abordagem de validação é auxiliar na criação de restrições diretamente nas - entidades de domínio. Tais restrições serão utilizadas de forma conjunta nas camadas de - persistência e apresentação da aplicação. A vantagem é que elas são facilmente configuráveis, - bastando apenas incluir certas anotações (ex: @NotNull, @Size) - nos campos da classe a ser validada. + Sendo aderente à especificação Java EE 6, o Demoiselle Framework + recomenda e faz uso do mecanismo de validação provido pela especificação + JSR-303 (Bean Validation). - - - No pacote br.gov.frameworkdemoiselle.sample.domain altere a entidade de domínio - Bookmark incluindo as anotações de validação nos campos description - e link conforme ilustrado a seguir: - - - - - - - - - - - No campo description, a anotação @NotNull serve - para impedir que o valor nulo seja atribuído a ele. Já a anotação @Size - restringe a quantidade mínima e máxima de caracteres no campo. - - - - - No campo link mais restrições são aplicadas. Além de não permitir o valor - nulo (com @NotNull) e estipular o comprimento máximo de 255 caracteres - (com @Size), o campo não pode ficar vazio (com @NotBlank) - e seu conteúdo deve ser um endereço de Internet válido (com @URL). - - - - - - Validações de campos específicos para a comunidade brasileira são oferecidos pelo componente - Demoiselle Validation. Com ele, as seguintes anotações podem ser aplicadas nas - classes de domínio: @Cep, @Cnpj, @Cpf, - @InscricaoEstadual e @PisPasep. + A fim de testarmos mais essa funcionalidade, utilizaremos a implementação de validação + Hibernate Validator. Para tal, abra o arquivo pom.xml + do projeto bookmark e inclua nele a seguinte dependência: - - - Assim que você efetuar as modificações, reconstrua o projeto Java e faça novo deploy no servidor de - aplicações. Acesse a aplicação bookmark e, na tela de edição de bookmarks, deixe - vazios os campos no formulário e clique em Salvar. Tente também preencher um - endereço de Internet inválido no campo Link. Caixas de erro com as mensagens - referentes as validações devem aparecer ao lado de cada campo, tal como ilustrado: - -
- Validação de campos na aplicação Bookmark - - - - - - - - - Aplicação Bookmark em funcionamento - - -
- + + + ... + + org.hibernate + hibernate-validator + 4.3.0.Final + + ]]> + + + + O objetivo dessa abordagem de validação é auxiliar na criação de restrições diretamente nas + entidades de domínio. Tais restrições serão utilizadas de forma conjunta nas camadas de + persistência e apresentação da aplicação. A vantagem é que elas são facilmente configuráveis, + bastando apenas incluir certas anotações (ex: @NotNull, @Size) + nos campos da classe a ser validada. + + + + No pacote br.gov.frameworkdemoiselle.sample.bookmark.domain altere a entidade de domínio + Bookmark incluindo as anotações de validação nos campos description + e link conforme ilustrado a seguir: + + + + + + + + + + + + + No campo description, a anotação @NotNull serve + para impedir que o valor nulo seja atribuído a ele. Já a anotação @Size + restringe a quantidade mínima e máxima de caracteres no campo. + + + + + No campo link mais restrições são aplicadas. Além de não permitir o valor + nulo (com @NotNull) e estipular o comprimento máximo de 255 caracteres + (com @Size), o campo não pode ficar vazio (com @NotBlank) + e seu conteúdo deve ser um endereço de Internet válido (com @URL). + + + + + + + Validações de campos específicos para a comunidade brasileira são oferecidos pelo componente + Demoiselle Validation. Com ele, as seguintes anotações podem ser aplicadas nas + classes de domínio: @Cep, @Cnpj, @Cpf, + @InscricaoEstadual e @PisPasep. + + - As mensagens exibidas na tela durante a validação estão contidas no arquivo de - recursos ValidationMessages.properties presente no diretório - /src/main/resources/. + Assim que você efetuar as modificações, reconstrua o projeto Java e faça novo deploy no servidor de + aplicações. Acesse a aplicação bookmark e, na tela de edição de bookmarks, deixe + vazios os campos no formulário e clique em Salvar. Tente também preencher um + endereço de Internet inválido no campo Link. Caixas de erro com as mensagens + referentes as validações devem aparecer ao lado de cada campo, tal como ilustrado: - +
+ Validação de campos na aplicação Bookmark + + + + + + + + + Aplicação Bookmark em funcionamento + + +
+ + + As mensagens exibidas na tela durante a validação estão contidas no arquivo de + recursos ValidationMessages.properties presente no diretório + /src/main/resources/. + +
- + \ No newline at end of file diff --git a/documentation/quickstart/pt-BR/preface.xml b/documentation/quickstart/pt-BR/preface.xml new file mode 100644 index 0000000..29c9bf9 --- /dev/null +++ b/documentation/quickstart/pt-BR/preface.xml @@ -0,0 +1,30 @@ + + + + Sobre o QuickStart + + Este documento é um tutorial do tipo "passo a passo" que visa ilustrar de forma rápida, clara e prática a criação + de uma aplicação simples utilizando o Demoiselle Framework 2.3. + + + + Apesar de o Demoiselle Framework 2.3 ser simples de usar, o desenvolvimento de aplicações + não triviais requer o conhecimento das diversas tecnologias envolvidas na especificação + Java EE, incluindo: + + Linguagem Java + Servlets, JSP e Tag Libraries + JavaBeans + HTML e XML + Contêineres e Servidores Web + + + + + + Esta documentação refere-se à release 2.3 do Demoiselle Framework e pode diferir + significativamente das versões anteriores. + + + \ No newline at end of file diff --git a/impl/core/src/test/java/br/gov/frameworkdemoiselle/internal/bootstrap/StartupBootstrapTest.java b/impl/core/src/test/java/br/gov/frameworkdemoiselle/internal/bootstrap/StartupBootstrapTest.java index ed71a4c..54e5fdd 100644 --- a/impl/core/src/test/java/br/gov/frameworkdemoiselle/internal/bootstrap/StartupBootstrapTest.java +++ b/impl/core/src/test/java/br/gov/frameworkdemoiselle/internal/bootstrap/StartupBootstrapTest.java @@ -14,7 +14,7 @@ // * GNU General Public License for more details. // * // * You should have received a copy of the GNU Lesser General Public License version 3 -// * along with this program; if not, see +// * along with this program; if not, see // * or write to the Free Software Foundation, Inc., 51 Franklin Street, // * Fifth Floor, Boston, MA 02110-1301, USA. // * ---------------------------------------------------------------------------- @@ -30,7 +30,7 @@ // * para maiores detalhes. // * // * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título -// * "LICENCA.txt", junto com esse programa. Se não, acesse +// * "LICENCA.txt", junto com esse programa. Se não, acesse // * ou escreva para a Fundação do Software Livre (FSF) Inc., // * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. // */ diff --git a/impl/extension/servlet/src/test/java/br/gov/frameworkdemoiselle/internal/proxy/HttpServletRequestProxyTest.java b/impl/extension/servlet/src/test/java/br/gov/frameworkdemoiselle/internal/proxy/HttpServletRequestProxyTest.java new file mode 100644 index 0000000..718a9fd --- /dev/null +++ b/impl/extension/servlet/src/test/java/br/gov/frameworkdemoiselle/internal/proxy/HttpServletRequestProxyTest.java @@ -0,0 +1,11 @@ +package br.gov.frameworkdemoiselle.internal.proxy; + +import org.junit.runner.RunWith; +import org.powermock.modules.junit4.PowerMockRunner; + +@RunWith(PowerMockRunner.class) +public class HttpServletRequestProxyTest { + + + +} -- libgit2 0.21.2