/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.jini.discovery; import java.util.EventObject; import java.util.Map; import net.jini.core.lookup.ServiceRegistrar; /** * Event object passed (via either the <code>DiscoveryListener</code> * interface or the <code>DiscoveryChangeListener</code>) to indicate to * interested parties that one or more <code>ServiceRegistrar</code> * objects have been discovered or discarded during the discovery process. * * @author Sun Microsystems, Inc. * * @see LookupDiscovery * @see LookupLocatorDiscovery * @see LookupDiscoveryManager * @see DiscoveryListener * @see DiscoveryChangeListener * @see net.jini.core.lookup.ServiceRegistrar */ public class DiscoveryEvent extends EventObject { private static final long serialVersionUID = 5280303374696501479L; /** * The registrars with which this event is associated. * * @serial */ protected ServiceRegistrar[] regs; /** * Map from the registrars of this event to the groups in which each * is a member. * * @serial */ protected Map groups; /** * Construct a new <code>DiscoveryEvent</code> object, with the given * source and set of registrars. The set of registrars should not be * empty. * * @param source the source of this event * @param regs the registrars to which this event applies */ public DiscoveryEvent(Object source, ServiceRegistrar[] regs) { super(source); this.regs = regs; this.groups = null; } /** * Construct a new <code>DiscoveryEvent</code> object, with the given * source and registrars-to-groups mapping. The mapping should not be * empty. * * @param source the source of this event * @param groups mapping from the elements of the registrars of this * event to the member groups in which each registrar is * a member */ public DiscoveryEvent(Object source, Map groups) { super(source); this.groups = groups; this.regs = (ServiceRegistrar[])(groups.keySet()).toArray (new ServiceRegistrar[groups.size()]); } /** * Return the set of registrars to which this event applies. * The same array is returned on every call; a copy is not made. * @return the set of registrars to which this event applies. */ public ServiceRegistrar[] getRegistrars() { return regs; } /** * Returns a set that maps to each registrar referenced by this event, * the current set of groups in which each registrar is a member. * <p> * To retrieve the set of member groups corresponding to any element * of the array returned by the <code>getRegistrars</code> method, * simply use the desired element from that array as the key to the * <code>get</code> method of the <code>Map</code> object returned * by this method and cast to <code>String</code>[]. * <p> * Note that the same <code>Map</code> object is returned on every * call to this method; that is, a copy is not made. * * @return <code>Map</code> in which the keys are the elements of the * array returned by the <code>getRegistrars</code> method * of this class; and the values are <code>String</code>[] * arrays containing the member groups corresponding to each * registrar. */ public Map getGroups() { return groups; } }