Saudacoes!Dentre muitos assuntos que quero registrar em meu blog decidi escrever sobre a aterrorizadora excecao que insiste em nos seguir: a NullPointerException. Todo programador Java ja teve a felicidade de conhece-la, sem excecoes.Pois bem, existe um Design Pattern especifico para este problema que inclusive foi citado em livros conceituadissimos, como por exemplo, Refactoring (Martin Fowler, 1999) e Refactoring to Patterns (Joshua Kerievsky, 2004), e que percebo que a maioria dos desenvolvedores o desconhece. Seu nome: Null Objects (bastante sugestivo).O que voce faria se, a partir de hoje, a referencia a null fosse abolida das linguagens de programacao? Teoricamente seriamos obrigados a quebrar um paradigma e rever as nossas formas de pensar em codigo, ou seja, codificar.Seguindo o exemplo da Wikipedia, um animal produz um som:Todo som de pato e "Quack!":Concorda comigo que em todas as partes do sistema onde solicitamos ao animal produzir seu respectivo som precisaremos antes validar se o animal existe? Veja o exemplo a seguir:Se nao colocarmos o if de validacao corremos o risco de gerarmos um NullPointerException. Com o Design Pattern NullObjects resolvemos este impasse da seguinte forma (polimorfismo):Ao inves de passarmos null para o metodo requestSound(Animal animal), passamos uma instancia de NullAnimal, com isto o metodo makeSound() fara absolutamente nada.Recomendo a voce ler mais sobre este Design Pattern na internet e/ou se possivel nos livros mencionados. Um abraco e ate a proxima! Ola pessoal,Para quem esta familiarizado com o driver em Java para o MongoDB, persistir uma data e simples. Basta repassar uma instancia de java.util.Date conforme exemplo a seguir:Porem, contudo e entretanto, dentro da filosofia do framework Vert.x e com a utilizacao de um modulo proprio para MongoDB, persistir uma data se torna uma tarefa um pouco mais ardua. Infelizmente a documentacao do modulo nao nos traz exemplo algum sobre a persistencia de datas no MongoDB.A explicacaoA comunicacao entre Verticles em Vert.x se da atraves da troca de mensagens com dados no formato Json pelo barramento de eventos (ou EventBus). Nao ha no formato Json uma padronizacao para datas. Infelizmente (ou felizmente) o Vert.x nao nos autoriza trafegar uma instancia de java.util.Date pelo EventBus.A solucaoNeste caso, primeiramente configuramos o modulo com a propriedade "use_mongo_types" como true. Apos, informamos ao MongoDB que o atributo "data_criacao" e do tipo $date e seu valor pode ser:- a representacao em milisegundos da data desde 01 de Janeiro de 1970:{ account_id: 444XYZ, data_criacao: {$date: 1411101068495}}- ou a representacao em texto no formato ISO-8601:{ account_id: 444XYZ, data_criacao: {$date: 2014-09-18T10:32:59.000+0000}}Abaixo segue o Gist com o teste final:A minha versao do MongoDB e 2.6.3.Referencia:http://diabolicallab.com/store-dates-with-vertx-mongo-persistorhttps://github.com/vert-x/mod-mongo-persistor Ola pessoal,Ja que estou realizando este passo a passo em minha maquina, nao custa compartilha-lo. No meu caso, vou atualizar no meu Ubuntu 15.04 a versao do Golang 1.4.2 para 1.5.1, lancado recentemente.Removendo a versao anterior sudo rm -rf /usr/local/go Baixando a nova versao wget https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz Descompactando sudo tar -C /usr/local -xzf go1.5.1.linux-amd64.tar.gz Verificando se deu tudo certo go version // go version go1.5.1 linux/amd64 Ola pessoal,Segue a gravacao de um Hangout com George Gastaldi (RedHat) falando sobre JBoss Forge para o GUJavaSC. Recomendadissimo, valeu George! Pode invadirOu chegar com