diff --git a/platform-backward-compat/LICENSE.txt b/platform-backward-compat/LICENSE.txt
new file mode 100644
index 00000000..4ae94b75
--- /dev/null
+++ b/platform-backward-compat/LICENSE.txt
@@ -0,0 +1,175 @@
+ ЛИЦЕНЗИЯ ОГРАНИЧЕННОГО ПРИМЕНЕНИЯ
+
+Настоящий документ устанавливает для Пользователя условия применения Базовой (некоммерческой)
+версии лицензии для пробного использования программного обеспечения ENTAXY, принадлежащего
+Правообладателю – Обществу с ограниченной ответственностью "ЕМДЕВ" (ОГРН 1057810026658, ИНН
+7813313860, юридический адрес: 197022, Россия, г. Санкт-Петербург, ул. Профессора Попова,
+д. 23, литера В, помещение 3Н), расположенной в сети Интернет по адресу
+https://www.emdev.ru/about (далее - Компания).
+
+Используя или получая доступ к Программному обеспечению, или нажав «Я согласен с Условиями»
+(или аналогичную кнопку или флажок) после загрузки или установки Программного обеспечения,
+Пользователь выражает свое согласие на обязательность условий и ограничений, изложенных в
+настоящем документе, в противном случае, он должен не использовать или не получать доступ
+к Программному обеспечению.
+
+ 1. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
+
+a) ПО – Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) в любой ее версии
+или редакции, исключительные права на которую принадлежат Правообладателю.
+b) Правообладатель (Компания) – ООО «ЕМДЕВ», ОГРН 1057810026658, ИНН 7813313860, исключительные
+права которого подтверждаются Свидетельством о государственной регистрации в Реестре программ
+для ЭВМ № 2021610848 от 19.01.2021 года.
+c) Пользователь – юридическое или физическое лицо, получившее через скачивание с сайта
+https://entaxy.ru или иным образом, дистрибутив ПО, пользующееся ПО.
+d) ИС – интеллектуальная собственность – закреплённое законом исключительное право, а также
+личные неимущественные права авторов произведений на результат интеллектуальной деятельности.
+e) Подписка – это коммерческое предложение Правообладателя, состоящее из Лицензии на использование
+ПО и доступа к технической поддержке программного обеспечения на срок Подписки. Подписка
+включает предоставление Пользователю неисключительного права использования ПО, в том числе
+получение обновлений функционала ПО и безопасности ПО, исправление ошибок ПО и получение
+патчей с обновлениями и исправлениями программного обеспечения. Подписка приобретается
+Пользователем на период времени, указанный в Сертификате. Количество подписок устанавливается
+для каждого Пользователя индивидуально в Сертификате.
+f) Сертификат – документ, выдаваемый Дистрибъютором или Авторизованным партнёром (Партнёром),
+подтверждающий факт приобретения физическим или юридическим лицом Подписки на программное
+обеспечение в ограниченном объёме и на определённый период времени.
+g) Лицензия (простая (неисключительная) – совокупность ограниченных прав использования ПО,
+предоставленных Пользователю согласно условиям Подписки.
+h) Библиотека – совокупность подпрограмм и объектов, используемых для разработки программного
+обеспечения.
+i) Исходный код – текст компьютерной программы на каком-либо языке программирования, состоящий
+из одного или нескольких файлов, который может быть прочтён человеком.
+j) Объектный код – файл (часть машинного кода) с промежуточным представлением отдельного модуля
+программы, полученный в результате обработки исходного кода, еще не связанный в полную программу.
+Это машинный код для одной конкретной библиотеки или модуля, который будет составлять готовый
+продукт.
+k) Некоммерческое использование – индивидуальное личное использование Пользователем программного
+обеспечения с целью обучения работе с Программным обеспечением, для оценки или демонстрации
+возможностей Программного обеспечения, при котором, Пользователем не извлекается коммерческая
+выгода и/или не идёт в доход денежное вознаграждение при использовании Программного обеспечения.
+
+ 2. ДОПУСТИМЫЕ СПОСОБЫ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
+
+2.1. Правообладатель предоставляет Пользователю ограниченное право использования Программного
+обеспечения на условиях простой (неисключительной) лицензии в объёме, ограниченном правом
+воспроизведения полной рабочей версии программного обеспечения, новых версий программного обеспечения
+в памяти оборудования и его запуска на оборудовании в соответствии со ст. 1280 ГК РФ.
+2.2. Право на использование Программного обеспечения, предоставляемое Пользователю, носит
+неисключительный характер.
+2.3. Пользователю предоставляется всемирная, неисключительная, не подлежащая сублицензированию,
+лицензия на ограниченное использование Программного обеспечения.
+2.4. Пользователь, имеющий Базовую (некоммерческую) версию лицензии для пробного использования
+имеет право приобрести Подписку на программное обеспечение. В этом случае Пользователь обязан
+обратиться в службу поддержки Правообладателя по адресу: https://entaxy.ru/ для изменения
+вида лицензии с Базовой бесплатной версии на Подписки.
+2.5. Срок использования скачанной Пользователем базовой (некоммерческой) версии лицензии для
+пробного использования программного обеспечения – не ограничен.
+2.6. Использование Пользователем настоящего программного обеспечения в целях разработки,
+модификации, обновления другого ПО, принадлежащего третьим лицам, а не Правообладателю,
+без разрешения Правообладателя не допускается.
+
+ 3. АВТОРСКОЕ ПРАВО.
+
+3.1. Все авторские права, все права интеллектуальной собственности на Программное обеспечение
+и любые его копии принадлежат Правообладателю.
+3.2. Все авторские права, все права интеллектуальной собственности в отношении любого контента,
+к которому можно получить доступ с помощью Программного обеспечения, является собственностью
+соответствующего владельца контента и защищается применимым законодательством об авторском
+праве или другими законами и договорами об интеллектуальной собственности.
+3.3. Условия использования Программного обеспечения.
+Лицензия, предоставленная Пользователю, действительна только в том случае, если Пользователь
+придерживается следующих условий:
+3.3.1. Принятие уведомлений об авторских правах. Пользователю запрещается удалять или изменять
+какие-либо уведомления об авторских правах или лицензиях, которые появляются при использовании
+Программного обеспечения или на нем.
+3.3.2. Модификация. Пользователю запрещается модифицировать, изменять, декомпилировать,
+расшифровывать, дизассемблировать, переводить или реверсировать, перепроектировать
+Программное обеспечение.
+3.3.3. Распространение. Пользователю запрещается сублицензировать, передавать право использования
+ПО или иным образом распространять или предоставлять Программное обеспечение любой третьей стороне.
+3.3.4. SaaS. За исключением случаев, когда это разрешено Правообладателем, Пользователю запрещено
+использовать Программное обеспечение в коммерческих целях для оказания услуг третьим лицам.
+
+ 4. ОТВЕТСТВЕННОСТЬ ПРАВООБЛАДАТЕЛЯ ПРИ НАРУШЕНИИ ПОЛЬЗОВАТЕЛЕМ ПРАВ «ИС»
+
+4.1. Правообладатель не несет никаких обязательств в отношении каких-либо претензий к Пользователю
+на предмет нарушения последним прав Интеллектуальной собственности, возникших в связи с
+использованием Пользователем:
+4.1.1. Любых компонентов программного обеспечения с открытым исходным кодом, включенных в
+Программное обеспечение;
+4.1.2. Любого нарушения правил использования Программного обеспечения, установленного условиями
+настоящего соглашения;
+4.1.3. Любого использования Программного обеспечения в сочетании с другими ПО, оборудованием,
+или данными, не предоставленными Пользователю Правообладателем;
+4.1.4. Любого изменения Программного обеспечения любым третьим лицом, а не Правообладателем.
+
+
+5. НАСТОЯЩИМ ПРАВООБЛАДАТЕЛЬ ЗАЯВЛЯЕТ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ПОЛЬЗОВАТЕЛЮ
+ПО ПРИНЦИПУ «AS IS» - «КАК ЕСТЬ». НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ НЕ ГАРАНТИРУЕТ
+И НЕ ОБЕЩАЕТ, ЧТО ПРЕДОСТАВЛЕННОЕ ИМ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ПОДХОДИТЬ ИЛИ НЕ ПОДХОДИТЬ
+ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ОТВЕЧАТЬ ВСЕМ КОММЕРЧЕСКИМ
+И ЛИЧНЫМ СУБЪЕКТИВНЫМ ОЖИДАНИЯМ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ РАБОТАТЬ
+ИСПРАВНО, БЕЗ ТЕХНИЧЕСКИХ ОШИБОК, БЫСТРО И БЕСПЕРЕБОЙНО.
+
+ 6. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ.
+НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ ИЛИ ЕГО АФФИЛЛИРОВАННЫЕ ЛИЦА НЕ НЕСУТ ПЕРЕД ПОЛЬЗОВАТЕЛЕМ
+ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ ПОЛЬЗОВАТЕЛЯ, ЕГО РАСХОДЫ ИЛИ РЕАЛЬНЫЙ УЩЕРБ,
+ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПРОСТОИ; УТРАТУ БИЗНЕСА; УПУЩЕННУЮ ВЫГОДУ; НЕДОПОЛУЧЕННУЮ ПРИБЫЛЬ;
+ПОТЕРЮ ИЛИ ПОВРЕЖДЕНИЕ ДАННЫХ, ИМУЩЕСТВА И ИНОЕ.
+ОГРАНИЧЕНИЯ ПРИМЕНЯЮТСЯ НЕЗАВИСИМО ОТ ОСНОВАНИЯ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ; В ТОМ ЧИСЛЕ ВСЛЕДСТВИЕ
+ДЕЙСТВИЯ ИЛИ БЕЗДЕЙСТВИЯ, НЕБРЕЖНОСТИ, УМЫСЛА, ПРЯМОГО ИЛИ КОСВЕННОГО; НЕОСТОРОЖНОСТИ; ЗАБЛУЖДЕНИЯ;
+КЛЕВЕТЫ; НАРУШЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ИЛИ ПРАВА ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ; ИЛИ ЛЮБОЕ ДРУГОЕ
+ОСНОВАНИЕ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ.
+
+ 7. ОБЯЗАННОСТЬ ПОЛЬЗОВАТЕЛЯ:
+Не осуществлять самостоятельно и (или) с привлечением третьих лиц нижеследующие действия
+(включая, но не ограничиваясь) по:
+-дизассемблированию и (или) декомпилированию (преобразованию объектного кода в исходный код)
+ Программного обеспечения;
+-модификации Программного обеспечения, в том числе вносить изменения в объектный код, исходный
+код Программного обеспечения, за исключением тех изменений, которые вносятся средствами,
+включёнными в Программное обеспечение и описанными непосредственно в документации к нему;
+-созданию условий для использования Программного обеспечения лицами, не имеющими прав на
+использование данного Программного обеспечения, включая (но не ограничиваясь) вмешательство
+третьих лиц в функционирование Программного обеспечения, предоставление третьим лицам доступа
+к исследованию и (или) замене настроек Программного обеспечения, включая его первичную установку;
+-распространению Программного обеспечения в целом или в части (включая приложенную к нему документацию).
+
+ 8. БИБЛИОТЕКА ПО. ИСПОЛЬЗУЕМЫЕ ПРОГРАММНЫЕ СРЕДСТВА.
+
+8.1. Настоящим, Правообладатель заверяет, что Библиотека программного обеспечения состоит из
+лицензионных продуктов, используемых на законных основаниях, а
+именно https://entaxy.ru/libs/licenses/root-aggregated.deps.
+8.2. Любые программные средства, применяемые Пользователем при работе с ПО, должны быть
+совместимы с библиотекой ПО, указанной в п.8.1. настоящего соглашения.
+8.3. Перечень внешних модулей ПО, указанный в п.8.1 настоящего соглашения, может изменяться
+Правообладателем в одностороннем порядке, в зависимости от выпуска релизов программного обеспечения,
+содержащих все изменения и дополнения программного обеспечения.
+
+ 9. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
+
+9.1. Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) является свободно распространяемым
+программным обеспечением.
+9.2. Пользователь имеет право вносить изменения в исходный код программного обеспечения исключительно
+с согласия Правообладателя в порядке предложения изменений/правок/дополнений через механизм
+«Pull Requests» в открытом репозитории Правообладателя по адресу: https://git.entaxy.ru/entaxy/entaxy-public.
+9.3. Любые изменения программного обеспечения, осуществляемые Пользователем без соблюдения условий
+пункта 9.2. настоящего документа, являются нарушением авторских и смежных прав Правообладателя,
+прав интеллектуальной собственности Правообладателя и влекут применение к Пользователю мер
+ответственности в соответствии с условиями настоящей Лицензии, а также применимого законодательства
+Российской Федерации.
+
+ 10. ЗАКЛЮЧИТЕЛЬНЫЕ ПОЛОЖЕНИЯ.
+
+10.1. В случае нарушения Пользователем любого из условий настоящей Лицензии, Правообладатель имеет
+право взыскать с Пользователя любые причинённые таким нарушением убытки, реальный ущерб,
+недополученную прибыль, упущенную выгоду, а также в случае нарушения Пользователем условий
+пункта 9.2 настоящего соглашения, в том числе, взыскать с Пользователя штраф в размере
+2 000 000 (Два миллиона) рублей за каждый установленный случай несанкционированного изменения
+исходного или объектного кода Программного обеспечения «Энтакси» (Entaxy).
+10.2. В рамках исполнения Пользователем обязательств по настоящей Лицензии, применимое
+законодательство – Российской Федерации.
+10.3. Если какое-либо положение настоящей Лицензии будет признано судом недействительным,
+остальные положения будут продолжать своё действие, а Пользователь будет обязан продолжать
+исполнять свои обязанности в соответствии с этими положениями.
diff --git a/platform-backward-compat/blueprint-generator-service/LICENSE.txt b/platform-backward-compat/blueprint-generator-service/LICENSE.txt
new file mode 100644
index 00000000..4ae94b75
--- /dev/null
+++ b/platform-backward-compat/blueprint-generator-service/LICENSE.txt
@@ -0,0 +1,175 @@
+ ЛИЦЕНЗИЯ ОГРАНИЧЕННОГО ПРИМЕНЕНИЯ
+
+Настоящий документ устанавливает для Пользователя условия применения Базовой (некоммерческой)
+версии лицензии для пробного использования программного обеспечения ENTAXY, принадлежащего
+Правообладателю – Обществу с ограниченной ответственностью "ЕМДЕВ" (ОГРН 1057810026658, ИНН
+7813313860, юридический адрес: 197022, Россия, г. Санкт-Петербург, ул. Профессора Попова,
+д. 23, литера В, помещение 3Н), расположенной в сети Интернет по адресу
+https://www.emdev.ru/about (далее - Компания).
+
+Используя или получая доступ к Программному обеспечению, или нажав «Я согласен с Условиями»
+(или аналогичную кнопку или флажок) после загрузки или установки Программного обеспечения,
+Пользователь выражает свое согласие на обязательность условий и ограничений, изложенных в
+настоящем документе, в противном случае, он должен не использовать или не получать доступ
+к Программному обеспечению.
+
+ 1. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
+
+a) ПО – Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) в любой ее версии
+или редакции, исключительные права на которую принадлежат Правообладателю.
+b) Правообладатель (Компания) – ООО «ЕМДЕВ», ОГРН 1057810026658, ИНН 7813313860, исключительные
+права которого подтверждаются Свидетельством о государственной регистрации в Реестре программ
+для ЭВМ № 2021610848 от 19.01.2021 года.
+c) Пользователь – юридическое или физическое лицо, получившее через скачивание с сайта
+https://entaxy.ru или иным образом, дистрибутив ПО, пользующееся ПО.
+d) ИС – интеллектуальная собственность – закреплённое законом исключительное право, а также
+личные неимущественные права авторов произведений на результат интеллектуальной деятельности.
+e) Подписка – это коммерческое предложение Правообладателя, состоящее из Лицензии на использование
+ПО и доступа к технической поддержке программного обеспечения на срок Подписки. Подписка
+включает предоставление Пользователю неисключительного права использования ПО, в том числе
+получение обновлений функционала ПО и безопасности ПО, исправление ошибок ПО и получение
+патчей с обновлениями и исправлениями программного обеспечения. Подписка приобретается
+Пользователем на период времени, указанный в Сертификате. Количество подписок устанавливается
+для каждого Пользователя индивидуально в Сертификате.
+f) Сертификат – документ, выдаваемый Дистрибъютором или Авторизованным партнёром (Партнёром),
+подтверждающий факт приобретения физическим или юридическим лицом Подписки на программное
+обеспечение в ограниченном объёме и на определённый период времени.
+g) Лицензия (простая (неисключительная) – совокупность ограниченных прав использования ПО,
+предоставленных Пользователю согласно условиям Подписки.
+h) Библиотека – совокупность подпрограмм и объектов, используемых для разработки программного
+обеспечения.
+i) Исходный код – текст компьютерной программы на каком-либо языке программирования, состоящий
+из одного или нескольких файлов, который может быть прочтён человеком.
+j) Объектный код – файл (часть машинного кода) с промежуточным представлением отдельного модуля
+программы, полученный в результате обработки исходного кода, еще не связанный в полную программу.
+Это машинный код для одной конкретной библиотеки или модуля, который будет составлять готовый
+продукт.
+k) Некоммерческое использование – индивидуальное личное использование Пользователем программного
+обеспечения с целью обучения работе с Программным обеспечением, для оценки или демонстрации
+возможностей Программного обеспечения, при котором, Пользователем не извлекается коммерческая
+выгода и/или не идёт в доход денежное вознаграждение при использовании Программного обеспечения.
+
+ 2. ДОПУСТИМЫЕ СПОСОБЫ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
+
+2.1. Правообладатель предоставляет Пользователю ограниченное право использования Программного
+обеспечения на условиях простой (неисключительной) лицензии в объёме, ограниченном правом
+воспроизведения полной рабочей версии программного обеспечения, новых версий программного обеспечения
+в памяти оборудования и его запуска на оборудовании в соответствии со ст. 1280 ГК РФ.
+2.2. Право на использование Программного обеспечения, предоставляемое Пользователю, носит
+неисключительный характер.
+2.3. Пользователю предоставляется всемирная, неисключительная, не подлежащая сублицензированию,
+лицензия на ограниченное использование Программного обеспечения.
+2.4. Пользователь, имеющий Базовую (некоммерческую) версию лицензии для пробного использования
+имеет право приобрести Подписку на программное обеспечение. В этом случае Пользователь обязан
+обратиться в службу поддержки Правообладателя по адресу: https://entaxy.ru/ для изменения
+вида лицензии с Базовой бесплатной версии на Подписки.
+2.5. Срок использования скачанной Пользователем базовой (некоммерческой) версии лицензии для
+пробного использования программного обеспечения – не ограничен.
+2.6. Использование Пользователем настоящего программного обеспечения в целях разработки,
+модификации, обновления другого ПО, принадлежащего третьим лицам, а не Правообладателю,
+без разрешения Правообладателя не допускается.
+
+ 3. АВТОРСКОЕ ПРАВО.
+
+3.1. Все авторские права, все права интеллектуальной собственности на Программное обеспечение
+и любые его копии принадлежат Правообладателю.
+3.2. Все авторские права, все права интеллектуальной собственности в отношении любого контента,
+к которому можно получить доступ с помощью Программного обеспечения, является собственностью
+соответствующего владельца контента и защищается применимым законодательством об авторском
+праве или другими законами и договорами об интеллектуальной собственности.
+3.3. Условия использования Программного обеспечения.
+Лицензия, предоставленная Пользователю, действительна только в том случае, если Пользователь
+придерживается следующих условий:
+3.3.1. Принятие уведомлений об авторских правах. Пользователю запрещается удалять или изменять
+какие-либо уведомления об авторских правах или лицензиях, которые появляются при использовании
+Программного обеспечения или на нем.
+3.3.2. Модификация. Пользователю запрещается модифицировать, изменять, декомпилировать,
+расшифровывать, дизассемблировать, переводить или реверсировать, перепроектировать
+Программное обеспечение.
+3.3.3. Распространение. Пользователю запрещается сублицензировать, передавать право использования
+ПО или иным образом распространять или предоставлять Программное обеспечение любой третьей стороне.
+3.3.4. SaaS. За исключением случаев, когда это разрешено Правообладателем, Пользователю запрещено
+использовать Программное обеспечение в коммерческих целях для оказания услуг третьим лицам.
+
+ 4. ОТВЕТСТВЕННОСТЬ ПРАВООБЛАДАТЕЛЯ ПРИ НАРУШЕНИИ ПОЛЬЗОВАТЕЛЕМ ПРАВ «ИС»
+
+4.1. Правообладатель не несет никаких обязательств в отношении каких-либо претензий к Пользователю
+на предмет нарушения последним прав Интеллектуальной собственности, возникших в связи с
+использованием Пользователем:
+4.1.1. Любых компонентов программного обеспечения с открытым исходным кодом, включенных в
+Программное обеспечение;
+4.1.2. Любого нарушения правил использования Программного обеспечения, установленного условиями
+настоящего соглашения;
+4.1.3. Любого использования Программного обеспечения в сочетании с другими ПО, оборудованием,
+или данными, не предоставленными Пользователю Правообладателем;
+4.1.4. Любого изменения Программного обеспечения любым третьим лицом, а не Правообладателем.
+
+
+5. НАСТОЯЩИМ ПРАВООБЛАДАТЕЛЬ ЗАЯВЛЯЕТ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ПОЛЬЗОВАТЕЛЮ
+ПО ПРИНЦИПУ «AS IS» - «КАК ЕСТЬ». НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ НЕ ГАРАНТИРУЕТ
+И НЕ ОБЕЩАЕТ, ЧТО ПРЕДОСТАВЛЕННОЕ ИМ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ПОДХОДИТЬ ИЛИ НЕ ПОДХОДИТЬ
+ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ОТВЕЧАТЬ ВСЕМ КОММЕРЧЕСКИМ
+И ЛИЧНЫМ СУБЪЕКТИВНЫМ ОЖИДАНИЯМ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ РАБОТАТЬ
+ИСПРАВНО, БЕЗ ТЕХНИЧЕСКИХ ОШИБОК, БЫСТРО И БЕСПЕРЕБОЙНО.
+
+ 6. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ.
+НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ ИЛИ ЕГО АФФИЛЛИРОВАННЫЕ ЛИЦА НЕ НЕСУТ ПЕРЕД ПОЛЬЗОВАТЕЛЕМ
+ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ ПОЛЬЗОВАТЕЛЯ, ЕГО РАСХОДЫ ИЛИ РЕАЛЬНЫЙ УЩЕРБ,
+ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПРОСТОИ; УТРАТУ БИЗНЕСА; УПУЩЕННУЮ ВЫГОДУ; НЕДОПОЛУЧЕННУЮ ПРИБЫЛЬ;
+ПОТЕРЮ ИЛИ ПОВРЕЖДЕНИЕ ДАННЫХ, ИМУЩЕСТВА И ИНОЕ.
+ОГРАНИЧЕНИЯ ПРИМЕНЯЮТСЯ НЕЗАВИСИМО ОТ ОСНОВАНИЯ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ; В ТОМ ЧИСЛЕ ВСЛЕДСТВИЕ
+ДЕЙСТВИЯ ИЛИ БЕЗДЕЙСТВИЯ, НЕБРЕЖНОСТИ, УМЫСЛА, ПРЯМОГО ИЛИ КОСВЕННОГО; НЕОСТОРОЖНОСТИ; ЗАБЛУЖДЕНИЯ;
+КЛЕВЕТЫ; НАРУШЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ИЛИ ПРАВА ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ; ИЛИ ЛЮБОЕ ДРУГОЕ
+ОСНОВАНИЕ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ.
+
+ 7. ОБЯЗАННОСТЬ ПОЛЬЗОВАТЕЛЯ:
+Не осуществлять самостоятельно и (или) с привлечением третьих лиц нижеследующие действия
+(включая, но не ограничиваясь) по:
+-дизассемблированию и (или) декомпилированию (преобразованию объектного кода в исходный код)
+ Программного обеспечения;
+-модификации Программного обеспечения, в том числе вносить изменения в объектный код, исходный
+код Программного обеспечения, за исключением тех изменений, которые вносятся средствами,
+включёнными в Программное обеспечение и описанными непосредственно в документации к нему;
+-созданию условий для использования Программного обеспечения лицами, не имеющими прав на
+использование данного Программного обеспечения, включая (но не ограничиваясь) вмешательство
+третьих лиц в функционирование Программного обеспечения, предоставление третьим лицам доступа
+к исследованию и (или) замене настроек Программного обеспечения, включая его первичную установку;
+-распространению Программного обеспечения в целом или в части (включая приложенную к нему документацию).
+
+ 8. БИБЛИОТЕКА ПО. ИСПОЛЬЗУЕМЫЕ ПРОГРАММНЫЕ СРЕДСТВА.
+
+8.1. Настоящим, Правообладатель заверяет, что Библиотека программного обеспечения состоит из
+лицензионных продуктов, используемых на законных основаниях, а
+именно https://entaxy.ru/libs/licenses/root-aggregated.deps.
+8.2. Любые программные средства, применяемые Пользователем при работе с ПО, должны быть
+совместимы с библиотекой ПО, указанной в п.8.1. настоящего соглашения.
+8.3. Перечень внешних модулей ПО, указанный в п.8.1 настоящего соглашения, может изменяться
+Правообладателем в одностороннем порядке, в зависимости от выпуска релизов программного обеспечения,
+содержащих все изменения и дополнения программного обеспечения.
+
+ 9. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
+
+9.1. Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) является свободно распространяемым
+программным обеспечением.
+9.2. Пользователь имеет право вносить изменения в исходный код программного обеспечения исключительно
+с согласия Правообладателя в порядке предложения изменений/правок/дополнений через механизм
+«Pull Requests» в открытом репозитории Правообладателя по адресу: https://git.entaxy.ru/entaxy/entaxy-public.
+9.3. Любые изменения программного обеспечения, осуществляемые Пользователем без соблюдения условий
+пункта 9.2. настоящего документа, являются нарушением авторских и смежных прав Правообладателя,
+прав интеллектуальной собственности Правообладателя и влекут применение к Пользователю мер
+ответственности в соответствии с условиями настоящей Лицензии, а также применимого законодательства
+Российской Федерации.
+
+ 10. ЗАКЛЮЧИТЕЛЬНЫЕ ПОЛОЖЕНИЯ.
+
+10.1. В случае нарушения Пользователем любого из условий настоящей Лицензии, Правообладатель имеет
+право взыскать с Пользователя любые причинённые таким нарушением убытки, реальный ущерб,
+недополученную прибыль, упущенную выгоду, а также в случае нарушения Пользователем условий
+пункта 9.2 настоящего соглашения, в том числе, взыскать с Пользователя штраф в размере
+2 000 000 (Два миллиона) рублей за каждый установленный случай несанкционированного изменения
+исходного или объектного кода Программного обеспечения «Энтакси» (Entaxy).
+10.2. В рамках исполнения Пользователем обязательств по настоящей Лицензии, применимое
+законодательство – Российской Федерации.
+10.3. Если какое-либо положение настоящей Лицензии будет признано судом недействительным,
+остальные положения будут продолжать своё действие, а Пользователь будет обязан продолжать
+исполнять свои обязанности в соответствии с этими положениями.
diff --git a/platform-backward-compat/blueprint-generator-service/pom.xml b/platform-backward-compat/blueprint-generator-service/pom.xml
new file mode 100644
index 00000000..317a3baf
--- /dev/null
+++ b/platform-backward-compat/blueprint-generator-service/pom.xml
@@ -0,0 +1,76 @@
+
+ 4.0.0
+
+ ru.entaxy.platform
+ platform-backward-compat
+ 1.10.0
+
+ ru.entaxy.platform.backward-compat
+ blueprint-generator-service
+ bundle
+ ENTAXY :: PLATFORM :: BACKWARD COMPATIBILITY :: BLUEPRINT GENERATOR SERVICE
+ ENTAXY :: PLATFORM :: BACKWARD COMPATIBILITY :: BLUEPRINT GENERATOR SERVICE
+
+
+ ru.entaxy.platform.core.blueprint.generator
+
+
+
+
+ org.apache.karaf
+ org.apache.karaf.util
+
+
+
+ org.osgi
+ org.osgi.service.component.annotations
+ 1.4.0
+ compile
+
+
+
+
+ ru.entaxy.esb.platform.runtime.base.connecting.generator
+
+ generator-api
+ ${project.version}
+
+
+
+ ru.entaxy.esb.platform.runtime.base.connecting.generator
+
+ generator-factory
+ ${project.version}
+
+
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ ${maven-bundle-plugin.version}
+ true
+
+
+ true
+ <_dsannotations>*
+
+
+
+
+
+
+
diff --git a/platform-backward-compat/blueprint-generator-service/src/main/java/ru/entaxy/platform/core/blueprint/generator/Blueprint.java b/platform-backward-compat/blueprint-generator-service/src/main/java/ru/entaxy/platform/core/blueprint/generator/Blueprint.java
new file mode 100644
index 00000000..ef707c28
--- /dev/null
+++ b/platform-backward-compat/blueprint-generator-service/src/main/java/ru/entaxy/platform/core/blueprint/generator/Blueprint.java
@@ -0,0 +1,69 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * blueprint-generator
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.core.blueprint.generator;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class Blueprint {
+
+ private String name;
+ private byte[] body;
+
+ private Map properties = new HashMap<>();
+
+ public Blueprint(String name, byte[] body) {
+ this.name = name;
+ this.body = body;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public byte[] getBody() {
+ return body;
+ }
+
+ public void setBody(byte[] body) {
+ this.body = body;
+ }
+
+ public Map getProperties() {
+ return properties;
+ }
+
+ @Override
+ public String toString() {
+ return "Blueprint{" +
+ "name='" + name + '\'' +
+ '}';
+ }
+}
diff --git a/platform-backward-compat/blueprint-generator-service/src/main/java/ru/entaxy/platform/core/blueprint/generator/BlueprintGenerator.java b/platform-backward-compat/blueprint-generator-service/src/main/java/ru/entaxy/platform/core/blueprint/generator/BlueprintGenerator.java
new file mode 100644
index 00000000..f7b5d8f2
--- /dev/null
+++ b/platform-backward-compat/blueprint-generator-service/src/main/java/ru/entaxy/platform/core/blueprint/generator/BlueprintGenerator.java
@@ -0,0 +1,38 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * blueprint-generator
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.core.blueprint.generator;
+
+import java.net.URL;
+import java.util.Map;
+
+public interface BlueprintGenerator {
+
+ Blueprint createBlueprint(URL templateUrl, String templateName, String systemName, Map params)
+ throws Exception;
+
+ Blueprint createBlueprint(String templateName, String systemName, Map params)
+ throws Exception;
+}
diff --git a/platform-backward-compat/blueprint-generator-service/src/main/java/ru/entaxy/platform/core/blueprint/generator/BlueprintGeneratorImpl.java b/platform-backward-compat/blueprint-generator-service/src/main/java/ru/entaxy/platform/core/blueprint/generator/BlueprintGeneratorImpl.java
new file mode 100644
index 00000000..2ee107af
--- /dev/null
+++ b/platform-backward-compat/blueprint-generator-service/src/main/java/ru/entaxy/platform/core/blueprint/generator/BlueprintGeneratorImpl.java
@@ -0,0 +1,113 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * blueprint-generator
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.core.blueprint.generator;
+
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import ru.entaxy.base.generator.template.Template;
+import ru.entaxy.base.generator.template.TemplateAwareGenerator;
+import ru.entaxy.base.generator.template.TemplateImpl;
+import ru.entaxy.base.generator.template.TemplateService;
+import ru.entaxy.esb.platform.runtime.base.connecting.generator.Generated;
+import ru.entaxy.esb.platform.runtime.base.connecting.generator.Generator;
+import ru.entaxy.esb.platform.runtime.base.connecting.generator.factory.GeneratorFactory;
+
+@Component(service = {BlueprintGenerator.class}, immediate = true)
+public class BlueprintGeneratorImpl implements BlueprintGenerator {
+
+ private static final Logger LOG = LoggerFactory.getLogger(BlueprintGeneratorImpl.class);
+ private static final String SYSTEM_NAME = "systemName";
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY)
+ protected TemplateService templateService;
+
+ @Override
+ public Blueprint createBlueprint(URL templateUrl, String templateName, String systemName, Map params)
+ throws Exception {
+ TemplateImpl template = new TemplateImpl();
+ template.setTemplateName(templateName);
+ template.setTemplateLocation(templateUrl.toString());
+ template.setType("ftl");
+ return createBlueprintWithTemplate(template, systemName, params);
+ }
+
+ @Override
+ public Blueprint createBlueprint(String templateName, String systemName, Map params) throws Exception {
+ Template template = templateService.getTemplateById(templateName);
+ if (template == null) {
+ LOG.error("Template not found: [{}]", templateName);
+ // TODO throw exception
+ return null;
+ }
+ return createBlueprintWithTemplate(template, systemName, params);
+ }
+
+ protected Blueprint createBlueprintWithTemplate(ru.entaxy.base.generator.template.Template template,
+ String systemName, Map params) throws Exception {
+ TemplateAwareGenerator generator = GeneratorFactory.createGenerator(template);
+ if (generator == null) {
+ LOG.error("Generator not found for template: [{}]", template.getId());
+ // TODO throw exception
+ return null;
+ }
+ addSystemParam(params, systemName);
+ Map parameters = new HashMap<>();
+ parameters.putAll(params);
+ Generated result = generator.generate(template,parameters);
+ if ((result == null) || (result.getObject() == null)) {
+ LOG.error("Generator returned null for template: [{}]", template.getId());
+ // TODO throw exception
+ return null;
+ }
+ if (!Generated.GENERATED_TYPE_BLUEPRINT.equals(result.getType())) {
+ LOG.error("Generator returned type [{}], while [{}] is expected for template: [{}]"
+ , result.getType()
+ , Generated.GENERATED_TYPE_BLUEPRINT
+ , template.getId());
+ // TODO throw exception
+ return null;
+ }
+ Blueprint blueprint = new Blueprint(template.getTemplateName(), result.getObject().toString().getBytes());
+ blueprint.getProperties().putAll(result.getProperties());
+ blueprint.getProperties().put("template.name", template.getTemplateName());
+ blueprint.getProperties().put("template.id", template.getId());
+ blueprint.getProperties().put("template.type", template.getType());
+ return blueprint;
+ }
+
+ private void addSystemParam(Map params, String systemName) {
+ params.put(SYSTEM_NAME, systemName);
+ }
+
+}
diff --git a/platform-backward-compat/blueprint-generator-service/src/main/resources/ru/entaxy/templates/bridge-profile.ftl b/platform-backward-compat/blueprint-generator-service/src/main/resources/ru/entaxy/templates/bridge-profile.ftl
new file mode 100644
index 00000000..f8ec2a15
--- /dev/null
+++ b/platform-backward-compat/blueprint-generator-service/src/main/resources/ru/entaxy/templates/bridge-profile.ftl
@@ -0,0 +1,39 @@
+[#ftl attributes={"generated.type":"blueprint"}]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ system:[=systemName]
+
+
+
+
+
diff --git a/platform-backward-compat/blueprint-generator-service/src/main/resources/ru/entaxy/templates/default-route.ftl b/platform-backward-compat/blueprint-generator-service/src/main/resources/ru/entaxy/templates/default-route.ftl
new file mode 100644
index 00000000..49a697f3
--- /dev/null
+++ b/platform-backward-compat/blueprint-generator-service/src/main/resources/ru/entaxy/templates/default-route.ftl
@@ -0,0 +1,48 @@
+[#ftl attributes={"generated.type":"blueprint"}]
+
+
+
+
+
+
+
+
+
+
+
+ ${headers.ENTAXY_Destination} == 'nsi'
+ && ${headers.ENTAXY_DestinationType} == null
+
+
+ true
+
+
+
+
+
+
+ ${headers.ENTAXY_DestinationType} == 'system.name'
+
+
+
+ ${headers.ENTAXY_DestinationType} == 'system-group.name'
+
+
+
+ ${headers.ENTAXY_DestinationType} == 'queue.name'
+
+
+
+ ${headers.ENTAXY_DestinationType} == 'topic.name'
+
+
+
+
+
+
+
+
+
diff --git a/platform-backward-compat/blueprint-generator-service/src/main/resources/ru/entaxy/templates/metadata.json b/platform-backward-compat/blueprint-generator-service/src/main/resources/ru/entaxy/templates/metadata.json
new file mode 100644
index 00000000..5f01bc16
--- /dev/null
+++ b/platform-backward-compat/blueprint-generator-service/src/main/resources/ru/entaxy/templates/metadata.json
@@ -0,0 +1,23 @@
+{
+ "templates":[
+ {
+ "id":"bridge-profile",
+ /* by default:
+ "name":"{id}",
+ "type":"ftl",
+ "path":"DEFAULT_PATH"
+ "filename":"{id}"
+ "fullname":"{id}.{type}",
+ */
+ "description":"Ftl template for bridge profile"
+ },
+ {
+ "id":"default-route",
+ "description":"Ftl template for default route from profile"
+ },
+ {
+ "id":"profile",
+ "description":"Ftl template for system profile"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/platform-backward-compat/blueprint-generator-service/src/main/resources/ru/entaxy/templates/profile.ftl b/platform-backward-compat/blueprint-generator-service/src/main/resources/ru/entaxy/templates/profile.ftl
new file mode 100644
index 00000000..8e555cd9
--- /dev/null
+++ b/platform-backward-compat/blueprint-generator-service/src/main/resources/ru/entaxy/templates/profile.ftl
@@ -0,0 +1,75 @@
+[#ftl attributes={"generated.type":"blueprint"}]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${headers.NTX_NextPoint} != null
+
+ ${headers.NTX_NextPoint}
+
+
+
+
+
+
+
+
+
+
+
+
+
+[#-- --]
+[#-- --]
+[#-- ${headers.NTX_Origin} == null--]
+[#-- --]
+[#-- --]
+[#-- --]
+
+
+
+
diff --git a/platform-backward-compat/connector-storage/LICENSE.txt b/platform-backward-compat/connector-storage/LICENSE.txt
new file mode 100644
index 00000000..4ae94b75
--- /dev/null
+++ b/platform-backward-compat/connector-storage/LICENSE.txt
@@ -0,0 +1,175 @@
+ ЛИЦЕНЗИЯ ОГРАНИЧЕННОГО ПРИМЕНЕНИЯ
+
+Настоящий документ устанавливает для Пользователя условия применения Базовой (некоммерческой)
+версии лицензии для пробного использования программного обеспечения ENTAXY, принадлежащего
+Правообладателю – Обществу с ограниченной ответственностью "ЕМДЕВ" (ОГРН 1057810026658, ИНН
+7813313860, юридический адрес: 197022, Россия, г. Санкт-Петербург, ул. Профессора Попова,
+д. 23, литера В, помещение 3Н), расположенной в сети Интернет по адресу
+https://www.emdev.ru/about (далее - Компания).
+
+Используя или получая доступ к Программному обеспечению, или нажав «Я согласен с Условиями»
+(или аналогичную кнопку или флажок) после загрузки или установки Программного обеспечения,
+Пользователь выражает свое согласие на обязательность условий и ограничений, изложенных в
+настоящем документе, в противном случае, он должен не использовать или не получать доступ
+к Программному обеспечению.
+
+ 1. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
+
+a) ПО – Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) в любой ее версии
+или редакции, исключительные права на которую принадлежат Правообладателю.
+b) Правообладатель (Компания) – ООО «ЕМДЕВ», ОГРН 1057810026658, ИНН 7813313860, исключительные
+права которого подтверждаются Свидетельством о государственной регистрации в Реестре программ
+для ЭВМ № 2021610848 от 19.01.2021 года.
+c) Пользователь – юридическое или физическое лицо, получившее через скачивание с сайта
+https://entaxy.ru или иным образом, дистрибутив ПО, пользующееся ПО.
+d) ИС – интеллектуальная собственность – закреплённое законом исключительное право, а также
+личные неимущественные права авторов произведений на результат интеллектуальной деятельности.
+e) Подписка – это коммерческое предложение Правообладателя, состоящее из Лицензии на использование
+ПО и доступа к технической поддержке программного обеспечения на срок Подписки. Подписка
+включает предоставление Пользователю неисключительного права использования ПО, в том числе
+получение обновлений функционала ПО и безопасности ПО, исправление ошибок ПО и получение
+патчей с обновлениями и исправлениями программного обеспечения. Подписка приобретается
+Пользователем на период времени, указанный в Сертификате. Количество подписок устанавливается
+для каждого Пользователя индивидуально в Сертификате.
+f) Сертификат – документ, выдаваемый Дистрибъютором или Авторизованным партнёром (Партнёром),
+подтверждающий факт приобретения физическим или юридическим лицом Подписки на программное
+обеспечение в ограниченном объёме и на определённый период времени.
+g) Лицензия (простая (неисключительная) – совокупность ограниченных прав использования ПО,
+предоставленных Пользователю согласно условиям Подписки.
+h) Библиотека – совокупность подпрограмм и объектов, используемых для разработки программного
+обеспечения.
+i) Исходный код – текст компьютерной программы на каком-либо языке программирования, состоящий
+из одного или нескольких файлов, который может быть прочтён человеком.
+j) Объектный код – файл (часть машинного кода) с промежуточным представлением отдельного модуля
+программы, полученный в результате обработки исходного кода, еще не связанный в полную программу.
+Это машинный код для одной конкретной библиотеки или модуля, который будет составлять готовый
+продукт.
+k) Некоммерческое использование – индивидуальное личное использование Пользователем программного
+обеспечения с целью обучения работе с Программным обеспечением, для оценки или демонстрации
+возможностей Программного обеспечения, при котором, Пользователем не извлекается коммерческая
+выгода и/или не идёт в доход денежное вознаграждение при использовании Программного обеспечения.
+
+ 2. ДОПУСТИМЫЕ СПОСОБЫ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
+
+2.1. Правообладатель предоставляет Пользователю ограниченное право использования Программного
+обеспечения на условиях простой (неисключительной) лицензии в объёме, ограниченном правом
+воспроизведения полной рабочей версии программного обеспечения, новых версий программного обеспечения
+в памяти оборудования и его запуска на оборудовании в соответствии со ст. 1280 ГК РФ.
+2.2. Право на использование Программного обеспечения, предоставляемое Пользователю, носит
+неисключительный характер.
+2.3. Пользователю предоставляется всемирная, неисключительная, не подлежащая сублицензированию,
+лицензия на ограниченное использование Программного обеспечения.
+2.4. Пользователь, имеющий Базовую (некоммерческую) версию лицензии для пробного использования
+имеет право приобрести Подписку на программное обеспечение. В этом случае Пользователь обязан
+обратиться в службу поддержки Правообладателя по адресу: https://entaxy.ru/ для изменения
+вида лицензии с Базовой бесплатной версии на Подписки.
+2.5. Срок использования скачанной Пользователем базовой (некоммерческой) версии лицензии для
+пробного использования программного обеспечения – не ограничен.
+2.6. Использование Пользователем настоящего программного обеспечения в целях разработки,
+модификации, обновления другого ПО, принадлежащего третьим лицам, а не Правообладателю,
+без разрешения Правообладателя не допускается.
+
+ 3. АВТОРСКОЕ ПРАВО.
+
+3.1. Все авторские права, все права интеллектуальной собственности на Программное обеспечение
+и любые его копии принадлежат Правообладателю.
+3.2. Все авторские права, все права интеллектуальной собственности в отношении любого контента,
+к которому можно получить доступ с помощью Программного обеспечения, является собственностью
+соответствующего владельца контента и защищается применимым законодательством об авторском
+праве или другими законами и договорами об интеллектуальной собственности.
+3.3. Условия использования Программного обеспечения.
+Лицензия, предоставленная Пользователю, действительна только в том случае, если Пользователь
+придерживается следующих условий:
+3.3.1. Принятие уведомлений об авторских правах. Пользователю запрещается удалять или изменять
+какие-либо уведомления об авторских правах или лицензиях, которые появляются при использовании
+Программного обеспечения или на нем.
+3.3.2. Модификация. Пользователю запрещается модифицировать, изменять, декомпилировать,
+расшифровывать, дизассемблировать, переводить или реверсировать, перепроектировать
+Программное обеспечение.
+3.3.3. Распространение. Пользователю запрещается сублицензировать, передавать право использования
+ПО или иным образом распространять или предоставлять Программное обеспечение любой третьей стороне.
+3.3.4. SaaS. За исключением случаев, когда это разрешено Правообладателем, Пользователю запрещено
+использовать Программное обеспечение в коммерческих целях для оказания услуг третьим лицам.
+
+ 4. ОТВЕТСТВЕННОСТЬ ПРАВООБЛАДАТЕЛЯ ПРИ НАРУШЕНИИ ПОЛЬЗОВАТЕЛЕМ ПРАВ «ИС»
+
+4.1. Правообладатель не несет никаких обязательств в отношении каких-либо претензий к Пользователю
+на предмет нарушения последним прав Интеллектуальной собственности, возникших в связи с
+использованием Пользователем:
+4.1.1. Любых компонентов программного обеспечения с открытым исходным кодом, включенных в
+Программное обеспечение;
+4.1.2. Любого нарушения правил использования Программного обеспечения, установленного условиями
+настоящего соглашения;
+4.1.3. Любого использования Программного обеспечения в сочетании с другими ПО, оборудованием,
+или данными, не предоставленными Пользователю Правообладателем;
+4.1.4. Любого изменения Программного обеспечения любым третьим лицом, а не Правообладателем.
+
+
+5. НАСТОЯЩИМ ПРАВООБЛАДАТЕЛЬ ЗАЯВЛЯЕТ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ПОЛЬЗОВАТЕЛЮ
+ПО ПРИНЦИПУ «AS IS» - «КАК ЕСТЬ». НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ НЕ ГАРАНТИРУЕТ
+И НЕ ОБЕЩАЕТ, ЧТО ПРЕДОСТАВЛЕННОЕ ИМ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ПОДХОДИТЬ ИЛИ НЕ ПОДХОДИТЬ
+ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ОТВЕЧАТЬ ВСЕМ КОММЕРЧЕСКИМ
+И ЛИЧНЫМ СУБЪЕКТИВНЫМ ОЖИДАНИЯМ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ РАБОТАТЬ
+ИСПРАВНО, БЕЗ ТЕХНИЧЕСКИХ ОШИБОК, БЫСТРО И БЕСПЕРЕБОЙНО.
+
+ 6. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ.
+НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ ИЛИ ЕГО АФФИЛЛИРОВАННЫЕ ЛИЦА НЕ НЕСУТ ПЕРЕД ПОЛЬЗОВАТЕЛЕМ
+ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ ПОЛЬЗОВАТЕЛЯ, ЕГО РАСХОДЫ ИЛИ РЕАЛЬНЫЙ УЩЕРБ,
+ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПРОСТОИ; УТРАТУ БИЗНЕСА; УПУЩЕННУЮ ВЫГОДУ; НЕДОПОЛУЧЕННУЮ ПРИБЫЛЬ;
+ПОТЕРЮ ИЛИ ПОВРЕЖДЕНИЕ ДАННЫХ, ИМУЩЕСТВА И ИНОЕ.
+ОГРАНИЧЕНИЯ ПРИМЕНЯЮТСЯ НЕЗАВИСИМО ОТ ОСНОВАНИЯ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ; В ТОМ ЧИСЛЕ ВСЛЕДСТВИЕ
+ДЕЙСТВИЯ ИЛИ БЕЗДЕЙСТВИЯ, НЕБРЕЖНОСТИ, УМЫСЛА, ПРЯМОГО ИЛИ КОСВЕННОГО; НЕОСТОРОЖНОСТИ; ЗАБЛУЖДЕНИЯ;
+КЛЕВЕТЫ; НАРУШЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ИЛИ ПРАВА ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ; ИЛИ ЛЮБОЕ ДРУГОЕ
+ОСНОВАНИЕ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ.
+
+ 7. ОБЯЗАННОСТЬ ПОЛЬЗОВАТЕЛЯ:
+Не осуществлять самостоятельно и (или) с привлечением третьих лиц нижеследующие действия
+(включая, но не ограничиваясь) по:
+-дизассемблированию и (или) декомпилированию (преобразованию объектного кода в исходный код)
+ Программного обеспечения;
+-модификации Программного обеспечения, в том числе вносить изменения в объектный код, исходный
+код Программного обеспечения, за исключением тех изменений, которые вносятся средствами,
+включёнными в Программное обеспечение и описанными непосредственно в документации к нему;
+-созданию условий для использования Программного обеспечения лицами, не имеющими прав на
+использование данного Программного обеспечения, включая (но не ограничиваясь) вмешательство
+третьих лиц в функционирование Программного обеспечения, предоставление третьим лицам доступа
+к исследованию и (или) замене настроек Программного обеспечения, включая его первичную установку;
+-распространению Программного обеспечения в целом или в части (включая приложенную к нему документацию).
+
+ 8. БИБЛИОТЕКА ПО. ИСПОЛЬЗУЕМЫЕ ПРОГРАММНЫЕ СРЕДСТВА.
+
+8.1. Настоящим, Правообладатель заверяет, что Библиотека программного обеспечения состоит из
+лицензионных продуктов, используемых на законных основаниях, а
+именно https://entaxy.ru/libs/licenses/root-aggregated.deps.
+8.2. Любые программные средства, применяемые Пользователем при работе с ПО, должны быть
+совместимы с библиотекой ПО, указанной в п.8.1. настоящего соглашения.
+8.3. Перечень внешних модулей ПО, указанный в п.8.1 настоящего соглашения, может изменяться
+Правообладателем в одностороннем порядке, в зависимости от выпуска релизов программного обеспечения,
+содержащих все изменения и дополнения программного обеспечения.
+
+ 9. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
+
+9.1. Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) является свободно распространяемым
+программным обеспечением.
+9.2. Пользователь имеет право вносить изменения в исходный код программного обеспечения исключительно
+с согласия Правообладателя в порядке предложения изменений/правок/дополнений через механизм
+«Pull Requests» в открытом репозитории Правообладателя по адресу: https://git.entaxy.ru/entaxy/entaxy-public.
+9.3. Любые изменения программного обеспечения, осуществляемые Пользователем без соблюдения условий
+пункта 9.2. настоящего документа, являются нарушением авторских и смежных прав Правообладателя,
+прав интеллектуальной собственности Правообладателя и влекут применение к Пользователю мер
+ответственности в соответствии с условиями настоящей Лицензии, а также применимого законодательства
+Российской Федерации.
+
+ 10. ЗАКЛЮЧИТЕЛЬНЫЕ ПОЛОЖЕНИЯ.
+
+10.1. В случае нарушения Пользователем любого из условий настоящей Лицензии, Правообладатель имеет
+право взыскать с Пользователя любые причинённые таким нарушением убытки, реальный ущерб,
+недополученную прибыль, упущенную выгоду, а также в случае нарушения Пользователем условий
+пункта 9.2 настоящего соглашения, в том числе, взыскать с Пользователя штраф в размере
+2 000 000 (Два миллиона) рублей за каждый установленный случай несанкционированного изменения
+исходного или объектного кода Программного обеспечения «Энтакси» (Entaxy).
+10.2. В рамках исполнения Пользователем обязательств по настоящей Лицензии, применимое
+законодательство – Российской Федерации.
+10.3. Если какое-либо положение настоящей Лицензии будет признано судом недействительным,
+остальные положения будут продолжать своё действие, а Пользователь будет обязан продолжать
+исполнять свои обязанности в соответствии с этими положениями.
diff --git a/platform-backward-compat/connector-storage/pom.xml b/platform-backward-compat/connector-storage/pom.xml
new file mode 100644
index 00000000..6ad6e267
--- /dev/null
+++ b/platform-backward-compat/connector-storage/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+
+
+ ru.entaxy.platform
+ platform-backward-compat
+ 1.10.0
+
+
+ ru.entaxy.platform.backward-compat
+ connector-storage
+ bundle
+ ENTAXY :: PLATFORM :: BACKWARD COMPATIBILITY :: CONNECTOR :: STORAGE
+ ENTAXY :: PLATFORM :: BACKWARD COMPATIBILITY :: CONNECTOR :: STORAGE
+
+
+ ru.entaxy.platform.base.objects.connector.storage
+
+
+
+
+ ru.entaxy.esb.system.registry.connector
+ connector-impl
+ ${project.version}
+
+
+
diff --git a/platform-backward-compat/connector-storage/src/main/java/ru/entaxy/platform/base/objects/connector/storage/ConnectorObjectStorage.java b/platform-backward-compat/connector-storage/src/main/java/ru/entaxy/platform/base/objects/connector/storage/ConnectorObjectStorage.java
new file mode 100644
index 00000000..943c7ba4
--- /dev/null
+++ b/platform-backward-compat/connector-storage/src/main/java/ru/entaxy/platform/base/objects/connector/storage/ConnectorObjectStorage.java
@@ -0,0 +1,113 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * connector-storage
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.base.objects.connector.storage;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.osgi.service.component.annotations.CollectionType;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+
+import ru.entaxy.esb.system.connector.impl.ConnectorService;
+import ru.entaxy.esb.system.jpa.SystemService;
+import ru.entaxy.esb.system.management.bundle.jpa.entity.BundleEntity;
+import ru.entaxy.platform.base.objects.EntaxyObject;
+import ru.entaxy.platform.base.objects.EntaxyObjectStorage;
+
+@Component(service = EntaxyObjectStorage.class, immediate = true)
+public class ConnectorObjectStorage implements EntaxyObjectStorage {
+
+ private static final Logger log = LoggerFactory.getLogger(ConnectorObjectStorage.class);
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY, collectionType = CollectionType.SERVICE)
+ protected ConnectorService connectorService;
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY, collectionType = CollectionType.SERVICE)
+ protected SystemService systemService;
+
+ @SuppressWarnings("serial")
+ protected Map fieldMap = new HashMap<>() {
+ {
+ put("name", "objectId");
+ put("version", "artifact.version");
+ }
+ };
+
+ protected Map fieldBundleMap = new HashMap<>() {
+ {
+ put("name", "bundleId");
+ put("type", "artifact.type");
+ put("status", "artifact.status");
+ put("version", "artifact.version");
+ put("url", "bundleLocation");
+ }
+ };
+
+ @Override
+ public String[] getObjectTypes() {
+ return new String[] {EntaxyObject.OBJECT_TYPES.CONNECTOR};
+ }
+
+ @Override
+ public Object store(Map data) {
+
+ JsonObject jsonObject = new JsonObject();
+ Gson gson = new Gson();
+
+ for (Map.Entry entry : fieldMap.entrySet()) {
+ if (data.containsKey(entry.getValue()))
+ jsonObject.add(entry.getKey(), gson.toJsonTree(data.get(entry.getValue())));
+ }
+ JsonObject bundleJsonObject = new JsonObject();
+ for (Map.Entry entry : fieldBundleMap.entrySet()) {
+ if (data.containsKey(entry.getValue()))
+ bundleJsonObject.add(entry.getKey(), gson.toJsonTree(data.get(entry.getValue())));
+ }
+
+ log.debug("JSON :: " + jsonObject.toString());
+ ru.entaxy.esb.system.connector.entity.Connector connector =
+ gson.fromJson(jsonObject, ru.entaxy.esb.system.connector.entity.Connector.class);
+ connector.setTemplateName(data.get("factoryId").toString());
+ connector.setCreateDate(new Date());
+ connector.setCreatedBy("admin");
+
+ log.debug("JSON Bundle :: " + bundleJsonObject.toString());
+ BundleEntity bundleEntity = gson.fromJson(bundleJsonObject, BundleEntity.class);
+ connector.setBundleEntity(bundleEntity);
+ ru.entaxy.esb.system.jpa.entity.System system = systemService.getByUuid(data.get("profile").toString());
+ connectorService.addNewConnector(system, connector);
+
+ return null;
+ }
+}
diff --git a/platform-backward-compat/pom.xml b/platform-backward-compat/pom.xml
new file mode 100644
index 00000000..fbcc54bb
--- /dev/null
+++ b/platform-backward-compat/pom.xml
@@ -0,0 +1,47 @@
+
+
+ 4.0.0
+
+ ru.entaxy.esb
+ root
+ 1.10.0
+
+ ru.entaxy.platform
+ platform-backward-compat
+ pom
+ ENTAXY :: PLATFORM :: BACKWARD COMPATIBILITY
+ ENTAXY :: PLATFORM :: BACKWARD COMPATIBILITY
+
+
+
+ com.google.code.gson
+ gson
+
+
+ org.osgi
+ org.osgi.service.component.annotations
+
+
+ org.apache.felix
+ org.apache.felix.scr
+
+
+ ru.entaxy.esb.platform.runtime.base
+ base-support
+ ${project.version}
+
+
+ ru.entaxy.esb.platform.runtime.base.objects-base
+ objects-core
+ ${project.version}
+
+
+
+
+ blueprint-generator-service
+ profile-management-service-adapters
+ connector-storage
+ profile-storage
+
+
+
diff --git a/platform-backward-compat/profile-management-service-adapters/LICENSE.txt b/platform-backward-compat/profile-management-service-adapters/LICENSE.txt
new file mode 100644
index 00000000..4ae94b75
--- /dev/null
+++ b/platform-backward-compat/profile-management-service-adapters/LICENSE.txt
@@ -0,0 +1,175 @@
+ ЛИЦЕНЗИЯ ОГРАНИЧЕННОГО ПРИМЕНЕНИЯ
+
+Настоящий документ устанавливает для Пользователя условия применения Базовой (некоммерческой)
+версии лицензии для пробного использования программного обеспечения ENTAXY, принадлежащего
+Правообладателю – Обществу с ограниченной ответственностью "ЕМДЕВ" (ОГРН 1057810026658, ИНН
+7813313860, юридический адрес: 197022, Россия, г. Санкт-Петербург, ул. Профессора Попова,
+д. 23, литера В, помещение 3Н), расположенной в сети Интернет по адресу
+https://www.emdev.ru/about (далее - Компания).
+
+Используя или получая доступ к Программному обеспечению, или нажав «Я согласен с Условиями»
+(или аналогичную кнопку или флажок) после загрузки или установки Программного обеспечения,
+Пользователь выражает свое согласие на обязательность условий и ограничений, изложенных в
+настоящем документе, в противном случае, он должен не использовать или не получать доступ
+к Программному обеспечению.
+
+ 1. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
+
+a) ПО – Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) в любой ее версии
+или редакции, исключительные права на которую принадлежат Правообладателю.
+b) Правообладатель (Компания) – ООО «ЕМДЕВ», ОГРН 1057810026658, ИНН 7813313860, исключительные
+права которого подтверждаются Свидетельством о государственной регистрации в Реестре программ
+для ЭВМ № 2021610848 от 19.01.2021 года.
+c) Пользователь – юридическое или физическое лицо, получившее через скачивание с сайта
+https://entaxy.ru или иным образом, дистрибутив ПО, пользующееся ПО.
+d) ИС – интеллектуальная собственность – закреплённое законом исключительное право, а также
+личные неимущественные права авторов произведений на результат интеллектуальной деятельности.
+e) Подписка – это коммерческое предложение Правообладателя, состоящее из Лицензии на использование
+ПО и доступа к технической поддержке программного обеспечения на срок Подписки. Подписка
+включает предоставление Пользователю неисключительного права использования ПО, в том числе
+получение обновлений функционала ПО и безопасности ПО, исправление ошибок ПО и получение
+патчей с обновлениями и исправлениями программного обеспечения. Подписка приобретается
+Пользователем на период времени, указанный в Сертификате. Количество подписок устанавливается
+для каждого Пользователя индивидуально в Сертификате.
+f) Сертификат – документ, выдаваемый Дистрибъютором или Авторизованным партнёром (Партнёром),
+подтверждающий факт приобретения физическим или юридическим лицом Подписки на программное
+обеспечение в ограниченном объёме и на определённый период времени.
+g) Лицензия (простая (неисключительная) – совокупность ограниченных прав использования ПО,
+предоставленных Пользователю согласно условиям Подписки.
+h) Библиотека – совокупность подпрограмм и объектов, используемых для разработки программного
+обеспечения.
+i) Исходный код – текст компьютерной программы на каком-либо языке программирования, состоящий
+из одного или нескольких файлов, который может быть прочтён человеком.
+j) Объектный код – файл (часть машинного кода) с промежуточным представлением отдельного модуля
+программы, полученный в результате обработки исходного кода, еще не связанный в полную программу.
+Это машинный код для одной конкретной библиотеки или модуля, который будет составлять готовый
+продукт.
+k) Некоммерческое использование – индивидуальное личное использование Пользователем программного
+обеспечения с целью обучения работе с Программным обеспечением, для оценки или демонстрации
+возможностей Программного обеспечения, при котором, Пользователем не извлекается коммерческая
+выгода и/или не идёт в доход денежное вознаграждение при использовании Программного обеспечения.
+
+ 2. ДОПУСТИМЫЕ СПОСОБЫ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
+
+2.1. Правообладатель предоставляет Пользователю ограниченное право использования Программного
+обеспечения на условиях простой (неисключительной) лицензии в объёме, ограниченном правом
+воспроизведения полной рабочей версии программного обеспечения, новых версий программного обеспечения
+в памяти оборудования и его запуска на оборудовании в соответствии со ст. 1280 ГК РФ.
+2.2. Право на использование Программного обеспечения, предоставляемое Пользователю, носит
+неисключительный характер.
+2.3. Пользователю предоставляется всемирная, неисключительная, не подлежащая сублицензированию,
+лицензия на ограниченное использование Программного обеспечения.
+2.4. Пользователь, имеющий Базовую (некоммерческую) версию лицензии для пробного использования
+имеет право приобрести Подписку на программное обеспечение. В этом случае Пользователь обязан
+обратиться в службу поддержки Правообладателя по адресу: https://entaxy.ru/ для изменения
+вида лицензии с Базовой бесплатной версии на Подписки.
+2.5. Срок использования скачанной Пользователем базовой (некоммерческой) версии лицензии для
+пробного использования программного обеспечения – не ограничен.
+2.6. Использование Пользователем настоящего программного обеспечения в целях разработки,
+модификации, обновления другого ПО, принадлежащего третьим лицам, а не Правообладателю,
+без разрешения Правообладателя не допускается.
+
+ 3. АВТОРСКОЕ ПРАВО.
+
+3.1. Все авторские права, все права интеллектуальной собственности на Программное обеспечение
+и любые его копии принадлежат Правообладателю.
+3.2. Все авторские права, все права интеллектуальной собственности в отношении любого контента,
+к которому можно получить доступ с помощью Программного обеспечения, является собственностью
+соответствующего владельца контента и защищается применимым законодательством об авторском
+праве или другими законами и договорами об интеллектуальной собственности.
+3.3. Условия использования Программного обеспечения.
+Лицензия, предоставленная Пользователю, действительна только в том случае, если Пользователь
+придерживается следующих условий:
+3.3.1. Принятие уведомлений об авторских правах. Пользователю запрещается удалять или изменять
+какие-либо уведомления об авторских правах или лицензиях, которые появляются при использовании
+Программного обеспечения или на нем.
+3.3.2. Модификация. Пользователю запрещается модифицировать, изменять, декомпилировать,
+расшифровывать, дизассемблировать, переводить или реверсировать, перепроектировать
+Программное обеспечение.
+3.3.3. Распространение. Пользователю запрещается сублицензировать, передавать право использования
+ПО или иным образом распространять или предоставлять Программное обеспечение любой третьей стороне.
+3.3.4. SaaS. За исключением случаев, когда это разрешено Правообладателем, Пользователю запрещено
+использовать Программное обеспечение в коммерческих целях для оказания услуг третьим лицам.
+
+ 4. ОТВЕТСТВЕННОСТЬ ПРАВООБЛАДАТЕЛЯ ПРИ НАРУШЕНИИ ПОЛЬЗОВАТЕЛЕМ ПРАВ «ИС»
+
+4.1. Правообладатель не несет никаких обязательств в отношении каких-либо претензий к Пользователю
+на предмет нарушения последним прав Интеллектуальной собственности, возникших в связи с
+использованием Пользователем:
+4.1.1. Любых компонентов программного обеспечения с открытым исходным кодом, включенных в
+Программное обеспечение;
+4.1.2. Любого нарушения правил использования Программного обеспечения, установленного условиями
+настоящего соглашения;
+4.1.3. Любого использования Программного обеспечения в сочетании с другими ПО, оборудованием,
+или данными, не предоставленными Пользователю Правообладателем;
+4.1.4. Любого изменения Программного обеспечения любым третьим лицом, а не Правообладателем.
+
+
+5. НАСТОЯЩИМ ПРАВООБЛАДАТЕЛЬ ЗАЯВЛЯЕТ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ПОЛЬЗОВАТЕЛЮ
+ПО ПРИНЦИПУ «AS IS» - «КАК ЕСТЬ». НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ НЕ ГАРАНТИРУЕТ
+И НЕ ОБЕЩАЕТ, ЧТО ПРЕДОСТАВЛЕННОЕ ИМ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ПОДХОДИТЬ ИЛИ НЕ ПОДХОДИТЬ
+ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ОТВЕЧАТЬ ВСЕМ КОММЕРЧЕСКИМ
+И ЛИЧНЫМ СУБЪЕКТИВНЫМ ОЖИДАНИЯМ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ РАБОТАТЬ
+ИСПРАВНО, БЕЗ ТЕХНИЧЕСКИХ ОШИБОК, БЫСТРО И БЕСПЕРЕБОЙНО.
+
+ 6. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ.
+НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ ИЛИ ЕГО АФФИЛЛИРОВАННЫЕ ЛИЦА НЕ НЕСУТ ПЕРЕД ПОЛЬЗОВАТЕЛЕМ
+ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ ПОЛЬЗОВАТЕЛЯ, ЕГО РАСХОДЫ ИЛИ РЕАЛЬНЫЙ УЩЕРБ,
+ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПРОСТОИ; УТРАТУ БИЗНЕСА; УПУЩЕННУЮ ВЫГОДУ; НЕДОПОЛУЧЕННУЮ ПРИБЫЛЬ;
+ПОТЕРЮ ИЛИ ПОВРЕЖДЕНИЕ ДАННЫХ, ИМУЩЕСТВА И ИНОЕ.
+ОГРАНИЧЕНИЯ ПРИМЕНЯЮТСЯ НЕЗАВИСИМО ОТ ОСНОВАНИЯ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ; В ТОМ ЧИСЛЕ ВСЛЕДСТВИЕ
+ДЕЙСТВИЯ ИЛИ БЕЗДЕЙСТВИЯ, НЕБРЕЖНОСТИ, УМЫСЛА, ПРЯМОГО ИЛИ КОСВЕННОГО; НЕОСТОРОЖНОСТИ; ЗАБЛУЖДЕНИЯ;
+КЛЕВЕТЫ; НАРУШЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ИЛИ ПРАВА ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ; ИЛИ ЛЮБОЕ ДРУГОЕ
+ОСНОВАНИЕ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ.
+
+ 7. ОБЯЗАННОСТЬ ПОЛЬЗОВАТЕЛЯ:
+Не осуществлять самостоятельно и (или) с привлечением третьих лиц нижеследующие действия
+(включая, но не ограничиваясь) по:
+-дизассемблированию и (или) декомпилированию (преобразованию объектного кода в исходный код)
+ Программного обеспечения;
+-модификации Программного обеспечения, в том числе вносить изменения в объектный код, исходный
+код Программного обеспечения, за исключением тех изменений, которые вносятся средствами,
+включёнными в Программное обеспечение и описанными непосредственно в документации к нему;
+-созданию условий для использования Программного обеспечения лицами, не имеющими прав на
+использование данного Программного обеспечения, включая (но не ограничиваясь) вмешательство
+третьих лиц в функционирование Программного обеспечения, предоставление третьим лицам доступа
+к исследованию и (или) замене настроек Программного обеспечения, включая его первичную установку;
+-распространению Программного обеспечения в целом или в части (включая приложенную к нему документацию).
+
+ 8. БИБЛИОТЕКА ПО. ИСПОЛЬЗУЕМЫЕ ПРОГРАММНЫЕ СРЕДСТВА.
+
+8.1. Настоящим, Правообладатель заверяет, что Библиотека программного обеспечения состоит из
+лицензионных продуктов, используемых на законных основаниях, а
+именно https://entaxy.ru/libs/licenses/root-aggregated.deps.
+8.2. Любые программные средства, применяемые Пользователем при работе с ПО, должны быть
+совместимы с библиотекой ПО, указанной в п.8.1. настоящего соглашения.
+8.3. Перечень внешних модулей ПО, указанный в п.8.1 настоящего соглашения, может изменяться
+Правообладателем в одностороннем порядке, в зависимости от выпуска релизов программного обеспечения,
+содержащих все изменения и дополнения программного обеспечения.
+
+ 9. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
+
+9.1. Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) является свободно распространяемым
+программным обеспечением.
+9.2. Пользователь имеет право вносить изменения в исходный код программного обеспечения исключительно
+с согласия Правообладателя в порядке предложения изменений/правок/дополнений через механизм
+«Pull Requests» в открытом репозитории Правообладателя по адресу: https://git.entaxy.ru/entaxy/entaxy-public.
+9.3. Любые изменения программного обеспечения, осуществляемые Пользователем без соблюдения условий
+пункта 9.2. настоящего документа, являются нарушением авторских и смежных прав Правообладателя,
+прав интеллектуальной собственности Правообладателя и влекут применение к Пользователю мер
+ответственности в соответствии с условиями настоящей Лицензии, а также применимого законодательства
+Российской Федерации.
+
+ 10. ЗАКЛЮЧИТЕЛЬНЫЕ ПОЛОЖЕНИЯ.
+
+10.1. В случае нарушения Пользователем любого из условий настоящей Лицензии, Правообладатель имеет
+право взыскать с Пользователя любые причинённые таким нарушением убытки, реальный ущерб,
+недополученную прибыль, упущенную выгоду, а также в случае нарушения Пользователем условий
+пункта 9.2 настоящего соглашения, в том числе, взыскать с Пользователя штраф в размере
+2 000 000 (Два миллиона) рублей за каждый установленный случай несанкционированного изменения
+исходного или объектного кода Программного обеспечения «Энтакси» (Entaxy).
+10.2. В рамках исполнения Пользователем обязательств по настоящей Лицензии, применимое
+законодательство – Российской Федерации.
+10.3. Если какое-либо положение настоящей Лицензии будет признано судом недействительным,
+остальные положения будут продолжать своё действие, а Пользователь будет обязан продолжать
+исполнять свои обязанности в соответствии с этими положениями.
diff --git a/platform-backward-compat/profile-management-service-adapters/pom.xml b/platform-backward-compat/profile-management-service-adapters/pom.xml
new file mode 100644
index 00000000..67c94d15
--- /dev/null
+++ b/platform-backward-compat/profile-management-service-adapters/pom.xml
@@ -0,0 +1,131 @@
+
+
+ 4.0.0
+
+
+ ru.entaxy.platform
+ platform-backward-compat
+ 1.10.0
+
+
+ ru.entaxy.platform.backward-compat
+ profile-management-service-adapters
+ bundle
+
+ ENTAXY :: PLATFORM :: BACKWARD COMPATIBILITY :: PROFILE MANAGEMENT SERVICE ADAPTERS
+ ENTAXY :: PLATFORM :: BACKWARD COMPATIBILITY :: PROFILE MANAGEMENT SERVICE ADAPTERS
+
+
+
+
+
+
+ ru.entaxy.esb.platform.core.management.profile.adapters
+
+
+
+
+
+
+ org.osgi
+ org.osgi.service.component.annotations
+ 1.4.0
+ compile
+
+
+ org.apache.felix
+ org.apache.felix.scr
+ 2.1.20
+
+
+
+ ru.entaxy.esb.platform.runtime.base
+
+ base-support
+ ${project.version}
+
+
+
+ ru.entaxy.esb.platform.runtime.core.management
+ profile-management
+ ${project.version}
+
+
+ ru.entaxy.esb.system.management.profile.manager
+ profile-manager
+ ${project.version}
+
+
+ ru.entaxy.esb.system.registry.systems
+ system-api
+ ${project.version}
+
+
+ ru.entaxy.esb.system.management
+ system-management-api
+ ${project.version}
+
+
+
+ ru.entaxy.esb.system.management.connector.manager
+
+ connector-manager
+ ${project.version}
+
+
+ ru.entaxy.esb.system.management.bundle.jpa
+ bundle-service
+ ${project.version}
+
+
+ ru.entaxy.esb.system.registry.connector
+ connector-api
+ ${project.version}
+
+
+ ru.entaxy.esb.system.registry.connector
+ connector-impl
+ ${project.version}
+
+
+ ru.entaxy.esb.system.core.permission
+ permission-api
+ ${project.version}
+
+
+ ru.entaxy.platform.security.jaas
+ entaxy-legacy-auth-api
+ ${project.version}
+
+
+
+ ru.entaxy.esb.system.management.permission.manager
+
+ permission-manager
+ ${project.version}
+
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+
+ <_dsannotations>*
+
+
+
+
+
+
+
diff --git a/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/AccountManagerAdapter.java b/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/AccountManagerAdapter.java
new file mode 100644
index 00000000..4a8efbed
--- /dev/null
+++ b/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/AccountManagerAdapter.java
@@ -0,0 +1,52 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * profile-management-service-adapters
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.esb.platform.core.management.profile.adapters;
+
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+
+import ru.entaxy.esb.system.auth.basic.jpa.api.BasicAuthService;
+import ru.entaxy.platform.core.management.profile.support.legacy.AccountManager;
+
+@Component(service = AccountManager.class, immediate = true)
+public class AccountManagerAdapter implements AccountManager {
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY)
+ BasicAuthService basicAuthService;
+
+ @Override
+ public String getAccountForSystem(String systemUuid) throws Exception {
+ return basicAuthService.getBySystem(systemUuid).get().getLogin();
+ }
+
+ @Override
+ public void createAccountForSystem(String login, String password, String systemUUID, String createdBy,
+ String editedBy) throws Exception {
+ basicAuthService.saveCommon(login, password, systemUUID, createdBy, editedBy);
+ }
+
+}
diff --git a/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/ConnectorManagerAdapter.java b/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/ConnectorManagerAdapter.java
new file mode 100644
index 00000000..bbf9905e
--- /dev/null
+++ b/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/ConnectorManagerAdapter.java
@@ -0,0 +1,135 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * profile-management-service-adapters
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.esb.platform.core.management.profile.adapters;
+
+import java.util.Map;
+
+import org.osgi.service.component.annotations.CollectionType;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+
+import ru.entaxy.esb.system.connector.entity.Connector;
+import ru.entaxy.esb.system.connector.impl.ConnectorService;
+import ru.entaxy.esb.system.jpa.SystemService;
+import ru.entaxy.esb.system.jpa.entity.System;
+import ru.entaxy.esb.system.management.bundle.jpa.dto.BundleDto;
+import ru.entaxy.esb.system.management.bundle.jpa.dto.BundleStatus;
+import ru.entaxy.esb.system.management.connector.manager.ConnectorManager;
+import ru.entaxy.esb.system.management.connector.manager.dto.ConnectorDto;
+
+@Component(service = ru.entaxy.platform.core.management.profile.support.legacy.ConnectorManager.class, immediate = true)
+public class ConnectorManagerAdapter
+ implements ru.entaxy.platform.core.management.profile.support.legacy.ConnectorManager {
+
+ @Reference(service = ConnectorManager.class, cardinality = ReferenceCardinality.MANDATORY,
+ collectionType = CollectionType.SERVICE)
+ ConnectorManager connectorManager;
+
+ @Reference(service = SystemService.class, cardinality = ReferenceCardinality.MANDATORY,
+ collectionType = CollectionType.SERVICE)
+ SystemService systemService;
+
+ @Reference(service = ConnectorService.class, cardinality = ReferenceCardinality.MANDATORY,
+ collectionType = CollectionType.SERVICE)
+ ConnectorService connectorService;
+
+ @Override
+ public void addConnector(String idOrName, String connectorFactoryId, Map parameters)
+ throws Exception {
+
+ System system = getSystemByIdOrName(idOrName);
+ if (system == null)
+ throw new IllegalArgumentException("System not found by Id or Name [" + idOrName + "]");
+ ConnectorDto connectorDto = new ConnectorDto();
+ connectorDto.setConnectorParams(parameters);
+ connectorDto.setSystemUuid(system.getUuid());
+ connectorDto.setTemplateName(connectorFactoryId);
+
+ // FIXME remove hardcoded
+ connectorDto.setCreatedBy("admin");
+
+ checkBundleResult(connectorManager.installConnector(connectorDto), BundleStatus.ACTIVE);
+
+ }
+
+ @Override
+ public void removeConnector(String idOrName, String connectorName) throws Exception {
+
+ System system = getSystemByIdOrName(idOrName);
+ if (system == null)
+ throw new IllegalArgumentException("System not found by Id or Name [" + idOrName + "]");
+
+ Connector connector = connectorService.getConnectorByName(connectorName);
+ if (connector == null)
+ throw new IllegalArgumentException("Connector not found by Name [" + connectorName + "]");
+
+ checkBundleResult(connectorManager.uninstallConnector(connector), BundleStatus.UNINSTALL);
+ }
+
+ @Override
+ public void startConnector(String idOrName, String connectorName) throws Exception {
+
+ System system = getSystemByIdOrName(idOrName);
+ if (system == null)
+ throw new IllegalArgumentException("System not found by Id or Name [" + idOrName + "]");
+
+ Connector connector = connectorService.getConnectorByName(connectorName);
+ if (connector == null)
+ throw new IllegalArgumentException("Connector not found by Name [" + connectorName + "]");
+
+ checkBundleResult(connectorManager.startConnector(connector), BundleStatus.ACTIVE);
+
+ }
+
+ @Override
+ public void stopConnector(String idOrName, String connectorName) throws Exception {
+
+ System system = getSystemByIdOrName(idOrName);
+ if (system == null)
+ throw new IllegalArgumentException("System not found by Id or Name [" + idOrName + "]");
+
+ Connector connector = connectorService.getConnectorByName(connectorName);
+ if (connector == null)
+ throw new IllegalArgumentException("Connector not found by Name [" + connectorName + "]");
+
+ checkBundleResult(connectorManager.stopConnector(connector), BundleStatus.RESOLVED);
+
+ }
+
+ protected System getSystemByIdOrName(String idOrName) {
+ System result = systemService.getByName(idOrName);
+ if (result == null)
+ result = systemService.getByUuid(idOrName);
+ return result;
+ }
+
+ protected void checkBundleResult(BundleDto bundleDto, BundleStatus expectedStatus) throws Exception {
+ if ((bundleDto == null) || !expectedStatus.equals(bundleDto.getStatus()))
+ throw new Exception("Result bundle is null or in a wrong state");
+
+ }
+}
diff --git a/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/PermissionManagerAdapter.java b/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/PermissionManagerAdapter.java
new file mode 100644
index 00000000..dd4117f7
--- /dev/null
+++ b/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/PermissionManagerAdapter.java
@@ -0,0 +1,114 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * profile-management-service-adapters
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.esb.platform.core.management.profile.adapters;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.osgi.service.component.annotations.CollectionType;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+
+import ru.entaxy.esb.system.core.permission.jpa.PermissionService;
+import ru.entaxy.esb.system.core.permission.jpa.entity.Permission;
+import ru.entaxy.esb.system.jpa.SystemService;
+import ru.entaxy.esb.system.management.permission.manager.dto.PermissionDto;
+import ru.entaxy.platform.core.management.profile.support.legacy.PermissionManager;
+
+@Component(service = PermissionManager.class,
+ immediate = true)
+public class PermissionManagerAdapter implements PermissionManager {
+
+ @Reference(service = ru.entaxy.esb.system.management.permission.manager.PermissionManager.class,
+ cardinality = ReferenceCardinality.MANDATORY,
+ collectionType = CollectionType.SERVICE)
+ ru.entaxy.esb.system.management.permission.manager.PermissionManager permissionManager;
+
+ @Reference(service = PermissionService.class, cardinality = ReferenceCardinality.MANDATORY,
+ collectionType = CollectionType.SERVICE)
+ PermissionService permissionService;
+
+ @Reference(service = SystemService.class, cardinality = ReferenceCardinality.MANDATORY,
+ collectionType = CollectionType.SERVICE)
+ SystemService systemService;
+
+ @Override
+ public List getObjectPermissions(String objectId) throws Exception {
+ ru.entaxy.esb.system.jpa.entity.System system = getRequiredSystemByIdOrName(objectId);
+ List permissions = permissionService.getAllById(system.getId(), "system");
+ long systemId = system.getId();
+ List result = new ArrayList<>();
+ for (Permission perm : permissions) {
+ if (perm.getObjectId() == systemId) {
+ if ("system".equals(perm.getSubjectType())) {
+ ru.entaxy.esb.system.jpa.entity.System s = systemService.get(Long.parseLong(perm.getSubjectId()));
+ if (s != null)
+ result.add(s.getName());
+ }
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public List getSubjectPermissions(String subjectId) throws Exception {
+ ru.entaxy.esb.system.jpa.entity.System system = getRequiredSystemByIdOrName(subjectId);
+ List permissions = permissionService.getAllById(system.getId(), "system");
+ String systemId = system.getId() + "";
+ List result = new ArrayList<>();
+ for (Permission perm : permissions) {
+ if (perm.getSubjectId().equals(systemId)) {
+ ru.entaxy.esb.system.jpa.entity.System s = systemService.get(perm.getObjectId());
+ if (s != null)
+ result.add(s.getName());
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public void createPermission(String objectId, String subjectId) throws Exception {
+ PermissionDto dto = new PermissionDto(objectId, subjectId);
+ permissionManager.createPermission(dto);
+ }
+
+ protected ru.entaxy.esb.system.jpa.entity.System getSystemByIdOrName(String idOrName) {
+ ru.entaxy.esb.system.jpa.entity.System result = systemService.getByName(idOrName);
+ if (result == null)
+ result = systemService.getByUuid(idOrName);
+ return result;
+ }
+
+ protected ru.entaxy.esb.system.jpa.entity.System getRequiredSystemByIdOrName(String idOrName) throws Exception {
+ ru.entaxy.esb.system.jpa.entity.System result = systemService.getByName(idOrName);
+ if (result == null)
+ result = systemService.getByUuid(idOrName);
+ if (result == null)
+ throw new IllegalArgumentException("System not found by Id or Name: [" + idOrName + "]");
+ return result;
+ }
+}
diff --git a/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/ProfileManagerAdapter.java b/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/ProfileManagerAdapter.java
new file mode 100644
index 00000000..4e8204fa
--- /dev/null
+++ b/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/ProfileManagerAdapter.java
@@ -0,0 +1,112 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * profile-management-service-adapters
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.esb.platform.core.management.profile.adapters;
+
+import javax.naming.OperationNotSupportedException;
+
+import org.osgi.service.component.annotations.CollectionType;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+
+import ru.entaxy.esb.system.jpa.SystemService;
+import ru.entaxy.esb.system.jpa.entity.System;
+import ru.entaxy.esb.system.management.profile.manager.ProfileManager;
+import ru.entaxy.esb.system.management.profile.manager.dto.ProfileDto;
+import ru.entaxy.esb.system.management.profile.manager.mapper.ProfileMapper;
+
+@Component(
+ service = {ru.entaxy.platform.core.management.profile.support.legacy.ProfileManager.class}, immediate = true)
+public class ProfileManagerAdapter implements ru.entaxy.platform.core.management.profile.support.legacy.ProfileManager {
+
+ @Reference(service = ProfileManager.class, cardinality = ReferenceCardinality.MANDATORY,
+ collectionType = CollectionType.SERVICE)
+ ProfileManager profileManager;
+
+ @Reference(service = ProfileMapper.class, cardinality = ReferenceCardinality.MANDATORY,
+ collectionType = CollectionType.SERVICE)
+ ProfileMapper profileMapper;
+
+ @Reference(service = SystemService.class, cardinality = ReferenceCardinality.MANDATORY,
+ collectionType = CollectionType.SERVICE)
+ SystemService systemService;
+
+ @Override
+ public void createProfile(String id, String name, String description) throws Exception {
+ ProfileDto dto = new ProfileDto();
+ dto.setUuid(id);
+ dto.setName(name);
+ dto.setDescription(description);
+
+ // TODO get the user name from JMX,
+ // need to investigate, how
+ dto.setCreatedBy("admin");
+
+ profileManager.installProfile(dto);
+ }
+
+ @Override
+ public void startProfile(String idOrName) throws Exception {
+ ProfileDto dto = getProfileForSystem(getSystemByIdOrName(idOrName));
+ if (dto == null)
+ throw new IllegalArgumentException("System/profile not found for [" + idOrName + "]");
+ profileManager.startProfile(dto);
+ }
+
+ @Override
+ public void stopProfile(String idOrName) throws Exception {
+ ProfileDto dto = getProfileForSystem(getSystemByIdOrName(idOrName));
+ if (dto == null)
+ throw new IllegalArgumentException("System/profile not found for [" + idOrName + "]");
+ profileManager.stopProfile(dto);
+ }
+
+ @Override
+ public void uninstallProfile(String idOrName) throws Exception {
+ ProfileDto dto = getProfileForSystem(getSystemByIdOrName(idOrName));
+ if (dto == null)
+ throw new IllegalArgumentException("System/profile not found for [" + idOrName + "]");
+ profileManager.uninstallProfile(dto);
+ }
+
+ @Override
+ public String getProfileConfig(String idOrName) throws Exception {
+ throw new OperationNotSupportedException();
+ }
+
+ protected System getSystemByIdOrName(String idOrName) {
+ System result = systemService.getByName(idOrName);
+ if (result == null)
+ result = systemService.getByUuid(idOrName);
+ return result;
+ }
+
+ protected ProfileDto getProfileForSystem(System system) {
+ if (system == null)
+ return null;
+ return profileMapper.toProfileDto(system);
+ }
+}
diff --git a/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/SystemManagerAdapter.java b/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/SystemManagerAdapter.java
new file mode 100644
index 00000000..684dccd7
--- /dev/null
+++ b/platform-backward-compat/profile-management-service-adapters/src/main/java/ru/entaxy/esb/platform/core/management/profile/adapters/SystemManagerAdapter.java
@@ -0,0 +1,46 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * profile-management-service-adapters
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.esb.platform.core.management.profile.adapters;
+
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+
+import ru.entaxy.esb.system.jpa.SystemService;
+import ru.entaxy.platform.core.management.profile.support.legacy.SystemManager;
+
+@Component(service = SystemManager.class, immediate = true)
+public class SystemManagerAdapter implements SystemManager {
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY)
+ SystemService systemService;
+
+ @Override
+ public String getUUIDbyName(String name) throws Exception {
+ return systemService.getByName(name).getUuid();
+ }
+
+}
diff --git a/platform-backward-compat/profile-storage/LICENSE.txt b/platform-backward-compat/profile-storage/LICENSE.txt
new file mode 100644
index 00000000..4ae94b75
--- /dev/null
+++ b/platform-backward-compat/profile-storage/LICENSE.txt
@@ -0,0 +1,175 @@
+ ЛИЦЕНЗИЯ ОГРАНИЧЕННОГО ПРИМЕНЕНИЯ
+
+Настоящий документ устанавливает для Пользователя условия применения Базовой (некоммерческой)
+версии лицензии для пробного использования программного обеспечения ENTAXY, принадлежащего
+Правообладателю – Обществу с ограниченной ответственностью "ЕМДЕВ" (ОГРН 1057810026658, ИНН
+7813313860, юридический адрес: 197022, Россия, г. Санкт-Петербург, ул. Профессора Попова,
+д. 23, литера В, помещение 3Н), расположенной в сети Интернет по адресу
+https://www.emdev.ru/about (далее - Компания).
+
+Используя или получая доступ к Программному обеспечению, или нажав «Я согласен с Условиями»
+(или аналогичную кнопку или флажок) после загрузки или установки Программного обеспечения,
+Пользователь выражает свое согласие на обязательность условий и ограничений, изложенных в
+настоящем документе, в противном случае, он должен не использовать или не получать доступ
+к Программному обеспечению.
+
+ 1. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
+
+a) ПО – Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) в любой ее версии
+или редакции, исключительные права на которую принадлежат Правообладателю.
+b) Правообладатель (Компания) – ООО «ЕМДЕВ», ОГРН 1057810026658, ИНН 7813313860, исключительные
+права которого подтверждаются Свидетельством о государственной регистрации в Реестре программ
+для ЭВМ № 2021610848 от 19.01.2021 года.
+c) Пользователь – юридическое или физическое лицо, получившее через скачивание с сайта
+https://entaxy.ru или иным образом, дистрибутив ПО, пользующееся ПО.
+d) ИС – интеллектуальная собственность – закреплённое законом исключительное право, а также
+личные неимущественные права авторов произведений на результат интеллектуальной деятельности.
+e) Подписка – это коммерческое предложение Правообладателя, состоящее из Лицензии на использование
+ПО и доступа к технической поддержке программного обеспечения на срок Подписки. Подписка
+включает предоставление Пользователю неисключительного права использования ПО, в том числе
+получение обновлений функционала ПО и безопасности ПО, исправление ошибок ПО и получение
+патчей с обновлениями и исправлениями программного обеспечения. Подписка приобретается
+Пользователем на период времени, указанный в Сертификате. Количество подписок устанавливается
+для каждого Пользователя индивидуально в Сертификате.
+f) Сертификат – документ, выдаваемый Дистрибъютором или Авторизованным партнёром (Партнёром),
+подтверждающий факт приобретения физическим или юридическим лицом Подписки на программное
+обеспечение в ограниченном объёме и на определённый период времени.
+g) Лицензия (простая (неисключительная) – совокупность ограниченных прав использования ПО,
+предоставленных Пользователю согласно условиям Подписки.
+h) Библиотека – совокупность подпрограмм и объектов, используемых для разработки программного
+обеспечения.
+i) Исходный код – текст компьютерной программы на каком-либо языке программирования, состоящий
+из одного или нескольких файлов, который может быть прочтён человеком.
+j) Объектный код – файл (часть машинного кода) с промежуточным представлением отдельного модуля
+программы, полученный в результате обработки исходного кода, еще не связанный в полную программу.
+Это машинный код для одной конкретной библиотеки или модуля, который будет составлять готовый
+продукт.
+k) Некоммерческое использование – индивидуальное личное использование Пользователем программного
+обеспечения с целью обучения работе с Программным обеспечением, для оценки или демонстрации
+возможностей Программного обеспечения, при котором, Пользователем не извлекается коммерческая
+выгода и/или не идёт в доход денежное вознаграждение при использовании Программного обеспечения.
+
+ 2. ДОПУСТИМЫЕ СПОСОБЫ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
+
+2.1. Правообладатель предоставляет Пользователю ограниченное право использования Программного
+обеспечения на условиях простой (неисключительной) лицензии в объёме, ограниченном правом
+воспроизведения полной рабочей версии программного обеспечения, новых версий программного обеспечения
+в памяти оборудования и его запуска на оборудовании в соответствии со ст. 1280 ГК РФ.
+2.2. Право на использование Программного обеспечения, предоставляемое Пользователю, носит
+неисключительный характер.
+2.3. Пользователю предоставляется всемирная, неисключительная, не подлежащая сублицензированию,
+лицензия на ограниченное использование Программного обеспечения.
+2.4. Пользователь, имеющий Базовую (некоммерческую) версию лицензии для пробного использования
+имеет право приобрести Подписку на программное обеспечение. В этом случае Пользователь обязан
+обратиться в службу поддержки Правообладателя по адресу: https://entaxy.ru/ для изменения
+вида лицензии с Базовой бесплатной версии на Подписки.
+2.5. Срок использования скачанной Пользователем базовой (некоммерческой) версии лицензии для
+пробного использования программного обеспечения – не ограничен.
+2.6. Использование Пользователем настоящего программного обеспечения в целях разработки,
+модификации, обновления другого ПО, принадлежащего третьим лицам, а не Правообладателю,
+без разрешения Правообладателя не допускается.
+
+ 3. АВТОРСКОЕ ПРАВО.
+
+3.1. Все авторские права, все права интеллектуальной собственности на Программное обеспечение
+и любые его копии принадлежат Правообладателю.
+3.2. Все авторские права, все права интеллектуальной собственности в отношении любого контента,
+к которому можно получить доступ с помощью Программного обеспечения, является собственностью
+соответствующего владельца контента и защищается применимым законодательством об авторском
+праве или другими законами и договорами об интеллектуальной собственности.
+3.3. Условия использования Программного обеспечения.
+Лицензия, предоставленная Пользователю, действительна только в том случае, если Пользователь
+придерживается следующих условий:
+3.3.1. Принятие уведомлений об авторских правах. Пользователю запрещается удалять или изменять
+какие-либо уведомления об авторских правах или лицензиях, которые появляются при использовании
+Программного обеспечения или на нем.
+3.3.2. Модификация. Пользователю запрещается модифицировать, изменять, декомпилировать,
+расшифровывать, дизассемблировать, переводить или реверсировать, перепроектировать
+Программное обеспечение.
+3.3.3. Распространение. Пользователю запрещается сублицензировать, передавать право использования
+ПО или иным образом распространять или предоставлять Программное обеспечение любой третьей стороне.
+3.3.4. SaaS. За исключением случаев, когда это разрешено Правообладателем, Пользователю запрещено
+использовать Программное обеспечение в коммерческих целях для оказания услуг третьим лицам.
+
+ 4. ОТВЕТСТВЕННОСТЬ ПРАВООБЛАДАТЕЛЯ ПРИ НАРУШЕНИИ ПОЛЬЗОВАТЕЛЕМ ПРАВ «ИС»
+
+4.1. Правообладатель не несет никаких обязательств в отношении каких-либо претензий к Пользователю
+на предмет нарушения последним прав Интеллектуальной собственности, возникших в связи с
+использованием Пользователем:
+4.1.1. Любых компонентов программного обеспечения с открытым исходным кодом, включенных в
+Программное обеспечение;
+4.1.2. Любого нарушения правил использования Программного обеспечения, установленного условиями
+настоящего соглашения;
+4.1.3. Любого использования Программного обеспечения в сочетании с другими ПО, оборудованием,
+или данными, не предоставленными Пользователю Правообладателем;
+4.1.4. Любого изменения Программного обеспечения любым третьим лицом, а не Правообладателем.
+
+
+5. НАСТОЯЩИМ ПРАВООБЛАДАТЕЛЬ ЗАЯВЛЯЕТ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ПОЛЬЗОВАТЕЛЮ
+ПО ПРИНЦИПУ «AS IS» - «КАК ЕСТЬ». НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ НЕ ГАРАНТИРУЕТ
+И НЕ ОБЕЩАЕТ, ЧТО ПРЕДОСТАВЛЕННОЕ ИМ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ПОДХОДИТЬ ИЛИ НЕ ПОДХОДИТЬ
+ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ОТВЕЧАТЬ ВСЕМ КОММЕРЧЕСКИМ
+И ЛИЧНЫМ СУБЪЕКТИВНЫМ ОЖИДАНИЯМ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ РАБОТАТЬ
+ИСПРАВНО, БЕЗ ТЕХНИЧЕСКИХ ОШИБОК, БЫСТРО И БЕСПЕРЕБОЙНО.
+
+ 6. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ.
+НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ ИЛИ ЕГО АФФИЛЛИРОВАННЫЕ ЛИЦА НЕ НЕСУТ ПЕРЕД ПОЛЬЗОВАТЕЛЕМ
+ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ ПОЛЬЗОВАТЕЛЯ, ЕГО РАСХОДЫ ИЛИ РЕАЛЬНЫЙ УЩЕРБ,
+ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПРОСТОИ; УТРАТУ БИЗНЕСА; УПУЩЕННУЮ ВЫГОДУ; НЕДОПОЛУЧЕННУЮ ПРИБЫЛЬ;
+ПОТЕРЮ ИЛИ ПОВРЕЖДЕНИЕ ДАННЫХ, ИМУЩЕСТВА И ИНОЕ.
+ОГРАНИЧЕНИЯ ПРИМЕНЯЮТСЯ НЕЗАВИСИМО ОТ ОСНОВАНИЯ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ; В ТОМ ЧИСЛЕ ВСЛЕДСТВИЕ
+ДЕЙСТВИЯ ИЛИ БЕЗДЕЙСТВИЯ, НЕБРЕЖНОСТИ, УМЫСЛА, ПРЯМОГО ИЛИ КОСВЕННОГО; НЕОСТОРОЖНОСТИ; ЗАБЛУЖДЕНИЯ;
+КЛЕВЕТЫ; НАРУШЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ИЛИ ПРАВА ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ; ИЛИ ЛЮБОЕ ДРУГОЕ
+ОСНОВАНИЕ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ.
+
+ 7. ОБЯЗАННОСТЬ ПОЛЬЗОВАТЕЛЯ:
+Не осуществлять самостоятельно и (или) с привлечением третьих лиц нижеследующие действия
+(включая, но не ограничиваясь) по:
+-дизассемблированию и (или) декомпилированию (преобразованию объектного кода в исходный код)
+ Программного обеспечения;
+-модификации Программного обеспечения, в том числе вносить изменения в объектный код, исходный
+код Программного обеспечения, за исключением тех изменений, которые вносятся средствами,
+включёнными в Программное обеспечение и описанными непосредственно в документации к нему;
+-созданию условий для использования Программного обеспечения лицами, не имеющими прав на
+использование данного Программного обеспечения, включая (но не ограничиваясь) вмешательство
+третьих лиц в функционирование Программного обеспечения, предоставление третьим лицам доступа
+к исследованию и (или) замене настроек Программного обеспечения, включая его первичную установку;
+-распространению Программного обеспечения в целом или в части (включая приложенную к нему документацию).
+
+ 8. БИБЛИОТЕКА ПО. ИСПОЛЬЗУЕМЫЕ ПРОГРАММНЫЕ СРЕДСТВА.
+
+8.1. Настоящим, Правообладатель заверяет, что Библиотека программного обеспечения состоит из
+лицензионных продуктов, используемых на законных основаниях, а
+именно https://entaxy.ru/libs/licenses/root-aggregated.deps.
+8.2. Любые программные средства, применяемые Пользователем при работе с ПО, должны быть
+совместимы с библиотекой ПО, указанной в п.8.1. настоящего соглашения.
+8.3. Перечень внешних модулей ПО, указанный в п.8.1 настоящего соглашения, может изменяться
+Правообладателем в одностороннем порядке, в зависимости от выпуска релизов программного обеспечения,
+содержащих все изменения и дополнения программного обеспечения.
+
+ 9. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
+
+9.1. Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) является свободно распространяемым
+программным обеспечением.
+9.2. Пользователь имеет право вносить изменения в исходный код программного обеспечения исключительно
+с согласия Правообладателя в порядке предложения изменений/правок/дополнений через механизм
+«Pull Requests» в открытом репозитории Правообладателя по адресу: https://git.entaxy.ru/entaxy/entaxy-public.
+9.3. Любые изменения программного обеспечения, осуществляемые Пользователем без соблюдения условий
+пункта 9.2. настоящего документа, являются нарушением авторских и смежных прав Правообладателя,
+прав интеллектуальной собственности Правообладателя и влекут применение к Пользователю мер
+ответственности в соответствии с условиями настоящей Лицензии, а также применимого законодательства
+Российской Федерации.
+
+ 10. ЗАКЛЮЧИТЕЛЬНЫЕ ПОЛОЖЕНИЯ.
+
+10.1. В случае нарушения Пользователем любого из условий настоящей Лицензии, Правообладатель имеет
+право взыскать с Пользователя любые причинённые таким нарушением убытки, реальный ущерб,
+недополученную прибыль, упущенную выгоду, а также в случае нарушения Пользователем условий
+пункта 9.2 настоящего соглашения, в том числе, взыскать с Пользователя штраф в размере
+2 000 000 (Два миллиона) рублей за каждый установленный случай несанкционированного изменения
+исходного или объектного кода Программного обеспечения «Энтакси» (Entaxy).
+10.2. В рамках исполнения Пользователем обязательств по настоящей Лицензии, применимое
+законодательство – Российской Федерации.
+10.3. Если какое-либо положение настоящей Лицензии будет признано судом недействительным,
+остальные положения будут продолжать своё действие, а Пользователь будет обязан продолжать
+исполнять свои обязанности в соответствии с этими положениями.
diff --git a/platform-backward-compat/profile-storage/pom.xml b/platform-backward-compat/profile-storage/pom.xml
new file mode 100644
index 00000000..2f97c6ca
--- /dev/null
+++ b/platform-backward-compat/profile-storage/pom.xml
@@ -0,0 +1,27 @@
+
+ 4.0.0
+
+
+ ru.entaxy.platform
+ platform-backward-compat
+ 1.10.0
+
+
+ ru.entaxy.platform.backward-compat
+ profile-storage
+ bundle
+ ENTAXY :: PLATFORM :: BACKWARD COMPATIBILITY :: PROFILE :: STORAGE
+ ENTAXY :: PLATFORM :: BACKWARD COMPATIBILITY :: PROFILE :: STORAGE
+
+
+ ru.entaxy.platform.base.objects.profile.storage
+
+
+
+
+ ru.entaxy.esb.system.registry.systems
+ system-api
+ ${project.version}
+
+
+
diff --git a/platform-backward-compat/profile-storage/src/main/java/ru/entaxy/platform/base/objects/profile/storage/SystemObjectStorage.java b/platform-backward-compat/profile-storage/src/main/java/ru/entaxy/platform/base/objects/profile/storage/SystemObjectStorage.java
new file mode 100644
index 00000000..c93e714f
--- /dev/null
+++ b/platform-backward-compat/profile-storage/src/main/java/ru/entaxy/platform/base/objects/profile/storage/SystemObjectStorage.java
@@ -0,0 +1,112 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * test-producers
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.base.objects.profile.storage;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.osgi.service.component.annotations.CollectionType;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+
+import ru.entaxy.esb.system.jpa.SystemService;
+import ru.entaxy.esb.system.management.bundle.jpa.entity.BundleEntity;
+import ru.entaxy.platform.base.objects.EntaxyObject;
+import ru.entaxy.platform.base.objects.EntaxyObjectStorage;
+
+@Component(service = EntaxyObjectStorage.class, immediate = true)
+public class SystemObjectStorage implements EntaxyObjectStorage {
+
+ private static final Logger log = LoggerFactory.getLogger(SystemObjectStorage.class);
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY, collectionType = CollectionType.SERVICE)
+ protected SystemService systemService;
+
+ @SuppressWarnings("serial")
+ protected Map fieldMap = new HashMap<>() {
+ {
+ put("uuid", "objectId");
+ put("name", "systemName");
+ put("description", "description");
+ put("version", "artifact.version");
+ put("isDefaultRoute", "useDefaultRoute");
+ }
+ };
+
+ protected Map fieldBundleMap = new HashMap<>() {
+ {
+ put("name", "bundleId");
+ put("type", "artifact.type");
+ put("status", "artifact.status");
+ put("version", "artifact.version");
+ put("url", "bundleLocation");
+ }
+ };
+
+ @Override
+ public String[] getObjectTypes() {
+ return new String[] {EntaxyObject.OBJECT_TYPES.PROFILE};
+ }
+
+ @Override
+ public Object store(Map data) {
+
+ JsonObject jsonObject = new JsonObject();
+ Gson gson = new Gson();
+
+ for (Entry entry : fieldMap.entrySet()) {
+ if (data.containsKey(entry.getValue()))
+ jsonObject.add(entry.getKey(), gson.toJsonTree(data.get(entry.getValue())));
+ }
+ JsonObject bundleJsonObject = new JsonObject();
+ for (Entry entry : fieldBundleMap.entrySet()) {
+ if (data.containsKey(entry.getValue()))
+ bundleJsonObject.add(entry.getKey(), gson.toJsonTree(data.get(entry.getValue())));
+ }
+
+ log.debug("JSON :: " + jsonObject.toString());
+ ru.entaxy.esb.system.jpa.entity.System system =
+ gson.fromJson(jsonObject, ru.entaxy.esb.system.jpa.entity.System.class);
+ system.setCreateDate(new Date());
+ system.setCreatedBy("admin");
+
+ log.debug("JSON Bundle :: " + bundleJsonObject.toString());
+ BundleEntity bundleEntity = gson.fromJson(bundleJsonObject, BundleEntity.class);
+ system.setBundleEntity(bundleEntity);
+ systemService.create(system);
+
+ return null;
+ }
+
+}
diff --git a/platform-backward-compat/src/main/features/features.xml b/platform-backward-compat/src/main/features/features.xml
new file mode 100644
index 00000000..b07e0a01
--- /dev/null
+++ b/platform-backward-compat/src/main/features/features.xml
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+ mvn:ru.entaxy.esb/platform/${project.version}/xml/features
+
+
+
+
+ entaxy-platform
+
+ entaxy-backward-compatibility-resources
+
+ entaxy-bc-system
+
+ entaxy-bc-api
+
+ entaxy-bc-impl
+
+ entaxy-bc-management
+
+ entaxy-bc-modules
+
+
+
+
+
+
+ mvn:ru.entaxy.platform/platform-backward-compat/${project.version}/script/entaxy.bc.shell
+
+
+
+
+
+ entaxy-platform
+
+ mvn:ru.entaxy.esb.system/system-parent/${project.version}/cfg/ru.entaxy.esb
+
+
+ mvn:ru.entaxy.esb.system/system-parent/${project.version}/cfg/org.apache.felix.hc.generalchecks.BundlesStartedCheck-system
+
+ mvn:ru.entaxy.esb.system.commons/system-commons/${project.version}
+ mvn:ru.entaxy.esb.system.core/template/${project.version}
+
+
+
+
+ entaxy-bc-system
+
+ mvn:ru.entaxy.platform.security.jaas/entaxy-legacy-auth-api/${project.version}
+ mvn:ru.entaxy.esb.system.registry.systems/system-api/${project.version}
+ mvn:ru.entaxy.esb.system.registry.connector/connector-api/${project.version}
+
+ mvn:ru.entaxy.esb.system.core.permission/permission-api/${project.version}
+
+
+
+
+
+
+ entaxy-bc-api
+
+ mvn:ru.entaxy.platform.security.jaas/entaxy-legacy-auth/${project.version}
+
+ mvn:ru.entaxy.esb.system.registry.systems/system-impl/${project.version}
+
+ mvn:ru.entaxy.esb.system.registry.connector/connector-impl/${project.version}
+
+ mvn:ru.entaxy.esb.system.core.permission/permission-common/${project.version}
+ mvn:ru.entaxy.esb.system.core.permission/permission-handler/${project.version}
+ mvn:ru.entaxy.esb.system.core.permission/permission-component/${project.version}
+ mvn:ru.entaxy.esb.system.core.permission/permission-impl/${project.version}
+
+
+
+
+
+
+
+ entaxy-bc-api
+ entaxy-bc-impl
+
+ mvn:ru.entaxy.platform.backward-compat/blueprint-generator-service/${project.version}
+
+ mvn:ru.entaxy.esb.system.core.dispatcher/dispatcher/${project.version}
+ mvn:ru.entaxy.esb.system.management.bundle.jpa/bundle-service/${project.version}
+
+ mvn:ru.entaxy.esb.system.management.bundle.manager/bundle-manager/${project.version}
+ mvn:ru.entaxy.esb.system.management.connector.manager/connector-manager/${project.version}
+
+ mvn:ru.entaxy.esb.system.management.profile.manager/profile-manager/${project.version}
+ mvn:ru.entaxy.esb.system.management.bridge.profile.manager/bridge-profile-manager/${project.version}
+ mvn:ru.entaxy.esb.system.management.route.manager/route-manager/${project.version}
+
+ mvn:ru.entaxy.esb.system.management.permission.manager/permission-manager/${project.version}
+ mvn:ru.entaxy.esb.system.auth.basic.htpasswd/htpasswd/${project.version}
+
+ mvn:ru.entaxy.esb.system.management/system-management-api/${project.version}
+
+
+
+
+
+ mvn:ru.entaxy.platform.backward-compat/profile-management-service-adapters/${project.version}
+ mvn:ru.entaxy.platform.backward-compat/profile-storage/${project.version}
+ mvn:ru.entaxy.platform.backward-compat/connector-storage/${project.version}
+
+
+
diff --git a/platform-backward-compat/src/main/scripts/entaxy.bc.shell.script b/platform-backward-compat/src/main/scripts/entaxy.bc.shell.script
new file mode 100644
index 00000000..4544abbe
--- /dev/null
+++ b/platform-backward-compat/src/main/scripts/entaxy.bc.shell.script
@@ -0,0 +1,60 @@
+entaxy:back-comp = {
+
+ service = (service:get org.apache.karaf.features.FeaturesService)
+
+ if { $1'' equals "install" } {
+
+ # check repo
+ _repo = (feature:repo-list | grep ru.entaxy.platform/platform-backward-compat)
+ _repo_length = ($_repo length)
+ if { $_repo_length'' equals "0" } {
+ echo "Installing feature repo ru.entaxy.platform/platform-backward-compat/${project.version}"
+ feature:repo-add mvn:ru.entaxy.platform/platform-backward-compat/${project.version}/xml/features
+ }
+
+ _platform_feature = ($service getFeature entaxy-platform)
+ _feature_id = $_platform_feature getId
+ _status = ($service getState $_feature_id) toString
+
+ if { $_status equals "Uninstalled" } {
+ echo "Entaxy Platform not found, installation aborted"
+ } else {
+ _bc_feature = ($service getFeature entaxy-backward-compatibility-modules)
+ _feature_id = $_bc_feature getId
+ _status = ($service getState $_feature_id) toString
+
+ if { $_status equals "Uninstalled" } {
+ echo "Installing feature 'entaxy-backward-compatibility-modules'"
+ feature:install -r -v entaxy-backward-compatibility-modules
+ echo
+ echo " --> DONE"
+ } else {
+ echo "Feature 'entaxy-backward-compatibility-modules' is already installed"
+ }
+
+ }
+
+ } else {
+ if { $1'' equals "uninstall" } {
+ echo "Uninstalling feature 'entaxy-backward-compatibility-modules'"
+ feature:uninstall -r -v entaxy-backward-compatibility-modules
+ echo
+ echo " --> DONE"
+ } else {
+
+ _bc_feature = ($service getFeature entaxy-backward-compatibility-modules)
+ _feature_id = $_bc_feature getId
+ _status = ($service getState $_feature_id) toString
+
+ if { $_status equals "Uninstalled" } {
+ echo
+ echo " --> UNINSTALLED"
+ } else {
+ echo
+ echo " --> INSTALLED"
+ }
+
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/platform-backward-compat/src/main/scripts/generated/fragments.xml b/platform-backward-compat/src/main/scripts/generated/fragments.xml
new file mode 100644
index 00000000..39f396e1
--- /dev/null
+++ b/platform-backward-compat/src/main/scripts/generated/fragments.xml
@@ -0,0 +1,5 @@
+
+
+ mvn:ru.entaxy.platform/platform-backward-compat/1.10.0/script/entaxy.bc.shell
+
+
\ No newline at end of file
diff --git a/platform-provided-modules/LICENSE.txt b/platform-provided-modules/LICENSE.txt
new file mode 100644
index 00000000..4ae94b75
--- /dev/null
+++ b/platform-provided-modules/LICENSE.txt
@@ -0,0 +1,175 @@
+ ЛИЦЕНЗИЯ ОГРАНИЧЕННОГО ПРИМЕНЕНИЯ
+
+Настоящий документ устанавливает для Пользователя условия применения Базовой (некоммерческой)
+версии лицензии для пробного использования программного обеспечения ENTAXY, принадлежащего
+Правообладателю – Обществу с ограниченной ответственностью "ЕМДЕВ" (ОГРН 1057810026658, ИНН
+7813313860, юридический адрес: 197022, Россия, г. Санкт-Петербург, ул. Профессора Попова,
+д. 23, литера В, помещение 3Н), расположенной в сети Интернет по адресу
+https://www.emdev.ru/about (далее - Компания).
+
+Используя или получая доступ к Программному обеспечению, или нажав «Я согласен с Условиями»
+(или аналогичную кнопку или флажок) после загрузки или установки Программного обеспечения,
+Пользователь выражает свое согласие на обязательность условий и ограничений, изложенных в
+настоящем документе, в противном случае, он должен не использовать или не получать доступ
+к Программному обеспечению.
+
+ 1. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
+
+a) ПО – Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) в любой ее версии
+или редакции, исключительные права на которую принадлежат Правообладателю.
+b) Правообладатель (Компания) – ООО «ЕМДЕВ», ОГРН 1057810026658, ИНН 7813313860, исключительные
+права которого подтверждаются Свидетельством о государственной регистрации в Реестре программ
+для ЭВМ № 2021610848 от 19.01.2021 года.
+c) Пользователь – юридическое или физическое лицо, получившее через скачивание с сайта
+https://entaxy.ru или иным образом, дистрибутив ПО, пользующееся ПО.
+d) ИС – интеллектуальная собственность – закреплённое законом исключительное право, а также
+личные неимущественные права авторов произведений на результат интеллектуальной деятельности.
+e) Подписка – это коммерческое предложение Правообладателя, состоящее из Лицензии на использование
+ПО и доступа к технической поддержке программного обеспечения на срок Подписки. Подписка
+включает предоставление Пользователю неисключительного права использования ПО, в том числе
+получение обновлений функционала ПО и безопасности ПО, исправление ошибок ПО и получение
+патчей с обновлениями и исправлениями программного обеспечения. Подписка приобретается
+Пользователем на период времени, указанный в Сертификате. Количество подписок устанавливается
+для каждого Пользователя индивидуально в Сертификате.
+f) Сертификат – документ, выдаваемый Дистрибъютором или Авторизованным партнёром (Партнёром),
+подтверждающий факт приобретения физическим или юридическим лицом Подписки на программное
+обеспечение в ограниченном объёме и на определённый период времени.
+g) Лицензия (простая (неисключительная) – совокупность ограниченных прав использования ПО,
+предоставленных Пользователю согласно условиям Подписки.
+h) Библиотека – совокупность подпрограмм и объектов, используемых для разработки программного
+обеспечения.
+i) Исходный код – текст компьютерной программы на каком-либо языке программирования, состоящий
+из одного или нескольких файлов, который может быть прочтён человеком.
+j) Объектный код – файл (часть машинного кода) с промежуточным представлением отдельного модуля
+программы, полученный в результате обработки исходного кода, еще не связанный в полную программу.
+Это машинный код для одной конкретной библиотеки или модуля, который будет составлять готовый
+продукт.
+k) Некоммерческое использование – индивидуальное личное использование Пользователем программного
+обеспечения с целью обучения работе с Программным обеспечением, для оценки или демонстрации
+возможностей Программного обеспечения, при котором, Пользователем не извлекается коммерческая
+выгода и/или не идёт в доход денежное вознаграждение при использовании Программного обеспечения.
+
+ 2. ДОПУСТИМЫЕ СПОСОБЫ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
+
+2.1. Правообладатель предоставляет Пользователю ограниченное право использования Программного
+обеспечения на условиях простой (неисключительной) лицензии в объёме, ограниченном правом
+воспроизведения полной рабочей версии программного обеспечения, новых версий программного обеспечения
+в памяти оборудования и его запуска на оборудовании в соответствии со ст. 1280 ГК РФ.
+2.2. Право на использование Программного обеспечения, предоставляемое Пользователю, носит
+неисключительный характер.
+2.3. Пользователю предоставляется всемирная, неисключительная, не подлежащая сублицензированию,
+лицензия на ограниченное использование Программного обеспечения.
+2.4. Пользователь, имеющий Базовую (некоммерческую) версию лицензии для пробного использования
+имеет право приобрести Подписку на программное обеспечение. В этом случае Пользователь обязан
+обратиться в службу поддержки Правообладателя по адресу: https://entaxy.ru/ для изменения
+вида лицензии с Базовой бесплатной версии на Подписки.
+2.5. Срок использования скачанной Пользователем базовой (некоммерческой) версии лицензии для
+пробного использования программного обеспечения – не ограничен.
+2.6. Использование Пользователем настоящего программного обеспечения в целях разработки,
+модификации, обновления другого ПО, принадлежащего третьим лицам, а не Правообладателю,
+без разрешения Правообладателя не допускается.
+
+ 3. АВТОРСКОЕ ПРАВО.
+
+3.1. Все авторские права, все права интеллектуальной собственности на Программное обеспечение
+и любые его копии принадлежат Правообладателю.
+3.2. Все авторские права, все права интеллектуальной собственности в отношении любого контента,
+к которому можно получить доступ с помощью Программного обеспечения, является собственностью
+соответствующего владельца контента и защищается применимым законодательством об авторском
+праве или другими законами и договорами об интеллектуальной собственности.
+3.3. Условия использования Программного обеспечения.
+Лицензия, предоставленная Пользователю, действительна только в том случае, если Пользователь
+придерживается следующих условий:
+3.3.1. Принятие уведомлений об авторских правах. Пользователю запрещается удалять или изменять
+какие-либо уведомления об авторских правах или лицензиях, которые появляются при использовании
+Программного обеспечения или на нем.
+3.3.2. Модификация. Пользователю запрещается модифицировать, изменять, декомпилировать,
+расшифровывать, дизассемблировать, переводить или реверсировать, перепроектировать
+Программное обеспечение.
+3.3.3. Распространение. Пользователю запрещается сублицензировать, передавать право использования
+ПО или иным образом распространять или предоставлять Программное обеспечение любой третьей стороне.
+3.3.4. SaaS. За исключением случаев, когда это разрешено Правообладателем, Пользователю запрещено
+использовать Программное обеспечение в коммерческих целях для оказания услуг третьим лицам.
+
+ 4. ОТВЕТСТВЕННОСТЬ ПРАВООБЛАДАТЕЛЯ ПРИ НАРУШЕНИИ ПОЛЬЗОВАТЕЛЕМ ПРАВ «ИС»
+
+4.1. Правообладатель не несет никаких обязательств в отношении каких-либо претензий к Пользователю
+на предмет нарушения последним прав Интеллектуальной собственности, возникших в связи с
+использованием Пользователем:
+4.1.1. Любых компонентов программного обеспечения с открытым исходным кодом, включенных в
+Программное обеспечение;
+4.1.2. Любого нарушения правил использования Программного обеспечения, установленного условиями
+настоящего соглашения;
+4.1.3. Любого использования Программного обеспечения в сочетании с другими ПО, оборудованием,
+или данными, не предоставленными Пользователю Правообладателем;
+4.1.4. Любого изменения Программного обеспечения любым третьим лицом, а не Правообладателем.
+
+
+5. НАСТОЯЩИМ ПРАВООБЛАДАТЕЛЬ ЗАЯВЛЯЕТ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ПОЛЬЗОВАТЕЛЮ
+ПО ПРИНЦИПУ «AS IS» - «КАК ЕСТЬ». НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ НЕ ГАРАНТИРУЕТ
+И НЕ ОБЕЩАЕТ, ЧТО ПРЕДОСТАВЛЕННОЕ ИМ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ПОДХОДИТЬ ИЛИ НЕ ПОДХОДИТЬ
+ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ОТВЕЧАТЬ ВСЕМ КОММЕРЧЕСКИМ
+И ЛИЧНЫМ СУБЪЕКТИВНЫМ ОЖИДАНИЯМ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ РАБОТАТЬ
+ИСПРАВНО, БЕЗ ТЕХНИЧЕСКИХ ОШИБОК, БЫСТРО И БЕСПЕРЕБОЙНО.
+
+ 6. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ.
+НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ ИЛИ ЕГО АФФИЛЛИРОВАННЫЕ ЛИЦА НЕ НЕСУТ ПЕРЕД ПОЛЬЗОВАТЕЛЕМ
+ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ ПОЛЬЗОВАТЕЛЯ, ЕГО РАСХОДЫ ИЛИ РЕАЛЬНЫЙ УЩЕРБ,
+ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПРОСТОИ; УТРАТУ БИЗНЕСА; УПУЩЕННУЮ ВЫГОДУ; НЕДОПОЛУЧЕННУЮ ПРИБЫЛЬ;
+ПОТЕРЮ ИЛИ ПОВРЕЖДЕНИЕ ДАННЫХ, ИМУЩЕСТВА И ИНОЕ.
+ОГРАНИЧЕНИЯ ПРИМЕНЯЮТСЯ НЕЗАВИСИМО ОТ ОСНОВАНИЯ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ; В ТОМ ЧИСЛЕ ВСЛЕДСТВИЕ
+ДЕЙСТВИЯ ИЛИ БЕЗДЕЙСТВИЯ, НЕБРЕЖНОСТИ, УМЫСЛА, ПРЯМОГО ИЛИ КОСВЕННОГО; НЕОСТОРОЖНОСТИ; ЗАБЛУЖДЕНИЯ;
+КЛЕВЕТЫ; НАРУШЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ИЛИ ПРАВА ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ; ИЛИ ЛЮБОЕ ДРУГОЕ
+ОСНОВАНИЕ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ.
+
+ 7. ОБЯЗАННОСТЬ ПОЛЬЗОВАТЕЛЯ:
+Не осуществлять самостоятельно и (или) с привлечением третьих лиц нижеследующие действия
+(включая, но не ограничиваясь) по:
+-дизассемблированию и (или) декомпилированию (преобразованию объектного кода в исходный код)
+ Программного обеспечения;
+-модификации Программного обеспечения, в том числе вносить изменения в объектный код, исходный
+код Программного обеспечения, за исключением тех изменений, которые вносятся средствами,
+включёнными в Программное обеспечение и описанными непосредственно в документации к нему;
+-созданию условий для использования Программного обеспечения лицами, не имеющими прав на
+использование данного Программного обеспечения, включая (но не ограничиваясь) вмешательство
+третьих лиц в функционирование Программного обеспечения, предоставление третьим лицам доступа
+к исследованию и (или) замене настроек Программного обеспечения, включая его первичную установку;
+-распространению Программного обеспечения в целом или в части (включая приложенную к нему документацию).
+
+ 8. БИБЛИОТЕКА ПО. ИСПОЛЬЗУЕМЫЕ ПРОГРАММНЫЕ СРЕДСТВА.
+
+8.1. Настоящим, Правообладатель заверяет, что Библиотека программного обеспечения состоит из
+лицензионных продуктов, используемых на законных основаниях, а
+именно https://entaxy.ru/libs/licenses/root-aggregated.deps.
+8.2. Любые программные средства, применяемые Пользователем при работе с ПО, должны быть
+совместимы с библиотекой ПО, указанной в п.8.1. настоящего соглашения.
+8.3. Перечень внешних модулей ПО, указанный в п.8.1 настоящего соглашения, может изменяться
+Правообладателем в одностороннем порядке, в зависимости от выпуска релизов программного обеспечения,
+содержащих все изменения и дополнения программного обеспечения.
+
+ 9. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
+
+9.1. Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) является свободно распространяемым
+программным обеспечением.
+9.2. Пользователь имеет право вносить изменения в исходный код программного обеспечения исключительно
+с согласия Правообладателя в порядке предложения изменений/правок/дополнений через механизм
+«Pull Requests» в открытом репозитории Правообладателя по адресу: https://git.entaxy.ru/entaxy/entaxy-public.
+9.3. Любые изменения программного обеспечения, осуществляемые Пользователем без соблюдения условий
+пункта 9.2. настоящего документа, являются нарушением авторских и смежных прав Правообладателя,
+прав интеллектуальной собственности Правообладателя и влекут применение к Пользователю мер
+ответственности в соответствии с условиями настоящей Лицензии, а также применимого законодательства
+Российской Федерации.
+
+ 10. ЗАКЛЮЧИТЕЛЬНЫЕ ПОЛОЖЕНИЯ.
+
+10.1. В случае нарушения Пользователем любого из условий настоящей Лицензии, Правообладатель имеет
+право взыскать с Пользователя любые причинённые таким нарушением убытки, реальный ущерб,
+недополученную прибыль, упущенную выгоду, а также в случае нарушения Пользователем условий
+пункта 9.2 настоящего соглашения, в том числе, взыскать с Пользователя штраф в размере
+2 000 000 (Два миллиона) рублей за каждый установленный случай несанкционированного изменения
+исходного или объектного кода Программного обеспечения «Энтакси» (Entaxy).
+10.2. В рамках исполнения Пользователем обязательств по настоящей Лицензии, применимое
+законодательство – Российской Федерации.
+10.3. Если какое-либо положение настоящей Лицензии будет признано судом недействительным,
+остальные положения будут продолжать своё действие, а Пользователь будет обязан продолжать
+исполнять свои обязанности в соответствии с этими положениями.
diff --git a/platform-provided-modules/pom.xml b/platform-provided-modules/pom.xml
new file mode 100644
index 00000000..3375ac21
--- /dev/null
+++ b/platform-provided-modules/pom.xml
@@ -0,0 +1,91 @@
+
+ 4.0.0
+
+ ru.entaxy.esb
+ root
+ 1.10.0
+
+ ru.entaxy
+ platform-provided-modules
+ pom
+ ENTAXY :: PLATFORM PROVIDED MODULES
+ ENTAXY :: PLATFORM PROVIDED MODULES
+
+
+
+
+
+ src/main/provided
+ true
+ ${project.build.directory}/provided
+
+
+ src/main/support
+ true
+ ${project.build.directory}/support
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ ${build-helper-maven-plugin.version}
+
+
+ attach-provided
+
+ attach-artifact
+
+
+
+
+
+
+ ${project.build.directory}/provided/ui.xml
+
+ xml
+ ui
+
+
+ ${project.build.directory}/support/ui/collect-ui-features.xslt
+
+ xslt
+ collect-ui-features
+
+
+ ${project.build.directory}/support/ui/process-ui-modules.xslt
+
+ xslt
+ process-ui-modules
+
+
+
+
+
+ maven-install-plugin
+
+
+ install-provided-modules-data
+ package
+
+ install-file
+
+
+ ${platform.provided.groupId}
+ ${platform.provided.data.artifactId}
+ ${project.version}
+ ui
+ xml
+ false
+ ${project.build.directory}/provided/ui.xml
+
+
+
+
+
+
+
+
+
diff --git a/platform-provided-modules/src/main/provided/ui.xml b/platform-provided-modules/src/main/provided/ui.xml
new file mode 100644
index 00000000..4bf27688
--- /dev/null
+++ b/platform-provided-modules/src/main/provided/ui.xml
@@ -0,0 +1,27 @@
+
+
+
diff --git a/platform-provided-modules/src/main/support/ui/collect-ui-features.xslt b/platform-provided-modules/src/main/support/ui/collect-ui-features.xslt
new file mode 100644
index 00000000..731c4ca6
--- /dev/null
+++ b/platform-provided-modules/src/main/support/ui/collect-ui-features.xslt
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]>]]>
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/platform-provided-modules/src/main/support/ui/process-ui-modules.xslt b/platform-provided-modules/src/main/support/ui/process-ui-modules.xslt
new file mode 100644
index 00000000..9cf5979d
--- /dev/null
+++ b/platform-provided-modules/src/main/support/ui/process-ui-modules.xslt
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/platform/integration/LICENSE.txt b/platform/integration/LICENSE.txt
new file mode 100644
index 00000000..4ae94b75
--- /dev/null
+++ b/platform/integration/LICENSE.txt
@@ -0,0 +1,175 @@
+ ЛИЦЕНЗИЯ ОГРАНИЧЕННОГО ПРИМЕНЕНИЯ
+
+Настоящий документ устанавливает для Пользователя условия применения Базовой (некоммерческой)
+версии лицензии для пробного использования программного обеспечения ENTAXY, принадлежащего
+Правообладателю – Обществу с ограниченной ответственностью "ЕМДЕВ" (ОГРН 1057810026658, ИНН
+7813313860, юридический адрес: 197022, Россия, г. Санкт-Петербург, ул. Профессора Попова,
+д. 23, литера В, помещение 3Н), расположенной в сети Интернет по адресу
+https://www.emdev.ru/about (далее - Компания).
+
+Используя или получая доступ к Программному обеспечению, или нажав «Я согласен с Условиями»
+(или аналогичную кнопку или флажок) после загрузки или установки Программного обеспечения,
+Пользователь выражает свое согласие на обязательность условий и ограничений, изложенных в
+настоящем документе, в противном случае, он должен не использовать или не получать доступ
+к Программному обеспечению.
+
+ 1. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
+
+a) ПО – Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) в любой ее версии
+или редакции, исключительные права на которую принадлежат Правообладателю.
+b) Правообладатель (Компания) – ООО «ЕМДЕВ», ОГРН 1057810026658, ИНН 7813313860, исключительные
+права которого подтверждаются Свидетельством о государственной регистрации в Реестре программ
+для ЭВМ № 2021610848 от 19.01.2021 года.
+c) Пользователь – юридическое или физическое лицо, получившее через скачивание с сайта
+https://entaxy.ru или иным образом, дистрибутив ПО, пользующееся ПО.
+d) ИС – интеллектуальная собственность – закреплённое законом исключительное право, а также
+личные неимущественные права авторов произведений на результат интеллектуальной деятельности.
+e) Подписка – это коммерческое предложение Правообладателя, состоящее из Лицензии на использование
+ПО и доступа к технической поддержке программного обеспечения на срок Подписки. Подписка
+включает предоставление Пользователю неисключительного права использования ПО, в том числе
+получение обновлений функционала ПО и безопасности ПО, исправление ошибок ПО и получение
+патчей с обновлениями и исправлениями программного обеспечения. Подписка приобретается
+Пользователем на период времени, указанный в Сертификате. Количество подписок устанавливается
+для каждого Пользователя индивидуально в Сертификате.
+f) Сертификат – документ, выдаваемый Дистрибъютором или Авторизованным партнёром (Партнёром),
+подтверждающий факт приобретения физическим или юридическим лицом Подписки на программное
+обеспечение в ограниченном объёме и на определённый период времени.
+g) Лицензия (простая (неисключительная) – совокупность ограниченных прав использования ПО,
+предоставленных Пользователю согласно условиям Подписки.
+h) Библиотека – совокупность подпрограмм и объектов, используемых для разработки программного
+обеспечения.
+i) Исходный код – текст компьютерной программы на каком-либо языке программирования, состоящий
+из одного или нескольких файлов, который может быть прочтён человеком.
+j) Объектный код – файл (часть машинного кода) с промежуточным представлением отдельного модуля
+программы, полученный в результате обработки исходного кода, еще не связанный в полную программу.
+Это машинный код для одной конкретной библиотеки или модуля, который будет составлять готовый
+продукт.
+k) Некоммерческое использование – индивидуальное личное использование Пользователем программного
+обеспечения с целью обучения работе с Программным обеспечением, для оценки или демонстрации
+возможностей Программного обеспечения, при котором, Пользователем не извлекается коммерческая
+выгода и/или не идёт в доход денежное вознаграждение при использовании Программного обеспечения.
+
+ 2. ДОПУСТИМЫЕ СПОСОБЫ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
+
+2.1. Правообладатель предоставляет Пользователю ограниченное право использования Программного
+обеспечения на условиях простой (неисключительной) лицензии в объёме, ограниченном правом
+воспроизведения полной рабочей версии программного обеспечения, новых версий программного обеспечения
+в памяти оборудования и его запуска на оборудовании в соответствии со ст. 1280 ГК РФ.
+2.2. Право на использование Программного обеспечения, предоставляемое Пользователю, носит
+неисключительный характер.
+2.3. Пользователю предоставляется всемирная, неисключительная, не подлежащая сублицензированию,
+лицензия на ограниченное использование Программного обеспечения.
+2.4. Пользователь, имеющий Базовую (некоммерческую) версию лицензии для пробного использования
+имеет право приобрести Подписку на программное обеспечение. В этом случае Пользователь обязан
+обратиться в службу поддержки Правообладателя по адресу: https://entaxy.ru/ для изменения
+вида лицензии с Базовой бесплатной версии на Подписки.
+2.5. Срок использования скачанной Пользователем базовой (некоммерческой) версии лицензии для
+пробного использования программного обеспечения – не ограничен.
+2.6. Использование Пользователем настоящего программного обеспечения в целях разработки,
+модификации, обновления другого ПО, принадлежащего третьим лицам, а не Правообладателю,
+без разрешения Правообладателя не допускается.
+
+ 3. АВТОРСКОЕ ПРАВО.
+
+3.1. Все авторские права, все права интеллектуальной собственности на Программное обеспечение
+и любые его копии принадлежат Правообладателю.
+3.2. Все авторские права, все права интеллектуальной собственности в отношении любого контента,
+к которому можно получить доступ с помощью Программного обеспечения, является собственностью
+соответствующего владельца контента и защищается применимым законодательством об авторском
+праве или другими законами и договорами об интеллектуальной собственности.
+3.3. Условия использования Программного обеспечения.
+Лицензия, предоставленная Пользователю, действительна только в том случае, если Пользователь
+придерживается следующих условий:
+3.3.1. Принятие уведомлений об авторских правах. Пользователю запрещается удалять или изменять
+какие-либо уведомления об авторских правах или лицензиях, которые появляются при использовании
+Программного обеспечения или на нем.
+3.3.2. Модификация. Пользователю запрещается модифицировать, изменять, декомпилировать,
+расшифровывать, дизассемблировать, переводить или реверсировать, перепроектировать
+Программное обеспечение.
+3.3.3. Распространение. Пользователю запрещается сублицензировать, передавать право использования
+ПО или иным образом распространять или предоставлять Программное обеспечение любой третьей стороне.
+3.3.4. SaaS. За исключением случаев, когда это разрешено Правообладателем, Пользователю запрещено
+использовать Программное обеспечение в коммерческих целях для оказания услуг третьим лицам.
+
+ 4. ОТВЕТСТВЕННОСТЬ ПРАВООБЛАДАТЕЛЯ ПРИ НАРУШЕНИИ ПОЛЬЗОВАТЕЛЕМ ПРАВ «ИС»
+
+4.1. Правообладатель не несет никаких обязательств в отношении каких-либо претензий к Пользователю
+на предмет нарушения последним прав Интеллектуальной собственности, возникших в связи с
+использованием Пользователем:
+4.1.1. Любых компонентов программного обеспечения с открытым исходным кодом, включенных в
+Программное обеспечение;
+4.1.2. Любого нарушения правил использования Программного обеспечения, установленного условиями
+настоящего соглашения;
+4.1.3. Любого использования Программного обеспечения в сочетании с другими ПО, оборудованием,
+или данными, не предоставленными Пользователю Правообладателем;
+4.1.4. Любого изменения Программного обеспечения любым третьим лицом, а не Правообладателем.
+
+
+5. НАСТОЯЩИМ ПРАВООБЛАДАТЕЛЬ ЗАЯВЛЯЕТ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ПОЛЬЗОВАТЕЛЮ
+ПО ПРИНЦИПУ «AS IS» - «КАК ЕСТЬ». НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ НЕ ГАРАНТИРУЕТ
+И НЕ ОБЕЩАЕТ, ЧТО ПРЕДОСТАВЛЕННОЕ ИМ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ПОДХОДИТЬ ИЛИ НЕ ПОДХОДИТЬ
+ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ОТВЕЧАТЬ ВСЕМ КОММЕРЧЕСКИМ
+И ЛИЧНЫМ СУБЪЕКТИВНЫМ ОЖИДАНИЯМ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ РАБОТАТЬ
+ИСПРАВНО, БЕЗ ТЕХНИЧЕСКИХ ОШИБОК, БЫСТРО И БЕСПЕРЕБОЙНО.
+
+ 6. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ.
+НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ ИЛИ ЕГО АФФИЛЛИРОВАННЫЕ ЛИЦА НЕ НЕСУТ ПЕРЕД ПОЛЬЗОВАТЕЛЕМ
+ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ ПОЛЬЗОВАТЕЛЯ, ЕГО РАСХОДЫ ИЛИ РЕАЛЬНЫЙ УЩЕРБ,
+ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПРОСТОИ; УТРАТУ БИЗНЕСА; УПУЩЕННУЮ ВЫГОДУ; НЕДОПОЛУЧЕННУЮ ПРИБЫЛЬ;
+ПОТЕРЮ ИЛИ ПОВРЕЖДЕНИЕ ДАННЫХ, ИМУЩЕСТВА И ИНОЕ.
+ОГРАНИЧЕНИЯ ПРИМЕНЯЮТСЯ НЕЗАВИСИМО ОТ ОСНОВАНИЯ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ; В ТОМ ЧИСЛЕ ВСЛЕДСТВИЕ
+ДЕЙСТВИЯ ИЛИ БЕЗДЕЙСТВИЯ, НЕБРЕЖНОСТИ, УМЫСЛА, ПРЯМОГО ИЛИ КОСВЕННОГО; НЕОСТОРОЖНОСТИ; ЗАБЛУЖДЕНИЯ;
+КЛЕВЕТЫ; НАРУШЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ИЛИ ПРАВА ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ; ИЛИ ЛЮБОЕ ДРУГОЕ
+ОСНОВАНИЕ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ.
+
+ 7. ОБЯЗАННОСТЬ ПОЛЬЗОВАТЕЛЯ:
+Не осуществлять самостоятельно и (или) с привлечением третьих лиц нижеследующие действия
+(включая, но не ограничиваясь) по:
+-дизассемблированию и (или) декомпилированию (преобразованию объектного кода в исходный код)
+ Программного обеспечения;
+-модификации Программного обеспечения, в том числе вносить изменения в объектный код, исходный
+код Программного обеспечения, за исключением тех изменений, которые вносятся средствами,
+включёнными в Программное обеспечение и описанными непосредственно в документации к нему;
+-созданию условий для использования Программного обеспечения лицами, не имеющими прав на
+использование данного Программного обеспечения, включая (но не ограничиваясь) вмешательство
+третьих лиц в функционирование Программного обеспечения, предоставление третьим лицам доступа
+к исследованию и (или) замене настроек Программного обеспечения, включая его первичную установку;
+-распространению Программного обеспечения в целом или в части (включая приложенную к нему документацию).
+
+ 8. БИБЛИОТЕКА ПО. ИСПОЛЬЗУЕМЫЕ ПРОГРАММНЫЕ СРЕДСТВА.
+
+8.1. Настоящим, Правообладатель заверяет, что Библиотека программного обеспечения состоит из
+лицензионных продуктов, используемых на законных основаниях, а
+именно https://entaxy.ru/libs/licenses/root-aggregated.deps.
+8.2. Любые программные средства, применяемые Пользователем при работе с ПО, должны быть
+совместимы с библиотекой ПО, указанной в п.8.1. настоящего соглашения.
+8.3. Перечень внешних модулей ПО, указанный в п.8.1 настоящего соглашения, может изменяться
+Правообладателем в одностороннем порядке, в зависимости от выпуска релизов программного обеспечения,
+содержащих все изменения и дополнения программного обеспечения.
+
+ 9. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
+
+9.1. Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) является свободно распространяемым
+программным обеспечением.
+9.2. Пользователь имеет право вносить изменения в исходный код программного обеспечения исключительно
+с согласия Правообладателя в порядке предложения изменений/правок/дополнений через механизм
+«Pull Requests» в открытом репозитории Правообладателя по адресу: https://git.entaxy.ru/entaxy/entaxy-public.
+9.3. Любые изменения программного обеспечения, осуществляемые Пользователем без соблюдения условий
+пункта 9.2. настоящего документа, являются нарушением авторских и смежных прав Правообладателя,
+прав интеллектуальной собственности Правообладателя и влекут применение к Пользователю мер
+ответственности в соответствии с условиями настоящей Лицензии, а также применимого законодательства
+Российской Федерации.
+
+ 10. ЗАКЛЮЧИТЕЛЬНЫЕ ПОЛОЖЕНИЯ.
+
+10.1. В случае нарушения Пользователем любого из условий настоящей Лицензии, Правообладатель имеет
+право взыскать с Пользователя любые причинённые таким нарушением убытки, реальный ущерб,
+недополученную прибыль, упущенную выгоду, а также в случае нарушения Пользователем условий
+пункта 9.2 настоящего соглашения, в том числе, взыскать с Пользователя штраф в размере
+2 000 000 (Два миллиона) рублей за каждый установленный случай несанкционированного изменения
+исходного или объектного кода Программного обеспечения «Энтакси» (Entaxy).
+10.2. В рамках исполнения Пользователем обязательств по настоящей Лицензии, применимое
+законодательство – Российской Федерации.
+10.3. Если какое-либо положение настоящей Лицензии будет признано судом недействительным,
+остальные положения будут продолжать своё действие, а Пользователь будет обязан продолжать
+исполнять свои обязанности в соответствии с этими положениями.
diff --git a/platform/integration/applications/LICENSE.txt b/platform/integration/applications/LICENSE.txt
new file mode 100644
index 00000000..4ae94b75
--- /dev/null
+++ b/platform/integration/applications/LICENSE.txt
@@ -0,0 +1,175 @@
+ ЛИЦЕНЗИЯ ОГРАНИЧЕННОГО ПРИМЕНЕНИЯ
+
+Настоящий документ устанавливает для Пользователя условия применения Базовой (некоммерческой)
+версии лицензии для пробного использования программного обеспечения ENTAXY, принадлежащего
+Правообладателю – Обществу с ограниченной ответственностью "ЕМДЕВ" (ОГРН 1057810026658, ИНН
+7813313860, юридический адрес: 197022, Россия, г. Санкт-Петербург, ул. Профессора Попова,
+д. 23, литера В, помещение 3Н), расположенной в сети Интернет по адресу
+https://www.emdev.ru/about (далее - Компания).
+
+Используя или получая доступ к Программному обеспечению, или нажав «Я согласен с Условиями»
+(или аналогичную кнопку или флажок) после загрузки или установки Программного обеспечения,
+Пользователь выражает свое согласие на обязательность условий и ограничений, изложенных в
+настоящем документе, в противном случае, он должен не использовать или не получать доступ
+к Программному обеспечению.
+
+ 1. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
+
+a) ПО – Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) в любой ее версии
+или редакции, исключительные права на которую принадлежат Правообладателю.
+b) Правообладатель (Компания) – ООО «ЕМДЕВ», ОГРН 1057810026658, ИНН 7813313860, исключительные
+права которого подтверждаются Свидетельством о государственной регистрации в Реестре программ
+для ЭВМ № 2021610848 от 19.01.2021 года.
+c) Пользователь – юридическое или физическое лицо, получившее через скачивание с сайта
+https://entaxy.ru или иным образом, дистрибутив ПО, пользующееся ПО.
+d) ИС – интеллектуальная собственность – закреплённое законом исключительное право, а также
+личные неимущественные права авторов произведений на результат интеллектуальной деятельности.
+e) Подписка – это коммерческое предложение Правообладателя, состоящее из Лицензии на использование
+ПО и доступа к технической поддержке программного обеспечения на срок Подписки. Подписка
+включает предоставление Пользователю неисключительного права использования ПО, в том числе
+получение обновлений функционала ПО и безопасности ПО, исправление ошибок ПО и получение
+патчей с обновлениями и исправлениями программного обеспечения. Подписка приобретается
+Пользователем на период времени, указанный в Сертификате. Количество подписок устанавливается
+для каждого Пользователя индивидуально в Сертификате.
+f) Сертификат – документ, выдаваемый Дистрибъютором или Авторизованным партнёром (Партнёром),
+подтверждающий факт приобретения физическим или юридическим лицом Подписки на программное
+обеспечение в ограниченном объёме и на определённый период времени.
+g) Лицензия (простая (неисключительная) – совокупность ограниченных прав использования ПО,
+предоставленных Пользователю согласно условиям Подписки.
+h) Библиотека – совокупность подпрограмм и объектов, используемых для разработки программного
+обеспечения.
+i) Исходный код – текст компьютерной программы на каком-либо языке программирования, состоящий
+из одного или нескольких файлов, который может быть прочтён человеком.
+j) Объектный код – файл (часть машинного кода) с промежуточным представлением отдельного модуля
+программы, полученный в результате обработки исходного кода, еще не связанный в полную программу.
+Это машинный код для одной конкретной библиотеки или модуля, который будет составлять готовый
+продукт.
+k) Некоммерческое использование – индивидуальное личное использование Пользователем программного
+обеспечения с целью обучения работе с Программным обеспечением, для оценки или демонстрации
+возможностей Программного обеспечения, при котором, Пользователем не извлекается коммерческая
+выгода и/или не идёт в доход денежное вознаграждение при использовании Программного обеспечения.
+
+ 2. ДОПУСТИМЫЕ СПОСОБЫ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
+
+2.1. Правообладатель предоставляет Пользователю ограниченное право использования Программного
+обеспечения на условиях простой (неисключительной) лицензии в объёме, ограниченном правом
+воспроизведения полной рабочей версии программного обеспечения, новых версий программного обеспечения
+в памяти оборудования и его запуска на оборудовании в соответствии со ст. 1280 ГК РФ.
+2.2. Право на использование Программного обеспечения, предоставляемое Пользователю, носит
+неисключительный характер.
+2.3. Пользователю предоставляется всемирная, неисключительная, не подлежащая сублицензированию,
+лицензия на ограниченное использование Программного обеспечения.
+2.4. Пользователь, имеющий Базовую (некоммерческую) версию лицензии для пробного использования
+имеет право приобрести Подписку на программное обеспечение. В этом случае Пользователь обязан
+обратиться в службу поддержки Правообладателя по адресу: https://entaxy.ru/ для изменения
+вида лицензии с Базовой бесплатной версии на Подписки.
+2.5. Срок использования скачанной Пользователем базовой (некоммерческой) версии лицензии для
+пробного использования программного обеспечения – не ограничен.
+2.6. Использование Пользователем настоящего программного обеспечения в целях разработки,
+модификации, обновления другого ПО, принадлежащего третьим лицам, а не Правообладателю,
+без разрешения Правообладателя не допускается.
+
+ 3. АВТОРСКОЕ ПРАВО.
+
+3.1. Все авторские права, все права интеллектуальной собственности на Программное обеспечение
+и любые его копии принадлежат Правообладателю.
+3.2. Все авторские права, все права интеллектуальной собственности в отношении любого контента,
+к которому можно получить доступ с помощью Программного обеспечения, является собственностью
+соответствующего владельца контента и защищается применимым законодательством об авторском
+праве или другими законами и договорами об интеллектуальной собственности.
+3.3. Условия использования Программного обеспечения.
+Лицензия, предоставленная Пользователю, действительна только в том случае, если Пользователь
+придерживается следующих условий:
+3.3.1. Принятие уведомлений об авторских правах. Пользователю запрещается удалять или изменять
+какие-либо уведомления об авторских правах или лицензиях, которые появляются при использовании
+Программного обеспечения или на нем.
+3.3.2. Модификация. Пользователю запрещается модифицировать, изменять, декомпилировать,
+расшифровывать, дизассемблировать, переводить или реверсировать, перепроектировать
+Программное обеспечение.
+3.3.3. Распространение. Пользователю запрещается сублицензировать, передавать право использования
+ПО или иным образом распространять или предоставлять Программное обеспечение любой третьей стороне.
+3.3.4. SaaS. За исключением случаев, когда это разрешено Правообладателем, Пользователю запрещено
+использовать Программное обеспечение в коммерческих целях для оказания услуг третьим лицам.
+
+ 4. ОТВЕТСТВЕННОСТЬ ПРАВООБЛАДАТЕЛЯ ПРИ НАРУШЕНИИ ПОЛЬЗОВАТЕЛЕМ ПРАВ «ИС»
+
+4.1. Правообладатель не несет никаких обязательств в отношении каких-либо претензий к Пользователю
+на предмет нарушения последним прав Интеллектуальной собственности, возникших в связи с
+использованием Пользователем:
+4.1.1. Любых компонентов программного обеспечения с открытым исходным кодом, включенных в
+Программное обеспечение;
+4.1.2. Любого нарушения правил использования Программного обеспечения, установленного условиями
+настоящего соглашения;
+4.1.3. Любого использования Программного обеспечения в сочетании с другими ПО, оборудованием,
+или данными, не предоставленными Пользователю Правообладателем;
+4.1.4. Любого изменения Программного обеспечения любым третьим лицом, а не Правообладателем.
+
+
+5. НАСТОЯЩИМ ПРАВООБЛАДАТЕЛЬ ЗАЯВЛЯЕТ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ПОЛЬЗОВАТЕЛЮ
+ПО ПРИНЦИПУ «AS IS» - «КАК ЕСТЬ». НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ НЕ ГАРАНТИРУЕТ
+И НЕ ОБЕЩАЕТ, ЧТО ПРЕДОСТАВЛЕННОЕ ИМ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ПОДХОДИТЬ ИЛИ НЕ ПОДХОДИТЬ
+ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ОТВЕЧАТЬ ВСЕМ КОММЕРЧЕСКИМ
+И ЛИЧНЫМ СУБЪЕКТИВНЫМ ОЖИДАНИЯМ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ РАБОТАТЬ
+ИСПРАВНО, БЕЗ ТЕХНИЧЕСКИХ ОШИБОК, БЫСТРО И БЕСПЕРЕБОЙНО.
+
+ 6. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ.
+НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ ИЛИ ЕГО АФФИЛЛИРОВАННЫЕ ЛИЦА НЕ НЕСУТ ПЕРЕД ПОЛЬЗОВАТЕЛЕМ
+ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ ПОЛЬЗОВАТЕЛЯ, ЕГО РАСХОДЫ ИЛИ РЕАЛЬНЫЙ УЩЕРБ,
+ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПРОСТОИ; УТРАТУ БИЗНЕСА; УПУЩЕННУЮ ВЫГОДУ; НЕДОПОЛУЧЕННУЮ ПРИБЫЛЬ;
+ПОТЕРЮ ИЛИ ПОВРЕЖДЕНИЕ ДАННЫХ, ИМУЩЕСТВА И ИНОЕ.
+ОГРАНИЧЕНИЯ ПРИМЕНЯЮТСЯ НЕЗАВИСИМО ОТ ОСНОВАНИЯ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ; В ТОМ ЧИСЛЕ ВСЛЕДСТВИЕ
+ДЕЙСТВИЯ ИЛИ БЕЗДЕЙСТВИЯ, НЕБРЕЖНОСТИ, УМЫСЛА, ПРЯМОГО ИЛИ КОСВЕННОГО; НЕОСТОРОЖНОСТИ; ЗАБЛУЖДЕНИЯ;
+КЛЕВЕТЫ; НАРУШЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ИЛИ ПРАВА ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ; ИЛИ ЛЮБОЕ ДРУГОЕ
+ОСНОВАНИЕ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ.
+
+ 7. ОБЯЗАННОСТЬ ПОЛЬЗОВАТЕЛЯ:
+Не осуществлять самостоятельно и (или) с привлечением третьих лиц нижеследующие действия
+(включая, но не ограничиваясь) по:
+-дизассемблированию и (или) декомпилированию (преобразованию объектного кода в исходный код)
+ Программного обеспечения;
+-модификации Программного обеспечения, в том числе вносить изменения в объектный код, исходный
+код Программного обеспечения, за исключением тех изменений, которые вносятся средствами,
+включёнными в Программное обеспечение и описанными непосредственно в документации к нему;
+-созданию условий для использования Программного обеспечения лицами, не имеющими прав на
+использование данного Программного обеспечения, включая (но не ограничиваясь) вмешательство
+третьих лиц в функционирование Программного обеспечения, предоставление третьим лицам доступа
+к исследованию и (или) замене настроек Программного обеспечения, включая его первичную установку;
+-распространению Программного обеспечения в целом или в части (включая приложенную к нему документацию).
+
+ 8. БИБЛИОТЕКА ПО. ИСПОЛЬЗУЕМЫЕ ПРОГРАММНЫЕ СРЕДСТВА.
+
+8.1. Настоящим, Правообладатель заверяет, что Библиотека программного обеспечения состоит из
+лицензионных продуктов, используемых на законных основаниях, а
+именно https://entaxy.ru/libs/licenses/root-aggregated.deps.
+8.2. Любые программные средства, применяемые Пользователем при работе с ПО, должны быть
+совместимы с библиотекой ПО, указанной в п.8.1. настоящего соглашения.
+8.3. Перечень внешних модулей ПО, указанный в п.8.1 настоящего соглашения, может изменяться
+Правообладателем в одностороннем порядке, в зависимости от выпуска релизов программного обеспечения,
+содержащих все изменения и дополнения программного обеспечения.
+
+ 9. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
+
+9.1. Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) является свободно распространяемым
+программным обеспечением.
+9.2. Пользователь имеет право вносить изменения в исходный код программного обеспечения исключительно
+с согласия Правообладателя в порядке предложения изменений/правок/дополнений через механизм
+«Pull Requests» в открытом репозитории Правообладателя по адресу: https://git.entaxy.ru/entaxy/entaxy-public.
+9.3. Любые изменения программного обеспечения, осуществляемые Пользователем без соблюдения условий
+пункта 9.2. настоящего документа, являются нарушением авторских и смежных прав Правообладателя,
+прав интеллектуальной собственности Правообладателя и влекут применение к Пользователю мер
+ответственности в соответствии с условиями настоящей Лицензии, а также применимого законодательства
+Российской Федерации.
+
+ 10. ЗАКЛЮЧИТЕЛЬНЫЕ ПОЛОЖЕНИЯ.
+
+10.1. В случае нарушения Пользователем любого из условий настоящей Лицензии, Правообладатель имеет
+право взыскать с Пользователя любые причинённые таким нарушением убытки, реальный ущерб,
+недополученную прибыль, упущенную выгоду, а также в случае нарушения Пользователем условий
+пункта 9.2 настоящего соглашения, в том числе, взыскать с Пользователя штраф в размере
+2 000 000 (Два миллиона) рублей за каждый установленный случай несанкционированного изменения
+исходного или объектного кода Программного обеспечения «Энтакси» (Entaxy).
+10.2. В рамках исполнения Пользователем обязательств по настоящей Лицензии, применимое
+законодательство – Российской Федерации.
+10.3. Если какое-либо положение настоящей Лицензии будет признано судом недействительным,
+остальные положения будут продолжать своё действие, а Пользователь будет обязан продолжать
+исполнять свои обязанности в соответствии с этими положениями.
diff --git a/platform/integration/applications/application-api/LICENSE.txt b/platform/integration/applications/application-api/LICENSE.txt
new file mode 100644
index 00000000..4ae94b75
--- /dev/null
+++ b/platform/integration/applications/application-api/LICENSE.txt
@@ -0,0 +1,175 @@
+ ЛИЦЕНЗИЯ ОГРАНИЧЕННОГО ПРИМЕНЕНИЯ
+
+Настоящий документ устанавливает для Пользователя условия применения Базовой (некоммерческой)
+версии лицензии для пробного использования программного обеспечения ENTAXY, принадлежащего
+Правообладателю – Обществу с ограниченной ответственностью "ЕМДЕВ" (ОГРН 1057810026658, ИНН
+7813313860, юридический адрес: 197022, Россия, г. Санкт-Петербург, ул. Профессора Попова,
+д. 23, литера В, помещение 3Н), расположенной в сети Интернет по адресу
+https://www.emdev.ru/about (далее - Компания).
+
+Используя или получая доступ к Программному обеспечению, или нажав «Я согласен с Условиями»
+(или аналогичную кнопку или флажок) после загрузки или установки Программного обеспечения,
+Пользователь выражает свое согласие на обязательность условий и ограничений, изложенных в
+настоящем документе, в противном случае, он должен не использовать или не получать доступ
+к Программному обеспечению.
+
+ 1. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
+
+a) ПО – Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) в любой ее версии
+или редакции, исключительные права на которую принадлежат Правообладателю.
+b) Правообладатель (Компания) – ООО «ЕМДЕВ», ОГРН 1057810026658, ИНН 7813313860, исключительные
+права которого подтверждаются Свидетельством о государственной регистрации в Реестре программ
+для ЭВМ № 2021610848 от 19.01.2021 года.
+c) Пользователь – юридическое или физическое лицо, получившее через скачивание с сайта
+https://entaxy.ru или иным образом, дистрибутив ПО, пользующееся ПО.
+d) ИС – интеллектуальная собственность – закреплённое законом исключительное право, а также
+личные неимущественные права авторов произведений на результат интеллектуальной деятельности.
+e) Подписка – это коммерческое предложение Правообладателя, состоящее из Лицензии на использование
+ПО и доступа к технической поддержке программного обеспечения на срок Подписки. Подписка
+включает предоставление Пользователю неисключительного права использования ПО, в том числе
+получение обновлений функционала ПО и безопасности ПО, исправление ошибок ПО и получение
+патчей с обновлениями и исправлениями программного обеспечения. Подписка приобретается
+Пользователем на период времени, указанный в Сертификате. Количество подписок устанавливается
+для каждого Пользователя индивидуально в Сертификате.
+f) Сертификат – документ, выдаваемый Дистрибъютором или Авторизованным партнёром (Партнёром),
+подтверждающий факт приобретения физическим или юридическим лицом Подписки на программное
+обеспечение в ограниченном объёме и на определённый период времени.
+g) Лицензия (простая (неисключительная) – совокупность ограниченных прав использования ПО,
+предоставленных Пользователю согласно условиям Подписки.
+h) Библиотека – совокупность подпрограмм и объектов, используемых для разработки программного
+обеспечения.
+i) Исходный код – текст компьютерной программы на каком-либо языке программирования, состоящий
+из одного или нескольких файлов, который может быть прочтён человеком.
+j) Объектный код – файл (часть машинного кода) с промежуточным представлением отдельного модуля
+программы, полученный в результате обработки исходного кода, еще не связанный в полную программу.
+Это машинный код для одной конкретной библиотеки или модуля, который будет составлять готовый
+продукт.
+k) Некоммерческое использование – индивидуальное личное использование Пользователем программного
+обеспечения с целью обучения работе с Программным обеспечением, для оценки или демонстрации
+возможностей Программного обеспечения, при котором, Пользователем не извлекается коммерческая
+выгода и/или не идёт в доход денежное вознаграждение при использовании Программного обеспечения.
+
+ 2. ДОПУСТИМЫЕ СПОСОБЫ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
+
+2.1. Правообладатель предоставляет Пользователю ограниченное право использования Программного
+обеспечения на условиях простой (неисключительной) лицензии в объёме, ограниченном правом
+воспроизведения полной рабочей версии программного обеспечения, новых версий программного обеспечения
+в памяти оборудования и его запуска на оборудовании в соответствии со ст. 1280 ГК РФ.
+2.2. Право на использование Программного обеспечения, предоставляемое Пользователю, носит
+неисключительный характер.
+2.3. Пользователю предоставляется всемирная, неисключительная, не подлежащая сублицензированию,
+лицензия на ограниченное использование Программного обеспечения.
+2.4. Пользователь, имеющий Базовую (некоммерческую) версию лицензии для пробного использования
+имеет право приобрести Подписку на программное обеспечение. В этом случае Пользователь обязан
+обратиться в службу поддержки Правообладателя по адресу: https://entaxy.ru/ для изменения
+вида лицензии с Базовой бесплатной версии на Подписки.
+2.5. Срок использования скачанной Пользователем базовой (некоммерческой) версии лицензии для
+пробного использования программного обеспечения – не ограничен.
+2.6. Использование Пользователем настоящего программного обеспечения в целях разработки,
+модификации, обновления другого ПО, принадлежащего третьим лицам, а не Правообладателю,
+без разрешения Правообладателя не допускается.
+
+ 3. АВТОРСКОЕ ПРАВО.
+
+3.1. Все авторские права, все права интеллектуальной собственности на Программное обеспечение
+и любые его копии принадлежат Правообладателю.
+3.2. Все авторские права, все права интеллектуальной собственности в отношении любого контента,
+к которому можно получить доступ с помощью Программного обеспечения, является собственностью
+соответствующего владельца контента и защищается применимым законодательством об авторском
+праве или другими законами и договорами об интеллектуальной собственности.
+3.3. Условия использования Программного обеспечения.
+Лицензия, предоставленная Пользователю, действительна только в том случае, если Пользователь
+придерживается следующих условий:
+3.3.1. Принятие уведомлений об авторских правах. Пользователю запрещается удалять или изменять
+какие-либо уведомления об авторских правах или лицензиях, которые появляются при использовании
+Программного обеспечения или на нем.
+3.3.2. Модификация. Пользователю запрещается модифицировать, изменять, декомпилировать,
+расшифровывать, дизассемблировать, переводить или реверсировать, перепроектировать
+Программное обеспечение.
+3.3.3. Распространение. Пользователю запрещается сублицензировать, передавать право использования
+ПО или иным образом распространять или предоставлять Программное обеспечение любой третьей стороне.
+3.3.4. SaaS. За исключением случаев, когда это разрешено Правообладателем, Пользователю запрещено
+использовать Программное обеспечение в коммерческих целях для оказания услуг третьим лицам.
+
+ 4. ОТВЕТСТВЕННОСТЬ ПРАВООБЛАДАТЕЛЯ ПРИ НАРУШЕНИИ ПОЛЬЗОВАТЕЛЕМ ПРАВ «ИС»
+
+4.1. Правообладатель не несет никаких обязательств в отношении каких-либо претензий к Пользователю
+на предмет нарушения последним прав Интеллектуальной собственности, возникших в связи с
+использованием Пользователем:
+4.1.1. Любых компонентов программного обеспечения с открытым исходным кодом, включенных в
+Программное обеспечение;
+4.1.2. Любого нарушения правил использования Программного обеспечения, установленного условиями
+настоящего соглашения;
+4.1.3. Любого использования Программного обеспечения в сочетании с другими ПО, оборудованием,
+или данными, не предоставленными Пользователю Правообладателем;
+4.1.4. Любого изменения Программного обеспечения любым третьим лицом, а не Правообладателем.
+
+
+5. НАСТОЯЩИМ ПРАВООБЛАДАТЕЛЬ ЗАЯВЛЯЕТ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ПОЛЬЗОВАТЕЛЮ
+ПО ПРИНЦИПУ «AS IS» - «КАК ЕСТЬ». НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ НЕ ГАРАНТИРУЕТ
+И НЕ ОБЕЩАЕТ, ЧТО ПРЕДОСТАВЛЕННОЕ ИМ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ПОДХОДИТЬ ИЛИ НЕ ПОДХОДИТЬ
+ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ОТВЕЧАТЬ ВСЕМ КОММЕРЧЕСКИМ
+И ЛИЧНЫМ СУБЪЕКТИВНЫМ ОЖИДАНИЯМ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ РАБОТАТЬ
+ИСПРАВНО, БЕЗ ТЕХНИЧЕСКИХ ОШИБОК, БЫСТРО И БЕСПЕРЕБОЙНО.
+
+ 6. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ.
+НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ ИЛИ ЕГО АФФИЛЛИРОВАННЫЕ ЛИЦА НЕ НЕСУТ ПЕРЕД ПОЛЬЗОВАТЕЛЕМ
+ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ ПОЛЬЗОВАТЕЛЯ, ЕГО РАСХОДЫ ИЛИ РЕАЛЬНЫЙ УЩЕРБ,
+ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПРОСТОИ; УТРАТУ БИЗНЕСА; УПУЩЕННУЮ ВЫГОДУ; НЕДОПОЛУЧЕННУЮ ПРИБЫЛЬ;
+ПОТЕРЮ ИЛИ ПОВРЕЖДЕНИЕ ДАННЫХ, ИМУЩЕСТВА И ИНОЕ.
+ОГРАНИЧЕНИЯ ПРИМЕНЯЮТСЯ НЕЗАВИСИМО ОТ ОСНОВАНИЯ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ; В ТОМ ЧИСЛЕ ВСЛЕДСТВИЕ
+ДЕЙСТВИЯ ИЛИ БЕЗДЕЙСТВИЯ, НЕБРЕЖНОСТИ, УМЫСЛА, ПРЯМОГО ИЛИ КОСВЕННОГО; НЕОСТОРОЖНОСТИ; ЗАБЛУЖДЕНИЯ;
+КЛЕВЕТЫ; НАРУШЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ИЛИ ПРАВА ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ; ИЛИ ЛЮБОЕ ДРУГОЕ
+ОСНОВАНИЕ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ.
+
+ 7. ОБЯЗАННОСТЬ ПОЛЬЗОВАТЕЛЯ:
+Не осуществлять самостоятельно и (или) с привлечением третьих лиц нижеследующие действия
+(включая, но не ограничиваясь) по:
+-дизассемблированию и (или) декомпилированию (преобразованию объектного кода в исходный код)
+ Программного обеспечения;
+-модификации Программного обеспечения, в том числе вносить изменения в объектный код, исходный
+код Программного обеспечения, за исключением тех изменений, которые вносятся средствами,
+включёнными в Программное обеспечение и описанными непосредственно в документации к нему;
+-созданию условий для использования Программного обеспечения лицами, не имеющими прав на
+использование данного Программного обеспечения, включая (но не ограничиваясь) вмешательство
+третьих лиц в функционирование Программного обеспечения, предоставление третьим лицам доступа
+к исследованию и (или) замене настроек Программного обеспечения, включая его первичную установку;
+-распространению Программного обеспечения в целом или в части (включая приложенную к нему документацию).
+
+ 8. БИБЛИОТЕКА ПО. ИСПОЛЬЗУЕМЫЕ ПРОГРАММНЫЕ СРЕДСТВА.
+
+8.1. Настоящим, Правообладатель заверяет, что Библиотека программного обеспечения состоит из
+лицензионных продуктов, используемых на законных основаниях, а
+именно https://entaxy.ru/libs/licenses/root-aggregated.deps.
+8.2. Любые программные средства, применяемые Пользователем при работе с ПО, должны быть
+совместимы с библиотекой ПО, указанной в п.8.1. настоящего соглашения.
+8.3. Перечень внешних модулей ПО, указанный в п.8.1 настоящего соглашения, может изменяться
+Правообладателем в одностороннем порядке, в зависимости от выпуска релизов программного обеспечения,
+содержащих все изменения и дополнения программного обеспечения.
+
+ 9. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
+
+9.1. Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) является свободно распространяемым
+программным обеспечением.
+9.2. Пользователь имеет право вносить изменения в исходный код программного обеспечения исключительно
+с согласия Правообладателя в порядке предложения изменений/правок/дополнений через механизм
+«Pull Requests» в открытом репозитории Правообладателя по адресу: https://git.entaxy.ru/entaxy/entaxy-public.
+9.3. Любые изменения программного обеспечения, осуществляемые Пользователем без соблюдения условий
+пункта 9.2. настоящего документа, являются нарушением авторских и смежных прав Правообладателя,
+прав интеллектуальной собственности Правообладателя и влекут применение к Пользователю мер
+ответственности в соответствии с условиями настоящей Лицензии, а также применимого законодательства
+Российской Федерации.
+
+ 10. ЗАКЛЮЧИТЕЛЬНЫЕ ПОЛОЖЕНИЯ.
+
+10.1. В случае нарушения Пользователем любого из условий настоящей Лицензии, Правообладатель имеет
+право взыскать с Пользователя любые причинённые таким нарушением убытки, реальный ущерб,
+недополученную прибыль, упущенную выгоду, а также в случае нарушения Пользователем условий
+пункта 9.2 настоящего соглашения, в том числе, взыскать с Пользователя штраф в размере
+2 000 000 (Два миллиона) рублей за каждый установленный случай несанкционированного изменения
+исходного или объектного кода Программного обеспечения «Энтакси» (Entaxy).
+10.2. В рамках исполнения Пользователем обязательств по настоящей Лицензии, применимое
+законодательство – Российской Федерации.
+10.3. Если какое-либо положение настоящей Лицензии будет признано судом недействительным,
+остальные положения будут продолжать своё действие, а Пользователь будет обязан продолжать
+исполнять свои обязанности в соответствии с этими положениями.
diff --git a/platform/integration/applications/application-api/pom.xml b/platform/integration/applications/application-api/pom.xml
new file mode 100644
index 00000000..f8fe57df
--- /dev/null
+++ b/platform/integration/applications/application-api/pom.xml
@@ -0,0 +1,43 @@
+
+ 4.0.0
+
+ ru.entaxy.platform.integration
+ applications
+ 1.10.0
+
+ ru.entaxy.platform.integration.applications
+ application-api
+ bundle
+ ENTAXY :: PLATFORM :: INTEGRATION :: APPLICATIONS :: API
+ ENTAXY :: PLATFORM :: INTEGRATION :: APPLICATIONS :: API
+
+
+
+ ru.entaxy.platform.integration.applications,
+ ru.entaxy.platform.integration.applications.descriptor,
+ ru.entaxy.platform.integration.applications.exceptions,
+ ru.entaxy.platform.integration.applications.item.project,
+ ru.entaxy.platform.integration.applications.storage,
+ ru.entaxy.platform.integration.applications.utils
+
+
+
+
+
+ ru.entaxy.esb.platform.runtime.base.resources
+ resources-api
+ ${project.version}
+
+
+ ru.entaxy.esb.platform.runtime.core
+ object-runtime-core
+ ${project.version}
+
+
+ ru.entaxy.esb.platform.runtime.core
+ artifact-management
+ ${project.version}
+
+
+
+
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationContent.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationContent.java
new file mode 100644
index 00000000..1c4de2e9
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationContent.java
@@ -0,0 +1,48 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import ru.entaxy.platform.integration.applications.descriptor.ApplicationDescriptor;
+
+public interface ApplicationContent {
+
+ ApplicationDescriptor getDescriptor();
+
+ List getItems();
+
+ default List getEditables() {
+ return getItems().stream().filter(item -> item.isEditable()).collect(Collectors.toList());
+ };
+
+ default List getRevisionables() {
+ return getItems().stream().filter(item -> item.isRevisionable()).collect(Collectors.toList());
+ };
+
+ List getResources();
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationItem.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationItem.java
new file mode 100644
index 00000000..4da41664
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationItem.java
@@ -0,0 +1,46 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications;
+
+import java.io.InputStream;
+
+public interface ApplicationItem {
+
+ InputStream getInputStream();
+
+ void update(InputStream inputStream) throws Exception;
+
+ boolean isEditable();
+
+ boolean isRevisionable();
+
+ String getLocation();
+
+ EntaxyApplication.ITEM_TYPE getType();
+
+ String getId();
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationManager.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationManager.java
new file mode 100644
index 00000000..217a000e
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationManager.java
@@ -0,0 +1,139 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import ru.entaxy.platform.integration.applications.exceptions.ApplicationException;
+import ru.entaxy.platform.integration.applications.exceptions.ProjectAlreadyExistsException;
+import ru.entaxy.platform.integration.applications.exceptions.ProjectException;
+import ru.entaxy.platform.integration.applications.exceptions.StorageException;
+import ru.entaxy.platform.integration.applications.exceptions.StorageNotEnabledException;
+import ru.entaxy.platform.integration.applications.exceptions.StorageNotFoundException;
+import ru.entaxy.platform.integration.applications.exceptions.ProjectVersionException;
+
+public interface ApplicationManager {
+
+ // storages
+
+ ApplicationStorage getStorage(String storageName);
+
+ default List getActiveStorages() {
+ return getStorages(true);
+ };
+
+ default List getStorages(boolean enabledOnly) {
+ if (!enabledOnly)
+ return getAllStorages();
+ return getAllStorages().stream().filter(s -> s.isEnabled()).collect(Collectors.toList());
+ };
+
+ List getAllStorages();
+
+ void addStorage(ApplicationStorage applicationStorage) throws StorageException;
+
+ void removeStorage(ApplicationStorage applicationStorage) throws StorageException;
+
+ // projects
+
+ default EntaxyApplicationProject createProject(String storageName, String applicationName, String initialVersion)
+ throws ProjectException, StorageException {
+ ApplicationStorage storage = getStorage(storageName);
+ if (storage == null)
+ throw new StorageNotFoundException(storageName);
+ if (!storage.isEnabled())
+ throw new StorageNotEnabledException(storageName);
+ EntaxyApplicationProject app = storage.getProject(applicationName);
+ if (app != null)
+ throw new ProjectAlreadyExistsException(applicationName);
+ app = storage.createProject(applicationName);
+ app.createVersion(initialVersion);
+ return app;
+ };
+
+ default List getProjects() {
+ List result = new ArrayList<>();
+ for (ApplicationStorage storage : getActiveStorages()) {
+ result.addAll(storage.getProjects());
+ }
+ return result;
+ }
+
+ default List getProjects(String storageName)
+ throws ProjectException, StorageException {
+ ApplicationStorage storage = getStorage(storageName);
+ if (storage == null)
+ throw new StorageNotFoundException(storageName);
+ return getProjects(storage);
+ }
+
+ default List getProjects(ApplicationStorage storage)
+ throws ProjectException, StorageException {
+ if (!storage.isEnabled())
+ throw new StorageNotEnabledException(storage.getName());
+ return storage.getProjects();
+ }
+
+ void exportToFile(EntaxyApplicationProjectVersion version, String filePath) throws ProjectVersionException;
+
+ void exportToRepository(EntaxyApplicationProjectVersion version, String repositoryName) throws ProjectVersionException;
+
+ // applications
+
+ default List getApplications() {
+ List result = new ArrayList<>();
+ for (ApplicationStorage storage : getActiveStorages()) {
+ result.addAll(storage.getApplications());
+ }
+ return result;
+ }
+
+ default List getApplications(String storageName)
+ throws ProjectException, StorageException {
+ ApplicationStorage storage = getStorage(storageName);
+ if (storage == null)
+ throw new StorageNotFoundException(storageName);
+ return getApplications(storage);
+ }
+
+ default List getApplications(ApplicationStorage storage)
+ throws ProjectException, StorageException {
+ if (!storage.isEnabled())
+ throw new StorageNotEnabledException(storage.getName());
+ return storage.getApplications();
+ }
+
+
+ EntaxyApplication importApplicationFromFile(String storageName, String filePath)
+ throws ApplicationException, StorageException;
+
+ EntaxyApplication importApplicationFromRepository(String storageName, String mavenUrl)
+ throws ApplicationException, StorageException;
+
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationProjectContent.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationProjectContent.java
new file mode 100644
index 00000000..3525772f
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationProjectContent.java
@@ -0,0 +1,70 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications;
+
+import java.util.List;
+import java.util.Map;
+
+import ru.entaxy.esb.resources.EntaxyResource;
+import ru.entaxy.platform.integration.applications.exceptions.ItemException;
+import ru.entaxy.platform.objects.runtime.EntaxyRuntimeObject;
+import ru.entaxy.platform.objects.runtime.EntaxyRuntimeObjectResource;
+
+public interface ApplicationProjectContent {
+
+ public interface STANDARD_PROPERTIES {
+ String APPLICATION = "application";
+ String GROUP = "group";
+ String VERSION = "version";
+ String CREATED_ON = "createdOn";
+ String CREATED_BY = "createdBy";
+ String MODIFIED_ON = "modifiedOn";
+ String MODIFIED_BY = "modifiedBy";
+ }
+
+ List getItems();
+
+ List getItems(Class itemClass);
+
+ void addItem(ApplicationProjectItem item) throws ItemException;
+
+ void ignoreItem(ApplicationProjectItem item) throws ItemException;
+
+ void removeItem(ApplicationProjectItem item) throws ItemException;
+
+ default boolean isConsistent() {
+ return getItems().stream().filter(item -> (item.isRequired() && !item.isIgnored())).count() == 0;
+ }
+
+ ApplicationProjectItem addObject(EntaxyRuntimeObject runtimeObject);
+
+ ApplicationProjectItem addResource(EntaxyRuntimeObjectResource runtimeObjectResource);
+
+ ApplicationProjectItem addResource(EntaxyResource entaxyResource);
+
+ Map getProperties();
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationProjectInfo.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationProjectInfo.java
new file mode 100644
index 00000000..f8dcc877
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationProjectInfo.java
@@ -0,0 +1,49 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications;
+
+import java.util.List;
+
+public interface ApplicationProjectInfo {
+
+
+ String getName();
+
+ String getGroup();
+
+ long getCreatedOn();
+
+ String getCreatedBy();
+
+ long getLastModifiedOn();
+
+ String getLastModifiedBy();
+
+ String getLatestVersion();
+
+ List getAvailableVersions();
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationProjectItem.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationProjectItem.java
new file mode 100644
index 00000000..50715895
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationProjectItem.java
@@ -0,0 +1,53 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications;
+
+import java.util.List;
+
+public interface ApplicationProjectItem {
+
+ String getId();
+
+ EntaxyApplication.ITEM_SCOPE getScope();
+
+ EntaxyApplication.ITEM_TYPE getType();
+
+ boolean isGhost();
+
+ boolean isRequired();
+
+ List getRequiredBy();
+
+ List getRequirements();
+
+ List getColocated();
+
+ boolean isIgnored();
+
+ void ignore();
+
+ boolean isPlatform();
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationResource.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationResource.java
new file mode 100644
index 00000000..9b9ff182
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationResource.java
@@ -0,0 +1,34 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications;
+
+import java.io.InputStream;
+
+public interface ApplicationResource {
+
+ InputStream getInputStream();
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationStorage.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationStorage.java
new file mode 100644
index 00000000..02b538a3
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/ApplicationStorage.java
@@ -0,0 +1,93 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
+
+import ru.entaxy.platform.integration.applications.exceptions.ApplicationException;
+import ru.entaxy.platform.integration.applications.exceptions.ProjectException;
+import ru.entaxy.platform.integration.applications.exceptions.StorageException;
+
+public interface ApplicationStorage {
+
+ // storage itself
+
+ String getName();
+
+ String getType();
+
+ Map getInfo();
+
+ boolean isEnabled();
+
+ void enable();
+
+ void disable();
+
+ // projects
+
+ List getProjects();
+
+ EntaxyApplicationProject getProject(String applicationName);
+
+ void addProject(EntaxyApplicationProject project) throws ProjectException, StorageException;
+
+ void removeProject(EntaxyApplicationProject project) throws ProjectException, StorageException;
+
+ EntaxyApplicationProject createProject(String applicationName)
+ throws ProjectException, StorageException;
+
+ // applications
+
+ public interface ApplicationImportContent {
+
+ Map getItems();
+
+ void clear();
+ }
+
+ public interface ApplicationImportItem {
+ String getName();
+
+ String getLocation();
+
+ String getPath();
+
+ InputStream getInputStream() throws IOException;
+ }
+
+ List getApplications();
+
+ EntaxyApplication getApplication(String applicationName);
+
+ void removeApplication(EntaxyApplication application) throws ApplicationException, StorageException;
+
+ EntaxyApplication createApplication(ApplicationImportContent content) throws ApplicationException, StorageException;
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplication.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplication.java
new file mode 100644
index 00000000..c66cb118
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplication.java
@@ -0,0 +1,83 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications;
+
+import java.util.List;
+
+import ru.entaxy.esb.resources.EntaxyResource.RESOURCE_SCOPE;
+import ru.entaxy.platform.base.objects.EntaxyObject.OBJECT_RELATION_SCOPE;
+
+public interface EntaxyApplication {
+
+ String DESCRIPTOR_NAME = "descriptor.json";
+
+ String DEFAULT_GROUP_ID = "entaxy.application";
+
+ enum ITEM_TYPE {
+ OBJECT,
+ CONFIG,
+ BUNDLE,
+ RESOURCE,
+ FEATURES
+ }
+
+ enum ITEM_SCOPE {
+ DESIGN,
+ RUNTIME,
+ UNKNOWN;
+
+ public static ITEM_SCOPE convert(OBJECT_RELATION_SCOPE originScope) {
+ try {
+ return ITEM_SCOPE.valueOf(originScope.name().toUpperCase());
+ } catch (Exception e) {
+ return UNKNOWN;
+ }
+ }
+
+ public static ITEM_SCOPE convert(RESOURCE_SCOPE originScope) {
+ try {
+ return ITEM_SCOPE.valueOf(originScope.name().toUpperCase());
+ } catch (Exception e) {
+ return UNKNOWN;
+ }
+ }
+
+ }
+
+ String getName();
+
+ ApplicationStorage getStorage();
+
+ List getVersions();
+
+ EntaxyApplicationVersion getLatestVersion();
+
+ EntaxyApplicationVersion getVersion(String version);
+
+ void removeVersion(String version);
+
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplicationProject.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplicationProject.java
new file mode 100644
index 00000000..5c87f20b
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplicationProject.java
@@ -0,0 +1,56 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications;
+
+import java.util.List;
+
+import ru.entaxy.platform.integration.applications.exceptions.ProjectVersionException;
+
+public interface EntaxyApplicationProject {
+ String getName();
+
+ String getGroup();
+
+ ApplicationStorage getStorage();
+
+ void save();
+
+ void disgard();
+
+ List getVersions();
+
+ EntaxyApplicationProjectVersion getLatestVersion();
+
+ EntaxyApplicationProjectVersion getVersion(String version);
+
+ EntaxyApplicationProjectVersion createVersion(String version) throws ProjectVersionException;
+
+ EntaxyApplicationProjectVersion createVersion(String version, String fromVersion) throws ProjectVersionException;
+
+ void removeVersion(String version);
+
+ ApplicationProjectInfo getInfo();
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplicationProjectVersion.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplicationProjectVersion.java
new file mode 100644
index 00000000..7fa2f3f6
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplicationProjectVersion.java
@@ -0,0 +1,84 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications;
+
+import java.io.InputStream;
+import java.net.URL;
+
+import ru.entaxy.platform.integration.applications.descriptor.ApplicationDescriptor;
+import ru.entaxy.platform.integration.applications.exceptions.ProjectVersionException;
+
+public interface EntaxyApplicationProjectVersion extends ApplicationProjectContent {
+
+ public enum VERSION_STATUS {
+ NEW,
+ MODIFIED,
+ BUILT
+ }
+
+ EntaxyApplicationProject getApplication();
+
+ String getVersionNumber();
+
+ default int compareTo(EntaxyApplicationProjectVersion otherVersion) {
+ String[] thisV = otherVersion.getVersionNumber().split("\\.");
+ String[] otherV = otherVersion.getVersionNumber().split("\\.");
+
+ for (int i = 0; i < Math.max(thisV.length, otherV.length); i++) {
+ try {
+ int thisValue = Integer.parseInt(thisV[i]);
+ int otherValue = Integer.parseInt(otherV[i]);
+ if (thisValue > otherValue)
+ return 1;
+ if (thisValue < otherValue)
+ return -1;
+ } catch (Exception ignore) {
+ continue;
+ }
+ }
+
+ return 0;
+ }
+
+ void save();
+
+ void disgard();
+
+ URL build() throws ProjectVersionException;
+
+ boolean isBuildAvailable();
+
+ URL getBuildUrl();
+
+ InputStream getBuild();
+
+ ApplicationDescriptor getBuildInfo();
+
+ VERSION_STATUS getStatus();
+
+ boolean isDirty();
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplicationRevision.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplicationRevision.java
new file mode 100644
index 00000000..2a40255c
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplicationRevision.java
@@ -0,0 +1,52 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications;
+
+import ru.entaxy.platform.integration.applications.exceptions.RevisionException;
+
+public interface EntaxyApplicationRevision extends ApplicationContent {
+
+ public enum REVISION_STATUS {
+ NEW,
+ CONFIGURED,
+ DEPLOYED,
+ INSTALLED,
+ UNINSTALLED
+ }
+
+ int getRevisionNumber();
+
+ REVISION_STATUS getStatus();
+
+ void configure() throws RevisionException;
+
+ void deploy() throws RevisionException;
+
+ void install() throws RevisionException;
+
+ void uninstall() throws RevisionException;
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplicationVersion.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplicationVersion.java
new file mode 100644
index 00000000..b927f5d3
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/EntaxyApplicationVersion.java
@@ -0,0 +1,90 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications;
+
+import java.util.List;
+
+import ru.entaxy.platform.integration.applications.exceptions.ApplicationVersionException;
+import ru.entaxy.platform.integration.applications.exceptions.RevisionException;
+import ru.entaxy.platform.integration.applications.exceptions.RevisionIllegalNumber;
+
+public interface EntaxyApplicationVersion extends ApplicationContent {
+
+ EntaxyApplication getApplication();
+
+ String getVersionNumber();
+
+ List getRevisions();
+
+ EntaxyApplicationRevision getLastRevision();
+
+ default int compareTo(EntaxyApplicationVersion otherVersion) {
+ String[] thisV = otherVersion.getVersionNumber().split("\\.");
+ String[] otherV = otherVersion.getVersionNumber().split("\\.");
+
+ for (int i = 0; i < Math.max(thisV.length, otherV.length); i++) {
+ try {
+ int thisValue = Integer.parseInt(thisV[i]);
+ int otherValue = Integer.parseInt(otherV[i]);
+ if (thisValue > otherValue)
+ return 1;
+ if (thisValue < otherValue)
+ return -1;
+ } catch (Exception ignore) {
+ continue;
+ }
+ }
+
+ return 0;
+ }
+
+ default EntaxyApplicationRevision getRevision(String revision) throws RevisionException {
+ int rev = -1;
+ try {
+ rev = Integer.parseInt(revision);
+ } catch (Exception ignore) {
+
+ }
+ if (rev < 0)
+ throw new RevisionIllegalNumber(getApplication().getName(), getVersionNumber(), revision);
+ return getRevision(rev);
+ };
+
+ EntaxyApplicationRevision getRevision(int revision);
+
+ // creates next revision from last revision
+ default EntaxyApplicationRevision createRevision() throws ApplicationVersionException {
+ if (getLastRevision() == null)
+ // create initial revision
+ return createRevision(-1);
+ return createRevision(getLastRevision().getRevisionNumber());
+ };
+
+ // creates next revision from given revision
+ // -1 means create origin revision
+ EntaxyApplicationRevision createRevision(int fromRevision) throws ApplicationVersionException;
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationComponent.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationComponent.java
new file mode 100644
index 00000000..dfcd105c
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationComponent.java
@@ -0,0 +1,84 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.descriptor;
+
+import ru.entaxy.platform.base.support.CommonUtils;
+import ru.entaxy.platform.integration.applications.EntaxyApplication;
+
+public class ApplicationComponent {
+
+ public String id;
+ public EntaxyApplication.ITEM_TYPE type;
+ public String internalLocation;
+ public String mavenLocation;
+ public String targetProtocol;
+ public String targetLocation;
+ public String targetQueryString;
+
+ public int priority;
+
+ public String getId() {
+ return id;
+ }
+
+ public EntaxyApplication.ITEM_TYPE getType() {
+ return type;
+ }
+
+ public String getInternalLocation() {
+ return internalLocation;
+ }
+
+ public String getMavenLocation() {
+ return mavenLocation;
+ }
+
+ public String getTargetLocation() {
+ return targetLocation;
+ }
+
+ public int getPriority() {
+ return priority;
+ }
+
+ public String getTargetProtocol() {
+ return targetProtocol;
+ }
+
+ public String getTargetQueryString() {
+ return targetQueryString;
+ }
+
+ public String getFullTargetLocation() {
+ StringBuffer result = new StringBuffer();
+ if (CommonUtils.isValid(targetProtocol))
+ result.append(targetProtocol).append(':');
+ result.append(targetLocation);
+ if (CommonUtils.isValid(targetQueryString))
+ result.append('?').append(targetQueryString);
+ return result.toString();
+ }
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationContentItem.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationContentItem.java
new file mode 100644
index 00000000..bd8d385e
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationContentItem.java
@@ -0,0 +1,50 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.descriptor;
+
+import ru.entaxy.platform.integration.applications.EntaxyApplication;
+
+public class ApplicationContentItem {
+
+ public String id;
+ public EntaxyApplication.ITEM_TYPE type;
+ public String componentId;
+
+ public String getId() {
+ return id;
+ }
+
+ public EntaxyApplication.ITEM_TYPE getType() {
+ return type;
+ }
+
+ public String getComponentId() {
+ return componentId;
+ }
+
+
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationDescriptor.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationDescriptor.java
new file mode 100644
index 00000000..4dbdd891
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationDescriptor.java
@@ -0,0 +1,112 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.descriptor;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import ru.entaxy.platform.integration.applications.EntaxyApplication;
+import ru.entaxy.platform.integration.applications.EntaxyApplication.ITEM_TYPE;
+
+public class ApplicationDescriptor {
+
+ public String name;
+ public String group;
+ public String version;
+ public String buildOn;
+ public String buildBy;
+
+ public String mavenUrl;
+ public String mavenAsset;
+
+ public ApplicationFeatures features;
+
+ public volatile List requirements = new ArrayList<>();
+
+ public volatile List items = new ArrayList<>();
+
+ public volatile List components = new ArrayList<>();
+
+ public String getName() {
+ return name;
+ }
+
+ public String getGroup() {
+ return group;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public String getBuildOn() {
+ return buildOn;
+ }
+
+ public String getBuildBy() {
+ return buildBy;
+ }
+
+ public String getMavenUrl() {
+ return mavenUrl;
+ }
+
+ public String getMavenAsset() {
+ return mavenAsset;
+ }
+
+ public List getRequirements() {
+ return requirements;
+ }
+
+ public List getItems() {
+ return items;
+ }
+
+ public List getComponents() {
+ return components;
+ }
+
+ public List getComponents(EntaxyApplication.ITEM_TYPE type) {
+ if (type == null)
+ return getComponents();
+ return components.stream().filter(comp -> type.equals(comp.type)).collect(Collectors.toList());
+ }
+
+ public List getBundleComponents() {
+ return getComponents(ITEM_TYPE.BUNDLE);
+ }
+
+ public List getConfigComponents() {
+ return getComponents(ITEM_TYPE.CONFIG);
+ }
+
+ public ApplicationFeatures getFeatures() {
+ return features;
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationFeatures.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationFeatures.java
new file mode 100644
index 00000000..3801f672
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationFeatures.java
@@ -0,0 +1,37 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.descriptor;
+
+import ru.entaxy.platform.integration.applications.EntaxyApplication;
+
+public class ApplicationFeatures extends ApplicationComponent {
+
+ public ApplicationFeatures() {
+ id = "application.features";
+ type = EntaxyApplication.ITEM_TYPE.FEATURES;
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationRequirement.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationRequirement.java
new file mode 100644
index 00000000..fe57237e
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/descriptor/ApplicationRequirement.java
@@ -0,0 +1,50 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.descriptor;
+
+import ru.entaxy.platform.integration.applications.EntaxyApplication;
+
+public class ApplicationRequirement {
+
+ public String id;
+ public EntaxyApplication.ITEM_TYPE type;
+ public EntaxyApplication.ITEM_SCOPE scope;
+
+ public String getId() {
+ return id;
+ }
+
+ public EntaxyApplication.ITEM_TYPE getType() {
+ return type;
+ }
+
+ public EntaxyApplication.ITEM_SCOPE getScope() {
+ return scope;
+ }
+
+
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationCausedException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationCausedException.java
new file mode 100644
index 00000000..e19b622b
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationCausedException.java
@@ -0,0 +1,41 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ApplicationCausedException extends ApplicationException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ApplicationCausedException(String applicationName, Throwable cause) {
+ super(applicationName, cause);
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Application exception on [%s]: %s", applicationName, getCause().getMessage());
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationDescriptorIsInvalid.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationDescriptorIsInvalid.java
new file mode 100644
index 00000000..3d46ffcd
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationDescriptorIsInvalid.java
@@ -0,0 +1,40 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ApplicationDescriptorIsInvalid extends ApplicationException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ApplicationDescriptorIsInvalid(String applicationName) {
+ super(applicationName);
+ }
+
+ @Override
+ protected String getMessageInfo() {
+ return "descriptor is invalid";
+ }
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationDescriptorNotFound.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationDescriptorNotFound.java
new file mode 100644
index 00000000..6cfb388d
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationDescriptorNotFound.java
@@ -0,0 +1,40 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ApplicationDescriptorNotFound extends ApplicationException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ApplicationDescriptorNotFound(String applicationName) {
+ super(applicationName);
+ }
+
+ @Override
+ protected String getMessageInfo() {
+ return "descriptor not found";
+ }
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationException.java
new file mode 100644
index 00000000..11c3245d
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationException.java
@@ -0,0 +1,60 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public abstract class ApplicationException extends EntaxyApplicationsException {
+
+ private static final long serialVersionUID = 1L;
+ protected String applicationName;
+
+ public ApplicationException(String applicationName) {
+ super();
+ this.applicationName = applicationName;
+ }
+
+ public ApplicationException(String applicationName, Throwable cause) {
+ super(cause);
+ this.applicationName = applicationName;
+ }
+
+ public String getApplicationName() {
+ return applicationName;
+ }
+
+ public void setApplicationName(String applicationName) {
+ this.applicationName = applicationName;
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Application %s: [%s]", getMessageInfo(), applicationName);
+ }
+
+ protected String getMessageInfo() {
+ return "exception";
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationImportCausedException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationImportCausedException.java
new file mode 100644
index 00000000..ffe89289
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationImportCausedException.java
@@ -0,0 +1,42 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ApplicationImportCausedException extends ApplicationException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ApplicationImportCausedException(String applicationName, Throwable cause) {
+ super(applicationName, cause);
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Application exception while importing from [%s]: %s", applicationName,
+ getCause().getMessage());
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationNotFoundException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationNotFoundException.java
new file mode 100644
index 00000000..d26cfb69
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationNotFoundException.java
@@ -0,0 +1,41 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ApplicationNotFoundException extends ApplicationException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ApplicationNotFoundException(String applicationName) {
+ super(applicationName);
+ // TODO Auto-generated constructor stub
+ }
+
+ @Override
+ protected String getMessageInfo() {
+ return "not found";
+ }
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationVersionAlreadyExists.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationVersionAlreadyExists.java
new file mode 100644
index 00000000..c62153b8
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationVersionAlreadyExists.java
@@ -0,0 +1,40 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ApplicationVersionAlreadyExists extends ApplicationVersionException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ApplicationVersionAlreadyExists(String applicationName, String versionNumber) {
+ super(applicationName, versionNumber);
+ }
+
+ @Override
+ protected String getMessageInfo() {
+ return "already exists";
+ }
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationVersionCausedException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationVersionCausedException.java
new file mode 100644
index 00000000..66e20885
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationVersionCausedException.java
@@ -0,0 +1,42 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ApplicationVersionCausedException extends ApplicationVersionException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ApplicationVersionCausedException(String applicationName, Throwable e, String versionNumber) {
+ super(applicationName, e, versionNumber);
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Aplication version exception: [%s]/[%s]; %s", getApplicationName(), getVersionNumber(),
+ getCause().getMessage());
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationVersionException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationVersionException.java
new file mode 100644
index 00000000..83d2ddf7
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ApplicationVersionException.java
@@ -0,0 +1,61 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ApplicationVersionException extends ApplicationException {
+
+ private static final long serialVersionUID = 1L;
+
+ String versionNumber;
+
+ public ApplicationVersionException(String applicationName, String versionNumber) {
+ super(applicationName);
+ setVersionNumber(versionNumber);
+ }
+
+ public ApplicationVersionException(String applicationName, Throwable e, String versionNumber) {
+ super(applicationName, e);
+ setVersionNumber(versionNumber);
+ }
+
+ public String getVersionNumber() {
+ return versionNumber;
+ }
+
+ public void setVersionNumber(String versionNumber) {
+ this.versionNumber = versionNumber;
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Application version %s: [%s]/[%s]", getMessageInfo(), applicationName, versionNumber);
+ }
+
+ protected String getMessageInfo() {
+ return "caused exception";
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/EntaxyApplicationsException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/EntaxyApplicationsException.java
new file mode 100644
index 00000000..14888c1d
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/EntaxyApplicationsException.java
@@ -0,0 +1,40 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class EntaxyApplicationsException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ public EntaxyApplicationsException() {
+ super();
+ }
+
+ public EntaxyApplicationsException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ItemException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ItemException.java
new file mode 100644
index 00000000..32cec13c
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ItemException.java
@@ -0,0 +1,47 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public abstract class ItemException extends ProjectVersionException {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String itemId;
+
+ public ItemException(String applicationName, String versionNumber, String itemId) {
+ super(applicationName, versionNumber);
+ this.itemId = itemId;
+ }
+
+ public String getItemId() {
+ return itemId;
+ }
+
+ public void setItemId(String itemId) {
+ this.itemId = itemId;
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ItemIsGhostException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ItemIsGhostException.java
new file mode 100644
index 00000000..269aa8dd
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ItemIsGhostException.java
@@ -0,0 +1,42 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ItemIsGhostException extends ItemException {
+
+
+
+ private static final long serialVersionUID = 1L;
+
+ public ItemIsGhostException(String applicationName, String versionNumber, String itemId) {
+ super(applicationName, versionNumber, itemId);
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Item operation not allowed for ghost: [%s]", itemId);
+ }
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ItemIsPlatformException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ItemIsPlatformException.java
new file mode 100644
index 00000000..2861a0fe
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ItemIsPlatformException.java
@@ -0,0 +1,42 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ItemIsPlatformException extends ItemException {
+
+
+
+ private static final long serialVersionUID = 1L;
+
+ public ItemIsPlatformException(String applicationName, String versionNumber, String itemId) {
+ super(applicationName, versionNumber, itemId);
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Item operation not allowed for platform object: [%s]", itemId);
+ }
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ItemNotFoundException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ItemNotFoundException.java
new file mode 100644
index 00000000..b00e2f99
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ItemNotFoundException.java
@@ -0,0 +1,40 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ItemNotFoundException extends ItemException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ItemNotFoundException(String applicationName, String versionNumber, String itemId) {
+ super(applicationName, versionNumber, itemId);
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Item [%s] not found in [%s]/[%s]", itemId, applicationName, versionNumber);
+ }
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectAlreadyExistsException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectAlreadyExistsException.java
new file mode 100644
index 00000000..d9025951
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectAlreadyExistsException.java
@@ -0,0 +1,41 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ProjectAlreadyExistsException extends ProjectException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ProjectAlreadyExistsException(String applicationName) {
+ super(applicationName);
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Application [%s] already exists", applicationName);
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectException.java
new file mode 100644
index 00000000..586ac1ca
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectException.java
@@ -0,0 +1,51 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public abstract class ProjectException extends EntaxyApplicationsException {
+
+ private static final long serialVersionUID = 1L;
+ protected String applicationName;
+
+ public ProjectException(String applicationName) {
+ super();
+ this.applicationName = applicationName;
+ }
+
+ public ProjectException(String applicationName, Throwable cause) {
+ super(cause);
+ this.applicationName = applicationName;
+ }
+
+ public String getApplicationName() {
+ return applicationName;
+ }
+
+ public void setApplicationName(String applicationName) {
+ this.applicationName = applicationName;
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectNotFoundException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectNotFoundException.java
new file mode 100644
index 00000000..2a674b18
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectNotFoundException.java
@@ -0,0 +1,39 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ProjectNotFoundException extends ProjectException {
+
+ public ProjectNotFoundException(String applicationName) {
+ super(applicationName);
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Application [%s] not found", applicationName);
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionBuildNotAvailable.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionBuildNotAvailable.java
new file mode 100644
index 00000000..87eddc57
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionBuildNotAvailable.java
@@ -0,0 +1,41 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ProjectVersionBuildNotAvailable extends ProjectVersionException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ProjectVersionBuildNotAvailable(String applicationName, String versionNumber) {
+ super(applicationName, versionNumber);
+ }
+
+ @Override
+ protected String getMessageInfo() {
+ return "bild not available";
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionCausedException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionCausedException.java
new file mode 100644
index 00000000..ddc5db2e
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionCausedException.java
@@ -0,0 +1,41 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ProjectVersionCausedException extends ProjectVersionException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ProjectVersionCausedException(String applicationName, String versionNumber, Throwable cause) {
+ super(applicationName, versionNumber, cause);
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Version exception on [%s]/[%s]: %s", applicationName, versionNumber,
+ getCause().getMessage());
+ }
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionException.java
new file mode 100644
index 00000000..3c952d87
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionException.java
@@ -0,0 +1,61 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ProjectVersionException extends ProjectException {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String versionNumber;
+
+ public ProjectVersionException(String applicationName, String versionNumber) {
+ super(applicationName);
+ this.versionNumber = versionNumber;
+ }
+
+ public ProjectVersionException(String applicationName, String versionNumber, Throwable cause) {
+ super(applicationName, cause);
+ this.versionNumber = versionNumber;
+ }
+
+ public String getVersionNumber() {
+ return versionNumber;
+ }
+
+ public void setVersionNumber(String versionNumber) {
+ this.versionNumber = versionNumber;
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Version %s: [%s]/[%s]", getMessageInfo(), applicationName, versionNumber);
+ }
+
+ protected String getMessageInfo() {
+ return "caused exception";
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionIsDirtyException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionIsDirtyException.java
new file mode 100644
index 00000000..5a9f0f52
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionIsDirtyException.java
@@ -0,0 +1,41 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ProjectVersionIsDirtyException extends ProjectVersionException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ProjectVersionIsDirtyException(String applicationName, String versionNumber) {
+ super(applicationName, versionNumber);
+ }
+
+ @Override
+ protected String getMessageInfo() {
+ return "is dirty";
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionNotConsistentException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionNotConsistentException.java
new file mode 100644
index 00000000..b239ac82
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionNotConsistentException.java
@@ -0,0 +1,41 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ProjectVersionNotConsistentException extends ProjectVersionException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ProjectVersionNotConsistentException(String applicationName, String versionNumber) {
+ super(applicationName, versionNumber);
+ }
+
+ @Override
+ protected String getMessageInfo() {
+ return "not consistent";
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionNotFoundException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionNotFoundException.java
new file mode 100644
index 00000000..8f3fa827
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/ProjectVersionNotFoundException.java
@@ -0,0 +1,40 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class ProjectVersionNotFoundException extends ProjectVersionException {
+
+ private static final long serialVersionUID = 1L;
+
+ public ProjectVersionNotFoundException(String applicationName, String versionNumber) {
+ super(applicationName, versionNumber);
+ }
+
+ @Override
+ public String getMessageInfo() {
+ return "not found";
+ }
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionCausedException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionCausedException.java
new file mode 100644
index 00000000..b0e24ceb
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionCausedException.java
@@ -0,0 +1,41 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class RevisionCausedException extends RevisionException {
+
+ private static final long serialVersionUID = 1L;
+
+ public RevisionCausedException(String applicationName, Throwable e, String versionNumber, int revisionNumber) {
+ super(applicationName, e, versionNumber, revisionNumber);
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Application revision [%s]/[%s]:[%d] caused exception: %s", getApplicationName(),
+ getVersionNumber(), getRevisionNumber(), getCause().getMessage());
+ }
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionException.java
new file mode 100644
index 00000000..8002627f
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionException.java
@@ -0,0 +1,62 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class RevisionException extends ApplicationVersionException {
+
+ private static final long serialVersionUID = 1L;
+ int revisionNumber;
+
+ public RevisionException(String applicationName, String versionNumber, int revisionNumber) {
+ super(applicationName, versionNumber);
+ setRevisionNumber(revisionNumber);
+ }
+
+ public RevisionException(String applicationName, Throwable e, String versionNumber, int revisionNumber) {
+ super(applicationName, e, versionNumber);
+ setRevisionNumber(revisionNumber);
+ }
+
+ public int getRevisionNumber() {
+ return revisionNumber;
+ }
+
+ public void setRevisionNumber(int revisionNumber) {
+ this.revisionNumber = revisionNumber;
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Application revision %s: [%s]/[%s]:[%d]", getMessageInfo(), getApplicationName(),
+ getVersionNumber(), getRevisionNumber());
+ }
+
+ @Override
+ protected String getMessageInfo() {
+ return "caused exception";
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionIllegalNumber.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionIllegalNumber.java
new file mode 100644
index 00000000..09ca0d71
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionIllegalNumber.java
@@ -0,0 +1,53 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class RevisionIllegalNumber extends RevisionException {
+
+ private static final long serialVersionUID = 1L;
+
+ String illegalNumber;
+
+ public RevisionIllegalNumber(String applicationName, String versionNumber, String illegalNumber) {
+ super(applicationName, versionNumber, 0);
+ setIllegalNumber(illegalNumber);
+ }
+
+ public String getIllegalNumber() {
+ return illegalNumber;
+ }
+
+ public void setIllegalNumber(String illegalNumber) {
+ this.illegalNumber = illegalNumber;
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Illegal revision number [%s] in application: [%s]/[%s]", illegalNumber,
+ getApplicationName(), getVersionNumber());
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionIllegalTransition.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionIllegalTransition.java
new file mode 100644
index 00000000..38a404aa
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionIllegalTransition.java
@@ -0,0 +1,50 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+import ru.entaxy.platform.integration.applications.EntaxyApplicationRevision.REVISION_STATUS;
+
+public class RevisionIllegalTransition extends RevisionException {
+
+ private static final long serialVersionUID = 1L;
+
+ protected REVISION_STATUS fromStatus;
+
+ protected REVISION_STATUS toStatus;
+
+ public RevisionIllegalTransition(String applicationName, String versionNumber, int revisionNumber,
+ REVISION_STATUS fromStatus, REVISION_STATUS toStatus) {
+ super(applicationName, versionNumber, revisionNumber);
+ this.fromStatus = fromStatus;
+ this.toStatus = toStatus;
+ }
+
+ @Override
+ protected String getMessageInfo() {
+ return String.format("transition not allowed from [%s] to [%s]", fromStatus.name(), toStatus.name());
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionNotConfigurable.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionNotConfigurable.java
new file mode 100644
index 00000000..adf4d032
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionNotConfigurable.java
@@ -0,0 +1,40 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class RevisionNotConfigurable extends RevisionException {
+
+ private static final long serialVersionUID = 1L;
+
+ public RevisionNotConfigurable(String applicationName, String versionNumber, int revisionNumber) {
+ super(applicationName, versionNumber, revisionNumber);
+ }
+
+ @Override
+ protected String getMessageInfo() {
+ return "not configurable";
+ }
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionNotFound.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionNotFound.java
new file mode 100644
index 00000000..bb257c40
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionNotFound.java
@@ -0,0 +1,40 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class RevisionNotFound extends RevisionException {
+
+ private static final long serialVersionUID = 1L;
+
+ public RevisionNotFound(String applicationName, String versionNumber, int revisionNumber) {
+ super(applicationName, versionNumber, revisionNumber);
+ }
+
+ @Override
+ protected String getMessageInfo() {
+ return "not found";
+ }
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionRequirementsNotSatisfied.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionRequirementsNotSatisfied.java
new file mode 100644
index 00000000..7c3c453d
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/RevisionRequirementsNotSatisfied.java
@@ -0,0 +1,53 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+import java.util.List;
+
+import ru.entaxy.platform.integration.applications.descriptor.ApplicationRequirement;
+
+public class RevisionRequirementsNotSatisfied extends RevisionException {
+
+ private static final long serialVersionUID = 1L;
+
+ protected List requirements;
+
+ public RevisionRequirementsNotSatisfied(String applicationName, String versionNumber, int revisionNumber,
+ List requirements) {
+ super(applicationName, versionNumber, revisionNumber);
+ this.requirements = requirements;
+ }
+
+ @Override
+ protected String getMessageInfo() {
+ String data = "requirements not satisfied:";
+ for (ApplicationRequirement req : requirements)
+ data = data.concat("\n\t").concat(req.getId()).concat(": ").concat(req.getType().name()).concat(" / ")
+ .concat(req.getScope().name());
+ return data.concat("\n");
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/StorageException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/StorageException.java
new file mode 100644
index 00000000..eadb2e23
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/StorageException.java
@@ -0,0 +1,38 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public abstract class StorageException extends EntaxyApplicationsException {
+
+ private static final long serialVersionUID = 1L;
+ protected String storageName;
+
+ public StorageException(String storageName) {
+ super();
+ this.storageName = storageName;
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/StorageNotEnabledException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/StorageNotEnabledException.java
new file mode 100644
index 00000000..1a26d5ea
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/StorageNotEnabledException.java
@@ -0,0 +1,41 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class StorageNotEnabledException extends StorageException {
+
+ private static final long serialVersionUID = 1L;
+
+ public StorageNotEnabledException(String storageName) {
+ super(storageName);
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Storage [%s] not enabled", this.storageName);
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/StorageNotFoundException.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/StorageNotFoundException.java
new file mode 100644
index 00000000..a82bc27f
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/exceptions/StorageNotFoundException.java
@@ -0,0 +1,41 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.exceptions;
+
+public class StorageNotFoundException extends StorageException {
+
+ private static final long serialVersionUID = 1L;
+
+ public StorageNotFoundException(String storageName) {
+ super(storageName);
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("Storage [%s] not found", this.storageName);
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/item/project/EntaxyBundleItem.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/item/project/EntaxyBundleItem.java
new file mode 100644
index 00000000..476d6c84
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/item/project/EntaxyBundleItem.java
@@ -0,0 +1,34 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.item.project;
+
+import ru.entaxy.platform.integration.applications.ApplicationProjectItem;
+
+public interface EntaxyBundleItem extends ApplicationProjectItem {
+ long getBundleId();
+
+ String getBundleSymbolicName();
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/item/project/EntaxyConfigItem.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/item/project/EntaxyConfigItem.java
new file mode 100644
index 00000000..4073cbca
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/item/project/EntaxyConfigItem.java
@@ -0,0 +1,30 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.item.project;
+
+public interface EntaxyConfigItem extends EntaxyObjectItem {
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/item/project/EntaxyObjectItem.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/item/project/EntaxyObjectItem.java
new file mode 100644
index 00000000..80f75ce8
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/item/project/EntaxyObjectItem.java
@@ -0,0 +1,34 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.item.project;
+
+import ru.entaxy.platform.objects.runtime.EntaxyRuntimeObject;
+
+public interface EntaxyObjectItem extends EntaxyBundleItem {
+
+ EntaxyRuntimeObject getObject();
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/item/project/EntaxyResourceItem.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/item/project/EntaxyResourceItem.java
new file mode 100644
index 00000000..727117c2
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/item/project/EntaxyResourceItem.java
@@ -0,0 +1,35 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.item.project;
+
+import ru.entaxy.esb.resources.EntaxyResource;
+import ru.entaxy.platform.integration.applications.ApplicationProjectItem;
+
+public interface EntaxyResourceItem extends ApplicationProjectItem {
+
+ EntaxyResource getResource();
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/storage/AbstractApplicationStorage.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/storage/AbstractApplicationStorage.java
new file mode 100644
index 00000000..32ced5e9
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/storage/AbstractApplicationStorage.java
@@ -0,0 +1,96 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.storage;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import ru.entaxy.platform.integration.applications.ApplicationStorage;
+
+public abstract class AbstractApplicationStorage implements ApplicationStorage {
+
+ protected String name;
+
+ protected String type = "unknown";
+
+ protected boolean isEnabled = true;
+
+ protected Map storageInfo = new HashMap<>();
+
+ protected AbstractApplicationStorage() {
+ super();
+ if (this.getClass().isAnnotationPresent(ApplicationStorageInfo.class)) {
+ ApplicationStorageInfo anno = this.getClass().getAnnotation(ApplicationStorageInfo.class);
+ setName(anno.name());
+ setEnabled(anno.defaultEnabled());
+ type = anno.type();
+ }
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setEnabled(boolean isEnabled) {
+ this.isEnabled = isEnabled;
+ }
+
+ protected void setInfo(String key, Object value) {
+ this.storageInfo.put(key, value);
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public String getType() {
+ return type;
+ }
+
+ @Override
+ public Map getInfo() {
+ return Collections.unmodifiableMap(storageInfo);
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return isEnabled;
+ }
+
+ @Override
+ public void enable() {
+ setEnabled(true);
+ }
+
+ @Override
+ public void disable() {
+ setEnabled(false);
+ }
+
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/storage/ApplicationStorageInfo.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/storage/ApplicationStorageInfo.java
new file mode 100644
index 00000000..e70ee539
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/storage/ApplicationStorageInfo.java
@@ -0,0 +1,42 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.storage;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target(TYPE)
+public @interface ApplicationStorageInfo {
+ String name();
+
+ String type() default "unknown";
+
+ boolean defaultEnabled() default true;
+}
diff --git a/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/utils/JarArtifact.java b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/utils/JarArtifact.java
new file mode 100644
index 00000000..053a39b8
--- /dev/null
+++ b/platform/integration/applications/application-api/src/main/java/ru/entaxy/platform/integration/applications/utils/JarArtifact.java
@@ -0,0 +1,30 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-api
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.utils;
+
+public class JarArtifact {
+
+}
diff --git a/platform/integration/applications/application-impl/LICENSE.txt b/platform/integration/applications/application-impl/LICENSE.txt
new file mode 100644
index 00000000..4ae94b75
--- /dev/null
+++ b/platform/integration/applications/application-impl/LICENSE.txt
@@ -0,0 +1,175 @@
+ ЛИЦЕНЗИЯ ОГРАНИЧЕННОГО ПРИМЕНЕНИЯ
+
+Настоящий документ устанавливает для Пользователя условия применения Базовой (некоммерческой)
+версии лицензии для пробного использования программного обеспечения ENTAXY, принадлежащего
+Правообладателю – Обществу с ограниченной ответственностью "ЕМДЕВ" (ОГРН 1057810026658, ИНН
+7813313860, юридический адрес: 197022, Россия, г. Санкт-Петербург, ул. Профессора Попова,
+д. 23, литера В, помещение 3Н), расположенной в сети Интернет по адресу
+https://www.emdev.ru/about (далее - Компания).
+
+Используя или получая доступ к Программному обеспечению, или нажав «Я согласен с Условиями»
+(или аналогичную кнопку или флажок) после загрузки или установки Программного обеспечения,
+Пользователь выражает свое согласие на обязательность условий и ограничений, изложенных в
+настоящем документе, в противном случае, он должен не использовать или не получать доступ
+к Программному обеспечению.
+
+ 1. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
+
+a) ПО – Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) в любой ее версии
+или редакции, исключительные права на которую принадлежат Правообладателю.
+b) Правообладатель (Компания) – ООО «ЕМДЕВ», ОГРН 1057810026658, ИНН 7813313860, исключительные
+права которого подтверждаются Свидетельством о государственной регистрации в Реестре программ
+для ЭВМ № 2021610848 от 19.01.2021 года.
+c) Пользователь – юридическое или физическое лицо, получившее через скачивание с сайта
+https://entaxy.ru или иным образом, дистрибутив ПО, пользующееся ПО.
+d) ИС – интеллектуальная собственность – закреплённое законом исключительное право, а также
+личные неимущественные права авторов произведений на результат интеллектуальной деятельности.
+e) Подписка – это коммерческое предложение Правообладателя, состоящее из Лицензии на использование
+ПО и доступа к технической поддержке программного обеспечения на срок Подписки. Подписка
+включает предоставление Пользователю неисключительного права использования ПО, в том числе
+получение обновлений функционала ПО и безопасности ПО, исправление ошибок ПО и получение
+патчей с обновлениями и исправлениями программного обеспечения. Подписка приобретается
+Пользователем на период времени, указанный в Сертификате. Количество подписок устанавливается
+для каждого Пользователя индивидуально в Сертификате.
+f) Сертификат – документ, выдаваемый Дистрибъютором или Авторизованным партнёром (Партнёром),
+подтверждающий факт приобретения физическим или юридическим лицом Подписки на программное
+обеспечение в ограниченном объёме и на определённый период времени.
+g) Лицензия (простая (неисключительная) – совокупность ограниченных прав использования ПО,
+предоставленных Пользователю согласно условиям Подписки.
+h) Библиотека – совокупность подпрограмм и объектов, используемых для разработки программного
+обеспечения.
+i) Исходный код – текст компьютерной программы на каком-либо языке программирования, состоящий
+из одного или нескольких файлов, который может быть прочтён человеком.
+j) Объектный код – файл (часть машинного кода) с промежуточным представлением отдельного модуля
+программы, полученный в результате обработки исходного кода, еще не связанный в полную программу.
+Это машинный код для одной конкретной библиотеки или модуля, который будет составлять готовый
+продукт.
+k) Некоммерческое использование – индивидуальное личное использование Пользователем программного
+обеспечения с целью обучения работе с Программным обеспечением, для оценки или демонстрации
+возможностей Программного обеспечения, при котором, Пользователем не извлекается коммерческая
+выгода и/или не идёт в доход денежное вознаграждение при использовании Программного обеспечения.
+
+ 2. ДОПУСТИМЫЕ СПОСОБЫ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
+
+2.1. Правообладатель предоставляет Пользователю ограниченное право использования Программного
+обеспечения на условиях простой (неисключительной) лицензии в объёме, ограниченном правом
+воспроизведения полной рабочей версии программного обеспечения, новых версий программного обеспечения
+в памяти оборудования и его запуска на оборудовании в соответствии со ст. 1280 ГК РФ.
+2.2. Право на использование Программного обеспечения, предоставляемое Пользователю, носит
+неисключительный характер.
+2.3. Пользователю предоставляется всемирная, неисключительная, не подлежащая сублицензированию,
+лицензия на ограниченное использование Программного обеспечения.
+2.4. Пользователь, имеющий Базовую (некоммерческую) версию лицензии для пробного использования
+имеет право приобрести Подписку на программное обеспечение. В этом случае Пользователь обязан
+обратиться в службу поддержки Правообладателя по адресу: https://entaxy.ru/ для изменения
+вида лицензии с Базовой бесплатной версии на Подписки.
+2.5. Срок использования скачанной Пользователем базовой (некоммерческой) версии лицензии для
+пробного использования программного обеспечения – не ограничен.
+2.6. Использование Пользователем настоящего программного обеспечения в целях разработки,
+модификации, обновления другого ПО, принадлежащего третьим лицам, а не Правообладателю,
+без разрешения Правообладателя не допускается.
+
+ 3. АВТОРСКОЕ ПРАВО.
+
+3.1. Все авторские права, все права интеллектуальной собственности на Программное обеспечение
+и любые его копии принадлежат Правообладателю.
+3.2. Все авторские права, все права интеллектуальной собственности в отношении любого контента,
+к которому можно получить доступ с помощью Программного обеспечения, является собственностью
+соответствующего владельца контента и защищается применимым законодательством об авторском
+праве или другими законами и договорами об интеллектуальной собственности.
+3.3. Условия использования Программного обеспечения.
+Лицензия, предоставленная Пользователю, действительна только в том случае, если Пользователь
+придерживается следующих условий:
+3.3.1. Принятие уведомлений об авторских правах. Пользователю запрещается удалять или изменять
+какие-либо уведомления об авторских правах или лицензиях, которые появляются при использовании
+Программного обеспечения или на нем.
+3.3.2. Модификация. Пользователю запрещается модифицировать, изменять, декомпилировать,
+расшифровывать, дизассемблировать, переводить или реверсировать, перепроектировать
+Программное обеспечение.
+3.3.3. Распространение. Пользователю запрещается сублицензировать, передавать право использования
+ПО или иным образом распространять или предоставлять Программное обеспечение любой третьей стороне.
+3.3.4. SaaS. За исключением случаев, когда это разрешено Правообладателем, Пользователю запрещено
+использовать Программное обеспечение в коммерческих целях для оказания услуг третьим лицам.
+
+ 4. ОТВЕТСТВЕННОСТЬ ПРАВООБЛАДАТЕЛЯ ПРИ НАРУШЕНИИ ПОЛЬЗОВАТЕЛЕМ ПРАВ «ИС»
+
+4.1. Правообладатель не несет никаких обязательств в отношении каких-либо претензий к Пользователю
+на предмет нарушения последним прав Интеллектуальной собственности, возникших в связи с
+использованием Пользователем:
+4.1.1. Любых компонентов программного обеспечения с открытым исходным кодом, включенных в
+Программное обеспечение;
+4.1.2. Любого нарушения правил использования Программного обеспечения, установленного условиями
+настоящего соглашения;
+4.1.3. Любого использования Программного обеспечения в сочетании с другими ПО, оборудованием,
+или данными, не предоставленными Пользователю Правообладателем;
+4.1.4. Любого изменения Программного обеспечения любым третьим лицом, а не Правообладателем.
+
+
+5. НАСТОЯЩИМ ПРАВООБЛАДАТЕЛЬ ЗАЯВЛЯЕТ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ПОЛЬЗОВАТЕЛЮ
+ПО ПРИНЦИПУ «AS IS» - «КАК ЕСТЬ». НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ НЕ ГАРАНТИРУЕТ
+И НЕ ОБЕЩАЕТ, ЧТО ПРЕДОСТАВЛЕННОЕ ИМ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ПОДХОДИТЬ ИЛИ НЕ ПОДХОДИТЬ
+ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ ОТВЕЧАТЬ ВСЕМ КОММЕРЧЕСКИМ
+И ЛИЧНЫМ СУБЪЕКТИВНЫМ ОЖИДАНИЯМ ПОЛЬЗОВАТЕЛЯ, ЧТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ БУДЕТ РАБОТАТЬ
+ИСПРАВНО, БЕЗ ТЕХНИЧЕСКИХ ОШИБОК, БЫСТРО И БЕСПЕРЕБОЙНО.
+
+ 6. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ.
+НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРАВООБЛАДАТЕЛЬ ИЛИ ЕГО АФФИЛЛИРОВАННЫЕ ЛИЦА НЕ НЕСУТ ПЕРЕД ПОЛЬЗОВАТЕЛЕМ
+ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ ПОЛЬЗОВАТЕЛЯ, ЕГО РАСХОДЫ ИЛИ РЕАЛЬНЫЙ УЩЕРБ,
+ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ПРОСТОИ; УТРАТУ БИЗНЕСА; УПУЩЕННУЮ ВЫГОДУ; НЕДОПОЛУЧЕННУЮ ПРИБЫЛЬ;
+ПОТЕРЮ ИЛИ ПОВРЕЖДЕНИЕ ДАННЫХ, ИМУЩЕСТВА И ИНОЕ.
+ОГРАНИЧЕНИЯ ПРИМЕНЯЮТСЯ НЕЗАВИСИМО ОТ ОСНОВАНИЯ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ; В ТОМ ЧИСЛЕ ВСЛЕДСТВИЕ
+ДЕЙСТВИЯ ИЛИ БЕЗДЕЙСТВИЯ, НЕБРЕЖНОСТИ, УМЫСЛА, ПРЯМОГО ИЛИ КОСВЕННОГО; НЕОСТОРОЖНОСТИ; ЗАБЛУЖДЕНИЯ;
+КЛЕВЕТЫ; НАРУШЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ИЛИ ПРАВА ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ; ИЛИ ЛЮБОЕ ДРУГОЕ
+ОСНОВАНИЕ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ.
+
+ 7. ОБЯЗАННОСТЬ ПОЛЬЗОВАТЕЛЯ:
+Не осуществлять самостоятельно и (или) с привлечением третьих лиц нижеследующие действия
+(включая, но не ограничиваясь) по:
+-дизассемблированию и (или) декомпилированию (преобразованию объектного кода в исходный код)
+ Программного обеспечения;
+-модификации Программного обеспечения, в том числе вносить изменения в объектный код, исходный
+код Программного обеспечения, за исключением тех изменений, которые вносятся средствами,
+включёнными в Программное обеспечение и описанными непосредственно в документации к нему;
+-созданию условий для использования Программного обеспечения лицами, не имеющими прав на
+использование данного Программного обеспечения, включая (но не ограничиваясь) вмешательство
+третьих лиц в функционирование Программного обеспечения, предоставление третьим лицам доступа
+к исследованию и (или) замене настроек Программного обеспечения, включая его первичную установку;
+-распространению Программного обеспечения в целом или в части (включая приложенную к нему документацию).
+
+ 8. БИБЛИОТЕКА ПО. ИСПОЛЬЗУЕМЫЕ ПРОГРАММНЫЕ СРЕДСТВА.
+
+8.1. Настоящим, Правообладатель заверяет, что Библиотека программного обеспечения состоит из
+лицензионных продуктов, используемых на законных основаниях, а
+именно https://entaxy.ru/libs/licenses/root-aggregated.deps.
+8.2. Любые программные средства, применяемые Пользователем при работе с ПО, должны быть
+совместимы с библиотекой ПО, указанной в п.8.1. настоящего соглашения.
+8.3. Перечень внешних модулей ПО, указанный в п.8.1 настоящего соглашения, может изменяться
+Правообладателем в одностороннем порядке, в зависимости от выпуска релизов программного обеспечения,
+содержащих все изменения и дополнения программного обеспечения.
+
+ 9. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
+
+9.1. Программное обеспечение, интеграционная шина «ЭНТАКСИ» (ENTAXY) является свободно распространяемым
+программным обеспечением.
+9.2. Пользователь имеет право вносить изменения в исходный код программного обеспечения исключительно
+с согласия Правообладателя в порядке предложения изменений/правок/дополнений через механизм
+«Pull Requests» в открытом репозитории Правообладателя по адресу: https://git.entaxy.ru/entaxy/entaxy-public.
+9.3. Любые изменения программного обеспечения, осуществляемые Пользователем без соблюдения условий
+пункта 9.2. настоящего документа, являются нарушением авторских и смежных прав Правообладателя,
+прав интеллектуальной собственности Правообладателя и влекут применение к Пользователю мер
+ответственности в соответствии с условиями настоящей Лицензии, а также применимого законодательства
+Российской Федерации.
+
+ 10. ЗАКЛЮЧИТЕЛЬНЫЕ ПОЛОЖЕНИЯ.
+
+10.1. В случае нарушения Пользователем любого из условий настоящей Лицензии, Правообладатель имеет
+право взыскать с Пользователя любые причинённые таким нарушением убытки, реальный ущерб,
+недополученную прибыль, упущенную выгоду, а также в случае нарушения Пользователем условий
+пункта 9.2 настоящего соглашения, в том числе, взыскать с Пользователя штраф в размере
+2 000 000 (Два миллиона) рублей за каждый установленный случай несанкционированного изменения
+исходного или объектного кода Программного обеспечения «Энтакси» (Entaxy).
+10.2. В рамках исполнения Пользователем обязательств по настоящей Лицензии, применимое
+законодательство – Российской Федерации.
+10.3. Если какое-либо положение настоящей Лицензии будет признано судом недействительным,
+остальные положения будут продолжать своё действие, а Пользователь будет обязан продолжать
+исполнять свои обязанности в соответствии с этими положениями.
diff --git a/platform/integration/applications/application-impl/pom.xml b/platform/integration/applications/application-impl/pom.xml
new file mode 100644
index 00000000..a956e4dd
--- /dev/null
+++ b/platform/integration/applications/application-impl/pom.xml
@@ -0,0 +1,142 @@
+
+
+ 4.0.0
+
+ ru.entaxy.platform.integration
+ applications
+ 1.10.0
+
+ ru.entaxy.platform.integration.applications
+ application-impl
+ bundle
+ ENTAXY :: PLATFORM :: INTEGRATION :: APPLICATIONS :: IMPL
+ ENTAXY :: PLATFORM :: INTEGRATION :: APPLICATIONS :: IMPL
+
+
+ ru.entaxy.platform.integration.applications.impl,
+ ru.entaxy.platform.integration.applications.impl.*
+
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+
+ true
+
+
+
+
+
+
+
+
+
+ ru.entaxy.platform.integration.applications
+ application-api
+ ${project.version}
+
+
+ org.apache.felix
+ org.apache.felix.scr
+
+
+
+
+ ru.entaxy.esb.platform.runtime.base
+ base-support
+ ${project.version}
+
+
+ org.apache.felix
+ org.apache.felix.scr
+
+
+
+
+ ru.entaxy.esb.platform.runtime.core
+ artifact-management
+ ${project.version}
+
+
+ org.apache.felix
+ org.apache.felix.scr
+
+
+ org.apache.karaf
+ org.apache.karaf.util
+
+
+
+
+ ru.entaxy.esb.platform.runtime.core
+ artifact-management-extensions
+ ${project.version}
+
+
+ org.apache.felix
+ org.apache.felix.scr
+
+
+ org.apache.karaf
+ org.apache.karaf.util
+
+
+
+
+ commons-io
+ commons-io
+ ${commons-io.version}
+
+
+ ru.entaxy.esb.platform.runtime.base.connecting.generator
+ generator-api
+ ${project.version}
+
+
+ org.apache.felix
+ org.apache.felix.scr
+
+
+ org.apache.karaf
+ org.apache.karaf.util
+
+
+
+
+ ru.entaxy.esb.platform.runtime.base.connecting.generator
+ generator-factory
+ ${project.version}
+
+
+ org.apache.felix
+ org.apache.felix.scr
+
+
+
+
+ ru.entaxy.esb.platform.runtime.base
+ cellar-extensions
+ ${project.version}
+
+
+ org.apache.felix
+ org.apache.felix.scr
+
+
+ org.apache.karaf
+ org.apache.karaf.util
+
+
+
+
+ ru.entaxy.esb.platform.runtime.core.objects-implementations.config-implementation
+ config-runtime
+ ${project.version}
+
+
+
+
diff --git a/platform/integration/applications/application-impl/src/main/java/ru/entaxy/platform/integration/applications/impl/ApplicationManagerImpl.java b/platform/integration/applications/application-impl/src/main/java/ru/entaxy/platform/integration/applications/impl/ApplicationManagerImpl.java
new file mode 100644
index 00000000..3d2c186d
--- /dev/null
+++ b/platform/integration/applications/application-impl/src/main/java/ru/entaxy/platform/integration/applications/impl/ApplicationManagerImpl.java
@@ -0,0 +1,175 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-impl
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+import org.osgi.service.component.annotations.ReferencePolicyOption;
+
+import ru.entaxy.platform.integration.applications.ApplicationManager;
+import ru.entaxy.platform.integration.applications.ApplicationStorage;
+import ru.entaxy.platform.integration.applications.ApplicationStorage.ApplicationImportContent;
+import ru.entaxy.platform.integration.applications.EntaxyApplication;
+import ru.entaxy.platform.integration.applications.EntaxyApplicationProjectVersion;
+import ru.entaxy.platform.integration.applications.exceptions.ApplicationException;
+import ru.entaxy.platform.integration.applications.exceptions.ApplicationImportCausedException;
+import ru.entaxy.platform.integration.applications.exceptions.StorageException;
+import ru.entaxy.platform.integration.applications.exceptions.StorageNotEnabledException;
+import ru.entaxy.platform.integration.applications.exceptions.StorageNotFoundException;
+import ru.entaxy.platform.integration.applications.exceptions.ProjectVersionBuildNotAvailable;
+import ru.entaxy.platform.integration.applications.exceptions.ProjectVersionCausedException;
+import ru.entaxy.platform.integration.applications.exceptions.ProjectVersionException;
+
+@Component(service = ApplicationManager.class, immediate = true)
+public class ApplicationManagerImpl implements ApplicationManager {
+
+ protected Map storages = new HashMap<>();
+ protected Object storagesLock = new Object();
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY, policy = ReferencePolicy.DYNAMIC,
+ policyOption = ReferencePolicyOption.GREEDY)
+ volatile ExportImportHelper exportImportHelper;
+
+ @Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC,
+ policyOption = ReferencePolicyOption.GREEDY, unbind = "unregisterStorage")
+ public void registerStorage(ApplicationStorage storage) {
+ synchronized (storagesLock) {
+ storages.put(storage.getName(), storage);
+ }
+ }
+
+ public void unregisterStorage(ApplicationStorage storage) {
+ synchronized (storagesLock) {
+ storages.remove(storage.getName());
+ }
+ }
+
+ protected ApplicationStorage getStorageUnsafe(String storageName) throws StorageException {
+ ApplicationStorage storage = storages.get(storageName);
+ if (storage == null)
+ throw new StorageNotFoundException(storageName);
+ if (!storage.isEnabled())
+ throw new StorageNotEnabledException(storageName);
+ return storage;
+ }
+
+ /* ApplicationManager implementation */
+
+ @Override
+ public ApplicationStorage getStorage(String storageName) {
+ return storages.get(storageName);
+ }
+
+ @Override
+ public List getAllStorages() {
+ return new ArrayList<>(storages.values());
+ }
+
+ @Override
+ public void addStorage(ApplicationStorage applicationStorage) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void removeStorage(ApplicationStorage applicationStorage) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void exportToFile(EntaxyApplicationProjectVersion version, String filePath) throws ProjectVersionException {
+ if (!version.isBuildAvailable())
+ throw new ProjectVersionBuildNotAvailable(version.getApplication().getName(), version.getVersionNumber());
+ Map props = new HashMap<>();
+ props.put("filePath", filePath);
+ try {
+ exportImportHelper.doExport(version, "file", props);
+ } catch (ProjectVersionException ve) {
+ throw ve;
+ } catch (Exception e) {
+ throw new ProjectVersionCausedException(version.getApplication().getName(), version.getVersionNumber(), e);
+ }
+ }
+
+ @Override
+ public void exportToRepository(EntaxyApplicationProjectVersion version, String repositoryName)
+ throws ProjectVersionException {
+ if (!version.isBuildAvailable())
+ throw new ProjectVersionBuildNotAvailable(version.getApplication().getName(), version.getVersionNumber());
+ Map props = new HashMap<>();
+ props.put("repositoryName", repositoryName);
+ try {
+ exportImportHelper.doExport(version, "repository", props);
+ } catch (ProjectVersionException ve) {
+ throw ve;
+ } catch (Exception e) {
+ throw new ProjectVersionCausedException(version.getApplication().getName(), version.getVersionNumber(), e);
+ }
+ }
+
+ @Override
+ public EntaxyApplication importApplicationFromFile(String storageName, String filePath)
+ throws ApplicationException, StorageException {
+ Map props = new HashMap<>();
+ props.put("filePath", filePath);
+ try {
+ ApplicationImportContent result = exportImportHelper.doImport("file", props);
+ return createApplicationFromImport(storageName, result);
+ } catch (Exception e) {
+ throw new ApplicationImportCausedException(filePath, e);
+ }
+ }
+
+ @Override
+ public EntaxyApplication importApplicationFromRepository(String storageName, String mavenUrl)
+ throws ApplicationException, StorageException {
+ Map props = new HashMap<>();
+ props.put("mavenUrl", mavenUrl);
+ try {
+ ApplicationImportContent result = exportImportHelper.doImport("repository", props);
+ return createApplicationFromImport(storageName, result);
+ } catch (Exception e) {
+ throw new ApplicationImportCausedException(mavenUrl, e);
+ }
+ }
+
+ protected EntaxyApplication createApplicationFromImport(String storageName, ApplicationImportContent importContent)
+ throws Exception {
+ ApplicationStorage storage = getStorageUnsafe(storageName);
+ EntaxyApplication result = storage.createApplication(importContent);
+ importContent.clear();
+ return result;
+ }
+
+}
diff --git a/platform/integration/applications/application-impl/src/main/java/ru/entaxy/platform/integration/applications/impl/ApplicationObjectExtendedDataProvider.java b/platform/integration/applications/application-impl/src/main/java/ru/entaxy/platform/integration/applications/impl/ApplicationObjectExtendedDataProvider.java
new file mode 100644
index 00000000..d38b4b33
--- /dev/null
+++ b/platform/integration/applications/application-impl/src/main/java/ru/entaxy/platform/integration/applications/impl/ApplicationObjectExtendedDataProvider.java
@@ -0,0 +1,121 @@
+/*-
+ * ~~~~~~licensing~~~~~~
+ * application-impl
+ * ==========
+ * Copyright (C) 2020 - 2024 EmDev LLC
+ * ==========
+ * You may not use this file except in accordance with the License Terms of the Copyright
+ * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
+ * rights to the Software and any copies are the property of the Copyright Holder. Unless
+ * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
+ * Software for commercial purposes to provide services to third parties.
+ *
+ * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
+ * Under no circumstances does the Copyright Holder guarantee or promise that the
+ * Software provided by him will be suitable or not suitable for the specific purposes
+ * of the User, that the Software will meet all commercial and personal subjective
+ * expectations of the User, that the Software will work properly, without technical
+ * errors, quickly and uninterruptedly.
+ *
+ * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
+ * to the User for any direct or indirect losses of the User, his expenses or actual
+ * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
+ * or damage to data, property, etc.
+ * ~~~~~~/licensing~~~~~~
+ */
+package ru.entaxy.platform.integration.applications.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.karaf.features.Feature;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import ru.entaxy.platform.base.support.CommonUtils;
+import ru.entaxy.platform.base.support.osgi.bundle.CapabilityDescriptor;
+import ru.entaxy.platform.base.support.osgi.feature.FeatureCapabilityHelper;
+import ru.entaxy.platform.base.support.osgi.feature.FeaturesUtils;
+import ru.entaxy.platform.objects.runtime.EntaxyRuntimeObject;
+import ru.entaxy.platform.objects.runtime.EntaxyRuntimeObjectExtendedDataProvider;
+
+@Component(service = EntaxyRuntimeObjectExtendedDataProvider.class, immediate = true)
+public class ApplicationObjectExtendedDataProvider implements EntaxyRuntimeObjectExtendedDataProvider {
+
+ private static final Logger LOG = LoggerFactory.getLogger(ApplicationObjectExtendedDataProvider.class);
+
+ private static final String APPLICATIONS_PROVIDER_ID = "applications";
+
+ protected final static String APP_NAMESPACE = "entaxy.application";
+
+ protected BundleContext bundleContext;
+
+ @Activate
+ public void activate(ComponentContext componentContext) {
+ this.bundleContext = componentContext.getBundleContext();
+ }
+
+ @Override
+ public String getProviderId() {
+ return APPLICATIONS_PROVIDER_ID;
+ }
+
+ @Override
+ public Map getExtendedData(EntaxyRuntimeObject runtimeObject) {
+ Map result = new HashMap<>();
+ try {
+ Bundle b = bundleContext.getBundle(runtimeObject.getBundleInfo().getBundleId());
+ List features = FeaturesUtils.FeaturesHelper.create(bundleContext)
+ .withCapabilityNamespace(APP_NAMESPACE).containingBundle(b).find();
+ if (features.isEmpty())
+ return null;
+
+ List