У меня есть список вещей в свойствах события, где элементы могут быть пустыми. Я хочу создать строку LDAP для соответствия нулевым элементам.Фильтр событий LDAP для элемента Null
Рассмотрим рабочий пример:
private final BundleContext context = FrameworkUtil.getBundle(LdapTest.class).getBundleContext();
private final EventAdmin eventAdmin = this.context.getService(this.context.getServiceReference(EventAdmin.class));
@Test
public void test() throws Exception {
final String value = "test";
// register a listener
final Dictionary<String, Object> serviceProperties = new Hashtable<>();
serviceProperties.put(EventConstants.EVENT_TOPIC, new String[] { "myTopic" });
serviceProperties.put(EventConstants.EVENT_FILTER, "(myProperty=" + value + ")");
final boolean[] called = { false };
final ServiceRegistration<EventHandler> listener = this.context.
registerService(EventHandler.class, e -> called[0] = true, serviceProperties);
// fire event
Assert.assertFalse(called[0]);
final Map<String, Object> eventProperties = new HashMap<>();
eventProperties.put("myProperty", Arrays.asList(value));
this.eventAdmin.sendEvent(new Event("myTopic", eventProperties));
Assert.assertTrue(called[0]);
listener.unregister();
}
Теперь, если я изложу value = null
то, что делает EVENT_FILTER
должны посмотреть, как сделать работу испытания еще раз?
Я пробовал «(!myProperty=*)
» и «(!(myProperty=*))
», но это не сработало.
Я не свойство null, это нулевой элемент внутри списка. И я могу фильтровать для любого другого элемента внутри списка, так что это странно, я не могу фильтровать его. –
Язык выражения фильтра LDAP не имеет возможности выразить нулевое значение, чтобы вы могли проверить его. «null» - это просто обычная строка, а не специальное значение, означающее нулевое значение. –