blob: 86522c1be83fe80bf72d1e98d7f96d47559e9f1e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 SAP AG
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.libra.framework.editor.core.model;
import java.util.Map;
import java.util.Set;
/**
* This interface represents an OSGi service that is either registered or in use
* by an OSGi bundle represented by an {@code IBundle} object.
*
* @see IBundle
*
* @author Kaloyan Raev
*/
public interface IServiceReference {
/**
* The type of the reference between the bundle and the service.
*/
public enum Type {
/**
* Means that the service is in use by the bundle.
*/
IN_USE,
/**
* Means that the service is registered by the bundle.
*/
REGISTERED
}
/**
* Returns the type of the reference between this service and the
* corresponding bundle.
*
* @return An element of {@link Type#IN_USE} or {@link Type#REGISTERED}.
* This method never returns {@code null}.
*
* @see Type
*/
public Type getType();
/**
* Returns the unique identifier of the bundle that registered this service.
*
* @return A {@code Long} object representing the bundle id. This method
* never returns {@code null}.
*/
public Long getBundleId();
/**
* Returns the class names under which this service can be located.
*
* @return An array of String objects representing the different class
* names. This method never returns {@code null}.
*/
public String[] getClazzes();
/**
* Returns the unique identifiers of the bundles that are using this
* service.
*
* @return A {@code Set} object containing the bundle ids represented as
* {@code Long} objects. This method never returns {@code null}.
*/
public Set<Long> getUsingBundleIds();
/**
* Returns the properties that this service is registered with.
*
* @return A {@code Map} object containing the keys and values of all
* properties. This method never returns {@code null}.
*/
public Map<String, String> getProperties();
}