![JAR search and dependency download from the Maven repository](/logo.png)
pi-generator.0.0.13.source-code.ScalaApiImpl.mustache Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of flo-api-generator Show documentation
Show all versions of flo-api-generator Show documentation
Internal module containing an annotation processor for generating the TaskBuilder API
The newest version!
package io.rouz.flo.dsl
import io.rouz.flo.Task
import io.rouz.flo.TaskBuilder
import io.rouz.flo.TaskContext.Value
import io.rouz.flo._
import _root_.scala.collection.JavaConversions
import _root_.scala.reflect.ClassTag
import io.rouz.flo.dsl.Util._
private[dsl] class Builder0[Z: ClassTag](val name: String, val args: Any*) extends TaskBuilder0[Z] { self =>
private val cls = implicitly[ClassTag[Z]].runtimeClass.asInstanceOf[Class[Z]]
private val builder = Task
.named(name, args.asInstanceOf[Seq[AnyRef]]:_*)
.ofType(cls)
override def process(fn: => Z): Task[Z] =
builder.process(f0(fn))
override def processWithContext(fn: (TaskContext) => Value[Z]): Task[Z] =
builder.processWithContext(f1(fn))
override def op[A1](opProvider: OpProvider[A1]): TaskBuilder1[A1, Z] = new Builder1[A1, Z] {
type J1 = A1
val c1: J1 => A1 = identity
val builder = self.builder.op(opProvider)
}
override def in[A1](task: => Task[A1]): TaskBuilder1[A1, Z] = new Builder1[A1, Z] {
type J1 = A1
val c1: J1 => A1 = identity
val builder = self.builder.in(fn(task))
}
override def ins[A1](tasks: => List[Task[A1]]) = new Builder1[List[A1], Z] {
type J1 = java.util.List[A1]
val c1: J1 => List[A1] = JavaConversions.iterableAsScalaIterable(_).toList
val builder = self.builder.ins(javaList(tasks))
}
}
{{#genBuilder}}
private[dsl] trait Builder{{arity}}[{{typeArgsNumA}}, Z] extends TaskBuilder{{arity}}[{{typeArgsNumA}}, Z] {
self =>
{{^iter.isFirst}}
// previous builder
val p: Builder{{arityMinus}}[{{typeArgsNumAMinus}},Z]
{{/iter.isFirst}}
type J{{arity}}
val c{{arity}}: J{{arity}} => A{{arity}}
val builder: TaskBuilder.TaskBuilder{{arity}}[{{typeArgsPsJ}}, Z]
override def process(fn: ({{typeArgsNumA}}) => Z): Task[Z] =
builder.process(f{{arity}}(
({{argumentsNum}}) => fn({{argumentsPsConv}})
))
override def processWithContext(fn: (TaskContext) => ({{typeArgsNumA}}) => Value[Z]): Task[Z] =
builder.processWithContext(f{{arityPlus}}(
(tc, {{argumentsNum}}) => fn(tc)({{argumentsPsConv}})
))
{{^iter.isLast}}
override def op[A{{arityPlus}}](opProvider: OpProvider[A{{arityPlus}}]): TaskBuilder{{arityPlus}}[{{typeArgsNumA}}, A{{arityPlus}}, Z] =
new Builder{{arityPlus}}[{{typeArgsNumA}}, A{{arityPlus}}, Z] {
type J{{arityPlus}} = A{{arityPlus}}
val c{{arityPlus}}: J{{arityPlus}} => A{{arityPlus}} = identity
val p: self.type = self
val builder = self.builder.op(opProvider)
}
override def in[A{{arityPlus}}](task: => Task[A{{arityPlus}}]): TaskBuilder{{arityPlus}}[{{typeArgsNumA}}, A{{arityPlus}}, Z] =
new Builder{{arityPlus}}[{{typeArgsNumA}}, A{{arityPlus}}, Z] {
type J{{arityPlus}} = A{{arityPlus}}
val c{{arityPlus}}: J{{arityPlus}} => A{{arityPlus}} = identity
val p: self.type = self
val builder = self.builder.in(fn(task))
}
override def ins[A{{arityPlus}}](tasks: => List[Task[A{{arityPlus}}]]): TaskBuilder{{arityPlus}}[{{typeArgsNumA}}, List[A{{arityPlus}}], Z] =
new Builder{{arityPlus}}[{{typeArgsNumA}}, List[A{{arityPlus}}], Z] {
type J{{arityPlus}} = java.util.List[A{{arityPlus}}]
val c{{arityPlus}}: J{{arityPlus}} => List[A{{arityPlus}}] = JavaConversions.iterableAsScalaIterable(_).toList
val p: self.type = self
val builder = self.builder.ins(javaList(tasks))
}
{{/iter.isLast}}
}
{{/genBuilder}}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy