Class DynamicCodeDao
java.lang.Object
ru.bitel.bgbilling.kernel.dynamic.server.bean.DynamicCodeDao
public class DynamicCodeDao
extends java.lang.Object
DAO для низкоуровневой работы с динамически загружаемым кодом. Не рекомендуется для
использования напрямую.
-
Field Summary
Fields Modifier and Type Field Description static java.util.regex.PatternRESOURCE_EXT_REGEXP_BLACKLISTрасширения (ресурсов) которые будут совсем игнорироваться, расширения это всё после первой точки: rep.xml, bak, bak.666, java.bak, java.bak.666static java.lang.StringSOURCE_ENCODING -
Constructor Summary
Constructors Constructor Description DynamicCodeDao(java.sql.Connection con) -
Method Summary
Modifier and Type Method Description static voidbackupAndDelete(java.lang.String className)Делает бэкап исходника и удаляет его.voidclearTables()voiddeleteClassFromDb(java.lang.String className)Удаляет записи о данном классе из таблиц script_classes и script_classes_ifacesstatic voiddeleteSourcesBackup(java.lang.String className)Удаляет резервную копию исходниковjava.util.List<java.lang.String>getActualClassesByInterface(java.lang.String interfaceName)Возвращает список загруженных классов, которые реализуют заданный интерфейс.java.util.List<Pair<java.lang.String,byte[]>>getClassData()Получить все скомпилированные классы из БД, в том числе и анонимные.byte[]getClassData(java.lang.String className)Возвращает скомпилированный байт-код класса из БД.static java.io.FilegetClassFile(java.lang.String className)Возвращает File, соответствующий файлу с исходным кодом указанного класа.static java.lang.StringgetClassSource(java.lang.String className)Возвращает исходный код скрипта, считанный из файла.java.util.List<DynamicClass>getDynamicClasses()Возвращает список всех классов и ресурсов.static java.lang.StringgetScriptsDir()static voidrestoreSourcesFromBackup(java.lang.String className)Восстанавливает код класса из сохраненной копии и удаляет её.voidupdateClassData(java.lang.String className, byte[] data, long lastModified)Сохраняет в БД скомпилированный класс synchronized, так как 2 соыбтия одновременно могут сохранить один и тот же классvoidupdateClassInterfaces(java.lang.Class<?> clazz)Обновляет информацию об интерфейсах, которые имплементирует класс.static voidupdateClassSource(java.lang.String className, javax.activation.DataHandler data)Сохраняет исходный код класса на диск в соответствующий файл.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
SOURCE_ENCODING
public static final java.lang.String SOURCE_ENCODING- See Also:
- Constant Field Values
-
RESOURCE_EXT_REGEXP_BLACKLIST
public static final java.util.regex.Pattern RESOURCE_EXT_REGEXP_BLACKLISTрасширения (ресурсов) которые будут совсем игнорироваться, расширения это всё после первой точки: rep.xml, bak, bak.666, java.bak, java.bak.666
-
-
Constructor Details
-
DynamicCodeDao
public DynamicCodeDao(java.sql.Connection con)
-
-
Method Details
-
getScriptsDir
public static final java.lang.String getScriptsDir() -
getClassData
public byte[] getClassData(java.lang.String className) throws ru.bitel.bgbilling.common.BGExceptionВозвращает скомпилированный байт-код класса из БД.- Parameters:
className- имя класса- Returns:
- байт-код
- Throws:
ru.bitel.bgbilling.common.BGException- ошибки (в т.ч. ошибки БД)
-
getClassSource
public static java.lang.String getClassSource(java.lang.String className) throws ru.bitel.bgbilling.common.BGExceptionВозвращает исходный код скрипта, считанный из файла.- Parameters:
className- имя класса- Returns:
- исходный код
- Throws:
ru.bitel.bgbilling.common.BGException- ошибки
-
updateClassData
public void updateClassData(java.lang.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(java.lang.String className, javax.activation.DataHandler data) throws ru.bitel.bgbilling.common.BGExceptionСохраняет исходный код класса на диск в соответствующий файл. Сохраняет резервную копию изменяемого исходного кода для возможного отката изменений.- Parameters:
className- имя классаdata- исходный код- Throws:
ru.bitel.bgbilling.common.BGException
-
restoreSourcesFromBackup
public static void restoreSourcesFromBackup(java.lang.String className) throws ru.bitel.bgbilling.common.BGExceptionВосстанавливает код класса из сохраненной копии и удаляет её.- Parameters:
className- имя класса- Throws:
ru.bitel.bgbilling.common.BGException
-
deleteSourcesBackup
public static void deleteSourcesBackup(java.lang.String className)Удаляет резервную копию исходников- Parameters:
className- имя класса
-
getDynamicClasses
public java.util.List<DynamicClass> getDynamicClasses() throws ru.bitel.bgbilling.common.BGExceptionВозвращает список всех классов и ресурсов.- Returns:
- список классов
- Throws:
ru.bitel.bgbilling.common.BGException- ошибки.
-
getClassFile
public static java.io.File getClassFile(java.lang.String className)Возвращает File, соответствующий файлу с исходным кодом указанного класа. Для ресурсов расширение указывается через двоеточие ("classname:xml" или "classname:rep:xml"), если эта часть не задана - то это java-класс.- Parameters:
className- имя класса (или ресурса с расширением)- Returns:
- file файл
-
updateClassInterfaces
public void updateClassInterfaces(java.lang.Class<?> clazz) throws ru.bitel.bgbilling.common.BGExceptionОбновляет информацию об интерфейсах, которые имплементирует класс.- Parameters:
clazz- имя класса- Throws:
ru.bitel.bgbilling.common.BGException
-
getActualClassesByInterface
public java.util.List<java.lang.String> getActualClassesByInterface(java.lang.String interfaceName) throws ru.bitel.bgbilling.common.BGExceptionВозвращает список загруженных классов, которые реализуют заданный интерфейс.- Parameters:
interfaceName- имя интерфейса- Returns:
- список классов
- Throws:
ru.bitel.bgbilling.common.BGException
-
backupAndDelete
public static void backupAndDelete(java.lang.String className) throws ru.bitel.bgbilling.common.BGExceptionДелает бэкап исходника и удаляет его.- Parameters:
className- имя класса- Throws:
ru.bitel.bgbilling.common.BGException
-
deleteClassFromDb
public void deleteClassFromDb(java.lang.String className) throws ru.bitel.bgbilling.common.BGExceptionУдаляет записи о данном классе из таблиц 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
public java.util.List<Pair<java.lang.String,byte[]>> getClassData() throws ru.bitel.bgbilling.common.BGExceptionПолучить все скомпилированные классы из БД, в том числе и анонимные.- Returns:
- Throws:
ru.bitel.bgbilling.common.BGException
-