Apache Wicket with Lambda Expressions

What’s up? 🙂

I’ve been working on some projects that thankfully use Apache Wicket for the presentation layer. It naturally occurred to me how Java’s 8 lambda expressions fit perfectly with Wicket. And not just me, the Wicket team seems to be already working on changing the API to provide support for lambdas out of the box.

Click to continue reading “Apache Wicket with Lambda Expressions”…

Advertisements

CDI & EJB: Sending asynchronous mail on transaction success

Hello again! 🙂

This time I’ve chosen a common task that most of the time, in my opinion, is done the wrong way: sending e-mails. Not that people can’t figure out how e-mail APIs work, such as JavaMail or Apache’s commons-email. What I usually see as a problem is that they underestimate the need to make the sending mail routine asynchronous, and that it also should only run when the underlying transaction commits successfully (most of the time).

Click to continue to read about sending async mail…

JSF: Validation at the right phase (understanding the life cycle)

Para versão em português, clique aqui.

Hi everyone!

Although the title emphasises the word validation, this article is actually about the JSF life cycle. That’s because I believe that one of the easiest ways to truly understand the life cycle is by making something we do all the time: validating user input.

Click to continue reading “JSF: Validation at the right phase”…

Generic DAO example

Para ler a versão em português, clique aqui.

Hey guys!

For this post I’m gonna show how to implement a “Generic DAO” class. It’s something junior developers struggle with, and usually end up writing lots of “DAO” classes doing the exact same thing. A “Generic DAO” is a convenient way to have a single class (or component one might say) responsible for persistent operations in any entity in your code. This is what I mean:

Click to continue reading “Generic DAO Example”…

Exemplo DAO genérico

To read the english version, click here.

Olá a todos!

Para esse post vou mostrar como implementar um “DAO genérico”. É algo que desenvolvedores iniciantes apanham bastante, e normalmente acabam escrevendo um monte de código repetido que faz a mesma coisa. Um “DAO genérico” é uma maneira conveniente de ter uma única classe (ou componente se preferir) que consiga fazer operações de persistência em tipos de entidade diferentes. Por exemplo:

Clique para continuar lendo “Exemplo DAO Genérico”…

Tutorial HTTPS/SSL no JBoss AS 7

Oi novamente a todos!

Para esse artigo vou falar como habilitar o uso de SSL no JBoss 7. Isto porque as informações disponíveis na internet são bem confusas e fragmentadas: alguns links dão informações incompletas, outros informações desatualizadas, etc. Sendo mais específico, vou abordar as versões AS 7.1.2 e/ou EAP 6.0. Acredito que não deve ser muito diferente para as versões superiores, inclusive para o JBoss 8 (WildFly).

Clique para continuar lendo “Tutorial HTTPS/SSL no JBoss AS 7″…

Novidades do Java 8: Lambda Expressions

For the english version, click here.

Saudações!

Depois de alguns meses afastado do blog, vamos tirar o “cheiro de mofo” com estilo :). Percebi que um dos meus artigos anteriores sobre a nova Date/Time API do Java 8 teve muitos acessos, então por isso vou dedicar esse post a uma outra novidade da nova versão do Java: Lambda Expressions.

Clique para continuar lendo “Novidades do Java 8: Lambda Expressions”…

Novidades do Java 8: JSR 310 – Date and Time API

Fala pessoal!

Esse post é para você que nem conseguiu assimilar as novidades do Java 7 ainda! Sim, porque o Java 8 está logo ali. 😀
Depois de um atraso até bem justificado, o lançamento da versão final do JDK 8 ficou para março/2014, o que já está bem próximo.

Nenhuma outra versão da plataforma Java teve tantas novidades como essa, a 8. A última grande novidade foi a introdução de generics no Java 5, e isso foi em 2004! No meio de todas essas novidades, a que vou falar aqui é uma também muito aguardada.

A JSR 310 foi aprovada pelo comitê executivo em 2007. Há 6 anos! E está esperando um lugar ao sol desde então. Finalmente foi incorporada ao Java 8 e quem quiser brincar antes do lançamento oficial é só baixar uma early access release do JDK 8 no site do Open JDK

A opinião de todos com relação a API atual para manipulação de datas do Java SE é unânime: Ruim demais. A JSR 310, baseada em grande parte no framework JODA-TIME, veio para tentar resgatar nossa dignidade 🙂

Clique para continuar lendo sobre “Date and Time API”…

Tutorial SPI (Service Provider Interface)

Para esse artigo escolhi um assunto que é um mistério para muita gente: SPI’s. Sim, eu falei SPI e não API. SPI’s são maneiras bastante eficazes de garantir baixo acoplamento entre consumidor/serviços. Por exemplo, qualquer um que já escreveu um código usando JDBC na vida já deve ter escrito aquela infame instrução: Class.forName(“um.nome.de.driver.jdbc”);.
Nos drivers JDBC mais recentes, os chamados “type 4”, nao é mais necessário escrever a linha acima para inicializar o driver, pois os mesmos já foram implementados usando o “service provider mechanism”. Traduzindo, os drivers atuais são uma implementação de SPI.

Na intenção de ser mais didático e convencer qualquer cético que venha a ler esse artigo, vou usar um exemplo fictício mas não muito longe da realidade.

Clique para continuar lendo “Tutorial SPI”…