2 * Copyright (c) 2022 PANTHEON.tech, s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.yang.binding;
10 import java.util.ServiceLoader;
12 import org.eclipse.jdt.annotation.NonNullByDefault;
15 * Run-time feature discovery service. Implementations of this interface are required to be registered with the
16 * {@link ServiceLoader} framework.
19 public interface YangFeatureProvider<R extends DataRoot> {
21 * Return the module this provider recognizes. It is implied that any feature defined in this module and not
22 * advertized by any provider is unavailable.
24 * @return {@link DataRoot} class this provider binds to
26 Class<R> boundModule();
29 * Return the set of supported features.
31 * @return Supported features.
33 Set<? extends YangFeature<?, R>> supportedFeatures();