Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Spray & Maven Intro for Scala Barcelona Developers Meetup

2,775 views

Published on

As a response to previous meetup here's a simple JSON/REST implementation with a complete different set of tools.

Published in: Technology, Health & Medicine
  • Be the first to comment

Spray & Maven Intro for Scala Barcelona Developers Meetup

  1. 1. A RESTy-JSON APIwith spray.io and mavensponsored by special appearanceIgnasi Marimon-Clos i Sunyol@ignasi35#scalabcnSunday, June 16, 13
  2. 2. thanks!Sunday, June 16, 13
  3. 3. special thank you’sJPradel (@agile_jordi): review and organizationJCasadellà (@jcasadella): reviewJRudolph for simplifying step 4https://github.com/jrudolph/scala-meetup-spray/commit/c4991938ec7b26b183d701aac73949e7822cf45eSunday, June 16, 13
  4. 4. about men. /iŋnazi/1) problem solver, Garbage Collector, mostlyjava, learning scala, some agile2) kayaker3) under construction4) wears glassesSunday, June 16, 13
  5. 5. what we saw• BDD (cucumber)• TDD (scalatest)• sbt (inifinite run)• intelliJ• JAX-RS• Jettyhttps://github.com/funcio/bdd-jaxrs-hands-onSunday, June 16, 13
  6. 6. what we’ll see• BDD (cucumber)• TDD (scalatest)• sbt (inifinite run)• intelliJ• JAX-RS• Jetty• BDD (jbehave?)• TDD (scalatest)• mvn (infinite run)• eclipse (worksheet)• spray-can/https/...• spray-jsonhttps://github.com/ignasi35/scala-meetup-spraySunday, June 16, 13
  7. 7. why? (1/2)• I’m comfy with eclipse• I’m comfy with maven (I know that’s weird)• (no more)Typesafe delivers a prepacked env• still there s/where• eclipse-maven integration is solid• I needed infinite-test in maven at work• I like trolling Jordi and JoseSunday, June 16, 13
  8. 8. why? (2/2)• spray.io has akka• spray 1.x has akka 2.x• spray.io is modularized (that’s useful)• I don’t need java API (@see play)• spray-json is f*&[ing simple (via shapeless)http://spray.io/project-info/current-versions/Sunday, June 16, 13
  9. 9. why? (bonus)• spray.io beats all other JVM stacks/fw (*)http://www.techempower.com/benchmarks/Sunday, June 16, 13
  10. 10. spraymodulesprovidedprovidedThere’s more provided dep’sthan those labelled but we don’tneed that level of detail now.credit: graphic made using yuml.mehttp://yuml.me/diagram/scruffy/class/[A]->[B],[A]->[C],[B]->[C]Sunday, June 16, 13
  11. 11. spray• One thing done right• spray-routing => simple entry point.• @sirthias (Mathias Doenitz) in Akka 2.2• magnet pattern• alternate to method overload• IOBridge, directives, Marshallers, ...???Sunday, June 16, 13
  12. 12. Sunday, June 16, 13
  13. 13. step 1• Given an HTTP server• When I GET /hello• Then I obtain “hello”Sunday, June 16, 13
  14. 14. step 1 (tips)• Edit a web.xml• Create a mapping• Provide a BeanConnectionBeanFactory• Add a servers.xml• Invoke the Olds Gods and the NewSunday, June 16, 13
  15. 15. specially dedicated to @ch4litSunday, June 16, 13
  16. 16. step 2• Given an HTTP server• When I GET /hello.json• Then I obtain “{msg:‘world’}”Sunday, June 16, 13
  17. 17. directives + complete• path/pathPrefix/pathTest• authenticate• get/post/delete/...• decodeRequest/encodeResponse/...• cache/alwaysCache/...• completehttp://spray.io/documentation/spray-routing/predefined-directives-alphabetically/Sunday, June 16, 13
  18. 18. step 3• Given an HTTP server• When I GET /books.json• Then I obtain the complete books stockSunday, June 16, 13
  19. 19. step 4• Given an HTTP server• And I POST a book.txt in /books• When I GET /books.json• Then I obtain the updated books stockMEGA-KUDOS tohttps://github.com/jrudolphSunday, June 16, 13
  20. 20. step 5• Given an HTTP server• And a programmatic HTTP client• When I GET /hello.json• Then I obtain “{msg:‘world’}”Sunday, June 16, 13
  21. 21. conclusions• scala in maven is tough• mvn plugin lacks infini-run, infini-install,...• scala worksheet rocks• spray allows a quick entry point• docs and examples still to be improved• because I’m very dumb• ...Sunday, June 16, 13
  22. 22. thanks!Sunday, June 16, 13

×