From d3f66d76e499a3175272ca2042fe196c539deb87 Mon Sep 17 00:00:00 2001 From: Romain Reuillon Date: Thu, 19 Mar 2020 08:39:16 +0100 Subject: [PATCH] [Plugin] enh: implement JSON Hook --- .../openmole/core/dsl/extension/package.scala | 1 + .../pluginmanager/PluginInfoActivator.scala | 1 + .../openmole/core/workflow/Activator.scala | 4 +++- .../openmole/plugin/hook/json/Activator.scala | 5 ++++- .../openmole/plugin/hook/json/JSONHook.scala | 21 +++++++++++++++++++ 5 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 openmole/plugins/org.openmole.plugin.hook.json/src/main/scala/org/openmole/plugin/hook/json/JSONHook.scala diff --git a/openmole/core/org.openmole.core.dsl/src/main/scala/org/openmole/core/dsl/extension/package.scala b/openmole/core/org.openmole.core.dsl/src/main/scala/org/openmole/core/dsl/extension/package.scala index dae5d10c0f..4b37690a41 100644 --- a/openmole/core/org.openmole.core.dsl/src/main/scala/org/openmole/core/dsl/extension/package.scala +++ b/openmole/core/org.openmole.core.dsl/src/main/scala/org/openmole/core/dsl/extension/package.scala @@ -15,6 +15,7 @@ package object extension { type Hook = org.openmole.core.workflow.mole.FromContextHook def Hook = org.openmole.core.workflow.mole.Hook + def FormattedFileHook = org.openmole.core.workflow.mole.FormattedFileHook type Source = org.openmole.core.workflow.mole.Source type FromContextSource = org.openmole.core.workflow.mole.FromContextSource diff --git a/openmole/core/org.openmole.core.pluginmanager/src/main/scala/org/openmole/core/pluginmanager/PluginInfoActivator.scala b/openmole/core/org.openmole.core.pluginmanager/src/main/scala/org/openmole/core/pluginmanager/PluginInfoActivator.scala index 19504cfddc..c85226c028 100644 --- a/openmole/core/org.openmole.core.pluginmanager/src/main/scala/org/openmole/core/pluginmanager/PluginInfoActivator.scala +++ b/openmole/core/org.openmole.core.pluginmanager/src/main/scala/org/openmole/core/pluginmanager/PluginInfoActivator.scala @@ -81,6 +81,7 @@ object KeyWord { case class SamplingKeyWord(name: String) extends KeyWord case class WordKeyWord(name: String) extends KeyWord case class DomainKeyWord(name: String) extends KeyWord + case class OtherKeyWord(name: String) extends KeyWord } trait PluginInfoActivator extends BundleActivator { diff --git a/openmole/core/org.openmole.core.workflow/src/main/scala/org/openmole/core/workflow/Activator.scala b/openmole/core/org.openmole.core.workflow/src/main/scala/org/openmole/core/workflow/Activator.scala index 6dbf0d7265..77ff1a3c17 100644 --- a/openmole/core/org.openmole.core.workflow/src/main/scala/org/openmole/core/workflow/Activator.scala +++ b/openmole/core/org.openmole.core.workflow/src/main/scala/org/openmole/core/workflow/Activator.scala @@ -2,6 +2,7 @@ package org.openmole.core.workflow import org.openmole.core.pluginmanager.PluginInfo import org.openmole.core.preference.ConfigurationInfo +import org.openmole.core.workflow.mole.CSVHook.CSVOutputFormat import org.osgi.framework.{ BundleActivator, BundleContext } class Activator extends BundleActivator { @@ -54,7 +55,8 @@ class Activator extends BundleActivator { TaskKeyWord(objectName(ToArrayTask)), TaskKeyWord(objectName(MoleTask)), TaskKeyWord(objectName(FromContextTask)), - HookKeyWord(objectName(FromContextHook)) + HookKeyWord(objectName(FromContextHook)), + OtherKeyWord(objectName(CSVOutputFormat)) ) } diff --git a/openmole/plugins/org.openmole.plugin.hook.json/src/main/scala/org/openmole/plugin/hook/json/Activator.scala b/openmole/plugins/org.openmole.plugin.hook.json/src/main/scala/org/openmole/plugin/hook/json/Activator.scala index dc57194006..ffd9fd86dd 100644 --- a/openmole/plugins/org.openmole.plugin.hook.json/src/main/scala/org/openmole/plugin/hook/json/Activator.scala +++ b/openmole/plugins/org.openmole.plugin.hook.json/src/main/scala/org/openmole/plugin/hook/json/Activator.scala @@ -33,7 +33,10 @@ class Activator extends PluginInfoActivator { import org.openmole.core.pluginmanager.KeyWord._ val keyWords: Vector[KeyWord] = - Vector() + Vector( + TaskKeyWord(objectName(JSONHook)), + OtherKeyWord(objectName(JSONOutputFormat)) + ) PluginInfo.register(this, Vector(this.getClass.getPackage), keyWords = keyWords) ConfigurationInfo.register( diff --git a/openmole/plugins/org.openmole.plugin.hook.json/src/main/scala/org/openmole/plugin/hook/json/JSONHook.scala b/openmole/plugins/org.openmole.plugin.hook.json/src/main/scala/org/openmole/plugin/hook/json/JSONHook.scala new file mode 100644 index 0000000000..9b8dc4b750 --- /dev/null +++ b/openmole/plugins/org.openmole.plugin.hook.json/src/main/scala/org/openmole/plugin/hook/json/JSONHook.scala @@ -0,0 +1,21 @@ +package org.openmole.plugin.hook.json + +import org.openmole.core.dsl._ +import org.openmole.core.dsl.extension._ + +object JSONHook { + def apply(output: WritableOutput, values: Val[_]*)(implicit name: sourcecode.Name, definitionScope: DefinitionScope): FromContextHook = + apply(output, values.toVector) + + def apply( + output: WritableOutput, + values: Seq[Val[_]] = Vector.empty, + exclude: Seq[Val[_]] = Vector.empty)(implicit name: sourcecode.Name, definitionScope: DefinitionScope): FromContextHook = + FormattedFileHook( + format = JSONOutputFormat(), + output = output, + values = values, + exclude = exclude, + name = Some("JSONHook") + ) +} -- GitLab