csantanapr opened a new issue #41: Support Scala Actions
URL: https://github.com/apache/incubator-openwhisk-runtime-java/issues/41
 
 
   One person on Slack, and now a customer using IBM Cloud Functions want to 
use Scala to write their OpenWhisk Actions.
   
   It looks like the java runtime can be use to run Scala actions.
   
   What's need it to support it a bit better than today is
   1. Add automation test cases with some scala examples, including process to 
generate the jar
   2. Docs explaining how an user can get started with a simple hello world 
example code and steps to build jar.
   3. (bonus) The runtime image can be use to compile the scala and produce the 
jar 
   
   ### Here is an example:
   ## Create Directory structure
   ```
   $ tree
   .
   ├── Hello.scala
   ├── build.sbt
   └── project
       └── plugins.sbt
   ```
   
   ## Create Action `Hello.scala`
   ```
   $ cat Hello.scala
   ```
   ```scala
   import com.google.gson.JsonObject
   object Hello {
     def main(args: JsonObject): JsonObject = {
       println("Log something")
       val name = if (args.has("name")) 
args.getAsJsonPrimitive("name").getAsString() else "stranger"
       val response = new JsonObject()
       response.addProperty("greeting", "Hello " + name + "!")
       response
     }
   }
   ```
   
   ## Setup Project
   ```
   $ cat build.sbt
   
   scalaVersion := "2.11.8"
   libraryDependencies ++= Seq (
     "com.google.code.gson" % "gson" % "latest.integration"
   )
   ```
   
   ```
   $ cat project/plugins.sbt
   addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")
   ```
   
   ## Build Jar
   ```
   $ sbt assembly
   [info] Loading global plugins from /Users/csantanapr/.sbt/0.13/plugins
   [info] Loading project definition from 
/Users/csantanapr/Documents/dev/whisk/demos/scala_action/project
   [info] Set current project to scala_action (in build 
file:/Users/csantana23/Documents/dev/whisk/demos/scala_action/)
   [info] Including from cache: gson-2.8.2.jar
   [info] Including from cache: scala-library-2.11.8.jar
   [info] Checking every *.class/*.jar file's SHA-1.
   [info] Merging files...
   [warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
   [warn] Merging 'META-INF/maven/com.google.code.gson/gson/pom.properties' 
with strategy 'discard'
   [warn] Merging 'META-INF/maven/com.google.code.gson/gson/pom.xml' with 
strategy 'discard'
   [warn] Strategy 'discard' was applied to 3 files
   [info] Assembly up to date: 
/Users/csantanapr/Documents/dev/whisk/demos/scala_action/target/scala-2.11/scala_action-assembly-0.1-SNAPSHOT.jar
   [success] Total time: 1 s, completed Apr 23, 2018 8:53:44 PM
   ```
   
   ## Deploy Action
   ```
   $ wsk action update scala 
target/scala-2.11/scala_action-assembly-0.1-SNAPSHOT.jar --kind java --main 
Hello
   ok: updated action scala
   ```
   
   ## Run Action
   ```
   $ wsk action invoke scala -p name Carlos -r
   {
       "greeting": "Hello Carlos!"
   }
   ```
   
   
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to