Your SlideShare is downloading. ×
  • Like
  • Save
Spray & Maven Intro for Scala Barcelona Developers Meetup
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Spray & Maven Intro for Scala Barcelona Developers Meetup

  • 1,841 views
Published

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

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,841
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. A RESTy-JSON APIwith spray.io and mavensponsored by special appearanceIgnasi Marimon-Clos i Sunyol@ignasi35#scalabcnSunday, June 16, 13
  • 2. thanks!Sunday, June 16, 13
  • 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. about men. /iŋnazi/1) problem solver, Garbage Collector, mostlyjava, learning scala, some agile2) kayaker3) under construction4) wears glassesSunday, June 16, 13
  • 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. 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. 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. 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. why? (bonus)• spray.io beats all other JVM stacks/fw (*)http://www.techempower.com/benchmarks/Sunday, June 16, 13
  • 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. 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. Sunday, June 16, 13
  • 13. step 1• Given an HTTP server• When I GET /hello• Then I obtain “hello”Sunday, June 16, 13
  • 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. specially dedicated to @ch4litSunday, June 16, 13
  • 16. step 2• Given an HTTP server• When I GET /hello.json• Then I obtain “{msg:‘world’}”Sunday, June 16, 13
  • 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. step 3• Given an HTTP server• When I GET /books.json• Then I obtain the complete books stockSunday, June 16, 13
  • 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. 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. 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. thanks!Sunday, June 16, 13