File: packages.py

package info (click to toggle)
python-moto 5.1.18-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 116,520 kB
  • sloc: python: 636,725; javascript: 181; makefile: 39; sh: 3
file content (48 lines) | stat: -rw-r--r-- 2,102 bytes parent folder | download
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
from localstack.packages import InstallTarget, Package, PackageInstaller
from localstack.packages.core import MavenPackageInstaller
from localstack.packages.java import JavaInstallerMixin, java_package

JSONATA_DEFAULT_VERSION = "0.9.7"
JACKSON_DEFAULT_VERSION = "2.16.2"

JSONATA_JACKSON_VERSION_STORE = {JSONATA_DEFAULT_VERSION: JACKSON_DEFAULT_VERSION}


class JSONataPackage(Package):
    def __init__(self):
        super().__init__("JSONataLibs", JSONATA_DEFAULT_VERSION)

    def get_versions(self) -> list[str]:
        return list(JSONATA_JACKSON_VERSION_STORE.keys())

    def _get_installer(self, version: str) -> PackageInstaller:
        return JSONataPackageInstaller(version)


class JSONataPackageInstaller(JavaInstallerMixin, MavenPackageInstaller):
    def __init__(self, version: str):
        jackson_version = JSONATA_JACKSON_VERSION_STORE[version]

        # Match the dynamodb-local JRE version to reduce the LocalStack image size by sharing the same JRE version
        self.java_version = "21"

        super().__init__(
            f"pkg:maven/com.dashjoin/jsonata@{version}",
            # jackson-databind is imported in jsonata.py as "from com.fasterxml.jackson.databind import ObjectMapper"
            # jackson-annotations and jackson-core are dependencies of jackson-databind:
            # https://central.sonatype.com/artifact/com.fasterxml.jackson.core/jackson-databind/dependencies
            f"pkg:maven/com.fasterxml.jackson.core/jackson-core@{jackson_version}",
            f"pkg:maven/com.fasterxml.jackson.core/jackson-annotations@{jackson_version}",
            f"pkg:maven/com.fasterxml.jackson.core/jackson-databind@{jackson_version}",
        )

    def _prepare_installation(self, target: InstallTarget) -> None:
        # override to install correct java version
        java_package.get_installer(self.java_version).install(target)

    def get_java_home(self) -> str | None:
        """Override to use the specific Java version"""
        return java_package.get_installer(self.java_version).get_java_home()


jpype_jsonata_package = JSONataPackage()