Как заставить (до 1.2.0) OSGi XMLNS для OSGi R7 Метатип аннотации - PullRequest
0 голосов
/ 21 декабря 2018

Я обновляю проект до аннотаций OSGi R6 (у меня есть ограничения на запуск OSGi R7 из-за моих зависимостей, развернутых в моем контейнере), и я столкнулся с проблемой, когда в моей старой аннотации Apache Felix SCR были тире, а это не так.возможно с OSGi R6.

Я пытаюсь сохранить свои существующие свойства OSGi как есть (содержащие тире) при переходе к аннотациям OSGi R6, однако это оказывается трудным.

Что ясейчас я пытаюсь использовать аннотации OSGi R7, поддерживающие тире через $_$, и ищу способ заставить XML-файлы /target/classes/OSGI-INF/metatype иметь

<metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.2.0"...

вместо

<metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.4.0"...

.., что является несовместимостью в моем приложении (не удается разрешить пространство имен 1.4.0, и нет, я не могу обновить службу Metatype).

Есть ли способ заставить XMLNS генерировать метатип XML?Я могу принудительно установить его в файлах XML-компонентов в / target / classes / OSGI-INF, указав @Component(xmlns="http://www.osgi.org/xmlns/metatype/v1.2.0"), однако это задает его для компонента, а не для метатипа (и он мне нужен для метатипа).

Я использую:

   <groupId>org.apache.felix</groupId>
   <artifactId>maven-bundle-plugin</artifactId>
   <version>4.1.0</version>

Есть мысли о том, как мне этого добиться?

1 Ответ

0 голосов
/ 21 декабря 2018

Единственный раз, когда Bnd генерирует пространство имен Metatype 1.4, это если вы используете константы PREFIX_ для префикса имен элементов, если вы используете аннотацию одного элемента, где имя происходит от типа, а не от элемента, или если вы используетеотображение имени от $_$ до -.Поскольку вы хотите использовать этот последний элемент, то xml должен использовать пространство имен 1.4, поскольку все процессоры xml должны понимать новые правила сопоставления имен.Если бы вы могли принудительно установить версию пространства имен на более низкую версию, тогда старый процессор не распознавал бы новые функции, используемые в документе XML, и неправильно обрабатывал их.

Поэтому, если вы хотите использовать функции Metatype 1.4, которые требуют понимания этих функций во время выполнения, вы должны использовать компонент времени выполнения, который понимает эти функции Metatype 1.4.

...