blob: 58e1fd487667065a84f1e14234506d348e6df4c8 [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= Suporte aos Processadores de Anotação no NetBeans IDE, Parte I: Utilizando o Projeto Lombok
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Suporte aos Processadores de Anotação no NetBeans IDE, Parte I: Utilizando o Projeto Lombok - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Suporte aos Processadores de Anotação no NetBeans IDE, Parte I: Utilizando o Projeto Lombok
image::images/netbeans-stamp-80-74-73.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0"]
* *Utilizando Projeto Lombok para Anotações Personalizadas*
Para demonstrar como as anotações personalizadas funcionam dentro do NetBeans IDE, vamos usar o Projeto Lombok, que fornece uma forma conveniente de gerar automaticamente diversos elementos de código Java, tais como getters, setters, construtores e outros. Para maiores informações sobre suas funcionalidades, visite o link:http://projectlombok.org/[+site do projeto Lombok+]. Entretanto, tenha em mente que o Projeto Lombok inclui algumas funcionalidades que podem não funcionar em todos os ambientes de desenvolvimento.
*Para concluir este tutorial, você precisa dos seguintes recursos e softwares.*
|===
|Software ou Recurso |Versão Necessária
|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.2, 7.3, 7.4, 8.0
|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+JDK (Java Development Kit)+] |versão 7 ou 8
|link:http://code.google.com/p/projectlombok/downloads/list[+lombok.jar+] |v1.12.4 ou mais recente
|===
== Criando um Novo projeto Java
Neste exercício, você cria um projeto Java simples e uma classe chamada ``MyBooks.java`` que demonstrará as anotações em ação.
1. Escolha *Arquivo > Novo Projeto* no menu principal para abrir o assistente de Novo Projeto.
2. Selecione o tipo de projeto Aplicação Java na categoria Java. Clique em Próximo.
3. Na página Nome e Localização do assistente, digite * ``TestAnn`` * como nome do projeto.
4. Digite * ``testann.TestBooks`` * no campo Criar Classe Principal para substituir o nome default da classe. Clique em Finalizar.
image::images/newproj.png[title="Criando um novo projeto Java no NetBeans IDE"]
Quando você clica em Finalizar, o IDE cria a aplicação Java e abre a classe ``TestBooks.java`` no editor. Você pode ver que o novo projeto está agora visível na janela Projetos e que a classe ``TestBooks.java`` está no pacote ``testann`` sob o nó Pacotes de Código-fonte.
. Clique com o botão direito do mouse no nó do pacote ``testann`` na janela Projetos e escolha Novo > Classe Java.
. Digite * ``MyBooks`` * para o Nome da Classe e confirme que a classe será criada no pacote ``testann`` . Clique em Finalizar.
Quando você clicar em Finalizar, o IDE abre a nova classe no editor.
. No editor de código-fonte, adicione os seguintes três campos em ``MyBooks.java`` .
[source,java]
----
package testann;
public class MyBooks {
*private int year; //fields
private String title;
private String author;*
}
----
. Coloque o ponteiro do mouse na declaração da classe e pressione Ctrl-Espaço para chamar o suporte de autocompletar código do editor.
. Selecione ``MyBooks (int year, String title, String author) - generate`` na lista autocompletar código para gerar um construtor para ``MyBooks.java`` .
image::images/generate-constructor.png[title="Recurso autocompletar código para gerar o construtor"]
. Salve as alterações.
== Ativando Anotações Personalizadas (lombok.jar) para o Projeto
Neste exercício, você irá modificar a janela de propriedades do projeto para adicionar uma biblioteca à classpath do projeto e ativar o processamento de anotações no editor.
1. Faça download do arquivo link:http://code.google.com/p/projectlombok/downloads/list[+lombok.jar+] e salve no sistema.
2. Clique com o botão direito no nó do projeto ``TestAnn`` e escolha Propriedades.
3. Selecione a categoria Bibliotecas na caixa de diálogo Propriedades do Projeto.
4. Clique em Adicionar JAR/Pasta na guia Compilar e localize o arquivo ``lombok.jar`` submetido a download.
image::images/properties1.png[title="Categoria das bibliotecas na janela Propriedades"]
Os recursos adicionados à guia Compilar correspondem à opção ``-classpath`` do link:http://download.oracle.com/javase/6/docs/technotes/tools/windows/javac.html#options[+compilador Java+]. Como ``lombok.jar`` é um arquivo JAR único que contém definições de anotação e processadores de anotações, é recomendado adicioná-lo ao classpath do projeto, que é a guia Compilação.
. Escolha a categoria Compilação na janela Propriedades do Projeto.
. Confirme se a caixa de seleção Ativar o Processamento de Anotações está selecionada (ela é ativada por default) e selecione a caixa de seleção Ativar o Processamento de Anotações no Editor.
image::images/properties2.png[title="Categoria de compilação na janela Propriedades"]
A caixa de seleção Ativar Processamento de Anotações ativa o processamento de anotação ao construir e compilar o projeto. Se a caixa de seleção não estiver selecionada, a opção ``-proc:none`` é passada para o compilador Java e a compilação ocorre sem qualquer processamento de anotações. Então, se deseja processar anotações no código, a caixa de seleção Ativar Processamento de Anotações deve estar selecionada.
Ao selecionar a caixa de seleção, Ativar Processamento de Anotações no Editor, você faz com que o processamento de anotações fique visível no editor. Quaisquer artefatos adicionais que forem gerados por processadores de anotações (classes, métodos, campos, etc.) ficam visíveis no editor IDE e disponíveis para a conclusão de código, no Navegador, Ir para Tipo, Localizar usos e outros.
. Clique em OK na janela Propriedades do Projeto e retorne para o arquivo ``MyBooks.java`` .
Caso você expanda o nó Bibliotecas na janela Projetos, verá que a ``lombok.jar`` está agora listada como uma biblioteca do projeto.
image::images/projects-window.png[title="Nó das bibliotecas na janela Projetos"]
== Escrevendo uma Aplicação com a Utilização de Anotações Personalizadas Lombok
1. No arquivo ``MyBooks.java`` , digite ``@Data`` antes da declaração de classe ``MyBooks`` . ``@Data`` é uma anotação que gera o código padronizado para classes Java: getters para todos os campos, setters para todos os campos não-finais e o ``toString`` apropriado, ``equals`` e implementações ``hashCode`` que envolvem os campos da classe.
Para aprender mais sobre quais anotações são suportadas pelo Projeto Lombok, consulte a link:http://projectlombok.org/features/index.html[+Visão Geral das Funcionalidades+] do Lombok.
. Clique na dica na margem direita do editor e adicione importar para ``lombok.Data`` .
image::images/import-lombok.png[title="Dica no editor para importar lombok"]
O código resultante no Editor deve ser parecido com o exemplo abaixo.
[source,java]
----
package testann;
import lombok.Data;
@Data
public class MyBooks {
private int year; //fields
private String title;
private String author;
public MyBooks(int year, String title, String author) {
this.year = year;
this.title = title;
this.author = author;
}
}
----
Observe que artefatos de código necessários, como getters, setters, toString, etc., têm sido gerados e é possível visualizá-los na janela do Navegador. A anotação ``@Data`` gera todos os códigos padronizados que são necessários para uma classe típica.
image::images/nav.png[title="Janela do Navegador mostrando os membros do projeto"]
É possível também chamar a janela autocompletar código (Ctrl-Espaço) e ver que os artefatos gerados estão disponíveis para pegá-los. Agora, veremos que o projeto compila e os artefatos gerados podem ser chamados de outras partes do programa.
. Abra o arquivo ``TestBooks.java`` com o método _main_ e adicione o código a seguir (em negrito) para criar um novo objeto da classe ``MyBooks`` .
[source,java]
----
package testann;
public class TestBooks {
public static void main(String[] args) {
*MyBooks books = new MyBooks(2009, "My Beautiful Dream", "John Smith");*
}
}
----
. Adicione o seguinte código para imprimir os valores da variável ``books`` .
Para voltar os valores, chamamos os métodos getter que são autogerados por ``lombok.jar`` . Enquanto estiver digitando, observe que os artefatos autogerados estão disponíveis da janela autocompletar código.
[source,java]
----
package testann;
public class TestBooks {
public static void main(String[] args) {
MyBooks books = new MyBooks(2009, "My Beautiful Dream", "John Smith");
*System.out.println("Year: " + books.getYear() + ", Title: " + books.getTitle() + ", Author: " + books.getAuthor());*
}
}
----
. Salve as alterações.
. Clique com o botão direito do mouse no nó na janela Projetos e selecione Executar (F6).
Ao executar a aplicação, você deverá ver a seguinte saída que mostra que a aplicação foi compilada com êxito.
image::images/output.png[title="Janela de saída após a execução da aplicação"]
Você pode ver que os artefatos gerados pelo processador de anotação Lombok estão acessíveis de outras partes do programa.
== Próxima Etapa
* Documentação Java SE - link:http://download.oracle.com/javase/6/docs/technotes/guides/language/annotations.html[+Anotações+]
* Tutorial Java SE - link:http://download.oracle.com/javase/tutorial/java/javaOO/annotations.html[+Anotações+]
link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20the%20Annotation%20Processors%20Support%20in%20NetBeans%20IDE[+Enviar Feedback neste Tutorial+]