Skip to content

Instantly share code, notes, and snippets.

public final class HandleErrors extends SimpleFilter<Request, Response> {
@Override
public Future<Response> apply(Request req, Service<Request, Response> service) {
return service.apply(req).handle(new ExceptionalFunction<Throwable, Response>() {
@Override
public Response applyE(Throwable in) {
Response resp = Response.apply();
ChannelBuffer content = ChannelBuffers.wrappedBuffer(in.getMessage().getBytes());
if (in instanceof NumberFormatException) {
public static void main(String[] args) throws Exception {
HandleErrors errorsFilter = new HandleErrors();
Service<Request, Response> service = errorsFilter.andThen(router());
ListeningServer server = Http.server().serve(addr, service);
Await.ready(server);
}
static Service<Request, Response> echoHandler() {
return new Service<Request, Response>() {
public Future<Response> apply(Request request) {
Cat cat = CatService.find(getId(request));
Response response = Response.apply(request.version(), Status.Ok());
response.setContent(ChannelBuffers.wrappedBuffer(toBytes(cat)));
return Future.value(response);
}
@leonmaia
leonmaia / validation.scala
Created August 8, 2016 12:02
Scalaz validation
import scalaz.{ValidationNel, \/, \/-, Validation}
import org.joda.time.LocalDate
case class Musician(name: String, born: LocalDate)
def validate(musician: Musician): Validation[String, Musician] = {
import scalaz.Scalaz._
def validName(name: String): ValidationNel[String, String] =
var minimum = 21;
var checkAge = function(age) {
return age >= minimum;
};
///////////////////////
var checkAge = function(age) {
var minimum = 21;
trait M[A] {
def flatMap[B](f: A => M[B]): M[B]
}
def unit[A](x: A): M[A]

Keybase proof

I hereby claim:

  • I am leonmaia on github.
  • I am leonmaia (https://keybase.io/leonmaia) on keybase.
  • I have a public key ASC6RL-KF9SlrUoZ351_Z2xCZvvt3NSjWpKd-Y8BvFdnwQo

To claim this, I am signing this object:

Blah

Hello 2

Internal Topics

Hello

@leonmaia
leonmaia / warrior_arms.txt
Created January 21, 2021 16:18
Warrior Arms WA
!WA:2!TZzc0Xr59bCpELSG1LGKSTqwyJLnGWIyesRKLLnGf7kTYRm6Y7U(mu2z2DhPzSwTZWmZQR2Mak1puAO5qjnjnnNkhTnnhKTaHBiUjPPnn99xQeyAEHMufsjnTV23ZnHsih0)))(Mzp0HTLbZlVggq7UZmFZ39)F)p((glmyLsER0mCZn0udTv5ivMSYKtVJfIRzKu2iGuIHtAOPRxEGuQtoPKrYAJQPLYsvFEPmwkAg9RBPQL207mdzOLrV7eAPR(Y)6JMvkDc8MdOPM2kEhb7lAWWz5zyhAP0moOhpEgWtJnSBFzmsPVdfllDZ9DJ34ysdP1GQ2n6Fq50sgXoQKHHQMXn2utnBiLGvmTg20sYWYB8bvtRAQ4na(LL3PSmuhAizdZ3uDgo)8bdynHUCaPmgsgzslpQCARWwQJiNCQK4LO8QYMcZUC8qYsPSucKbZP46PKMq2yktD5uP6oPP3zJNzWbJOOnw)PpTj7l)yfzu5fmZeN90rW7RoE2yD4ps0yrI6pC0C3Aadz8wHJmqWE6jCAPrKXSlPmLHrXQMrOG9mqxhUNzYK2Pk7vVcjwMhLFEVAjL9CgSdu2iTuQJGnpSwFOzKsRocRb0k8701PLLmLJyziNEilLYGkcKwlT88UnXyuFGHPmoOK0CkkPujd1hyej10Db7eFaOE46H3mSl87lBXxXyuEz(ddKstk53WqnnBmUQWJKbNa4nULukSzwf0K3ayhwc6hHtKsY0SU4MyAtjBCu)Hd3D)HXBmtgt5ySBgWYiJCaCavMEGz0hvpF(ymiFCMLNgAPyjz2KQyFCcSmNGLgEY9Xlx1jzPz(4oZtlE6vyZeyI9eNp1trVC(0YUmWrd2h6B(OYsd7h7Vm3NZ0TyDOnYiAzuN1qEiSQq9yHzT7z55seSi3oouLpNgqc7)Tepn)(9p4GMYwRpUP8iy)hku1sdToRLwcNoZQfInZoutEANsRw)gJyAmb)Ho2685RXgAPTSdszloSkzj55mfusuLjEKochmyFZ
@leonmaia
leonmaia / warrior_common.txt
Created January 21, 2021 16:20
Warrior Common WA
!WA:2!T33cGXXvvw6YT1ANoKelzhzzLFTDWYwooYsT(7GIrT(yjB9ZD3YsoJt6Q6UlPQSA1v5QAjlzcHebHXZs2jGwgy4pO5dd7YabrCiajogZomlByM9jTatTldddg2jZmKjSy2fcdmX79EFv1D1TAjlzuIdH0jU)uFE1RQ6Eo3Z9(U1tcdvKK3ImdwDfvvrdfnArXlk(P32fIQzex2iGuSrIBOPRVXajup1PKmI7lSMwIuQ6ZlnwkfnJE1tPQL0070dBOnMENX0sgTo)1vzLnmRuYyW67ttnzQOT0wpHBl4S82SfTeAgh0Jhp95PYkQ1)ygj03UsQu6M7BV79KsdRvHQ2EBEi5KsgrgqYWqvZyVvvv1gsXOJuDbntjzKYBa1KQP8gDi4dtfVtLYqD4HLnmV(YmS)6tei1K6YbKgZqYySKYJlNmvWuQJkhFQ4WIW2QOQcsloAhYsjsPeymOfJQNqAszJPm1LtKOZ4MENjUC0XgAOWqBz0rBD1x793vWKsJkB69cMJfL2)(mKhsDIGH6RTU6k9cdb7K6eZgPLMdfosOWnhm8my7esr7K9M88M0hndNsJlp9yjT7YE1luIwuy(V7wlUSNlcxaLnskL4iWPh0Rp80MYjgIUUotGEdhU3U7QT2dBmoFT)Gaj0KI)1msjLa6e(lo4OJb3T8gL)7Iz3P3GXsizAwwut1KdNq2yGMdgSZEdcRyA9X1ZSztpMPCeAtdKYym5aW1FzC5bGRmXWVyme)oc(9zIRcNTXGd1K02yOLG2yd4yG2f8Du9u0cNpQTrv2gcbnJbhCpr5gjk6BKBa1UbCXMEt)wgqwAKMHBEM7Z2WisqPHLJWnwMXqEyO7G3Ocsh0z4Tui4WUTZZ)EVdnKPCQRnQP8OW1lWIVMkQBMuAXSV4vIqKP3UA8ly36(ArB0r1sAmbF364z8Tg61SdHDNqPaRijpx0v3ep2rd1sW2ARh7dEBXhwoqpAjL9pMA8zNOY6Q54JekHC4XJciLHuh2RnMOZKWbylgtA