Big Data/ Java/ Play Framework

#Devcommerce slides da palestra sobre Manifesto Reativo e painel Big Data

devcommerce

Wow! Adorei a primeira conferência para desenvolvedores na indústria de e-commerce.

Para quem estava buscando os slides da apresentação sobre o manifesto reativo, está disponível para baixar:
Slides da palestra.

Gostaria de agradecer toda manifestação de apoio, aplausos e perguntas realizadas no evento e pós evento, foi muito legal conhecer todos vocês e saber que o pessoal realmente se interessou pelo manifesto reativo e novas técnicas de desenvolvimento de software para a indúsitra de e-commerce.

Obrigado Tiago Baeta, pelo apoio; Toda a equipe do e-Commerce Brasil pela fantástica organização do evento, estão de parabéns.

#Goreactive!
#GoBigData

Java/ Play Framework

Habilitando CORS no Play Framework 2.3.x

wired

É bem comum quando você trabalha com diferentes servidores e recursos separados por uma vasta rede de servidores, ou você contorna isso usando Nginx, proxies ou você implementa uma abordagem diferente quando chega nesse nível.

CORS, basicamente é o problema mais comum em lhe dar com chamadas AJAX hoje em dia, por exemplo esse post foi inspirado nessa necessidade.

No Play Framework você samba um pouquinho para conseguir adicionar suporte a CORS nas chamadas que forem executadas por lá.

Para quem usa Tomcat, pode usar o filtro que o Ebay disponibilizou no Github.

Como funciona no Play?

Crie um arquivo na pasta Raiz:Global.java

 
import play.GlobalSettings;
import play.libs.F.Promise;
import play.mvc.Action;
import play.mvc.Http;
import play.mvc.SimpleResult;
 
public class Global extends GlobalSettings {
    private class ActionWrapper extends Action.Simple {
        public ActionWrapper(Action<?> action) {
            this.delegate = action;
        }
 
        @Override
        public Promise<SimpleResult> call(Http.Context ctx) throws java.lang.Throwable {
            Promise<SimpleResult> result = this.delegate.call(ctx);
            Http.Response response = ctx.response();
            response.setHeader("Access-Control-Allow-Origin","*");
            response.setHeader("Access-Control-Allow-Methods", "POST, HEAD, PATCH, GET, PUT, DELETE, OPTIONS");
            response.setHeader("Access-Control-Allow-Credentials", "true");
            response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
            return result;
        }
    }
 
    @Override
    public Action<?> onRequest(Http.Request request, java.lang.reflect.Method actionMethod) {
        return new ActionWrapper(super.onRequest(request, actionMethod));
    }
}

Salve e execute qualquer chamada REST que você tenha de serviço no Play, o cabeçalho agora aparecerá para você assim:

 
 
    Status Code: 200 OK
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization
    Access-Control-Allow-Methods: POST, HEAD, PATCH, GET, PUT, DELETE, OPTIONS
    Access-Control-Allow-Origin: *
    Content-Length: 3322
    Content-Type: application/json; charset=utf-8

Fácil né? Para chegar até aqui foi complicado, então deixo aqui o registro para futuros devs Java que tiverem esses problemas para resolver de forma mais rápida que eu.

Até o próximo post, dúvidas, deixem seus comentários.