blob: f5ba4f89e556849f83a9c4309b87ebd183ddb8c4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 1997-2007 by ProSyst Software GmbH
* http://www.prosyst.com
* 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:
* ProSyst Software GmbH - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.internal.ip;
import java.util.Dictionary;
import org.osgi.service.provisioning.ProvisioningService;
/**
* Provides a set (can be empty) of configuration properties used by the Initial
* Provisioning Bundle. The properties obtained by the providers become part of
* the Provisioning Dictionary. Arbitrary number of Configuration Loaders could
* be registered as services in the OSGi framework. Different providers could
* export different set of configuration properties. If a property is provided
* by more than one provider, the Provisioning Bundle uses this one, which is
* exported by a provider with the higher service ranking.
*
* @author Avgustin Marinov
* @author Pavlin Dobrev
* @version 1.0
*/
public interface ProvisioningInfoProvider {
/**
* This property specifies URL for connecting to the Management Server.
*/
public static final String MANAGER_URL = "equinox.provisioning.manager.url";
/**
* This property specifies the host of the Gateway Manager that Management
* Server management agent bundle must connect to. If this property is not
* present in the dictionary, then Management Server bundle will listen for
* a back end device to push this information to.
*/
public final static String GM_HOST = "equinox.provisioning.gm.host";
/**
* This manifest header determines the packed into the provisioning agent
* bundle providers that are to be started.
*/
public final static String PROVIDERS = "PrvInfo-Providers";
/**
* Initializes provider. Give to the provider a reference to
* ProvisioningService dictionary. Provider can return properties that are
* to be set properties in the provisioning dictionary. It is not necessary
* for provider to insert explicitly a property unless it has to be listed
* through the <code>Dictionary.keys()</code> method or it evokes action
* (as ProvisioningService.PROVISIONIN_REFERENCE).
*
* @param prvSrv
* provisioning service reference
* @return the initial data. It can be null.
* @throws Exception
* on initialization error
*/
public Dictionary init(ProvisioningService prvSrv) throws Exception;
/**
* Gets a property with a supplied key from the provider. This method is
* invoked by the Provisioning Agent when
* <code>Dictionary.get(propertyKey)</code> is invoked for a propertyKey
* which is not already stored in the ProvisioningDictionary. The method is
* invoked subsequently on all registered providers ordered by service
* ranking until some of them returns value different from <code>null</code>.
*
* @param propertyKey
* the key.
* @return the property value or <code>null</code> if there is no such
* property.
*/
public Object get(Object propertyKey);
}