public List<Long> publishEvent(final EventObject event, final List<Long> subscriptionids) { ArrayList<Subscriber> publishTo = new ArrayList<Subscriber>(); final ArrayList<Long> ret = new ArrayList<Long>(); if (subscriptionids != null && subscriptionids.size() > 0) { /* publish to given subscriptionids */ for (final long subscriptionid : subscriptionids) { final Subscriber subscriber = this.subscribers.get(subscriptionid); if (subscriber != null) { publishTo.add(subscriber); } } } else { /* publish to all subscribers */ publishTo = new ArrayList<Subscriber>(this.subscribers.values()); } for (final Subscriber subscriber : publishTo) { if (subscriber.isSubscribed(event)) { ret.add(subscriber.getSubscriptionID()); subscriber.push(event); subscriber.notifyListener(); } } return ret; }