Class DynamicCodeDao

java.lang.Object
ru.bitel.bgbilling.kernel.dynamic.server.bean.DynamicCodeDao

public class DynamicCodeDao extends Object
DAO для низкоуровневой работы с динамически загружаемым кодом. Не рекомендуется для использования напрямую.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Pattern
    регекспы имён (ресурсов) которые будут игнорироваться при обходе файлов в дин.коде: ***.bak, ***.bak.666
    static final String
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    Делает бэкап исходника и удаляет его.
    void
     
    void
    Удаляет записи о данном классе из таблиц script_classes и script_classes_ifaces
    static void
    Удаляет резервную копию исходников
    Возвращает список загруженных классов, которые реализуют заданный интерфейс.
    List<Pair<String,byte[]>>
    Получить все скомпилированные классы из БД, в том числе и анонимные.
    byte[]
    getClassData(String className)
    Возвращает скомпилированный байт-код класса из БД.
    static File
    getClassFile(String className)
    Возвращает File, соответствующий файлу с исходным кодом указанного класа.
    static String
    Возвращает исходный код скрипта, считанный из файла.
    Возвращает список всех классов и ресурсов.
    static final String
     
    static void
    Восстанавливает код класса из сохраненной копии и удаляет её.
    void
    updateClassData(String className, byte[] data, long lastModified)
    Сохраняет в БД скомпилированный класс synchronized, так как 2 соыбтия одновременно могут сохранить один и тот же класс
    void
    Обновляет информацию об интерфейсах, которые имплементирует класс.
    static void
    updateClassSource(String className, String 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 String SOURCE_ENCODING
      See Also:
    • RESOURCE_REGEXP_BLACKLIST

      public static final Pattern RESOURCE_REGEXP_BLACKLIST
      регекспы имён (ресурсов) которые будут игнорироваться при обходе файлов в дин.коде: ***.bak, ***.bak.666
  • Constructor Details

    • DynamicCodeDao

      public DynamicCodeDao(Connection con)
  • Method Details

    • getScriptsDir

      public static final String getScriptsDir()
    • getClassData

      public byte[] getClassData(String className) throws ru.bitel.bgbilling.common.BGException
      Возвращает скомпилированный байт-код класса из БД.
      Parameters:
      className - имя класса
      Returns:
      байт-код
      Throws:
      ru.bitel.bgbilling.common.BGException - ошибки (в т.ч. ошибки БД)
    • getClassSource

      public static String getClassSource(String className) throws ru.bitel.bgbilling.common.BGException
      Возвращает исходный код скрипта, считанный из файла.
      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

      public static void deleteSourcesBackup(String className)
      Удаляет резервную копию исходников
      Parameters:
      className - имя класса
    • getDynamicClasses

      public List<DynamicClass> getDynamicClasses() throws ru.bitel.bgbilling.common.BGException
      Возвращает список всех классов и ресурсов.
      Returns:
      список классов
      Throws:
      ru.bitel.bgbilling.common.BGException - ошибки.
    • getClassFile

      public static File getClassFile(String className)
      Возвращает File, соответствующий файлу с исходным кодом указанного класа. Для ресурсов расширение указывается через двоеточие ("classname:xml" или "classname:rep:xml"), если эта часть не задана - то это java-класс.
      Parameters:
      className - имя класса (или ресурса с расширением)
      Returns:
      file файл
    • updateClassInterfaces

      public void updateClassInterfaces(Class<?> clazz) throws ru.bitel.bgbilling.common.BGException
      Обновляет информацию об интерфейсах, которые имплементирует класс.
      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

      public static void backupAndDelete(String className) throws ru.bitel.bgbilling.common.BGException
      Делает бэкап исходника и удаляет его.
      Parameters:
      className - имя класса
      Throws:
      ru.bitel.bgbilling.common.BGException
    • deleteClassFromDb

      public void deleteClassFromDb(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 List<Pair<String,byte[]>> getClassData() throws ru.bitel.bgbilling.common.BGException
      Получить все скомпилированные классы из БД, в том числе и анонимные.
      Returns:
      Throws:
      ru.bitel.bgbilling.common.BGException