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.Pattern
RESOURCE_EXT_REGEXP_BLACKLIST
расширения (ресурсов) которые будут совсем игнорироваться, расширения это всё после первой точки: rep.xml, bak, bak.666, java.bak, java.bak.666static java.lang.String
SOURCE_ENCODING
-
Constructor Summary
Constructors Constructor Description DynamicCodeDao(java.sql.Connection con)
-
Method Summary
Modifier and Type Method Description static void
backupAndDelete(java.lang.String className)
Делает бэкап исходника и удаляет его.void
clearTables()
void
deleteClassFromDb(java.lang.String className)
Удаляет записи о данном классе из таблиц script_classes и script_classes_ifacesstatic void
deleteSourcesBackup(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.File
getClassFile(java.lang.String className)
Возвращает File, соответствующий файлу с исходным кодом указанного класа.static java.lang.String
getClassSource(java.lang.String className)
Возвращает исходный код скрипта, считанный из файла.java.util.List<DynamicClass>
getDynamicClasses()
Возвращает список всех классов и ресурсов.static java.lang.String
getScriptsDir()
static void
restoreSourcesFromBackup(java.lang.String className)
Восстанавливает код класса из сохраненной копии и удаляет её.void
updateClassData(java.lang.String className, byte[] data, long lastModified)
Сохраняет в БД скомпилированный класс synchronized, так как 2 соыбтия одновременно могут сохранить один и тот же классvoid
updateClassInterfaces(java.lang.Class<?> clazz)
Обновляет информацию об интерфейсах, которые имплементирует класс.static void
updateClassSource(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
-