78 lines
1.9 KiB
Python
78 lines
1.9 KiB
Python
#!/usr/bin/env python3.9
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
JFinal ProxyClass - Proxy Class Information
|
|
"""
|
|
|
|
from typing import Dict, Any, Optional, Type
|
|
|
|
class ProxyClass:
|
|
"""Proxy class information holder"""
|
|
|
|
def __init__(self, target: Type):
|
|
"""
|
|
Initialize proxy class
|
|
|
|
Args:
|
|
target: Target class to be proxied
|
|
"""
|
|
self._target = target
|
|
self._pkg = target.__module__
|
|
self._name = target.__name__ + "$$EnhancerByJFinal"
|
|
self._source_code: Optional[str] = None
|
|
self._byte_code: Optional[Dict[str, bytes]] = None
|
|
self._clazz: Optional[Type] = None
|
|
|
|
@property
|
|
def target(self) -> Type:
|
|
"""Get target class"""
|
|
return self._target
|
|
|
|
@property
|
|
def pkg(self) -> str:
|
|
"""Get package name"""
|
|
return self._pkg
|
|
|
|
@property
|
|
def name(self) -> str:
|
|
"""Get proxy class name"""
|
|
return self._name
|
|
|
|
@property
|
|
def source_code(self) -> Optional[str]:
|
|
"""Get source code"""
|
|
return self._source_code
|
|
|
|
@source_code.setter
|
|
def source_code(self, value: str):
|
|
"""Set source code"""
|
|
self._source_code = value
|
|
|
|
@property
|
|
def byte_code(self) -> Optional[Dict[str, bytes]]:
|
|
"""Get byte code"""
|
|
return self._byte_code
|
|
|
|
@byte_code.setter
|
|
def byte_code(self, value: Dict[str, bytes]):
|
|
"""Set byte code"""
|
|
self._byte_code = value
|
|
|
|
@property
|
|
def clazz(self) -> Optional[Type]:
|
|
"""Get loaded class"""
|
|
return self._clazz
|
|
|
|
@clazz.setter
|
|
def clazz(self, value: Type):
|
|
"""Set loaded class"""
|
|
self._clazz = value
|
|
|
|
@property
|
|
def full_name(self) -> str:
|
|
"""Get full class name with package"""
|
|
return f"{self._pkg}.{self._name}"
|
|
|
|
def __repr__(self) -> str:
|
|
return f"ProxyClass(target={self._target.__name__}, name={self._name})"
|