diff options
Diffstat (limited to 'bundle-plugin/src/main/scala/com/yahoo/container/plugin/bundle/TransformExportPackages.scala')
-rw-r--r-- | bundle-plugin/src/main/scala/com/yahoo/container/plugin/bundle/TransformExportPackages.scala | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/bundle-plugin/src/main/scala/com/yahoo/container/plugin/bundle/TransformExportPackages.scala b/bundle-plugin/src/main/scala/com/yahoo/container/plugin/bundle/TransformExportPackages.scala new file mode 100644 index 00000000000..baaef756911 --- /dev/null +++ b/bundle-plugin/src/main/scala/com/yahoo/container/plugin/bundle/TransformExportPackages.scala @@ -0,0 +1,54 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.container.plugin.bundle + +import java.io.File +import com.yahoo.container.plugin.osgi.ExportPackages.{Export, Parameter} +import com.yahoo.container.plugin.osgi.ExportPackages.Export + +/** + * @author tonytv + */ +object TransformExportPackages extends App { + def replaceVersions(exports: List[Export], newVersion: String): List[Export] = { + mapParameters(exports) { parameters => + parameters map replaceVersion(newVersion) + } + } + + def removeUses(exports: List[Export]): List[Export] = { + mapParameters(exports) { parameters => + parameters filter {_.name != "uses"} + } + } + + def mapParameters(exports: List[Export])(f: List[Parameter] => List[Parameter]): List[Export] = { + exports map { case Export(packageNames: List[String], parameters: List[Parameter]) => + Export(packageNames, f(parameters)) + } + } + + private def replaceVersion(newVersion: String)(parameter: Parameter) = { + parameter match { + case Parameter("version", _) => Parameter("version", newVersion) + case other => other + } + } + + def toExportPackageProperty(exports: List[Export]): String = { + val exportPackages = + exports map { case Export(packageNames: List[String], parameters: List[Parameter]) => + val parameterString = nameEqualsValue(parameters) + (packageNames ++ parameterString) mkString ";" + } + + exportPackages mkString "," + } + + private def nameEqualsValue(parameters: List[Parameter]) = { + parameters map { case Parameter(name, value) => + s"$name=${quote(value)}" + } + } + + def quote(s: String) = '"' + s + '"' +} |