Package ru.bgcrm.dynamic
Class DynamicClassManager
java.lang.Object
ru.bgcrm.dynamic.DynamicClassManager
Загрузчик динамического кода. Подгружает классы прямо из БД по данному соединению.
Может работать в двух режимах относительно БД: read\write (для сервера) и read-only (для остальных).
В режиме r\w отлавливает изменения в сорцах, компилирует их заново и пишет в базу, бросая при этом событие
обновления класса с заданным именем. Плюс осуществляет те же действия, что и в режиме read-only.
В режиме read-only не следит за сорцами и ничего не компилирует, только слушает сообщения об изменении классов
в БД, по получении которых форсит classLoader на перечитывание класса из БД.
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionfindClassImplements(@NotNull Class<T> clazz) static Class<?> Возвращает актуальный класс по его имени.static FilegetClassFile(String className) Возвращает File, соответствующий файлу с исходным кодом указанного класа.Возвращает список имён классов.static DynamicClassManagerВозвращает инстанцию менеджера динамических классов.Class<?> Возвращает актуальную версию загруженного класса по его имени.static <T> TnewInstance(String implClassName) Возвращает актуальный инстанс имплементации некоего интерфейса.
-
Field Details
-
DYNAMIC_CLASS_PACKAGE
- See Also:
-
-
Method Details
-
findClassImplements
-
getClassFile
Возвращает File, соответствующий файлу с исходным кодом указанного класа.- Parameters:
className- имя класса- Returns:
- file
-
getInstance
Возвращает инстанцию менеджера динамических классов. По умолчанию инициализируется ReadOnlyClassManager'ом.- Returns:
-
getDynamicClassNames
Возвращает список имён классов.- Returns:
- список классов
-
recompileAll
- Throws:
BGException
-
recompile
- Throws:
BGException
-
getActualDynamicClassloader
-
loadClass
Возвращает актуальную версию загруженного класса по его имени.- Parameters:
className- полное имя класса- Returns:
- класс
-
getClass
Возвращает актуальный класс по его имени. Динамический либо обычный.- Parameters:
className-- Returns:
- Throws:
ClassNotFoundException
-
newInstance
Возвращает актуальный инстанс имплементации некоего интерфейса. Данный метод всегда будет возвращать актуальную версию некоего класса.- Parameters:
implClassName- полное имя класса- Returns:
- объект, реализующий интерфейс
- Throws:
BGExceptionClassNotFoundException
-