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.666
    static 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_ifaces
    static 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

  • 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 - имя класса
      code - исходный код
      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:
      currentClassName - имя класса
      interfaces - интерфейсы
      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