Contribuindo com projetos Open Source

    Quando se está começando no mundo do desenvolvimento de software, todo mundo procura saber o que pode fazer para adquirir mais conhecimento e prática, o que é um diferencial para o primeiro emprego na área. Buscando em fóruns é muito comum a resposta "procure um projeto open source para contribuir" e como iniciante você logo pensa "eu vou conseguir experiência contribuindo com o Hibernate? Ou com o Ruby on Rails? Como vou fazer isso?". Foi o que pensei quando eu estava começando e li essa sugestão, mas acalme-se, você não precisa ser um expert em programação para entrar no mundo open source (mas precisa para contribuir com esses grandes frameworks, vamos chegar lá). Vamos começar do começo. Contribuir com um... Continue lendo →

    Simplificando - Gradle

    Nos posts do blog sempre é mostrado o build.grade, o qual contém as libs dos projetos e mais algumas configurações. Nesse post vou apresentar o Gradle, como ele facilita no gerenciamento do ciclo de vida da aplicação, porque usá-lo e os comandos necessários para rodar facilmente os projetos do blog. De forma geral, o Gradle é uma ferramenta para automatizar o build de sua aplicação, tal como Maven ou Ant, porém muito mais simples do que elas. Se você ainda não usa uma ferramenta para isso, aconselho fortemente à fazê-lo, pois tudo que não é automatizado aumenta seu trabalho. A maioria dos arquivos de build dos projetos no blog fazem as seguintes tarefas: - cuida das dependências - compila o... Continue lendo →

    Integrando Spring e Hibernate

    Integrar Spring e Hibernate é uma tarefa muito comum, mas a forma como isso geralmente é feito me desagrada. É muito comum encontrar classes que herdam de HibernateDaoSupport, o que cresce de forma exagerada e traz comportamento que muitas vezes a classe não deveria possuir. Quando feito dessa forma, para a maioria das operações é necessário utilizar o objeto HibernateTemplate, obtido através do método getHibernateTemplate(). Então por que não injetar apenas o HibernateTemplate e trabalhar com ele diretamente? E assim foi feito, o que acabou com essa herança desnecessária. Então surgiu um novo problema. As limitações do HibernateTemplate passaram a incomodar, pois não era possível trabalhar com a Session diretamente (até era, mas assim o seu controle vinha para as... Continue lendo →

    Testes de Unidade - Struts 2

    Testes são uma forma de garantir que a aplicação está funcionando corretamente, e quando é preciso alterá-la, através deles garantimos que ela vai continuar funcionando após feitas as alterações. Aqui vou mostrar como devem ser feitos os testes de unidade das actions quando trabalhamos com Struts 2. Serão criados aqui os testes para a CarroAction, do post Simplificando - Struts 2. Primeiro, será necessário fazer uma pequena alteração na classe. O construtor da classe agora vai ter que receber o dao ao invés de criá-lo. Fica assim: public CarroAction(final CarroDao dao) { this.dao = dao; } E para fazer os testes, serão adicionados ao build.gradle os jars do JUnit e do Mockito: testCompile 'junit:junit:4.10' testCompile 'org.mockito:mockito-core:1.9.0' Abaixo, a classe de... Continue lendo →

    Integrando JSF 2 e Spring

    É muito fácil encontrar material sobre JSF 2 de qualidade na internet, mas não se encontra uma forma fácil de realizar a integração com Spring, e quando encontrada, geralmente a integração é feita via xml. Nesse post será mostrado como fazer a integração entre essas duas ferramentas de uma maneira simples usando anotações e um mínimo de xml. Para trabalhar com o JSF são necessários dois jars: compile 'com.sun.faces:jsf-api:2.2.0-m04' compile 'com.sun.faces:jsf-impl:2.2.0-m04' Por parte do Spring, são os mesmos jars usados para integração com Struts: compile 'org.springframework:spring-asm:3.1.1.RELEASE' compile 'org.springframework:spring-beans:3.1.1.RELEASE' compile 'org.springframework:spring-context:3.1.1.RELEASE' compile 'org.springframework:spring-core:3.1.1.RELEASE' compile 'org.springframework:spring-expression:3.1.0.RELEASE' compile 'org.springframework:spring-web:3.1.1.RELEASE' A configuração no web.xml fica assim: As tags servlet e servlet-name são para o uso “padrão” do JSF. A classe ContextLoaderListener é quem vai... Continue lendo →

    Código Limpo

    Estive presente no Agile Brazil 2011, e dentre as várias palestras que assisti, uma que me fez pensar bastante foi o keynote do Vinicius Teles, intitulada “O dia em que a Terra acabou parou, porque o software travou”. De forma bastante resumida, Vinicius disse que vários dos problemas que encaramos diariamente é culpa nossa, dos desenvolvedores, e acho ele tem razão. Vide os problemas (seja lentidão ou dificuldade de utilização) dos sistemas dos correios, aeroportos ou bancos, os quais geram filas quilométricas que temos de enfrentar. Ou seja, todos pagam pelos bugs dos sistemas que nós criamos! Ele sugeriu um novo manifesto, o Manifesto Vergonha Na Cara, que estabelece que Código de verdade é código testado e limpo! Como também... Continue lendo →

    Simplificando - Spring MVC

    O Spring MVC é uma ótima ferramenta. É bem mais avançado que o Sruts 2 e supre quase todas as suas falhas de forma simples. Não se encontra muito material sobre o Spring MVC 3, mas há muito sobre a versão 2.5. Aqui será mostrado como trabalhar com a versão 3 adotando a maior parte de seus recursos. A configuração primeiro. Abaixo, o build.gradle do exemplo. Também temos de configurar o web.xml. DispatcherServlet é a classe que habilita o uso Spring MVC, a qual vai trabalhar as requisições recebidas. HiddenHttpMethodFilter é usado para habilitar o suporte RESTful do Spring. Mais sobre isso mais tarde. Por padrão, o Spring vai buscar o arquivo de configurações na pasta WEB-INF, sendo o nome... Continue lendo →

    Integrando Struts 2 e Spring

    No primeiro post sobre Struts 2 foi falado que utilizar um container de injeção de dependência é o ideal para fazer o controle das dependências das classes do projeto. Nesse post será mostrado como integrar com o o Struts 2 com o Spring, o mais famoso container feito em java. Para trabalhar com essas ferramentas de forma mais simples, procurei tornar sua utilização o mais próximo possível do VRaptor. Será usado o mesmo exemplo da aplicação de carros que foi apresentada no post citado, para deixar claro quais são os ganhos que o Spring traz para a aplicação. Primeiro a configuração. Além dos jars padrões para usar o Struts 2 será necessário mais um, usado para integração com o Spring,... Continue lendo →

    Combos dependentes com Struts 2

    Este é um exemplo do clássico problema dos combos dependentes, do tipo estado - cidade. Por si só, o suporte a ajax do Struts 2 não é suficiente, então é necessário fazer uso de um plugin para JSON que facilita esse trabalho. Para usá-lo, além da configuração padrão para uso do Struts 2, é preciso adicionar mais um jar nas dependências do build.gradle: compile 'org.apache.struts.xwork:xwork-core:2.3.4' E está pronto para utilizar. Abaixo está a classe com as duas Actions, a que popula o combo de estados da forma usual, e a que popula o combo de cidades com json: Até aqui, poucas novidades. A anotação @ParentPackage(“json-default”) é usada para extender o pacote do JSON, seu uso é necessário para converter as... Continue lendo →

    Simplificando - Struts 2

    A maior parte do conteúdo sobre Struts 2 que encontramos por aí ensina a usar o framework de uma forma bastante complicada. Não gosto muito do Struts 2, acho um framework ultrapassado, que fica devendo muito para as outras opções que temos hoje. Ainda sim, muitos precisam utilizá-lo, então vou simplificar nesse post a forma de trabalhar com esse framework. Esse exemplo será bem simples, mostrando apenas como fazer uma requisição e o redirecionamento para outra action, isso sem utilizar XML, sem herdar de ActionSupport, sem implementar Action ou nada que é comumente usado. Aqui, só será necessário fazer uso do pacote de convenções do Struts 2 e de algumas de suas anotações. Primeiro, a configuração. Abaixo, o build.gradle do... Continue lendo →