1 /*******************************************************************************
2  * Copyright (c) 2007, 2012 IBM Corporation and others.
3  *
4  * This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License 2.0
6  * which accompanies this distribution, and is available at
7  * https://www.eclipse.org/legal/epl-2.0/
8  *
9  * SPDX-License-Identifier: EPL-2.0
10  *
11  * Contributors:
12  *     IBM Corporation - initial API and implementation
13  *******************************************************************************/
14 package org.eclipse.osgi.service.resolver;
15 
16 /**
17  * This class represents a native code specification.  A
18  * native code specification is different from other
19  * specification constraints which typically are resolved against
20  * suppliers provided by other bundles.   A native code
21  * specification supplies it own suppliers which are matched
22  * against the platform properties at resolve time and the
23  * supplier with the best match is selected.
24  * <p>
25  * This interface is not intended to be implemented by clients.  The
26  * {@link StateObjectFactory} should be used to construct instances.
27  * </p>
28  * @since 3.4
29  * @noimplement This interface is not intended to be implemented by clients.
30  */
31 public interface NativeCodeSpecification extends VersionConstraint {
32 	/**
33 	 * Returns the list of possible suppliers to this native code specification.  When
34 	 * this native code specification is resolved one of the possible suppliers
35 	 * will be selected and returned by {@link VersionConstraint#getSupplier()}.
36 	 * @return the list of possible suppliers.
37 	 */
getPossibleSuppliers()38 	public NativeCodeDescription[] getPossibleSuppliers();
39 
40 	/**
41 	 * Returns whether or not this native code specification is optional.
42 	 *
43 	 * @return whether this specification is optional
44 	 */
isOptional()45 	public boolean isOptional();
46 }
47