Службы конфигурации Admin и MetaType являются отдельными, но связанными спецификациями.Между ними нет жесткой связи, которая, я думаю, вероятно, является одним из основных моментов, которые помогут ответить на ваши вопросы.
По существу, Configuration Admin - это хранилище записей конфигурации.Каждая запись конфигурации имеет уникальный постоянный идентификатор (PID), и если запись конфигурации предназначена для заводской конфигурации, она также будет иметь Factory PID.Запись конфигурации также содержит несколько пар ключ-значение, где ключ всегда является строкой, а значение является одним из ограниченного набора типов.
Метатип, с другой стороны, является инструментом дляпредоставление определений конфигурации.Они описывают ожидаемую разметку ключей и значений в конфигурации, включая такие вещи, как тип значения, связанного с данным ключом, минимальный / максимальный размер значения, перечисляемый список допустимых значений и, возможно, значение по умолчанию.Каждое определение ключа / значения содержится в определении атрибута, и они сгруппированы в определении класса объекта, связанного с PID.
Важное отличие состоит в том, что Metatype ничего не знает о том, что на самом деле представляет собой конфигурация.во время выполнения (это просто информация о том, какой формы должна быть конфигурация).Точно так же Конфигурация Администратор ничего не знает о том, какой должна быть конфигурация, он просто знает, каковы текущие значения.
Следовательно:
Учитывая AttributeDefinition;Как я могу получить фактическое значение базового свойства?Я знаю его имя, но не его значение.
Необходимо указать PID, связанный с ObjectClassDefinition, содержащий определение атрибута, а затем использовать его для поиска соответствующего словаря конфигурации в Configuration Admin.Если OCD предназначен для заводского PID, вам необходимо определить, какую из конфигураций для этого заводского PID вы хотите просмотреть.
Как можно перечислить информацию о метатипе для всех компонентов во всех комплектахкоторые в настоящее время присутствуют (активные и неактивные)?Я знаю, как перечислить все конфигурации через интерфейс администратора конфигурации.Возможно, есть способ получить доступ к MetaTypeInformation из Конфигурации?
MetaTypeService
- это сервис в реестре сервисов OSGi, который вы можете использовать для запроса MetaTypeInformation для данного пакета.Если вы по очереди запросите информацию о метатипах для каждого пакета, у вас будет информация, которую вы ищете.Не существует жесткой связи между администратором конфигурации и метатипом, поэтому у объекта конфигурации нет возможности узнать, существует ли для него метатип.