Значение кардинального свойства в компоненте OSGi в AEM

Я пишу компонент OSGi со связанными с ним значениями cardinal.

Я написал следующие строки:

@Property(name="cardinalValue",cardinality=4,description="testing cardinality")
private String[] cardinalValue;

Затем в коде я пытаюсь распечатать кардинальное значение:

for(String cardinal : cardinalValue){
  log.debug(cardinal);
}

Как только я устанавливаю и запускаю метод в своем компоненте в комплекте OSGi, кажется, что существует исключение нулевого указателя, даже после того, как я заполняю значения в консоли диспетчера конфигурации в консоли AEM.

Это первый раз, когда я работаю с cardinality, и я даже попробовал подход List и Vector, такой же, как подход массива выше, но все еще не смог напечатать значения в журнале.


person Amit Nandan Periyapatna    schedule 23.10.2015    source источник
comment
Поскольку вы не используете стандартные аннотации компонентов OSGi, может помочь описание вашей среды.   -  person Peter Kriens    schedule 26.10.2015


Ответы (1)


Я бы посоветовал вам инициализировать ваше свойство самостоятельно.

Для этого измените текущее объявление свойства следующим образом:

@Property(label="cardinalValue",cardinality=4,description="testing cardinality")
private static final String CARDINAL_PROPERTY = "cardinalValue";
private String[] cardinalValue;

Затем напишите метод, который будет инициализировать свойство значениями из конфигурации при активации и модификации компонента:

@Activate
@Modified
protected void activate(final Map<String, Object> props) {
    String[] cardinalValue = PropertiesUtil.toStringArray(props.get(CARDINAL_PROPERTY));
}

Теперь ваша переменная cardinalValue будет инициализирована.

person Oleksandr Tarasenko    schedule 23.10.2015