| /* |
| * Copyright (c) OSGi Alliance (2004, 2013). All Rights Reserved. |
| * |
| * Licensed 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 org.osgi.service.cm; |
| |
| import java.util.Dictionary; |
| import org.osgi.framework.ServiceReference; |
| |
| /** |
| * A Configuration Event. |
| * |
| * <p> |
| * {@code ConfigurationEvent} objects are delivered to all registered |
| * {@code ConfigurationListener} service objects. ConfigurationEvents must be |
| * delivered in chronological order with respect to each listener. |
| * |
| * <p> |
| * A type code is used to identify the type of event. The following event types |
| * are defined: |
| * <ul> |
| * <li>{@link #CM_UPDATED}</li> |
| * <li>{@link #CM_DELETED}</li> |
| * <li>{@link #CM_LOCATION_CHANGED}</li> |
| * </ul> |
| * Additional event types may be defined in the future. |
| * |
| * <p> |
| * Security Considerations. {@code ConfigurationEvent} objects do not provide |
| * {@code Configuration} objects, so no sensitive configuration information is |
| * available from the event. If the listener wants to locate the |
| * {@code Configuration} object for the specified pid, it must use |
| * {@code ConfigurationAdmin}. |
| * |
| * @see ConfigurationListener |
| * @Immutable |
| * @author $Id$ |
| * @since 1.2 |
| */ |
| public class ConfigurationEvent { |
| /** |
| * A {@code Configuration} has been updated. |
| * |
| * <p> |
| * This {@code ConfigurationEvent} type that indicates that a |
| * {@code Configuration} object has been updated with new properties. |
| * |
| * An event is fired when a call to {@link Configuration#update(Dictionary)} |
| * successfully changes a configuration. |
| */ |
| public static final int CM_UPDATED = 1; |
| /** |
| * A {@code Configuration} has been deleted. |
| * |
| * <p> |
| * This {@code ConfigurationEvent} type that indicates that a |
| * {@code Configuration} object has been deleted. |
| * |
| * An event is fired when a call to {@link Configuration#delete()} |
| * successfully deletes a configuration. |
| */ |
| public static final int CM_DELETED = 2; |
| |
| /** |
| * The location of a {@code Configuration} has been changed. |
| * |
| * <p> |
| * This {@code ConfigurationEvent} type that indicates that the location of |
| * a {@code Configuration} object has been changed. |
| * |
| * An event is fired when a call to |
| * {@link Configuration#setBundleLocation(String)} successfully changes the |
| * location. |
| * |
| * @since 1.4 |
| */ |
| public static final int CM_LOCATION_CHANGED = 3; |
| /** |
| * Type of this event. |
| * |
| * @see #getType() |
| */ |
| private final int type; |
| /** |
| * The factory pid associated with this event. |
| */ |
| private final String factoryPid; |
| /** |
| * The pid associated with this event. |
| */ |
| private final String pid; |
| /** |
| * The ConfigurationAdmin service which created this event. |
| */ |
| private final ServiceReference<ConfigurationAdmin> reference; |
| |
| /** |
| * Constructs a {@code ConfigurationEvent} object from the given |
| * {@code ServiceReference} object, event type, and pids. |
| * |
| * @param reference The {@code ServiceReference} object of the Configuration |
| * Admin service that created this event. |
| * @param type The event type. See {@link #getType()}. |
| * @param factoryPid The factory pid of the associated configuration if the |
| * target of the configuration is a ManagedServiceFactory. Otherwise |
| * {@code null} if the target of the configuration is a |
| * ManagedService. |
| * @param pid The pid of the associated configuration. |
| */ |
| public ConfigurationEvent(ServiceReference<ConfigurationAdmin> reference, int type, String factoryPid, String pid) { |
| this.reference = reference; |
| this.type = type; |
| this.factoryPid = factoryPid; |
| this.pid = pid; |
| if ((reference == null) || (pid == null)) { |
| throw new NullPointerException("reference and pid must not be null"); |
| } |
| } |
| |
| /** |
| * Returns the factory pid of the associated configuration. |
| * |
| * @return Returns the factory pid of the associated configuration if the |
| * target of the configuration is a ManagedServiceFactory. Otherwise |
| * {@code null} if the target of the configuration is a |
| * ManagedService. |
| */ |
| public String getFactoryPid() { |
| return factoryPid; |
| } |
| |
| /** |
| * Returns the pid of the associated configuration. |
| * |
| * @return Returns the pid of the associated configuration. |
| */ |
| public String getPid() { |
| return pid; |
| } |
| |
| /** |
| * Return the type of this event. |
| * <p> |
| * The type values are: |
| * <ul> |
| * <li>{@link #CM_UPDATED}</li> |
| * <li>{@link #CM_DELETED}</li> |
| * <li>{@link #CM_LOCATION_CHANGED}</li> |
| * </ul> |
| * |
| * @return The type of this event. |
| */ |
| public int getType() { |
| return type; |
| } |
| |
| /** |
| * Return the {@code ServiceReference} object of the Configuration Admin |
| * service that created this event. |
| * |
| * @return The {@code ServiceReference} object for the Configuration Admin |
| * service that created this event. |
| */ |
| public ServiceReference<ConfigurationAdmin> getReference() { |
| return reference; |
| } |
| } |