Commit d7c4460b6fe305d1fe4a5021093b9319fd7b57a7

Authored by Ednara Oliveira
2 parents 6fe93186 8af50b57
Exists in master

Merge branch 'master' of git@github.com:demoiselle/framework.git

documentation/quickstart/pt-BR/authorgroup.xml
1 1 <?xml version='1.0' encoding="utf-8"?>
2 2 <!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
4   -<authorgroup>
5   - <author>
6   - <firstname>Emerson</firstname>
7   - <surname>Saito</surname>
8   - </author>
9   - <author>
10   - <firstname>Marlon</firstname>
11   - <surname>Carvalho</surname>
12   - </author>
13   - <author>
14   - <firstname>Rodrigo</firstname>
15   - <surname>Hjort</surname>
16   - </author>
17   - <author>
18   - <firstname>Serge</firstname>
19   - <surname>Rehem</surname>
20   - </author>
21   -</authorgroup>
22 4 \ No newline at end of file
  5 + <authorgroup>
  6 + <author>
  7 + <firstname>Emerson</firstname>
  8 + <surname>Saito</surname>
  9 + </author>
  10 + <author>
  11 + <firstname>Luciano</firstname>
  12 + <surname>Borges</surname>
  13 + </author>
  14 + <author>
  15 + <firstname>Marlon</firstname>
  16 + <surname>Carvalho</surname>
  17 + </author>
  18 + <author>
  19 + <firstname>Rodrigo</firstname>
  20 + <surname>Hjort</surname>
  21 + </author>
  22 + <author>
  23 + <firstname>Serge</firstname>
  24 + <surname>Rehem</surname>
  25 + </author>
  26 + </authorgroup>
23 27 \ No newline at end of file
... ...
documentation/quickstart/pt-BR/bookinfo.xml
1 1 <?xml version='1.0' encoding="utf-8"?>
2 2 <!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
4   -<bookinfo>
5   -
6   - <title>Framework Demoiselle 2.0</title>
7   - <subtitle>QuickStart</subtitle>
8   -
9   - <abstract>Demoiselle 2.0: Framework de Código Aberto para o Desenvolvimento de Aplicações Java EE 6</abstract>
10   - <titleabbrev>Demoiselle 2.0 - QuickStart</titleabbrev>
11   -
12   - <xi:include href="revhistory.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
13   - <xi:include href="authorgroup.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
14   -
15   -</bookinfo>
16 4 \ No newline at end of file
  5 + <bookinfo>
  6 + <title>Framework Demoiselle 2.3</title>
  7 + <subtitle>QuickStart</subtitle>
  8 + <xi:include href="authorgroup.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  9 + </bookinfo>
... ...
documentation/quickstart/pt-BR/criacao.xml
1 1 <?xml version='1.0' encoding="utf-8"?>
2 2 <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
4   -<chapter id="criacao">
5 4  
  5 +<chapter id="criacao">
6 6 <title>Criação da aplicação</title>
7   -
8 7 <section>
9 8 <title>Nossa primeira aplicação</title>
10 9 <para>
11   - Para iniciar o uso do <emphasis>Demoiselle Framework 2.X</emphasis>, criaremos uma aplicação
  10 + Para iniciar o uso do <emphasis>Demoiselle Framework 2.3</emphasis>, criaremos uma aplicação
12 11 Java do tipo Web utilizando o <ulink url="http://maven.apache.org/"><citetitle>Apache Maven</citetitle></ulink>,
13 12 através do plugin para IDE Eclipse (M2Eclipse) para gerenciar todo o clico de vida do Projeto,
14 13 desde a criação até o <emphasis>deploy</emphasis>.
... ... @@ -23,91 +22,57 @@
23 22  
24 23 <section>
25 24 <title>Construindo o projeto usando um arquétipo Maven</title>
26   - <important>
27   - <para>
28   - O procedimento a seguir pode ser comumente executado de forma visual com o auxílio de um
29   - assistente (i.e., wizard) de dentro da IDE Eclipse, como será demonstrado logo após o modo linha de comando.
30   - </para>
31   - </important>
32   - <section>
33   - <title>Linha de comando</title>
34   - <para>
35   - Para criar a aplicação usando o arquétipo em linha de comando, abra um terminal e execute o comando <command>mvn</command>
36   - do Maven com os argumentos ilustrados a seguir:
37   - </para>
38   - <programlisting role="BASH"><![CDATA[mvn archetype:generate \
39   - -DarchetypeGroupId=br.gov.frameworkdemoiselle.archetypes \
40   - -DarchetypeArtifactId=demoiselle-jsf-jpa \
41   - -DarchetypeVersion=2.2.0 \
42   - -DarchetypeRepository=http://demoiselle.sourceforge.net/repository/release/ \
43   - -DgroupId=br.gov.frameworkdemoiselle.sample \
44   - -DartifactId=bookmark \
45   - -Dversion=1.0.0-SNAPSHOT \
46   - -DinteractiveMode=false]]></programlisting>
47   -<!-- para testar locamente:
48   -mvn archetype:generate \
49   - -DarchetypeGroupId=br.gov.frameworkdemoiselle.archetypes \
50   - -DarchetypeArtifactId=demoiselle-jsf-jpa \
51   - -DarchetypeVersion=2.0.0-RC1-SNAPSHOT \
52   - -DgroupId=br.gov.frameworkdemoiselle.sample \
53   - -DartifactId=bookmark \
54   - -Dversion=1.0.0-SNAPSHOT \
55   - -DinteractiveMode=false
56   - -->
57   - </section>
58   - <section>
59   - <title>Modo assistido com Eclipse</title>
  25 + <para>
  26 + Para criar esse projeto utilizando a IDE Eclipse, acesse o menu <guimenu>File</guimenu>,
  27 + <guimenu>New</guimenu>, <guimenu>Other...</guimenu> digite e selecione <guimenu>Maven Project</guimenu>:
  28 + conforme mostrado na figura abaixo:
  29 + <mediaobject>
  30 + <imageobject role="fo">
  31 + <imagedata fileref="images/newwiz.png" align="center" scalefit="1" width="75%"/>
  32 + </imageobject>
  33 + <imageobject role="html">
  34 + <imagedata fileref="images/newwiz.png" align="center"/>
  35 + </imageobject>
  36 + </mediaobject>
  37 + </para>
  38 + <para>
  39 + Na tela seguinte, recomenda-se manter os valores "default":
  40 + <mediaobject>
  41 + <imageobject role="fo">
  42 + <imagedata fileref="images/new-maven-project01.png" align="center" scalefit="1" width="75%"/>
  43 + </imageobject>
  44 + <imageobject role="html">
  45 + <imagedata fileref="images/new-maven-project01.png" align="center"/>
  46 + </imageobject>
  47 + </mediaobject>
  48 + </para>
  49 + <para>
  50 + Na tela abaixo, no combo-box chamado <literal>Catalog</literal>, selecione o item com o nome <quote>Demoiselle</quote> e
  51 + no campo <literal>Filter</literal> digite <quote>JSF</quote> e em seguida selecione o item <quote>demoiselle-jsf-jpa</quote>:
  52 + <mediaobject>
  53 + <imageobject role="fo">
  54 + <imagedata fileref="images/new-maven-project02.png" align="center" scalefit="1" width="75%"/>
  55 + </imageobject>
  56 + <imageobject role="html">
  57 + <imagedata fileref="images/new-maven-project02.png" align="center"/>
  58 + </imageobject>
  59 + </mediaobject>
  60 + </para>
  61 + <caution>
60 62 <para>
61   - Para criar esse projeto utilizando a IDE Eclipse, acesse o menu <guimenu>File</guimenu>,
62   - <guimenu>New</guimenu>, <guimenu>Other...</guimenu> digite e selecione <guimenu>Maven Project</guimenu>:
63   - conforme mostrado na figura abaixo:
64   - <mediaobject>
65   - <imageobject role="fo">
66   - <imagedata fileref="images/newwiz.png" align="center" scalefit="1" width="75%"/>
67   - </imageobject>
68   - <imageobject role="html">
69   - <imagedata fileref="images/newwiz.png" align="center"/>
70   - </imageobject>
71   - </mediaobject>
72   - </para>
73   - <para>
74   - Na tela seguinte, recomenda-se manter os valores "default":
75   - <mediaobject>
76   - <imageobject role="fo">
77   - <imagedata fileref="images/new-maven-project01.png" align="center" scalefit="1" width="75%"/>
78   - </imageobject>
79   - <imageobject role="html">
80   - <imagedata fileref="images/new-maven-project01.png" align="center"/>
81   - </imageobject>
82   - </mediaobject>
  63 + Se as opções anteriores não aparecem, é porque será necessário incluir o catálogo remoto de arquétipos Maven do Demoiselle.
  64 + Caso contrário pule o subitem <emphasis>Incluindo catálogo remoto</emphasis> e siga as demais instruções.
83 65 </para>
84   - <para>
85   - Na tela abaixo, no combo-box chamado <literal>Catalog</literal>, selecione o item com o nome <quote>Demoiselle</quote> e
86   - no campo <literal>Filter</literal> digite <quote>JSF</quote> e em seguida selecione o item <quote>demoiselle-jsf-jpa</quote>:
87   - <mediaobject>
88   - <imageobject role="fo">
89   - <imagedata fileref="images/new-maven-project02.png" align="center" scalefit="1" width="75%"/>
90   - </imageobject>
91   - <imageobject role="html">
92   - <imagedata fileref="images/new-maven-project02.png" align="center"/>
93   - </imageobject>
94   - </mediaobject>
  66 + </caution>
  67 + <caution>
  68 + <para>
  69 + 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,
  70 + fique sempre atento para as novas versões do Demoiselle em nosso site e sempre utilize a versão do arquétipo mais recente.
95 71 </para>
96   - <caution>
97   - <para>
98   - Se as opções anteriores não aparecem, é porque será necessário incluir o catálogo remoto de arquétipos Maven do Demoiselle.
99   - Caso contrário pule o subitem <emphasis>Incluindo catálogo remoto</emphasis> e siga as demais instruções.
100   - </para>
101   - </caution>
102   - <caution>
103   - <para>
104   - 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,
105   - fique sempre atento para as novas versões do Demoiselle em nosso site e sempre utilize a versão do arquétipo mais recente.
106   - </para>
107   - </caution>
108   - <section>
109   - <title>Incluindo catálogo remoto</title>
110   - <para>
  72 + </caution>
  73 + <section>
  74 + <title>Incluindo catálogo remoto</title>
  75 + <para>
111 76 Ainda na tela criação do novo projeto, clique no botão <guibutton>Configure</guibutton> à direita do combo-box
112 77 <literal>Catalog</literal>, para que apareça a tela de configuração de arquétipos Maven no Eclipse.
113 78 </para>
... ... @@ -132,8 +97,8 @@ mvn archetype:generate \
132 97 </mediaobject>
133 98 <para>
134 99 Na campo <literal>Catalog File</literal> coloque este conteúdo:
135   - <literal>http://demoiselle.sourceforge.net/repository/archetype-catalog.xml</literal>.
136   - No campo <literal>Description</literal> informe: <quote>Demoiselle</quote>. Em seguida, clique no botão
  100 + <literal>https://oss.sonatype.org/content/repositories/releases</literal>.
  101 + No campo <literal>Description</literal> informe: <quote>Nexus</quote>. Em seguida, clique no botão
137 102 <guibutton>Verify...</guibutton> para certificar-se que o conteúdo está correto.
138 103 Retorne então ao item anterior e siga as instruções.
139 104 </para>
... ... @@ -154,87 +119,137 @@ mvn archetype:generate \
154 119 Ao término do processo será criado o projeto <literal>bookmark</literal> gerenciado
155 120 pelo Maven e com a seguinte estrutura de diretórios:
156 121 </para>
157   - <programlisting><![CDATA[bookmark/
  122 + <programlisting>
  123 +<![CDATA[bookmark/
158 124 |-- pom.xml
159   -`-- src
160   - |-- main
161   - | |-- java
162   - | | `-- br
163   - | | `-- gov
164   - | | `-- frameworkdemoiselle
165   - | | `-- sample
166   - | | |-- business
167   - | | |-- constant
168   - | | |-- domain
169   - | | |-- exception
170   - | | |-- message
171   - | | |-- persistence
172   - | | |-- util
173   - | | `-- view
174   - | |-- resources
175   - | | |-- demoiselle.properties
176   - | | |-- log4j.properties
177   - | | |-- messages.properties
178   - | | |-- META-INF
179   - | | | |-- beans.xml
180   - | | | `-- persistence.xml
181   - | | `-- ValidationMessages.properties
182   - | `-- webapp
183   - | |-- home.xhtml
184   - | |-- images
185   - | | `-- logo.png
186   - | |-- index.html
187   - | |-- menu.xhtml
188   - | |-- template
189   - | | `-- main.xhtml
190   - | `-- WEB-INF
191   - | |-- faces-config.xml
192   - | `-- web.xml
193   - `-- test
194   - |-- java
195   - | `-- br
196   - | `-- gov
197   - | `-- frameworkdemoiselle
198   - | `-- sample
199   - `-- resources]]></programlisting>
200   - </section>
  125 +|-- src
  126 +| |-- main
  127 +| | |-- java
  128 +| | | |-- br
  129 +| | | |-- gov
  130 +| | | |-- frameworkdemoiselle
  131 +| | | |-- sample
  132 +| | | |-- bookmark
  133 +| | | |-- business
  134 +| | | | |-- BookmarkBC.java
  135 +| | | |-- constant
  136 +| | | | |-- readme.txt
  137 +| | | |-- domain
  138 +| | | | |-- Bookmark.java
  139 +| | | |-- exception
  140 +| | | | |-- readme.txt
  141 +| | | |-- message
  142 +| | | | |-- readme.txt
  143 +| | | |-- persistence
  144 +| | | | |-- BookmarkDAO.java
  145 +| | | |-- util
  146 +| | | | |-- readme.txt
  147 +| | | |-- view
  148 +| | | |-- BookmarkEditMB.java
  149 +| | | |-- BookmarkListMB.java
  150 +| | |-- resources
  151 +| | | |-- demoiselle.properties
  152 +| | | |-- log4j.properties
  153 +| | | |-- messages.properties
  154 +| | | |-- META-INF
  155 +| | | | |-- beans.xml
  156 +| | | | |-- persistence.xml
  157 +| | | |-- ValidationMessages.properties
  158 +| | |-- webapp
  159 +| | |-- bookmark_edit.xhtml
  160 +| | |-- bookmark_list.xhtml
  161 +| | |-- images
  162 +| | | |-- logo.png
  163 +| | |-- index.html
  164 +| | |-- index.xhtml
  165 +| | |-- menu.xhtml
  166 +| | |-- template
  167 +| | | |-- main.xhtml
  168 +| | |-- WEB-INF
  169 +| | |-- beans.xml
  170 +| | |-- faces-config.xml
  171 +| | |-- lib
  172 +| | |-- web.xml
  173 +| |-- test
  174 +| |-- java
  175 +| | |-- br
  176 +| | |-- gov
  177 +| | |-- frameworkdemoiselle
  178 +| | |-- sample
  179 +| | |-- bookmark
  180 +| | |-- business
  181 +| | |-- BookmarkBCTest.java
  182 +| |-- resources
  183 +| |-- demoiselle.properties
  184 +| |-- META-INF
  185 +| |-- beans.xml
  186 +| |-- persistence.xml]]>
  187 + </programlisting>
  188 +
201 189  
202 190 <section>
203   - <title>Criando a entidade de domínio</title>
  191 + <title>Entidade de Domínio</title>
204 192 <para>
205   - Dentro do pacote <literal>br.gov.frameworkdemoiselle.sample.domain</literal> crie a classe
  193 + Dentro do pacote <literal>br.gov.frameworkdemoiselle.sample.bookmark.domain</literal> foi criada a classe
206 194 <literal>Bookmark</literal>, a qual será responsável por representar um objeto de bookmark
207 195 a ser persistido no banco de dados usando JPA:
208 196 </para>
209   - <programlisting role="JAVA"><![CDATA[@Entity
210   -public class Bookmark {
211   -
212   - @Id
213   - @GeneratedValue
214   - private Long id;
215   -
216   - @Column
217   - private String description;
218   -
219   - @Column
220   - private String link;
221   -
222   - public Bookmark() {
223   - super();
224   - }
225   -
226   - public Bookmark(String description, String link) {
227   - this.description = description;
228   - this.link = link;
229   - }
230   -
231   -}]]></programlisting>
232   - <note>
233   - <para>
234   - Lembre-se de criar os respectivos métodos <emphasis>getter</emphasis> e
235   - <emphasis>setter</emphasis> para as propriedades dessa classe.
236   - </para>
237   - </note>
  197 + <programlisting role="JAVA">
  198 + <![CDATA[
  199 + @Entity
  200 + public class Bookmark implements Serializable {
  201 +
  202 + private static final long serialVersionUID = 1L;
  203 +
  204 + /*
  205 + * If you are using Glassfish then remove the strategy attribute
  206 + */
  207 + @Id
  208 + @GeneratedValue(strategy = SEQUENCE)
  209 + private Long id;
  210 +
  211 + @Column
  212 + private String description;
  213 +
  214 + @Column
  215 + private String link;
  216 +
  217 + public Bookmark() {
  218 + super();
  219 + }
  220 +
  221 + public Bookmark(String description, String link) {
  222 + this.description = description;
  223 + this.link = link;
  224 + }
  225 +
  226 + public Long getId() {
  227 + return id;
  228 + }
  229 +
  230 + public void setId(Long id) {
  231 + this.id = id;
  232 + }
  233 +
  234 + public String getDescription() {
  235 + return description;
  236 + }
  237 +
  238 + public void setDescription(String description) {
  239 + this.description = description;
  240 + }
  241 +
  242 + public String getLink() {
  243 + return link;
  244 + }
  245 +
  246 + public void setLink(String link) {
  247 + this.link = link;
  248 + }
  249 +
  250 + }
  251 + ]]>
  252 + </programlisting>
238 253 <para>
239 254 Os dois construtores da classe <literal>Bookmark</literal> serão utilizados posteriormente na aplicação.
240 255 As anotações <literal>@Entity</literal>, <literal>@Id</literal>, <literal>@GeneratedValue</literal> e
... ... @@ -243,147 +258,182 @@ public class Bookmark {
243 258 </section>
244 259  
245 260 <section>
246   - <title>Implementando a camada de persistência</title>
  261 + <title>Camada de Persistência</title>
247 262 <para>
248   - Dentro do pacote <literal>br.gov.frameworkdemoiselle.sample.persistence</literal> crie a classe
  263 + Dentro do pacote <literal>br.gov.frameworkdemoiselle.sample.bookmark.persistence</literal> foi criada a classe
249 264 <literal>BookmarkDAO</literal>, a qual será responsável por manipular os dados:
250 265 </para>
251   - <programlisting role="JAVA"><![CDATA[@PersistenceController
252   -public class BookmarkDAO extends JPACrud<Bookmark, Long> {
253   -
254   - private static final long serialVersionUID = 1L;
255   -
256   -}]]></programlisting>
257   - <tip>
  266 + <programlisting role="JAVA">
  267 + <![CDATA[
  268 + @PersistenceController
  269 + public class BookmarkDAO extends JPACrud<Bookmark, Long> {
  270 +
  271 + private static final long serialVersionUID = 1L;
  272 +
  273 + }
  274 + ]]>
  275 + </programlisting>
  276 + <note>
258 277 <para>
259 278 A anotação <literal>@PersistenceController</literal> trata-se de um estereótipo fornecido
260   - pelo <emphasis>Demoiselle Framework 2.X</emphasis> para indicar que uma classe será tratada
  279 + pelo <emphasis>Demoiselle Framework 2</emphasis> para indicar que uma classe será tratada
261 280 como controlador da camada de persistência na aplicação.
262 281 </para>
263   - </tip>
  282 + </note>
264 283 <para>
265 284 A classe abstrata <literal>JPACrud</literal> faz parte do código de suporte fornecido pelo
266   - <emphasis>Demoiselle Framework 2.X</emphasis> (especificamente na extensão JPA). Ao utilizá-la,
  285 + <emphasis>Demoiselle Framework 2</emphasis> (especificamente na extensão JPA). Ao utilizá-la,
267 286 o desenvolvedor não precisará implementar métodos de manipulação de uma entidade, tais como busca,
268 287 listagem, inclusão, alteração e exclusão de registros. Dessa forma, apenas métodos específicos do
269 288 caso de uso necessitam ser criados manualmente.
270 289 </para>
271   - <note>
  290 + <tip>
272 291 <para>
273 292 Recomenda-se usar o sufixo <quote>DAO</quote> nessa classe para indicar que se trata de
274 293 um objeto de acesso a dados (i.e., um <emphasis>DAO - Data Access Object</emphasis>).
275 294 </para>
276   - </note>
277   - <para>
278   - No diretório <filename>/src/main/resources/META-INF/</filename>, altere o arquivo
279   - <filename>persistence.xml</filename> com o conteúdo seguinte:
280   - </para>
281   - <programlisting role="XML"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
282   - <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
283   - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
284   - xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
285   - <persistence-unit name="bookmark-ds">
286   - <jta-data-source>java:/DefaultDS</jta-data-source>
287   - <class>br.gov.frameworkdemoiselle.sample.domain.Bookmark</class>
288   - <properties>
289   - <property name="hibernate.show_sql" value="true" />
290   - <property name="hibernate.format_sql" value="false" />
291   - <property name="hibernate.hbm2ddl.auto" value="update" />
292   - <property name="hibernate.transaction.factory_class"
293   - value="org.hibernate.transaction.JTATransactionFactory" />
294   - <property name="jta.UserTransaction" value="UserTransaction" />
295   - </properties>
296   - </persistence-unit>
297   - </persistence>]]></programlisting>
298   - <para>
299   - Este arquivo armazenará as configurações de acesso ao banco de dados via JPA. Neste caso, o gerenciamento das conexões
300   - ficará a cargo do servidor de aplicações (ex: JBoss AS). Será usada a fonte de dados <literal>java:/DefaultDS</literal>.
301   - </para>
  295 + </tip>
302 296 <para>
303   - No diretório <filename>/src/main/resources/</filename>, altere o arquivo
304   - <filename>demoiselle.properties</filename> com o conteúdo seguinte:
  297 + No diretório <filename>/src/main/resources/META-INF/</filename> foi criado o arquivo <filename>persistence.xml</filename>
  298 + utilizado para armazenar as configurações de acesso ao banco de dados via JPA (conexões controladas por um <literal>JPA Provider</literal>, ex: Hibernate)
  299 + ou JTA (conexões controladas pelo <literal>Application Server</literal>, ex: JBossAS) e como pode ser observado o <emphasis>Demoiselle Framework 2</emphasis>
  300 + já traz neste arquivo vários exemplos de configurações para os mais distintos <literal>Application Servers</literal>, como:
  301 + JBoss AS7, JBoss AS6, GlassFish 3, Tomcat 6 e Tomcat7.
305 302 </para>
306   - <programlisting><![CDATA[frameworkdemoiselle.persistence.unit.name=bookmark-ds]]></programlisting>
307 303 <para>
308   - No diretório <filename>/src/main/resources/META-INF/</filename>, altere o arquivo
309   - <filename>beans.xml</filename> com o conteúdo seguinte:
  304 + O projeto criado pelo arquétipo <quote>demoiselle-jsf-jpa</quote> já vem configurado para usar conexão JPA com o HSQLDB, conforme código abaixo:
310 305 </para>
311   - <programlisting role="XML"><![CDATA[<?xml version="1.0"?>
312   -<beans xmlns="http://java.sun.com/xml/ns/javaee"
313   - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
314   - xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
315   - http://java.sun.com/xml/ns/javaee/beans_1_1.xsd">
  306 + <programlisting role="XML">
  307 + <![CDATA[
  308 + <?xml version="1.0" encoding="UTF-8"?>
  309 + <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  310 + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
316 311  
317   - <alternatives>
318   - <class>br.gov.frameworkdemoiselle.transaction.JTATransaction</class>
319   - </alternatives>
  312 + <persistence-unit name="bookmark-ds" transaction-type="RESOURCE_LOCAL">
  313 + <non-jta-data-source>java:jboss/datasources/ExampleDS</non-jta-data-source>
  314 +
  315 + <class>br.gov.frameworkdemoiselle.sample.bookmark.domain.Bookmark</class>
320 316  
321   -</beans>]]></programlisting>
  317 + <properties>
  318 + <property name="hibernate.show_sql" value="true" />
  319 + <property name="hibernate.format_sql" value="false" />
  320 + <property name="hibernate.hbm2ddl.auto" value="create-drop" />
  321 + </properties>
  322 + </persistence-unit>
  323 + </persistence>
  324 + ]]>
  325 + </programlisting>
322 326 </section>
323 327  
324 328 <section>
325   - <title>Implementando a camada de negócio</title>
  329 + <title>Camada de Negócio</title>
326 330 <para>
327   - Dentro do pacote <literal>br.gov.frameworkdemoiselle.sample.business</literal> crie a classe
328   - <literal>BookmarkBC</literal>, a qual será responsável por gerenciar as regras de negócio
329   - referentes aos bookmarks:
  331 + Dentro do pacote <literal>br.gov.frameworkdemoiselle.sample.bookmark.business</literal> foi criada a classe
  332 + <literal>BookmarkBC</literal>, a qual será responsável por gerenciar as regras de negócio referentes aos bookmarks:
330 333 </para>
331   - <programlisting role="JAVA"><![CDATA[@BusinessController
332   -public class BookmarkBC extends DelegateCrud<Bookmark, Long, BookmarkDAO> {
333   -
334   - private static final long serialVersionUID = 1L;
335   -
336   - @Startup
337   - @Transactional
338   - public void startup() {
339   - if (findAll().isEmpty()) {
340   - insert(new Bookmark("Demoiselle Portal", "http://www.frameworkdemoiselle.gov.br"));
341   - insert(new Bookmark("Demoiselle SourceForge", "http://sf.net/projects/demoiselle"));
342   - insert(new Bookmark("Twitter", "http://twitter.frameworkdemoiselle.gov.br"));
343   - insert(new Bookmark("Blog", "http://blog.frameworkdemoiselle.gov.br"));
344   - insert(new Bookmark("Wiki", "http://wiki.frameworkdemoiselle.gov.br"));
345   - insert(new Bookmark("Bug Tracking", "http://tracker.frameworkdemoiselle.gov.br"));
346   - insert(new Bookmark("Forum", "http://forum.frameworkdemoiselle.gov.br"));
347   - insert(new Bookmark("SVN", "http://svn.frameworkdemoiselle.gov.br"));
348   - insert(new Bookmark("Maven", "http://repository.frameworkdemoiselle.gov.br"));
349   - insert(new Bookmark("Downloads", "http://download.frameworkdemoiselle.gov.br"));
350   - }
351   - }
352   -
353   -}]]></programlisting>
  334 + <programlisting role="JAVA">
  335 + <![CDATA[
  336 + @BusinessController
  337 + public class BookmarkBC extends DelegateCrud<Bookmark, Long, BookmarkDAO> {
  338 +
  339 + private static final long serialVersionUID = 1L;
  340 +
  341 + @Startup
  342 + @Transactional
  343 + public void load() {
  344 + if (findAll().isEmpty()) {
  345 + insert(new Bookmark("Demoiselle Portal", "http://www.frameworkdemoiselle.gov.br"));
  346 + insert(new Bookmark("Demoiselle SourceForge", "http://sf.net/projects/demoiselle"));
  347 + insert(new Bookmark("Twitter", "http://twitter.frameworkdemoiselle.gov.br"));
  348 + insert(new Bookmark("Blog", "http://blog.frameworkdemoiselle.gov.br"));
  349 + insert(new Bookmark("Wiki", "http://wiki.frameworkdemoiselle.gov.br"));
  350 + insert(new Bookmark("Bug Tracking", "http://tracker.frameworkdemoiselle.gov.br"));
  351 + insert(new Bookmark("Forum", "http://forum.frameworkdemoiselle.gov.br"));
  352 + insert(new Bookmark("SVN", "http://svn.frameworkdemoiselle.gov.br"));
  353 + insert(new Bookmark("Maven", "http://repository.frameworkdemoiselle.gov.br"));
  354 + insert(new Bookmark("Downloads", "http://download.frameworkdemoiselle.gov.br"));
  355 + }
  356 + }
  357 +
  358 + }
  359 + ]]>
  360 + </programlisting>
354 361 <para>
355 362 O método <function>startup()</function> nessa classe será invocado automaticamente durante a
356 363 inicialização da aplicação e fará com que a tabela seja populada com dados iniciais de bookmarks.
357 364 </para>
358   - <tip>
  365 + <note>
359 366 <para>
360 367 A anotação <literal>@BusinessController</literal> trata-se de um estereótipo fornecido
361   - pelo <emphasis>Demoiselle Framework 2.X</emphasis> para indicar que uma classe será tratada
  368 + pelo <emphasis>Demoiselle Framework 2</emphasis> para indicar que uma classe será tratada
362 369 como controlador da camada de negócio na aplicação.
363 370 </para>
364   - </tip>
  371 + </note>
365 372 <para>
366 373 A classe <literal>DelegateCrud</literal> faz parte do código de suporte fornecido pelo
367   - <emphasis>Demoiselle Framework 2.0</emphasis>. Ao utilizá-la, o desenvolvedor não precisará
  374 + <emphasis>Demoiselle Framework 2</emphasis>. Ao utilizá-la, o desenvolvedor não precisará
368 375 implementar métodos de negócio triviais de uma entidade e tampouco programar a injeção de dependência
369 376 entre as camadas de negócio e persistência. Tal injeção será realizada de forma implícita.
370 377 </para>
371   - <note>
  378 + <tip>
372 379 <para>
373 380 Recomenda-se usar o sufixo <quote>BC</quote> nessa classe para indicar que se trata de
374 381 um controlador de negócio (i.e., um <emphasis>BC - Business Controller</emphasis>).
375 382 </para>
376   - </note>
  383 + </tip>
377 384 </section>
378 385  
379 386 <section>
380   - <title>Implementando a camada de apresentação</title>
  387 + <title>Camada de Apresentação</title>
381 388 <para>
382   - Dentro do pacote <literal>br.gov.frameworkdemoiselle.sample.view</literal> crie a classe
383   - <literal>BookmarkListMB</literal>, a qual será responsável por exibir as informações sobre
384   - os bookmarks para o usuário:
  389 + Dentro do pacote <literal>package br.gov.frameworkdemoiselle.sample.bookmark.view</literal> foram criadas as
  390 + classes <literal>BookmarkEditMB</literal> e <literal>BookmarkListMB</literal>, onde a primeira é responsável
  391 + por controlar as modificações sobre os bookmarks efetuadas pelo usuário e a segunda é responsável por
  392 + exibir as informações sobre os bookmarks.
385 393 </para>
386   - <programlisting role="JAVA"><![CDATA[@ViewController
  394 +
  395 + <programlisting role="JAVA">
  396 +<![CDATA[@ViewController
  397 +@PreviousView("/bookmark_list.xhtml")
  398 +public class BookmarkEditMB extends AbstractEditPageBean<Bookmark, Long> {
  399 +
  400 + private static final long serialVersionUID = 1L;
  401 +
  402 + @Inject
  403 + private BookmarkBC bookmarkBC;
  404 +
  405 + @Override
  406 + @Transactional
  407 + public String delete() {
  408 + this.bookmarkBC.delete(getId());
  409 + return getPreviousView();
  410 + }
  411 +
  412 + @Override
  413 + @Transactional
  414 + public String insert() {
  415 + this.bookmarkBC.insert(getBean());
  416 + return getPreviousView();
  417 + }
  418 +
  419 + @Override
  420 + @Transactional
  421 + public String update() {
  422 + this.bookmarkBC.update(getBean());
  423 + return getPreviousView();
  424 + }
  425 +
  426 + @Override
  427 + protected void handleLoad() {
  428 + setBean(this.bookmarkBC.load(getId()));
  429 + }
  430 +
  431 +}]]>
  432 + </programlisting>
  433 + <programlisting role="JAVA">
  434 +<![CDATA[@ViewController
  435 +@NextView("/bookmark_edit.xhtml")
  436 +@PreviousView("/bookmark_list.xhtml")
387 437 public class BookmarkListMB extends AbstractListPageBean<Bookmark, Long> {
388 438  
389 439 private static final long serialVersionUID = 1L;
... ... @@ -393,141 +443,106 @@ public class BookmarkListMB extends AbstractListPageBean&lt;Bookmark, Long&gt; {
393 443  
394 444 @Override
395 445 protected List<Bookmark> handleResultList() {
396   - return bc.findAll();
  446 + return this.bc.findAll();
397 447 }
398   -
399   -}]]></programlisting>
400   - <tip>
401   - <para>
402   - A anotação <literal>@ViewController</literal> trata-se de um estereótipo fornecido
403   - pelo <emphasis>Demoiselle Framework</emphasis> para indicar que uma classe será tratada
404   - como controlador da camada de apresentação (i.e., visão) na aplicação.
405   - </para>
406   - </tip>
  448 +
  449 + @Transactional
  450 + public String deleteSelection() {
  451 + boolean delete;
  452 + for (Iterator<Long> iter = getSelection().keySet().iterator(); iter.hasNext();) {
  453 + Long id = iter.next();
  454 + delete = getSelection().get(id);
  455 +
  456 + if (delete) {
  457 + bc.delete(id);
  458 + iter.remove();
  459 + }
  460 + }
  461 + return getPreviousView();
  462 + }
  463 +
  464 +}]]>
  465 + </programlisting>
  466 +
407 467 <para>
408   - A classe <literal>AbstractListPageBean</literal> faz parte do código de suporte fornecido pelo
409   - <emphasis>Demoiselle Framework</emphasis> (especificamente na extensão JSF). Ao utilizá-la,
410   - o desenvolvedor não precisará implementar métodos específicos de navegação para uma tela de
411   - cadastro (i.e., do tipo <emphasis>CRUD</emphasis>).
  468 + A anotação <literal>@ViewController</literal> trata-se de um estereótipo fornecido
  469 + pelo <emphasis>Demoiselle Framework 2</emphasis> para indicar que uma classe será tratada
  470 + como controlador da camada de apresentação (i.e., visão) na aplicação.
  471 + </para>
  472 + <para>
  473 + A anotação <literal>@NextView</literal> serve para definir a próxima
  474 + visão a ser direcionado o fluxo de navegação JSF. De forma semelhante,
  475 + a anotação <literal>@PreviousView</literal> define a visão anterior
  476 + de um fluxo.
412 477 </para>
413 478 <para>
414 479 A anotação <literal>@Inject</literal> é fornecida pela especificação CDI. Ela realiza a injeção
415 480 de dependência da camada de negócio dentro do artefato da camada de apresentação.
  481 + </para>
  482 + <para>
  483 + A anotação <literal>@Transactional</literal> trata-se de uma anotação fornecida pelo
  484 + <emphasis>Demoiselle Framework 2</emphasis> para indicar que o método em questão
  485 + será incluído na sessão transacional. Caso essa anotação esteja vinculada na classe,
  486 + todos os seus métodos serão considerados transacionais.
416 487 </para>
417   - <note>
  488 + <para>
  489 + As classes <literal>AbstractEditPageBean</literal> e <literal>AbstractListPageBean</literal> fazem parte
  490 + do código de suporte fornecido pelo <emphasis>Demoiselle Framework 2</emphasis> (especificamente na extensão JSF).
  491 + Ao utilizá-las, o desenvolvedor não precisará implementar métodos específicos de navegação para uma tela de
  492 + cadastro (i.e., do tipo <emphasis>CRUD</emphasis>).
  493 + </para>
  494 + <tip>
418 495 <para>
419 496 Recomenda-se usar o sufixo <quote>MB</quote> nessa classe para indicar que se trata de
420 497 um bean gerenciado do JSF (i.e., um <emphasis>MB - Managed Bean</emphasis>).
421 498 </para>
422   - </note>
  499 + </tip>
423 500 <para>
424   - No diretório <filename>/src/main/webapp/</filename>, crie o arquivo
425   - <filename>bookmark_list.xhtml</filename> com o conteúdo seguinte:
  501 + No diretório <filename>/src/main/webapp/</filename> foram criados os arquivos:
  502 + <itemizedlist>
  503 + <listitem><emphasis>bookmark_edit.xhtml</emphasis> - página JSF de cadastro e edição de bookmark;</listitem>
  504 + <listitem><emphasis>bookmark_list.xhtml</emphasis> - página JSF de cadastro e edição de bookmark;</listitem>
  505 + <listitem><emphasis>index.html</emphasis> - página HTML que redireciona para a página jsf;</listitem>
  506 + <listitem><emphasis>index.xhtml</emphasis> - página JSF inicial do sistema;</listitem>
  507 + <listitem><emphasis>menu.xhtml</emphasis> - página JSF que monta o menu de navegação.</listitem>
  508 + </itemizedlist>
426 509 </para>
427   - <programlisting role="XML"><![CDATA[<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
428   - xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html"
429   - xmlns:ui="http://java.sun.com/jsf/facelets" template="/template/main.xhtml">
430   - <ui:define name="body">
431   - <h:form>
432   - <p:dataTable id="list" var="bean" value="#{bookmarkListMB.resultList}">
433   - <f:facet name="header">#{messages['bookmark.list.table.title']}</f:facet>
434   - <p:column style="width:1%;">
435   - <h:selectBooleanCheckbox value="#{bookmarkListMB.selection[bean.id]}" />
436   - </p:column>
437   - <p:column style="width:5%;" sortBy="#{bean.id}">
438   - <f:facet name="header">#{messages['bookmark.label.id']}</f:facet>
439   - <h:outputText value="#{bean.id}" />
440   - </p:column>
441   - <p:column sortBy="#{bean.description}">
442   - <f:facet name="header">#{messages['bookmark.label.description']}</f:facet>
443   - <h:commandLink action="#{bookmarkListMB.getNextView}"
444   - actionListener="#{bookmarkListMB.clear}">
445   - <h:outputText value="#{bean.description}" />
446   - <f:param name="id" value="#{bean.id}" />
447   - </h:commandLink>
448   - </p:column>
449   - <p:column sortBy="#{bean.link}">
450   - <f:facet name="header">#{messages['bookmark.label.link']}</f:facet>
451   - <h:commandLink action="#{bookmarkListMB.getNextView}"
452   - actionListener="#{bookmarkListMB.clear}">
453   - <h:outputText value="#{bean.link}" />
454   - <f:param name="id" value="#{bean.id}" />
455   - </h:commandLink>
456   - </p:column>
457   - </p:dataTable>
458   - </h:form>
459   - </ui:define>
460   -</ui:composition>]]></programlisting>
461   - <tip>
  510 + <para>
  511 + No diretório <filename>/src/main/webapp/template</filename> foi criado o arquivo:
  512 + <itemizedlist>
  513 + <listitem><emphasis>main.xhtml</emphasis> - página JSF que serve de template referenciada na demais páginas JSF.</listitem>
  514 + </itemizedlist>
  515 + </para>
  516 + <note>
462 517 <para>
463 518 Nos arquivos XHTML listados neste exemplo foi empregado o framework
464 519 <ulink url="http://www.primefaces.org/">PrimeFaces</ulink>, o qual foi um dos primeiros a
465 520 oferecer suporte completo à especificação JSF 2.0.
466 521 </para>
467   - </tip>
468   - <para>
469   - No diretório <filename>/src/main/webapp/</filename>, altere o arquivo
470   - <filename>menu.xhtml</filename> com o conteúdo seguinte:
471   - </para>
472   - <programlisting role="XML"><![CDATA[<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
473   - xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html"
474   - xmlns:ui="http://java.sun.com/jsf/facelets">
475   - <h:form>
476   - <p:menubar>
477   - <p:submenu label="#{messages['menu.bookmark']}">
478   - <p:menuitem value="#{messages['menu.menuitem.list']}"
479   - url="/bookmark_list.jsf" />
480   - </p:submenu>
481   - <p:submenu>
482   - <f:facet name="label">
483   - <p:menuitem value="#{messages['menu.menuitem.quit']}"
484   - url="http://www.frameworkdemoiselle.gov.br/" />
485   - </f:facet>
486   - </p:submenu>
487   - </p:menubar>
488   - </h:form>
489   -</ui:composition>]]></programlisting>
  522 + </note>
490 523 <para>
491   - No diretório <filename>/src/main/resources/</filename>, altere o arquivo
492   - <filename>messages.properties</filename> incluindo as linhas a seguir:
  524 + No diretório <filename>/src/main/resources/</filename> podemos observar que foi criado o arquivo de recursos
  525 + <filename>messages.properties</filename>. Ao invés de manter fixas as descrições em rótulos, links, botões e
  526 + mensagens em uma aplicação, recomenda-se parametrizar esses textos em arquivos de recursos. Além de ser considerada
  527 + boa prática, essa medida facilita uma posterior internacionalização da aplicação para diversos idiomas.
493 528 </para>
494   - <programlisting><![CDATA[bookmark.list.table.title=Lista de Links
495   -bookmark.label.id=ID
496   -bookmark.label.link=Link
497   -bookmark.label.description=Descri\u00E7\u00E3o
498   -bookmark.label=Bookmark
499   -
500   -bookmark.alt.id=ID
501   -bookmark.alt.link=Link
502   -bookmark.alt.description=Descri\u00E7\u00E3o
503   -
504   -menu.bookmark=Bookmarks]]></programlisting>
505 529 <note>
506 530 <para>
507 531 O arquivo de recursos <filename>messages.properties</filename> armazenará textos
508 532 no idioma default da aplicação (neste caso, em Português do Brasil).
509 533 </para>
510 534 </note>
511   - <tip>
512   - <para>
513   - Ao invés de manter fixas as descrições em rótulos, links, botões e mensagens em uma
514   - aplicação, recomenda-se parametrizar esses textos em arquivos de recursos. Além de
515   - ser considerada boa prática, essa medida facilita uma posterior internacionalização
516   - da aplicação para diversos idiomas.
517   - </para>
518   - </tip>
519 535 </section>
520 536  
521 537 <section>
522 538 <title>Executando no servidor</title>
523 539 <para>
524   - A última etapa consiste na construção da aplicação Java Web e no respectivo deploy em um servidor
525   - de aplicações.
  540 + A última etapa consiste em fazer o deploy da Java Web em um servidor de aplicações.
526 541 </para>
527 542 <para>
528 543 Utilizando a IDE Eclipse, basta clicar com o botão direito no projeto <literal>bookmark</literal> e
529 544 acessar o menu <guimenu>Run As</guimenu>, <guimenu>Run on Server</guimenu>. Em seguida, escolha um
530   - servidor compatível com Java EE 6 (ex: JBoss AS 6) e aguarde a inicialização deste.
  545 + servidor compatível com Java EE 6 (ex: JBoss AS 7) e aguarde a inicialização deste.
531 546 </para>
532 547 <mediaobject>
533 548 <imageobject role="fo">
... ... @@ -555,14 +570,6 @@ menu.bookmark=Bookmarks]]&gt;&lt;/programlisting&gt;
555 570 direito no servidor desejado e selecione a opção <guimenu>Debug</guimenu>.
556 571 </para>
557 572 </tip>
558   - <note>
559   - <para>
560   - Também é possível efetuar esses passos em linha de comando. Para isso, execute o comando
561   - <command>mvn package</command>, copie o arquivo <filename>bookmark.war</filename> resultante
562   - para a pasta de deploy do servidor (ex: <filename>JBOSS_HOME/server/default/deploy</filename>) e
563   - inicie este último através de seu comando próprio (ex: <filename>JBOSS_HOME/bin/run.sh</filename>).
564   - </para>
565   - </note>
566 573 <para>
567 574 Em seguida, abra o navegador Web de sua preferência e acesse o endereço
568 575 <ulink url="http://localhost:8080/bookmark">http://localhost:8080/bookmark</ulink>. Esta é a
... ... @@ -582,6 +589,24 @@ menu.bookmark=Bookmarks]]&gt;&lt;/programlisting&gt;
582 589 </textobject>
583 590 </mediaobject>
584 591 </figure>
  592 + <para>
  593 + Para cadastrar um novo bookmark basta ir no menu principal: <guimenu>Bookmarks</guimenu>,
  594 + <guimenu>Novo</guimenu>. Executando-a, será exibida a página a seguir:
  595 + </para>
  596 + <figure>
  597 + <title>Tela de cadastro e edição dos dados na aplicação Bookmark</title>
  598 + <mediaobject>
  599 + <imageobject role="fo">
  600 + <imagedata fileref="images/appedit.png" align="center" scalefit="1" />
  601 + </imageobject>
  602 + <imageobject role="html">
  603 + <imagedata fileref="images/appedit.png" align="center" />
  604 + </imageobject>
  605 + <textobject>
  606 + <phrase>Aplicação Bookmark em funcionamento</phrase>
  607 + </textobject>
  608 + </mediaobject>
  609 + </figure>
585 610 </section>
586 611  
587 612 </chapter>
588 613 \ No newline at end of file
... ...
documentation/quickstart/pt-BR/images/appedit.png

40.9 KB | W: | H:

33.6 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
documentation/quickstart/pt-BR/images/apphome.png

88.3 KB | W: | H:

34.5 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
documentation/quickstart/pt-BR/images/appvalid.png

46.5 KB | W: | H:

40.7 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
documentation/quickstart/pt-BR/images/viewserver.png

22.1 KB | W: | H:

32.7 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
documentation/quickstart/pt-BR/instalacao.xml
1 1 <?xml version='1.0' encoding="utf-8"?>
2 2 <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
4   -<chapter id="instalacao">
5   -
6   - <title>Instalação</title>
7   -
8   - <section>
9   - <title>Pré-requisitos</title>
10   - <informaltable>
11   - <tgroup cols="3">
12   - <colspec colwidth="50*" />
13   - <colspec colwidth="10*" />
14   - <colspec colwidth="40*" />
15   - <tbody>
16   - <row>
17   - <entry>
18   - <emphasis role="bold">Software</emphasis>
19   - </entry>
20   - <entry>
21   - <emphasis role="bold">Versão</emphasis>
22   - </entry>
23   - <entry>
24   - <emphasis role="bold">Site (Download)</emphasis>
25   - </entry>
26   - </row>
27   - <row>
28   - <entry>Java Development Kit (JDK)</entry>
29   - <entry>6.0</entry>
30   - <entry><ulink url="http://openjdk.org/"><citetitle>openjdk.org</citetitle></ulink></entry>
31   - </row>
32   - <row>
33   - <entry>Apache Maven</entry>
34   - <entry>2.2</entry>
35   - <entry><ulink url="http://maven.apache.org/docs/2.2.1/release-notes.html"><citetitle>maven.apache.org</citetitle></ulink></entry>
36   - </row>
37   - <row>
38   - <entry>Eclipse IDE</entry>
39   - <entry>3.7</entry>
40   - <entry><ulink url="http://www.eclipse.org/downloads/packages/release/indigo/r"><citetitle>www.eclipse.org</citetitle></ulink></entry>
41   - </row>
42   - <row>
43   - <entry>m2eclipse plugin</entry>
44   - <entry>0.12</entry>
45   - <entry><ulink url="http://m2eclipse.sonatype.org/installing-m2eclipse.html"><citetitle>m2eclipse.sonatype.org</citetitle></ulink></entry>
46   - </row>
47   - <row>
48   - <entry>JBoss Application Server</entry>
49   - <entry>6.0</entry>
50   - <entry><ulink url="http://sourceforge.net/projects/jboss/files/JBoss/JBoss-6.0.0.Final/jboss-as-distribution-6.0.0.Final.zip/download"><citetitle>www.jboss.org</citetitle></ulink></entry>
51   - </row>
52   - </tbody>
53   - </tgroup>
54   - </informaltable>
55   - </section>
56   -
57   - <section>
58   - <title>Demoiselle Infra</title>
59   - <para>
60   - Para auxiliar no preparo do ambiente integrado de desenvolvimento utilizado na presente
61   - documentação, recomenda-se a utilização dos pacotes de software fornecidos pelo projeto
62   - <ulink url="http://demoiselle.sourceforge.net/infra/"><citetitle>Demoiselle Infra</citetitle></ulink>.
63   - Neste link você encontrará as orientações necessárias para a sua configuração.
  4 + <chapter id="instalacao">
  5 + <title>Instalação</title>
  6 + <section>
  7 + <title>Pré-requisitos</title>
  8 + <informaltable>
  9 + <tgroup cols="3">
  10 + <colspec colwidth="50*" />
  11 + <colspec colwidth="10*" />
  12 + <colspec colwidth="40*" />
  13 + <tbody>
  14 + <row>
  15 + <entry>
  16 + <emphasis role="bold">Software</emphasis>
  17 + </entry>
  18 + <entry>
  19 + <emphasis role="bold">Versão</emphasis>
  20 + </entry>
  21 + <entry>
  22 + <emphasis role="bold">Site (Download)</emphasis>
  23 + </entry>
  24 + </row>
  25 + <row>
  26 + <entry>Java Development Kit (JDK)</entry>
  27 + <entry>6.0</entry>
  28 + <entry>
  29 + <ulink url="http://openjdk.org/">
  30 + <citetitle>openjdk.org</citetitle>
  31 + </ulink>
  32 + </entry>
  33 + </row>
  34 + <row>
  35 + <entry>Apache Maven</entry>
  36 + <entry>2.2</entry>
  37 + <entry>
  38 + <ulink url="http://maven.apache.org/docs/2.2.1/release-notes.html">
  39 + <citetitle>maven.apache.org</citetitle>
  40 + </ulink>
  41 + </entry>
  42 + </row>
  43 + <row>
  44 + <entry>Eclipse IDE</entry>
  45 + <entry>3.7</entry>
  46 + <entry>
  47 + <ulink url="http://www.eclipse.org/downloads/packages/release/indigo/r">
  48 + <citetitle>www.eclipse.org</citetitle>
  49 + </ulink>
  50 + </entry>
  51 + </row>
  52 + <row>
  53 + <entry>m2eclipse plugin</entry>
  54 + <entry>0.12</entry>
  55 + <entry>
  56 + <ulink url="http://m2eclipse.sonatype.org/installing-m2eclipse.html">
  57 + <citetitle>m2eclipse.sonatype.org</citetitle>
  58 + </ulink>
  59 + </entry>
  60 + </row>
  61 + <row>
  62 + <entry>JBoss Application Server</entry>
  63 + <entry>7.1.1</entry>
  64 + <entry>
  65 + <ulink url="http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.zip">
  66 + <citetitle>www.jboss.org</citetitle>
  67 + </ulink>
  68 + </entry>
  69 + </row>
  70 + </tbody>
  71 + </tgroup>
  72 + </informaltable>
  73 + </section>
  74 + <section>
  75 + <title>Demoiselle Infra</title>
  76 + <para>
  77 + Para auxiliar no preparo do ambiente integrado de desenvolvimento utilizado na presente
  78 + documentação, recomenda-se a utilização dos pacotes de software fornecidos pelo projeto
  79 + <ulink url="http://demoiselle.sourceforge.net/infra/"><citetitle>Demoiselle Infra</citetitle></ulink>.
  80 + Neste link você encontrará as orientações necessárias para a sua configuração.
  81 + </para>
  82 + <note>
  83 + <para>
  84 + Atualmente são disponibilizados pacotes exclusivamente para a plataforma <emphasis>GNU/Linux</emphasis>
  85 + e distribuições baseadas no <emphasis>Debian</emphasis>, tal como <emphasis>Ubuntu</emphasis>.
64 86 </para>
65   - <note>
66   - <para>
67   - Atualmente são disponibilizados pacotes exclusivamente para a plataforma <emphasis>GNU/Linux</emphasis>
68   - e distribuições baseadas no <emphasis>Debian</emphasis>, tal como <emphasis>Ubuntu</emphasis>.
69   - </para>
70   - </note>
71   - <para>
  87 + </note>
  88 + <para>
72 89 Se você não utiliza nenhum dos sistemas operacionais citados, terá que baixar e instalar
73 90 todos os softwares listados acima. Para auxiliar um pouco o processo, disponibilizamos alguns
74   - vídeos <ulink url="http://www.frameworkdemoiselle.gov.br/documentacaodoprojeto/tutoriais/videos/">
75   - <citetitle>aqui</citetitle></ulink> de demonstração de algumas fases.
76   - </para>
77   - </section>
78   -
79   -</chapter>
80 91 \ No newline at end of file
  92 + vídeos <ulink url="http://www.frameworkdemoiselle.gov.br/documentacaodoprojeto/manuais-e-tutoriais/tutoriais-da-versao-2/">
  93 + <citetitle>aqui</citetitle></ulink> de demonstração de algumas fases.
  94 + </para>
  95 + </section>
  96 + </chapter>
... ...
documentation/quickstart/pt-BR/master.xml
1 1 <?xml version='1.0' encoding="utf-8"?>
2 2 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
4   -<book lang="pt">
  4 + <book lang="pt">
  5 + <xi:include href="bookinfo.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  6 + <xi:include href="preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  7 + <xi:include href="instalacao.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  8 + <xi:include href="criacao.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  9 + <xi:include href="melhoria.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  10 + </book>
  11 +
  12 +<!--
  13 +
  14 + <xi:include href="avancado.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
  15 +-->
5 16  
6   - <xi:include href="bookinfo.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
7   -
8   - <preface>
9   - <title>Sobre o QuickStart</title>
10   - <para>
11   - Este documento é um tutorial do tipo "passo a passo" que visa ilustrar de forma rápida, clara e prática
12   - a criação de uma aplicação simples utilizando o <emphasis>Demoiselle Framework 2.X</emphasis>.
13   - </para>
14   - <note>
15   - <para>
16   - Apesar de o <emphasis>Demoiselle Framework 2.X</emphasis> ser simples de usar, o desenvolvimento de
17   - aplicações não triviais requer o conhecimento das diversas tecnologias envolvidas na especificação
18   - <emphasis>Java EE</emphasis>, incluindo:
19   - <itemizedlist>
20   - <listitem>Linguagem Java</listitem>
21   - <listitem>Servlets, JSP e Tag Libraries</listitem>
22   - <listitem>JavaBeans</listitem>
23   - <listitem>HTML e XML</listitem>
24   - <listitem>Contêineres e Servidores Web</listitem>
25   - </itemizedlist>
26   - </para>
27   - </note>
28   - <note>
29   - <para>
30   - Esta documentação refere-se à release 2.2.X do <emphasis>Demoiselle Framework</emphasis>
31   - e pode diferir significativamente das versões anteriores.
32   - </para>
33   - </note>
34   - </preface>
35   -
36   - <xi:include href="instalacao.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
37   - <xi:include href="criacao.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
38   - <xi:include href="melhoria.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
39   -<!-- <xi:include href="avancado.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
40   -
41   -</book>
42 17 \ No newline at end of file
... ...
documentation/quickstart/pt-BR/melhoria.xml
... ... @@ -6,359 +6,80 @@
6 6 <title>Melhorando a aplicação</title>
7 7  
8 8 <section>
9   - <title>Implementando funcionalidade de edição</title>
10   - <para>
11   - Agora que a aplicação inicial já está rodando, iremos aumentar sua complexidade adicionando a
12   - funcionalidade de edição dos registros de bookmark.
13   - </para>
14   - <para>
15   - Dentro do pacote <literal>br.gov.frameworkdemoiselle.sample.view</literal> crie a classe
16   - <literal>BookmarkEditMB</literal>, a qual será responsável por controlar as modificações sobre
17   - os bookmarks efetuadas pelo usuário:
18   - </para>
19   - <programlisting role="JAVA"><![CDATA[@ViewController
20   -@PreviousView("/bookmark_list.xhtml")
21   -public class BookmarkEditMB extends AbstractEditPageBean<Bookmark, Long> {
22   -
23   - private static final long serialVersionUID = 1L;
24   -
25   - @Inject
26   - private BookmarkBC bc;
27   -
28   - @Override
29   - @Transactional
30   - public String delete() {
31   - bc.delete(getId());
32   - return getPreviousView();
33   - }
34   -
35   - @Override
36   - @Transactional
37   - public String insert() {
38   - bc.insert(getBean());
39   - return getPreviousView();
40   - }
41   -
42   - @Override
43   - @Transactional
44   - public String update() {
45   - bc.update(getBean());
46   - return getPreviousView();
47   - }
48   -
49   - @Override
50   - protected void handleLoad() {
51   - setBean(bc.load(getId()));
52   - }
53   -
54   -}]]></programlisting>
55   - <tip>
56   - <para>
57   - A anotação <literal>@Transactional</literal> trata-se de uma anotação fornecida pelo
58   - <emphasis>Demoiselle Framework</emphasis> para indicar que o método em questão
59   - será incluído na sessão transacional. Caso essa anotação esteja vinculada na classe,
60   - todos os seus métodos serão considerados transacionais.
61   - </para>
62   - </tip>
63   - <para>
64   - A classe <literal>AbstractEditPageBean</literal> faz parte do código de suporte fornecido pelo
65   - <emphasis>Demoiselle Framework</emphasis> (especificamente na extensão JSF). Ao utilizá-la,
66   - o desenvolvedor não precisará implementar métodos específicos de navegação para uma tela de
67   - cadastro (i.e., do tipo <emphasis>CRUD</emphasis>).
68   - </para>
69   - <para>
70   - Ainda no pacote <literal>br.gov.frameworkdemoiselle.sample.view</literal> altere a classe
71   - <literal>BookmarkListMB</literal>:
72   - </para>
73   - <programlistingco>
74   - <areaspec>
75   - <area id="next-prev-view" coords="2"/>
76   - <area id="delete-selection" coords="16"/>
77   - </areaspec>
78   - <programlisting role="JAVA"><![CDATA[@ViewController
79   -@NextView("/bookmark_edit.xhtml")
80   -@PreviousView("/bookmark_list.xhtml")
81   -public class BookmarkListMB extends AbstractListPageBean<Bookmark, Long> {
82   -
83   - private static final long serialVersionUID = 1L;
84   -
85   - @Inject
86   - private BookmarkBC bc;
87   -
88   - @Override
89   - protected List<Bookmark> handleResultList() {
90   - return bc.findAll();
91   - }
92   -
93   - @Transactional
94   - public String deleteSelection() {
95   - boolean delete = false;
96   - Iterator<Long> iter = getSelection().keySet().iterator();
97   - while (iter.hasNext()) {
98   - Long id = iter.next();
99   - delete = getSelection().get(id);
100   - if (delete) {
101   - bc.delete(id);
102   - iter.remove();
103   - }
104   - }
105   - return getPreviousView();
106   - }
107   -
108   -}]]></programlisting>
109   - <calloutlist>
110   - <callout arearefs="next-prev-view">
111   - <para>
112   - A anotação <literal>@NextView</literal> serve para definir a próxima
113   - visão a ser direcionado o fluxo de navegação JSF. De forma semelhante,
114   - a anotação <literal>@PreviousView</literal> define a visão anterior
115   - de um fluxo.
116   - </para>
117   - </callout>
118   - <callout arearefs="delete-selection">
119   - <para>
120   - O novo método <function>deleteSelection()</function> servirá para
121   - permitir a funcionalidade de exclusão de múltiplas linhas da tabela.
122   - A anotação <literal>@Transactional</literal> nele faz com que o método
123   - seja considerado como transacional, incluindo-o na respectiva sessão.
124   - </para>
125   - </callout>
126   - </calloutlist>
127   - </programlistingco>
128   - <para>
129   - No diretório <filename>/src/main/webapp/</filename>, crie o arquivo
130   - <filename>bookmark_edit.xhtml</filename> com o conteúdo seguinte:
131   - </para>
132   - <programlisting role="XML"><![CDATA[<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
133   - xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html"
134   - xmlns:ui="http://java.sun.com/jsf/facelets" template="/template/main.xhtml">
135   - <ui:define name="body">
136   - <h:form prependId="false">
137   - <p:toolbar>
138   - <p:toolbarGroup align="left">
139   - <p:commandButton value="#{messages['button.save']}"
140   - action="#{bookmarkEditMB.insert}"
141   - rendered="#{!bookmarkEditMB.updateMode}" ajax="false" />
142   - <p:commandButton value="#{messages['button.save']}"
143   - action="#{bookmarkEditMB.update}"
144   - rendered="#{bookmarkEditMB.updateMode}" ajax="false" />
145   - <p:commandButton value="#{messages['button.delete']}"
146   - onclick="confirmation.show()" rendered="#{bookmarkEditMB.updateMode}"
147   - type="button" immediate="true" ajax="false" />
148   - <p:confirmDialog message="#{messages['label.confirm.delete']}"
149   - showEffect="bounce" hideEffect="explode"
150   - header="#{messages['label.dialog.delete']}"
151   - severity="alert" widgetVar="confirmation">
152   - <h:commandButton value="#{messages['button.dialog.yes']}"
153   - action="#{bookmarkEditMB.delete}" immediate="true" ajax="false" />
154   - <h:commandButton value="#{messages['button.dialog.no']}"
155   - onclick="confirmation.hide()" type="button" />
156   - </p:confirmDialog>
157   - </p:toolbarGroup>
158   - </p:toolbar>
159   - <br />
160   - <p:fieldset legend="#{messages['bookmark.label']}" toggleable="true"
161   - toggleSpeed="500">
162   - <h:panelGrid id="fields" columns="3">
163   - <h:outputLabel value="#{messages['bookmark.label.id']}: "
164   - for="id" styleClass="text-input" />
165   - <h:outputText id="id" value="#{bookmarkEditMB.bean.id}" />
166   - <p:message for="id" />
167   - <h:outputLabel value="#{messages['bookmark.label.description']}: "
168   - for="description" styleClass="text-input" />
169   - <h:inputText id="description" value="#{bookmarkEditMB.bean.description}"
170   - title="#{messages['bookmark.alt.description']}" />
171   - <p:message for="description" />
172   - <h:outputLabel value="#{messages['bookmark.label.link']}: "
173   - for="link" styleClass="text-input" />
174   - <h:inputText id="link" value="#{bookmarkEditMB.bean.link}"
175   - title="#{messages['bookmark.alt.link']}" />
176   - <p:message for="link" />
177   - </h:panelGrid>
178   - </p:fieldset>
179   - </h:form>
180   - </ui:define>
181   -</ui:composition>]]></programlisting>
182   - <para>
183   - Ainda no diretório <filename>/src/main/webapp/</filename>, modifique o arquivo
184   - <filename>bookmark_list.xhtml</filename> com o conteúdo seguinte:
185   - </para>
186   - <programlisting role="XML"><![CDATA[<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
187   - xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html"
188   - xmlns:ui="http://java.sun.com/jsf/facelets" template="/template/main.xhtml">
189   - <ui:define name="body">
190   - <h:form>
191   - <p:toolbar>
192   - <p:toolbarGroup align="left">
193   - <p:commandButton title="#{messages['button.new']}"
194   - image="ui-icon-document" action="#{bookmarkListMB.getNextView}"
195   - actionListener="#{bookmarkListMB.clear}" ajax="false" />
196   - <p:commandButton title="#{messages['button.delete']}"
197   - image="ui-icon-trash" onclick="confirmation.show()" type="button"
198   - immediate="true" ajax="false" />
199   - <p:confirmDialog message="#{messages['label.confirm.delete']}"
200   - showEffect="bounce" hideEffect="explode"
201   - header="#{messages['label.dialog.alert']}!"
202   - severity="alert" widgetVar="confirmation">
203   - <h:commandButton value="#{messages['button.dialog.yes']}"
204   - action="#{bookmarkListMB.deleteSelection}"
205   - actionListener="#{bookmarkListMB.clear}" />
206   - <h:commandButton value="#{messages['button.dialog.no']}"
207   - onclick="confirmation.hide()" type="button" />
208   - </p:confirmDialog>
209   - </p:toolbarGroup>
210   - </p:toolbar>
211   - <p:dataTable id="list" var="bean" value="#{bookmarkListMB.resultList}">
212   - <f:facet name="header">#{messages['bookmark.list.table.title']}</f:facet>
213   - <p:column style="width:1%;">
214   - <h:selectBooleanCheckbox value="#{bookmarkListMB.selection[bean.id]}" />
215   - </p:column>
216   - <p:column style="width:5%;" sortBy="#{bean.id}">
217   - <f:facet name="header">#{messages['bookmark.label.id']}</f:facet>
218   - <h:outputText value="#{bean.id}" />
219   - </p:column>
220   - <p:column sortBy="#{bean.description}">
221   - <f:facet name="header">#{messages['bookmark.label.description']}</f:facet>
222   - <h:commandLink action="#{bookmarkListMB.getNextView}"
223   - actionListener="#{bookmarkListMB.clear}">
224   - <h:outputText value="#{bean.description}" />
225   - <f:param name="id" value="#{bean.id}" />
226   - </h:commandLink>
227   - </p:column>
228   - <p:column sortBy="#{bean.link}">
229   - <f:facet name="header">#{messages['bookmark.label.link']}</f:facet>
230   - <h:commandLink action="#{bookmarkListMB.getNextView}"
231   - actionListener="#{bookmarkListMB.clear}">
232   - <h:outputText value="#{bean.link}" />
233   - <f:param name="id" value="#{bean.id}" />
234   - </h:commandLink>
235   - </p:column>
236   - </p:dataTable>
237   - </h:form>
238   - </ui:define>
239   -</ui:composition>]]></programlisting>
240   - <para>
241   - No diretório <filename>/src/main/webapp/</filename>, altere o arquivo
242   - <filename>menu.xhtml</filename> conforme o conteúdo seguinte:
243   - </para>
244   - <programlisting role="XML"><![CDATA[<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
245   - xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html"
246   - xmlns:ui="http://java.sun.com/jsf/facelets">
247   - <h:form>
248   - <p:menubar>
249   - <p:submenu label="#{messages['menu.bookmark']}">
250   - <p:menuitem value="#{messages['menu.menuitem.new']}"
251   - url="/bookmark_edit.jsf" />
252   - <p:menuitem value="#{messages['menu.menuitem.list']}"
253   - url="/bookmark_list.jsf" />
254   - </p:submenu>
255   - <p:submenu>
256   - <f:facet name="label">
257   - <p:menuitem value="#{messages['menu.menuitem.quit']}"
258   - url="http://www.frameworkdemoiselle.gov.br/" />
259   - </f:facet>
260   - </p:submenu>
261   - </p:menubar>
262   - </h:form>
263   -</ui:composition>]]></programlisting>
264   - <para>
265   - Tendo feito todas essas alterações, reconstrua o projeto Java e faça novo deploy no
266   - servidor de aplicações. Ao acessar a aplicação <literal>bookmark</literal> pelo browser,
267   - verá que agora existe uma opção nova no menu principal: <guimenu>Bookmarks</guimenu>,
268   - <guimenu>Novo</guimenu>. Executando-a, será exibida a página a seguir:
269   - </para>
270   - <figure>
271   - <title>Edição dos dados na aplicação Bookmark</title>
272   - <mediaobject>
273   - <imageobject role="fo">
274   - <imagedata fileref="images/appedit.png" align="center" scalefit="1" />
275   - </imageobject>
276   - <imageobject role="html">
277   - <imagedata fileref="images/appedit.png" align="center" />
278   - </imageobject>
279   - <textobject>
280   - <phrase>Aplicação Bookmark em funcionamento</phrase>
281   - </textobject>
282   - </mediaobject>
283   - </figure>
284   - </section>
285   -
286   - <section>
287 9 <title>Exibindo mensagens para o usuário</title>
288 10 <para>
289 11 Uma vez que o objetivo principal da aplicação foi concluído (i.e., listagem e edição de bookmarks),
290   - veremos algumas funcionalidades adicionais fornecidas pelo <emphasis>Demoiselle Framework</emphasis>,
  12 + veremos algumas funcionalidades adicionais fornecidas pelo <emphasis>Demoiselle Framework 2</emphasis>,
291 13 iniciando pelo tratamento de mensagens.
292 14 </para>
293 15 <para>
294   - Dentro do pacote <literal>br.gov.frameworkdemoiselle.sample.message</literal> crie a interface
  16 + Dentro do pacote <literal>br.gov.frameworkdemoiselle.sample.bookmark.message</literal> crie a interface
295 17 <literal>InfoMessages</literal>, a qual servirá para armazenar mensagens informativas a serem
296 18 exibidas ao usuário:
297 19 </para>
298   - <programlisting role="JAVA"><![CDATA[public interface InfoMessages {
299   -
300   - final Message BOOKMARK_DELETE_OK = new DefaultMessage("{bookmark-delete-ok}");
301   - final Message BOOKMARK_INSERT_OK = new DefaultMessage("{bookmark-insert-ok}");
302   - final Message BOOKMARK_UPDATE_OK = new DefaultMessage("{bookmark-update-ok}");
303   -
304   -}]]></programlisting>
  20 + <programlisting role="JAVA">
  21 + <![CDATA[public interface InfoMessages {
  22 + final Message BOOKMARK_DELETE_OK = new DefaultMessage("{bookmark-delete-ok}");
  23 + final Message BOOKMARK_INSERT_OK = new DefaultMessage("{bookmark-insert-ok}");
  24 + final Message BOOKMARK_UPDATE_OK = new DefaultMessage("{bookmark-update-ok}");
  25 + }]]></programlisting>
305 26 <note>
306   - <para>
307   - A unidade básica de manipulação de mensagens no <emphasis>Demoiselle Framework</emphasis>
308   - é a interface <literal>Message</literal>. Ou seja, basta que esta última seja implementada na
309   - aplicação para que o contexto de mensagens possa manipulá-la.
310   - A classe <literal>DefaultMessage</literal> é oferecida como implementação padrão dessa interface.
311   - </para>
  27 + <para>
  28 + A unidade básica de manipulação de mensagens no <emphasis>Demoiselle Framework 2</emphasis>
  29 + é a interface <literal>Message</literal>. Ou seja, basta que esta última seja implementada na
  30 + aplicação para que o contexto de mensagens possa manipulá-la.
  31 + A classe <literal>DefaultMessage</literal> é oferecida como implementação padrão dessa interface.
  32 + </para>
312 33 </note>
313 34 <para>
314 35 No exemplo em questão, o texto das mensagens será recuperado do arquivo de recursos
315 36 <filename>messages.properties</filename> previamente criado no diretório
316 37 <filename>/src/main/resources/</filename>. Para isso, adicione as seguintes linhas nesse arquivo:
317 38 </para>
318   -<programlisting role="XML"><![CDATA[bookmark-delete-ok=Bookmark exclu\u00EDdo\: {0}
  39 + <programlisting role="XML">
  40 +<![CDATA[bookmark-delete-ok=Bookmark exclu\u00EDdo\: {0}
319 41 bookmark-insert-ok=Bookmark inserido: {0}
320   -bookmark-update-ok=Bookmark atualizado: {0}]]></programlisting>
  42 +bookmark-update-ok=Bookmark atualizado: {0}]]>
  43 + </programlisting>
321 44 <para>
322   - Dentro do pacote <literal>br.gov.frameworkdemoiselle.sample.business</literal> altere a classe
  45 + Dentro do pacote <literal>br.gov.frameworkdemoiselle.sample.bookmark.business</literal> altere a classe
323 46 <literal>BookmarkBC</literal> incluindo os trechos de código indicados a seguir:
324 47 </para>
325 48 <programlistingco>
326 49 <areaspec>
327 50 <area id="inject-context" coords="5"/>
328 51 <areaset id="add-msg-context" coords="">
329   - <area id="" coords="12"/>
330   - <area id="" coords="19"/>
331   - <area id="" coords="26"/>
  52 + <area id="" coords="10"/>
  53 + <area id="" coords="17"/>
  54 + <area id="" coords="23"/>
332 55 </areaset>
333 56 </areaspec>
334   - <programlisting role="JAVA"><![CDATA[@BusinessController
335   -public class BookmarkBC extends DelegateCrud<Bookmark, Long, BookmarkDAO> {
  57 + <programlisting role="JAVA">
  58 +<![CDATA[@BusinessController
  59 + public class BookmarkBC extends DelegateCrud<Bookmark, Long, BookmarkDAO> {
336 60  
337   - @Inject
338   - private MessageContext messageContext;
  61 + @Inject
  62 + private MessageContext messageContext;
339 63  
340   - ...
  64 + ...
341 65  
342   - @Override
343   - public void insert(Bookmark bookmark) {
344   - super.insert(bookmark);
345   - messageContext.add(InfoMessages.BOOKMARK_INSERT_OK,
346   - bookmark.getDescription());
347   - }
348   -
349   - @Override
350   - public void update(Bookmark bookmark) {
351   - super.update(bookmark);
352   - messageContext.add(InfoMessages.BOOKMARK_UPDATE_OK,
353   - bookmark.getDescription());
354   - }
  66 + @Override
  67 + public void insert(Bookmark bookmark) {
  68 + super.insert(bookmark);
  69 + messageContext.add(InfoMessages.BOOKMARK_INSERT_OK, bookmark.getDescription());
  70 + }
355 71  
356   - @Override
357   - public void delete(Long id) {
358   - super.delete(id);
359   - messageContext.add(InfoMessages.BOOKMARK_DELETE_OK, id);
360   - }
  72 + @Override
  73 + public void update(Bookmark bookmark) {
  74 + super.update(bookmark);
  75 + messageContext.add(InfoMessages.BOOKMARK_UPDATE_OK, bookmark.getDescription());
  76 + }
361 77  
  78 + @Override
  79 + public void delete(Long id) {
  80 + super.delete(id);
  81 + messageContext.add(InfoMessages.BOOKMARK_DELETE_OK, id);
  82 + }
362 83 }]]></programlisting>
363 84 <calloutlist>
364 85 <callout arearefs="inject-context">
... ... @@ -410,119 +131,123 @@ public class BookmarkBC extends DelegateCrud&lt;Bookmark, Long, BookmarkDAO&gt; {
410 131 </section>
411 132  
412 133 <section>
413   - <title>Criando regras de validação nos campos</title>
414   - <para>
415   - Sendo aderente à especificação Java EE 6, o <emphasis>Demoiselle Framework</emphasis>
416   - recomenda e faz uso do mecanismo de validação provido pela especificação
417   - <ulink url="http://jcp.org/en/jsr/detail?id=303">JSR-303 (Bean Validation)</ulink>.
418   - </para>
419   - <para>
420   - A fim de testarmos mais essa funcionalidade, utilizaremos a implementação de validação
421   - <emphasis>Hibernate Validator</emphasis>. Para tal, abra o arquivo <filename>pom.xml</filename>
422   - do projeto <literal>bookmark</literal> e inclua nele a seguinte dependência:
423   - </para>
424   - <programlisting role="XML"><![CDATA[<dependencies>
425   - ...
426   - <dependency>
427   - <groupId>org.hibernate</groupId>
428   - <artifactId>hibernate-validator</artifactId>
429   - <version>4.1.0.Final</version>
430   - </dependency>
431   -</dependencies>]]></programlisting>
432   - <note>
  134 + <title>Criando regras de validação nos campos</title>
433 135 <para>
434   - O objetivo dessa abordagem de validação é auxiliar na criação de restrições diretamente nas
435   - entidades de domínio. Tais restrições serão utilizadas de forma conjunta nas camadas de
436   - persistência e apresentação da aplicação. A vantagem é que elas são facilmente configuráveis,
437   - bastando apenas incluir certas anotações (ex: <literal>@NotNull</literal>, <literal>@Size</literal>)
438   - nos campos da classe a ser validada.
  136 + Sendo aderente à especificação Java EE 6, o <emphasis>Demoiselle Framework</emphasis>
  137 + recomenda e faz uso do mecanismo de validação provido pela especificação
  138 + <ulink url="http://jcp.org/en/jsr/detail?id=303">JSR-303 (Bean Validation)</ulink>.
439 139 </para>
440   - </note>
441   - <para>
442   - No pacote <literal>br.gov.frameworkdemoiselle.sample.domain</literal> altere a entidade de domínio
443   - <literal>Bookmark</literal> incluindo as anotações de validação nos campos <literal>description</literal>
444   - e <literal>link</literal> conforme ilustrado a seguir:
445   - </para>
446   - <programlistingco>
447   - <areaspec>
448   - <area id="valid-desc" coords="9"/>
449   - <area id="valid-link" coords="14"/>
450   - </areaspec>
451   - <programlisting role="JAVA"><![CDATA[@Entity
452   -public class Bookmark {
453   -
454   - @Id
455   - @GeneratedValue
456   - private Long id;
457   -
458   - @Column
459   - @NotNull
460   - @Size(min = 1, max = 20)
461   - private String description;
462   -
463   - @Column
464   - @NotNull
465   - @NotBlank
466   - @Size(max = 255)
467   - @URL
468   - private String link;
469   -
470   - ...
471   -}]]></programlisting>
472   - <calloutlist>
473   - <callout arearefs="valid-desc">
474   - <para>
475   - No campo <literal>description</literal>, a anotação <literal>@NotNull</literal> serve
476   - para impedir que o valor nulo seja atribuído a ele. Já a anotação <literal>@Size</literal>
477   - restringe a quantidade mínima e máxima de caracteres no campo.
478   - </para>
479   - </callout>
480   - <callout arearefs="valid-link">
481   - <para>
482   - No campo <literal>link</literal> mais restrições são aplicadas. Além de não permitir o valor
483   - nulo (com <literal>@NotNull</literal>) e estipular o comprimento máximo de 255 caracteres
484   - (com <literal>@Size</literal>), o campo não pode ficar vazio (com <literal>@NotBlank</literal>)
485   - e seu conteúdo deve ser um endereço de Internet válido (com <literal>@URL</literal>).
486   - </para>
487   - </callout>
488   - </calloutlist>
489   - </programlistingco>
490   - <tip>
491 140 <para>
492   - Validações de campos específicos para a comunidade brasileira são oferecidos pelo componente
493   - <emphasis>Demoiselle Validation</emphasis>. Com ele, as seguintes anotações podem ser aplicadas nas
494   - classes de domínio: <literal>@Cep</literal>, <literal>@Cnpj</literal>, <literal>@Cpf</literal>,
495   - <literal>@InscricaoEstadual</literal> e <literal>@PisPasep</literal>.
  141 + A fim de testarmos mais essa funcionalidade, utilizaremos a implementação de validação
  142 + <emphasis>Hibernate Validator</emphasis>. Para tal, abra o arquivo <filename>pom.xml</filename>
  143 + do projeto <literal>bookmark</literal> e inclua nele a seguinte dependência:
496 144 </para>
497   - </tip>
498   - <para>
499   - Assim que você efetuar as modificações, reconstrua o projeto Java e faça novo deploy no servidor de
500   - aplicações. Acesse a aplicação <literal>bookmark</literal> e, na tela de edição de bookmarks, deixe
501   - vazios os campos no formulário e clique em <guibutton>Salvar</guibutton>. Tente também preencher um
502   - endereço de Internet inválido no campo <literal>Link</literal>. Caixas de erro com as mensagens
503   - referentes as validações devem aparecer ao lado de cada campo, tal como ilustrado:
504   - </para>
505   - <figure>
506   - <title>Validação de campos na aplicação Bookmark</title>
507   - <mediaobject>
508   - <imageobject role="fo">
509   - <imagedata fileref="images/appvalid.png" align="center" scalefit="1" />
510   - </imageobject>
511   - <imageobject role="html">
512   - <imagedata fileref="images/appvalid.png" align="center" />
513   - </imageobject>
514   - <textobject>
515   - <phrase>Aplicação Bookmark em funcionamento</phrase>
516   - </textobject>
517   - </mediaobject>
518   - </figure>
519   - <tip>
  145 + <programlisting role="XML">
  146 + <![CDATA[<dependencies>
  147 + ...
  148 + <dependency>
  149 + <groupId>org.hibernate</groupId>
  150 + <artifactId>hibernate-validator</artifactId>
  151 + <version>4.3.0.Final</version>
  152 + </dependency>
  153 + </dependencies>]]>
  154 + </programlisting>
  155 + <note>
  156 + <para>
  157 + O objetivo dessa abordagem de validação é auxiliar na criação de restrições diretamente nas
  158 + entidades de domínio. Tais restrições serão utilizadas de forma conjunta nas camadas de
  159 + persistência e apresentação da aplicação. A vantagem é que elas são facilmente configuráveis,
  160 + bastando apenas incluir certas anotações (ex: <literal>@NotNull</literal>, <literal>@Size</literal>)
  161 + nos campos da classe a ser validada.
  162 + </para>
  163 + </note>
  164 + <para>
  165 + No pacote <literal>br.gov.frameworkdemoiselle.sample.bookmark.domain</literal> altere a entidade de domínio
  166 + <literal>Bookmark</literal> incluindo as anotações de validação nos campos <literal>description</literal>
  167 + e <literal>link</literal> conforme ilustrado a seguir:
  168 + </para>
  169 + <programlistingco>
  170 + <areaspec>
  171 + <area id="valid-desc" coords="9"/>
  172 + <area id="valid-link" coords="14"/>
  173 + </areaspec>
  174 + <programlisting role="JAVA">
  175 + <![CDATA[@Entity
  176 + public class Bookmark {
  177 +
  178 + @Id
  179 + @GeneratedValue
  180 + private Long id;
  181 +
  182 + @Column
  183 + @NotNull
  184 + @Size(min = 1, max = 30)
  185 + private String description;
  186 +
  187 + @Column
  188 + @NotNull
  189 + @NotBlank
  190 + @Size(max = 255)
  191 + @URL
  192 + private String link;
  193 +
  194 + ...
  195 + }]]>
  196 + </programlisting>
  197 + <calloutlist>
  198 + <callout arearefs="valid-desc">
  199 + <para>
  200 + No campo <literal>description</literal>, a anotação <literal>@NotNull</literal> serve
  201 + para impedir que o valor nulo seja atribuído a ele. Já a anotação <literal>@Size</literal>
  202 + restringe a quantidade mínima e máxima de caracteres no campo.
  203 + </para>
  204 + </callout>
  205 + <callout arearefs="valid-link">
  206 + <para>
  207 + No campo <literal>link</literal> mais restrições são aplicadas. Além de não permitir o valor
  208 + nulo (com <literal>@NotNull</literal>) e estipular o comprimento máximo de 255 caracteres
  209 + (com <literal>@Size</literal>), o campo não pode ficar vazio (com <literal>@NotBlank</literal>)
  210 + e seu conteúdo deve ser um endereço de Internet válido (com <literal>@URL</literal>).
  211 + </para>
  212 + </callout>
  213 + </calloutlist>
  214 + </programlistingco>
  215 + <tip>
  216 + <para>
  217 + Validações de campos específicos para a comunidade brasileira são oferecidos pelo componente
  218 + <emphasis>Demoiselle Validation</emphasis>. Com ele, as seguintes anotações podem ser aplicadas nas
  219 + classes de domínio: <literal>@Cep</literal>, <literal>@Cnpj</literal>, <literal>@Cpf</literal>,
  220 + <literal>@InscricaoEstadual</literal> e <literal>@PisPasep</literal>.
  221 + </para>
  222 + </tip>
520 223 <para>
521   - As mensagens exibidas na tela durante a validação estão contidas no arquivo de
522   - recursos <filename>ValidationMessages.properties</filename> presente no diretório
523   - <filename>/src/main/resources/</filename>.
  224 + Assim que você efetuar as modificações, reconstrua o projeto Java e faça novo deploy no servidor de
  225 + aplicações. Acesse a aplicação <literal>bookmark</literal> e, na tela de edição de bookmarks, deixe
  226 + vazios os campos no formulário e clique em <guibutton>Salvar</guibutton>. Tente também preencher um
  227 + endereço de Internet inválido no campo <literal>Link</literal>. Caixas de erro com as mensagens
  228 + referentes as validações devem aparecer ao lado de cada campo, tal como ilustrado:
524 229 </para>
525   - </tip>
  230 + <figure>
  231 + <title>Validação de campos na aplicação Bookmark</title>
  232 + <mediaobject>
  233 + <imageobject role="fo">
  234 + <imagedata fileref="images/appvalid.png" align="center" scalefit="1" />
  235 + </imageobject>
  236 + <imageobject role="html">
  237 + <imagedata fileref="images/appvalid.png" align="center" />
  238 + </imageobject>
  239 + <textobject>
  240 + <phrase>Aplicação Bookmark em funcionamento</phrase>
  241 + </textobject>
  242 + </mediaobject>
  243 + </figure>
  244 + <tip>
  245 + <para>
  246 + As mensagens exibidas na tela durante a validação estão contidas no arquivo de
  247 + recursos <filename>ValidationMessages.properties</filename> presente no diretório
  248 + <filename>/src/main/resources/</filename>.
  249 + </para>
  250 + </tip>
526 251 </section>
527   -
  252 +
528 253 </chapter>
529 254 \ No newline at end of file
... ...
documentation/quickstart/pt-BR/preface.xml 0 → 100644
... ... @@ -0,0 +1,30 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  3 + "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
  4 + <preface>
  5 + <title>Sobre o QuickStart</title>
  6 + <para>
  7 + Este documento é um tutorial do tipo "passo a passo" que visa ilustrar de forma rápida, clara e prática a criação
  8 + de uma aplicação simples utilizando o <emphasis>Demoiselle Framework 2.3</emphasis>.
  9 + </para>
  10 + <note>
  11 + <para>
  12 + Apesar de o <emphasis>Demoiselle Framework 2.3</emphasis> ser simples de usar, o desenvolvimento de aplicações
  13 + não triviais requer o conhecimento das diversas tecnologias envolvidas na especificação
  14 + <emphasis>Java EE</emphasis>, incluindo:
  15 + <itemizedlist>
  16 + <listitem>Linguagem Java</listitem>
  17 + <listitem>Servlets, JSP e Tag Libraries</listitem>
  18 + <listitem>JavaBeans</listitem>
  19 + <listitem>HTML e XML</listitem>
  20 + <listitem>Contêineres e Servidores Web</listitem>
  21 + </itemizedlist>
  22 + </para>
  23 + </note>
  24 + <note>
  25 + <para>
  26 + Esta documentação refere-se à release 2.3 do <emphasis>Demoiselle Framework</emphasis> e pode diferir
  27 + significativamente das versões anteriores.
  28 + </para>
  29 + </note>
  30 + </preface>
0 31 \ No newline at end of file
... ...
documentation/reference/pt-BR/paginacao.xml
... ... @@ -94,7 +94,7 @@
94 94  
95 95 public Pagination getPagination(Class<?> clazz) { ... }
96 96  
97   - public Pagination get -->Pagination(Class<?> clazz, boolean create) { ... }
  97 + public Pagination getPagination(Class<?> clazz, boolean create) { ... }
98 98  
99 99 }
100 100  
... ... @@ -173,7 +173,7 @@
173 173 <section>
174 174 <title>Implementação na aplicação</title>
175 175 <para>
176   - 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
  176 + 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
177 177 fornecida pelo arquétipo <emphasis>JSF com JPA</emphasis> do <emphasis>Demoiselle Framework</emphasis> (para maiores detalhes
178 178 ver <link linkend="estrutura">Arquétipos</link>). Iremos utilizar o componente <literal>DataTable</literal> do <emphasis>PrimeFaces</emphasis>,
179 179 que oferece o mecanismo de <emphasis>Lazy Loading</emphasis> conhecido como <literal>LazyDataModel</literal>, muito útil para paginação
... ... @@ -181,7 +181,7 @@
181 181 </para>
182 182 <para>
183 183 Primeiro é preciso configurar um objeto <literal>LazyDataModel</literal> no construtor do <emphasis>Managed Bean</emphasis>
184   - (<emphasis>BookmarkList</emphasis> nesse exemplo): instancia-lo e sobrescrever o método abstrado <literal>load</literal>, que recebe
  184 + (<emphasis>BookmarkList</emphasis> nesse exemplo): instanciá-lo e sobrescrever o método abstrado <literal>load</literal>, que recebe
185 185 vários argumentos. Esses argumentos são recuperados na página <literal>jsf</literal> que carrega a instância do objeto <literal>LazyDataModel</literal>.
186 186 </para>
187 187 <para>
... ... @@ -189,7 +189,7 @@
189 189 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.
190 190 Esses dados são usados no método <literal>findAll()</literal>, da classe <literal>JPACrud</literal> (extensão JPA), que utiliza o contexto de
191 191 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
192   - <literal>first</literal> indicar. O resultado é passado para a instancia do <literal>LazyDataModel</literal>, que é responsável por exibir
  192 + <literal>first</literal> indicar. O resultado é passado para a instância do <literal>LazyDataModel</literal>, que é responsável por exibir
193 193 os dados de forma apropriada.
194 194 </para>
195 195 <para>
... ...
impl/core/src/test/java/br/gov/frameworkdemoiselle/internal/bootstrap/StartupBootstrapTest.java
... ... @@ -14,7 +14,7 @@
14 14 // * GNU General Public License for more details.
15 15 // *
16 16 // * You should have received a copy of the GNU Lesser General Public License version 3
17   -// * along with this program; if not, see <http://www.gnu.org/licenses/>
  17 +// * along with this program; if not, see <http:www.gnu.org/licenses/>
18 18 // * or write to the Free Software Foundation, Inc., 51 Franklin Street,
19 19 // * Fifth Floor, Boston, MA 02110-1301, USA.
20 20 // * ----------------------------------------------------------------------------
... ... @@ -30,7 +30,7 @@
30 30 // * para maiores detalhes.
31 31 // *
32 32 // * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
33   -// * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  33 +// * "LICENCA.txt", junto com esse programa. Se não, acesse <http:www.gnu.org/licenses/>
34 34 // * ou escreva para a Fundação do Software Livre (FSF) Inc.,
35 35 // * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
36 36 // */
... ...
impl/extension/servlet/src/test/java/br/gov/frameworkdemoiselle/internal/proxy/HttpServletRequestProxyTest.java 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +package br.gov.frameworkdemoiselle.internal.proxy;
  2 +
  3 +import org.junit.runner.RunWith;
  4 +import org.powermock.modules.junit4.PowerMockRunner;
  5 +
  6 +@RunWith(PowerMockRunner.class)
  7 +public class HttpServletRequestProxyTest {
  8 +
  9 +
  10 +
  11 +}
... ...