BeanExplorer5 API
Backend
BeanExplorer5 проект - это OSGi бандл, поддерживающий расширения через plugin.xml.
При сборке BeanExplorer5 проекта он воспринимается как OSGi бандл, поэтому у него должен быть манифест META-INF/MANIFEST.MF. В этом манифесте указывается, от каких бандлов зависит данный бандл. Основные классы API находятся в бандле com.beanexplorer.be5, поэтому его необходимо указать в манифесте.
Помимо этого в структуру BeanExplorer5 проекта входит plugin.xml, в котором возможно объявлять свои компоненты, используя точку расширения com.beanexplorer.be5.component, которая объявлена в бандле com.beanexplorer.be5. Пример объявления компонента:
<extension point="com.beanexplorer.be5.component">
...
<component
class="com.beanexplorer.enterprise.components.Menu"
id="menu"
name="Menu">
</component>
Указанный класс должен реализовывать интерфейс Component:
package com.beanexplorer.enterprise.components;
public interface Component {
void generate(ComponentParameters parameters);
}
com.beanexplorer.be5.component - это единственная точка расширения BeanExplorer5, она позволяет регистрировать свои backend компоненты, которые будут доступны следующим URL:
//domain/app/main/:componentId //domain/app/main/:componentId/:any/:path
Например:
http://localhost:8080/biostore_be5/main/menu http://localhost:8080/biostore_be5/main/menu/withIds
При запросе к веб-приложению по этим запросам будет создан новый экземпляр компонента и вызван его метод generate. Для того, чтобы узнать путь после имени компонента (:any/:path), нужно вызвать метод parameters.getRequestUri(). В случае пустого пути возвращается пустая строка. В случае наличия пути, он возвращается без начального слеша.
Основные интерфейсы и классы API
-
Component- главный интерфейс, который должны реализовывать BE5 компоненты. Поскольку проще всего общаться с frontend посредством пересылки JSON, существуют абстрактные классы, которые упрощают написание таких компонентов:-
JsonComponent- при наследовании этого класса необходимо только реализовать один метод, возвращающий строку, представляющую собой JSON. -
NetSfJsonComponent- при наследовании этого класса необходимо только реализовать один метод, возвращающийnet.sf.json.JSONObject.
-
-
ComponentParameters- всё, что необходимо компоненту. Если необходимо что-то ещё, то либо мы что-то забыли или не предусмотрели, либо вы неправильно используете API BeanExplorer5. К чему возможно доступиться из этого компонента:-
Project- BE4 проект. -
Meta- полезные методы для работы с BE4 проектом. -
UserService- работа с сессиями, ролями, выбором языка. -
ResponseService- формирование текстового ответа. Необходимо только для абстрактных компонентов, обеспечивающих обмен текстовыми сообщениями в каком-нибудь формате (JSON, XML и т.п.). -
HttpServletRequestиHttpServletResponse- предполагается, что в обычной ситуации они не используются. Необходимы только для реализации абстрактных компонентов, обеспечивающих работу с каким-нибудь протоколом на низком уровне. Для обмена текстом достаточноResponseService.
-
Обратите внимание на то, что другие классы не являются частью API, в т.ч. класс Be5 и классы, связанные с реализацией конкретных компонентов.