Class DynamicCodeDao
java.lang.Object
ru.bitel.bgbilling.kernel.dynamic.server.bean.DynamicCodeDao
DAO для низкоуровневой работы с динамически загружаемым кодом. Не рекомендуется для
использования напрямую.
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidbackupAndDelete(String className) Делает бэкап исходника и удаляет его.voidvoiddeleteClassFromDb(String className) Удаляет записи о данном классе из таблиц script_classes и script_classes_ifacesstatic voiddeleteSourcesBackup(String className) Удаляет резервную копию исходниковgetActualClassesByInterface(String interfaceName) Возвращает список загруженных классов, которые реализуют заданный интерфейс.Получить все скомпилированные классы из БД, в том числе и анонимные.byte[]getClassData(String className) Возвращает скомпилированный байт-код класса из БД.static FilegetClassFile(String className) Возвращает File, соответствующий файлу с исходным кодом указанного класа.static StringgetClassSource(String className) Возвращает исходный код скрипта, считанный из файла.Возвращает список всех классов и ресурсов.static final Stringstatic voidrestoreSourcesFromBackup(String className) Восстанавливает код класса из сохраненной копии и удаляет её.voidupdateClassData(String className, byte[] data, long lastModified) Сохраняет в БД скомпилированный класс synchronized, так как 2 соыбтия одновременно могут сохранить один и тот же классvoidupdateClassInterfaces(Class<?> clazz) Обновляет информацию об интерфейсах, которые имплементирует класс.static voidupdateClassSource(String className, String data) Сохраняет исходный код класса на диск в соответствующий файл.
-
Field Details
-
SOURCE_ENCODING
- See Also:
-
RESOURCE_REGEXP_BLACKLIST
регекспы имён (ресурсов) которые будут игнорироваться при обходе файлов в дин.коде: ***.bak, ***.bak.666
-
-
Constructor Details
-
DynamicCodeDao
-
-
Method Details
-
getScriptsDir
-
getClassData
Возвращает скомпилированный байт-код класса из БД.- Parameters:
className- имя класса- Returns:
- байт-код
- Throws:
ru.bitel.bgbilling.common.BGException- ошибки (в т.ч. ошибки БД)ClassNotFoundException
-
getClassSource
Возвращает исходный код скрипта, считанный из файла.- Parameters:
className- имя класса- Returns:
- исходный код
- Throws:
ru.bitel.bgbilling.common.BGException- ошибки
-
updateClassData
public void updateClassData(String className, byte[] data, long lastModified) throws ru.bitel.bgbilling.common.BGException Сохраняет в БД скомпилированный класс synchronized, так как 2 соыбтия одновременно могут сохранить один и тот же класс- Parameters:
className- имя классаdata- скомпилированный класс- Throws:
ru.bitel.bgbilling.common.BGException
-
updateClassSource
public static void updateClassSource(String className, String data) throws ru.bitel.bgbilling.common.BGException Сохраняет исходный код класса на диск в соответствующий файл. Сохраняет резервную копию изменяемого исходного кода для возможного отката изменений.- Parameters:
className- имя классаdata- исходный код- Throws:
ru.bitel.bgbilling.common.BGException
-
restoreSourcesFromBackup
public static void restoreSourcesFromBackup(String className) throws ru.bitel.bgbilling.common.BGException Восстанавливает код класса из сохраненной копии и удаляет её.- Parameters:
className- имя класса- Throws:
ru.bitel.bgbilling.common.BGException
-
deleteSourcesBackup
Удаляет резервную копию исходников- Parameters:
className- имя класса
-
getDynamicClasses
Возвращает список всех классов и ресурсов.- Returns:
- список классов
- Throws:
ru.bitel.bgbilling.common.BGException- ошибки.Exception
-
getClassFile
Возвращает File, соответствующий файлу с исходным кодом указанного класа. Для ресурсов расширение указывается через двоеточие ("classname:xml" или "classname:rep:xml"), если эта часть не задана - то это java-класс.- Parameters:
className- имя класса (или ресурса с расширением)- Returns:
- file файл
-
updateClassInterfaces
Обновляет информацию об интерфейсах, которые имплементирует класс.- Parameters:
clazz- имя класса- Throws:
ru.bitel.bgbilling.common.BGException
-
getActualClassesByInterface
public List<String> getActualClassesByInterface(String interfaceName) throws ru.bitel.bgbilling.common.BGException Возвращает список загруженных классов, которые реализуют заданный интерфейс.- Parameters:
interfaceName- имя интерфейса- Returns:
- список классов
- Throws:
ru.bitel.bgbilling.common.BGException
-
backupAndDelete
Делает бэкап исходника и удаляет его.- Parameters:
className- имя класса- Throws:
ru.bitel.bgbilling.common.BGException
-
deleteClassFromDb
Удаляет записи о данном классе из таблиц script_classes и script_classes_ifaces- Parameters:
className- имя класса- Throws:
ru.bitel.bgbilling.common.BGException
-
clearTables
public void clearTables() throws ru.bitel.bgbilling.common.BGException- Throws:
ru.bitel.bgbilling.common.BGException
-
getClassData
Получить все скомпилированные классы из БД, в том числе и анонимные.- Returns:
- Throws:
ru.bitel.bgbilling.common.BGException
-