/* * Copyright (c) OSGi Alliance (2009, 2015). 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.remoteserviceadmin; import org.osgi.framework.Bundle; /** * Provides the event information for a Remote Service Admin event. * * @Immutable * @author $Id: a2eb40665605a6955a0109d0eaf48773498eb027 $ */ public class RemoteServiceAdminEvent { /** * Add an import registration. The Remote Service Admin will send this event * when it imports a service. When the {@link RemoteServiceAdminListener} * service is registered, the Remote Service Admin must notify the listener * of all existing Import Registrations. * */ public static final int IMPORT_REGISTRATION = 1; /** * Add an export registration. The Remote Service Admin will send this event * when it exports a service. When the {@link RemoteServiceAdminListener} * service is registered, the Remote Service Admin must notify the listener * of all existing Export Registrations. */ public static final int EXPORT_REGISTRATION = 2; /** * Remove an export registration. The Remote Service Admin will send this * event when it removes the export of a service. * */ public static final int EXPORT_UNREGISTRATION = 3; /** * Remove an import registration. The Remote Service Admin will send this * event when it removes the import of a service. * */ public static final int IMPORT_UNREGISTRATION = 4; /** * A fatal importing error occurred. The Import Registration has been * closed. */ public static final int IMPORT_ERROR = 5; /** * A fatal exporting error occurred. The Export Registration has been * closed. */ public static final int EXPORT_ERROR = 6; /** * A problematic situation occurred, the export is still active. */ public static final int EXPORT_WARNING = 7; /** * A problematic situation occurred, the import is still active. */ public static final int IMPORT_WARNING = 8; /** * Update an import registration. The Remote Service Admin will send this * event when it updates a service. * * @since 1.1 */ public static final int IMPORT_UPDATE = 9; /** * Update an export registration. The Remote Service Admin will send this * event when it exports a service. * * @since 1.1 */ public static final int EXPORT_UPDATE = 10; private final ImportReference importReference; private final ExportReference exportReference; private final Throwable exception; private final int type; private final Bundle source; /** * Private constructor. * * @param type The event type * @param source The source bundle, must not be {@code null}. * @param importReference The importReference, can be {@code null}. * @param exportReference The exportReference, can be {@code null}. * @param exception Any exceptions encountered, can be {@code null} */ private RemoteServiceAdminEvent(int type, Bundle source, ImportReference importReference, ExportReference exportReference, Throwable exception) { if (source == null) { throw new NullPointerException("source must not be null"); } this.type = type; this.source = source; this.importReference = importReference; this.exportReference = exportReference; this.exception = exception; } /** * Create a Remote Service Admin Event for an export notification. * * @param type The event type. * @param source The source bundle, must not be {@code null}. * @param exportReference The exportReference, can not be {@code null}. * @param exception Any exceptions encountered, can be {@code null}. */ public RemoteServiceAdminEvent(int type, Bundle source, ExportReference exportReference, Throwable exception) { this(type, source, null, exportReference, exception); } /** * Create a Remote Service Admin Event for an import notification. * * @param type The event type. * @param source The source bundle, must not be {@code null}. * @param importReference The importReference, can not be {@code null}. * @param exception Any exceptions encountered, can be {@code null}. */ public RemoteServiceAdminEvent(int type, Bundle source, ImportReference importReference, Throwable exception) { this(type, source, importReference, null, exception); } /** * Return the Import Reference for this event. * * @return The Import Reference or {@code null}. */ public ImportReference getImportReference() { return importReference; } /** * Return the Export Reference for this event. * * @return The Export Reference or {@code null}. */ public ExportReference getExportReference() { return exportReference; } /** * Return the exception for this event. * * @return The exception or {@code null}. */ public Throwable getException() { return exception; } /** * Return the type of this event. * * @return The type of this event. */ public int getType() { return type; } /** * Return the bundle source of this event. * * @return The bundle source of this event. */ public Bundle getSource() { return source; } }