A RESTy-JSON APIwith spray.io and mavensponsored by special appearanceIgnasi Marimon-Clos i Sunyol@ignasi35#scalabcnSunday...
thanks!Sunday, June 16, 13
special thank you’sJPradel (@agile_jordi): review and organizationJCasadellà (@jcasadella): reviewJRudolph for simplifying...
about men. /iŋnazi/1) problem solver, Garbage Collector, mostlyjava, learning scala, some agile2) kayaker3) under construc...
what we saw• BDD (cucumber)• TDD (scalatest)• sbt (inifinite run)• intelliJ• JAX-RS• Jettyhttps://github.com/funcio/bdd-jax...
what we’ll see• BDD (cucumber)• TDD (scalatest)• sbt (inifinite run)• intelliJ• JAX-RS• Jetty• BDD (jbehave?)• TDD (scalate...
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...
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 (@se...
why? (bonus)• spray.io beats all other JVM stacks/fw (*)http://www.techempower.com/benchmarks/Sunday, June 16, 13
spraymodulesprovidedprovidedThere’s more provided dep’sthan those labelled but we don’tneed that level of detail now.credi...
spray• One thing done right• spray-routing => simple entry point.• @sirthias (Mathias Doenitz) in Akka 2.2• magnet pattern...
Sunday, June 16, 13
step 1• Given an HTTP server• When I GET /hello• Then I obtain “hello”Sunday, June 16, 13
step 1 (tips)• Edit a web.xml• Create a mapping• Provide a BeanConnectionBeanFactory• Add a servers.xml• Invoke the Olds G...
specially dedicated to @ch4litSunday, June 16, 13
step 2• Given an HTTP server• When I GET /hello.json• Then I obtain “{msg:‘world’}”Sunday, June 16, 13
directives + complete• path/pathPrefix/pathTest• authenticate• get/post/delete/...• decodeRequest/encodeResponse/...• cache...
step 3• Given an HTTP server• When I GET /books.json• Then I obtain the complete books stockSunday, June 16, 13
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 sto...
step 5• Given an HTTP server• And a programmatic HTTP client• When I GET /hello.json• Then I obtain “{msg:‘world’}”Sunday,...
conclusions• scala in maven is tough• mvn plugin lacks infini-run, infini-install,...• scala worksheet rocks• spray allows a...
thanks!Sunday, June 16, 13
Upcoming SlideShare
Loading in …5
×

Spray & Maven Intro for Scala Barcelona Developers Meetup

2,550 views
2,387 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
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,550
On SlideShare
0
From Embeds
0
Number of Embeds
37
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

×