/** * Adds <tt>l</tt> to list of listeners interested in <tt>nm</tt> * and filter. */ synchronized void addNamingListener(String nm, String filter, SearchControls ctls, NamingListener l) throws NamingException { if (l instanceof ObjectChangeListener || l instanceof NamespaceChangeListener) { NotifierArgs args = new NotifierArgs(nm, filter, ctls, l); NamingEventNotifier notifier = notifiers.get(args); if (notifier == null) { notifier = new NamingEventNotifier(this, ctx, args, l); notifiers.put(args, notifier); } else { notifier.addNamingListener(l); } } if (l instanceof UnsolicitedNotificationListener) { // Add listener to this's list of unsolicited notifiers if (unsolicited == null) { unsolicited = new Vector<>(3); } unsolicited.addElement((UnsolicitedNotificationListener)l); } }
/** * Adds {@code l} to list of listeners interested in {@code nm} * and filter. */ synchronized void addNamingListener(String nm, String filter, SearchControls ctls, NamingListener l) throws NamingException { if (l instanceof ObjectChangeListener || l instanceof NamespaceChangeListener) { NotifierArgs args = new NotifierArgs(nm, filter, ctls, l); NamingEventNotifier notifier = notifiers.get(args); if (notifier == null) { notifier = new NamingEventNotifier(this, ctx, args, l); notifiers.put(args, notifier); } else { notifier.addNamingListener(l); } } if (l instanceof UnsolicitedNotificationListener) { // Add listener to this's list of unsolicited notifiers if (unsolicited == null) { unsolicited = new Vector<>(3); } unsolicited.addElement((UnsolicitedNotificationListener)l); } }
/** * Adds <tt>l</tt> to list of listeners interested in <tt>nm</tt> * and filter. */ synchronized void addNamingListener(String nm, String filter, SearchControls ctls, NamingListener l) throws NamingException { if (l instanceof ObjectChangeListener || l instanceof NamespaceChangeListener) { NotifierArgs args = new NotifierArgs(nm, filter, ctls, l); NamingEventNotifier notifier = (NamingEventNotifier) notifiers.get(args); if (notifier == null) { notifier = new NamingEventNotifier(this, ctx, args, l); notifiers.put(args, notifier); } else { notifier.addNamingListener(l); } } if (l instanceof UnsolicitedNotificationListener) { // Add listener to this's list of unsolicited notifiers if (unsolicited == null) { unsolicited = new Vector(3); } unsolicited.addElement(l); } }
public void removeNamingListener(NamingListener namingListener) throws NamingException { if (listeners == null || !listeners.containsKey(namingListener)) { return; } if (namingListener instanceof UnsolicitedNotificationListener) { unls.remove(namingListener); } List<Integer> idList = listeners.remove(namingListener); if (idList == null) { return; } try { for (Integer id : idList) { client.removePersistentSearch(id.intValue(), requestControls); } } catch (IOException e) { CommunicationException ex = new CommunicationException(); ex.setRootCause(e); } }
/** * Adds <tt>l</tt> to list of listeners interested in <tt>nm</tt>. */ /* * Make the add/removeNamingListeners synchronized to: * 1. protect usage of 'unsolicited', which may be read by * the Connection thread when dispatching unsolicited notification. * 2. ensure that NamingEventNotifier thread's access to 'notifiers' * is safe */ synchronized void addNamingListener(String nm, int scope, NamingListener l) throws NamingException { if (l instanceof ObjectChangeListener || l instanceof NamespaceChangeListener) { NotifierArgs args = new NotifierArgs(nm, scope, l); NamingEventNotifier notifier = notifiers.get(args); if (notifier == null) { notifier = new NamingEventNotifier(this, ctx, args, l); notifiers.put(args, notifier); } else { notifier.addNamingListener(l); } } if (l instanceof UnsolicitedNotificationListener) { // Add listener to this's list of unsolicited notifiers if (unsolicited == null) { unsolicited = new Vector<>(3); } unsolicited.addElement((UnsolicitedNotificationListener)l); } }
/** * Adds {@code l} to list of listeners interested in {@code nm}. */ /* * Make the add/removeNamingListeners synchronized to: * 1. protect usage of 'unsolicited', which may be read by * the Connection thread when dispatching unsolicited notification. * 2. ensure that NamingEventNotifier thread's access to 'notifiers' * is safe */ synchronized void addNamingListener(String nm, int scope, NamingListener l) throws NamingException { if (l instanceof ObjectChangeListener || l instanceof NamespaceChangeListener) { NotifierArgs args = new NotifierArgs(nm, scope, l); NamingEventNotifier notifier = notifiers.get(args); if (notifier == null) { notifier = new NamingEventNotifier(this, ctx, args, l); notifiers.put(args, notifier); } else { notifier.addNamingListener(l); } } if (l instanceof UnsolicitedNotificationListener) { // Add listener to this's list of unsolicited notifiers if (unsolicited == null) { unsolicited = new Vector<>(3); } unsolicited.addElement((UnsolicitedNotificationListener)l); } }
/** * Adds <tt>l</tt> to list of listeners interested in <tt>nm</tt>. */ /* * Make the add/removeNamingListeners synchronized to: * 1. protect usage of 'unsolicited', which may be read by * the Connection thread when dispatching unsolicited notification. * 2. ensure that NamingEventNotifier thread's access to 'notifiers' * is safe */ synchronized void addNamingListener(String nm, int scope, NamingListener l) throws NamingException { if (l instanceof ObjectChangeListener || l instanceof NamespaceChangeListener) { NotifierArgs args = new NotifierArgs(nm, scope, l); NamingEventNotifier notifier = (NamingEventNotifier) notifiers.get(args); if (notifier == null) { notifier = new NamingEventNotifier(this, ctx, args, l); notifiers.put(args, notifier); } else { notifier.addNamingListener(l); } } if (l instanceof UnsolicitedNotificationListener) { // Add listener to this's list of unsolicited notifiers if (unsolicited == null) { unsolicited = new Vector(3); } unsolicited.addElement(l); } }
public void addNamingListener(Name name, String filter, Object[] filterArgs, SearchControls searchControls, NamingListener namingListener) throws NamingException { checkName(name); if (namingListener == null) { return; } if (!(name instanceof LdapName)) { if (name instanceof CompositeName && name.size() == 1) { name = name.getPrefix(1); } else { // FIXME: read message from file throw new InvalidNameException( "Target cannot span multiple namespaces: " + name.toString()); } } if (namingListener instanceof UnsolicitedNotificationListener) { if (unls == null) { unls = new ArrayList<UnsolicitedNotificationListener>(); addUnsolicitedListener(); } unls.add((UnsolicitedNotificationListener) namingListener); if (!(namingListener instanceof NamespaceChangeListener) && !(namingListener instanceof ObjectChangeListener)) { return; } } if (searchControls == null) { searchControls = new SearchControls(); } Filter f = LdapUtils.parseFilter(filter, filterArgs); String targetDN = getTargetDN(name, contextDn); Name tempName = new LdapName(contextDn.toString()); tempName.addAll(name); String baseDN = tempName.toString(); int messageId = doPersistentSearch(targetDN, baseDN, f, searchControls, namingListener); if (listeners == null) { listeners = new HashMap<NamingListener, List<Integer>>(); } List<Integer> idList = listeners.get(namingListener); if (idList == null) { idList = new ArrayList<Integer>(); } idList.add(Integer.valueOf(messageId)); }
public void addNamingListener(Name name, int scope, NamingListener namingListener) throws NamingException { checkName(name); if (namingListener == null) { return; } // only ldap name is supportted if (!(name instanceof LdapName)) { if (name instanceof CompositeName && name.size() == 1) { name = name.getPrefix(0); } else { // ldap.32=Target cannot span multiple namespaces: {0} throw new InvalidNameException(Messages.getString("ldap.32", //$NON-NLS-1$ new Object[] { name.toString() })); } } if (namingListener instanceof UnsolicitedNotificationListener) { if (unls == null) { unls = new ArrayList<UnsolicitedNotificationListener>(); addUnsolicitedListener(); } unls.add((UnsolicitedNotificationListener) namingListener); if (!(namingListener instanceof NamespaceChangeListener) && !(namingListener instanceof ObjectChangeListener)) { return; } } // ri is silent in this case if (scope != EventContext.OBJECT_SCOPE && scope != EventContext.ONELEVEL_SCOPE && scope != EventContext.SUBTREE_SCOPE) { // ldap.33=Scope should be one of 'OBJECT_SCOPE', 'ONELEVEL_SCOPE' // or 'SUBTREE_SCOPE' throw new IllegalArgumentException(Messages.getString("ldap.33")); //$NON-NLS-1$ } String targetDN = getTargetDN(name, contextDn); Filter filter = new Filter(Filter.PRESENT_FILTER); filter.setValue("objectClass"); SearchControls controls = new SearchControls(); controls.setSearchScope(scope); Name tempName = new LdapName(contextDn.toString()); tempName.addAll(name); String baseDN = tempName.toString(); int messageId = doPersistentSearch(targetDN, baseDN, filter, controls, namingListener); if (listeners == null) { listeners = new HashMap<NamingListener, List<Integer>>(); } List<Integer> idList = listeners.get(namingListener); if (idList == null) { idList = new ArrayList<Integer>(); listeners.put(namingListener, idList); } idList.add(Integer.valueOf(messageId)); }