/*******************************************************************************
 * Copyright (c) 2006, 2012 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.osgi.service.resolver;

/**
 * A specification which depends on a generic capability
 * @since 3.2
 * @noimplement This interface is not intended to be implemented by clients.
 */
public interface GenericSpecification extends VersionConstraint {
	/**
	 * The optional resolution type
	 * @see #getResolution()
	 */
	public static final int RESOLUTION_OPTIONAL = 0x01;
	/**
	 * The multiple resolution type
	 * @see #getResolution()
	 */
	public static final int RESOLUTION_MULTIPLE = 0x02;

	/**
	 * Returns a matching filter used to match with a suppliers attributes
	 * @return a matching filter used to match with a suppliers attributes
	 */
	public String getMatchingFilter();

	/**
	 * Returns the type of generic specification
	 * @return the type of generic specification
	 */
	public String getType();

	/**
	 * Returns the resolution type of the required capability.  The returned
	 * value is a bit mask that may have the optional bit {@link #RESOLUTION_OPTIONAL}
	 * and/or the multiple bit {@link #RESOLUTION_MULTIPLE} set.
	 *
	 * @return the resolution type of the required capability
	 */
	public int getResolution();

	/**
	 * Returns the suppliers of the capability.  If the the resolution is multiple then
	 * more than one supplier may be returned
	 * @return the suppliers of the capability
	 */
	public GenericDescription[] getSuppliers();
}
