blob: baaef756911e70c09d2821cbbea5313f52e80221 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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 + '"'
}
|