OSGi: как правильно установить разрешение ответа Map‹Resource,List‹Wire››?

Привет и добрый вечер,

Я немного поэкспериментировал с OSGi, используя Eclipse IDE и подключаемый модуль Bndtools.

Я сделал пакет и создал компонент в пакете пакета. Я сделал свой собственный ResolveContext в этом компоненте и убедился, что Resolver сможет решить мою проблему.

При вызове метода Resolver.resolve(ResolveContext) в случае найденного решения возвращается Map<Resource,List<Wire>>.

В моем случае я манипулировал проблемой так, что нужно было установить только 1 ресурс/пакет, но я действительно не понимаю ответ, который я получаю от Resolver.

Я возвращаю карту с двумя записями:

1): org.bram.package.MyComponent$2@10c23f49 [org.bram.package.MyComponent$1@792102f3 -> [org.organisation.types.domotics version=0.12.1]]

2): org.organisation.types.domotics version=0.12.1=[]

Обратите внимание, что org.bram.package.MyComponent - это компонент, который я создал и в котором используется Resolver. Название Resources не важно, я просто не понимаю, что означает этот ответ и как с ним действовать.

Чтобы сделать это решение полным, должен ли я просто установить пакет org.organisation.types.domotics версии 0.12.1 (который я могу получить из своих репозиториев)?

Если нужна дополнительная информация, пожалуйста, спросите, и я постараюсь предоставить ее как можно более подробно.

Спасибо


person BramCoding    schedule 13.08.2019    source источник
comment
Есть ли особая причина, по которой вы используете преобразователь напрямую? Обычно вы создаете файл bndrun, в котором вы указываете репозиторий, а также начальные требования/пакеты, а bndtools вычисляет пакеты запуска в результате процесса разрешения.   -  person Christian Schneider    schedule 13.08.2019
comment
Эй, Кристиан, есть особая причина, по которой я использую его напрямую. Это было частью опыта изучения OSGi. Resolver должен быть вызван из компонента (и, следовательно, во время выполнения), когда произошло определенное событие. Хороший комментарий, но да, это специально.   -  person BramCoding    schedule 13.08.2019


Ответы (1)


Вы не указали требования, которые вы изначально заложили в преобразователь, а также в репозиторий. Так что немного сложно сказать.

Я предполагаю, что вы помещаете пакет MyComponent в качестве требования в процесс разрешения, и он говорит вам, что вам нужно установить свой пакет, а также набор типов домотики для достижения закрытия.

person Christian Schneider    schedule 13.08.2019
comment
Я не стал указывать требования, которые поставил изначально, так как считаю это не важным в данном случае (поправьте меня, если я не прав). Причина, по которой в этом нет необходимости, заключается в том, что независимо от того, верен ли результат Resolver, я хочу понять, что означает этот результат и как его следует обрабатывать. Предположим, что возвращенная карта процесса разрешения верна. Он содержит эти 2 записи. Первая запись дает мой собственный ресурс (связку, в которой был вызван Resolver) и список‹Wire› с 1 проводом. Вторая запись дает Ресурс, указанный в Проводе. Смотрите следующий пост.. - person BramCoding; 13.08.2019
comment
На самом деле мой вопрос заключается в следующем: в случае ответа на это разрешение, что нужно сделать, чтобы выполнить структуру? Должен ли я устанавливать только новые ресурсы, предоставленные картой? Должен ли я установить новые ресурсы, предоставленные картой, и создать провода, указанные с каждым ресурсом, и добавить их к этому ресурсу (хотя я понятия не имею, существует ли это вообще). Вы понимаете, куда я иду? Я просто хочу обработать ответ Resolver, предполагая, что он полностью правильный. Спасибо за реакцию! - person BramCoding; 13.08.2019
comment
Я только что перечитал ваш комментарий и небольшое примечание: пакет MyComponent не добавляется как требование. Требование, которое добавляется в ResolveContext, — это пакет org.organisation.types.domotics. Сам этот пакет имеет 1 требование, а именно пространство имен osgi.ee и версию JavaSE 1.8. Это уже предоставлено пакетом фреймворка, поэтому требование выполняется при сравнении с методом getWirings в ResolveContext. - person BramCoding; 13.08.2019