403Webshell
Server IP : 142.11.234.102  /  Your IP : 216.73.217.78
Web Server : Apache
System : Linux dal-shared-66.hostwindsdns.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64
User : krnuyqrm ( 1183)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/lib/python3.6/site-packages/javapackages/common/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3.6/site-packages/javapackages/common/osgi.py
#
# Copyright (c) 2014, Red Hat, Inc.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the
#    distribution.
# 3. Neither the name of the Red Hat nor the names of its
#    contributors may be used to endorse or promote products derived
#    from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Authors:  Alexander Kurtakov <akurtako@redhat.com>
#           Michal Srb <msrb@redhat.com>

import re

from javapackages.common.manifest import Manifest, ManifestException
from javapackages.common.strutils import _sanitize_version


class OSGiUtils(object):

    @staticmethod
    def get_rpm_str(bundle, version="", namespace=""):
        ns = namespace or ""
        version = _sanitize_version(version)
        return "{ns}{d}osgi({bundle}){eq}{version}".format(ns=ns,
                                                           d="-" if ns else "",
                                                           bundle=bundle,
                                                           eq=" = " if version else "",
                                                           version=version)


class OSGiRequire(object):

    def __init__(self, bundle, namespace=""):
        self.bundle = bundle
        self.namespace = namespace

    @staticmethod
    def parse(osgistr):
        result = re.split("[()]", osgistr)
        namespace = ""
        try:
            bundle = result[0]
            namespace = result[1]
        except IndexError:
            pass
        return (bundle, namespace)

    @classmethod
    def from_string(cls, osgistr):
        bundle, namespace = OSGiRequire.parse(osgistr)
        return cls(bundle, namespace=namespace)

    @classmethod
    def from_properties(cls, properties):
        requires = []
        try:
            reqstr = properties["osgi.requires"]
            for r in reqstr.split(","):
                req = OSGiRequire.from_string(r)
                if req:
                    requires.append(req)
        except:
            pass

        return requires

    def get_rpm_str(self, version="", namespace=""):
        ns = namespace or self.namespace
        return OSGiUtils.get_rpm_str(self.bundle, version=version, namespace=ns)


class OSGiBundle(object):

    def __init__(self, bundle, version, namespace="", requires=[]):
        self.bundle = bundle
        self.version = version
        self.namespace = namespace
        self.requires = requires

    @staticmethod
    def parse(osgistr):
        namespace = ""
        version = ""
        reqstr = ""
        requires = []
        result = osgistr.split()
        try:
            bundle = result[0]
            version = result[1]
            reqstr = result[2]
        except IndexError:
            pass
        bundle, namespace = OSGiRequire.parse(bundle)

        if reqstr:
            requires.extend([OSGiRequire.from_string(x) for x in reqstr.split(",")])

        return (bundle, version, namespace, requires)

    @classmethod
    def from_string(cls, osgistr):
        bundle, version, namespace, requires = OSGiBundle.parse(osgistr)
        return cls(bundle, version=version, namespace=namespace,
                   requires=requires)

    @classmethod
    def from_manifest(cls, path):
        try:
            manifest = Manifest(path)
        except ManifestException:
            return None
        bundle, version = manifest.get_provides()
        requires = []
        requires.extend([OSGiRequire.from_string(x) for x in manifest.get_requires()])

        if not bundle:
            return None
        return cls(bundle, version=version, requires=requires)

    @classmethod
    def from_properties(cls, properties):
        osgi_id = ""
        version = ""
        namespace = ""
        try:
            osgi_id = properties["osgi.id"]
            version = properties["osgi.version"]
        except KeyError:
            return None

        try:
            namespace = properties["osgi.namespace"]
        except KeyError:
            pass

        requires = OSGiRequire.from_properties(properties)

        return cls(osgi_id, version=version, namespace=namespace,
                   requires=requires)

    def __eq__(self, other):
        if not isinstance(other, (OSGiBundle, OSGiRequire)):
            return False
        if self.bundle != other.bundle:
            return False
        if self.namespace != other.namespace:
            return False
        return True

    def __ne__(self, other):
        return not self.__eq__(other)

    def get_rpm_str(self, version="", namespace=""):
        ver = version or self.version
        ns = namespace or self.namespace
        return OSGiUtils.get_rpm_str(self.bundle, version=ver, namespace=ns)

Youez - 2016 - github.com/yon3zu
LinuXploit