2 * Copyright (c) 2017 Pantheon Technologies, 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.parser.impl;
10 import static java.util.Objects.requireNonNull;
12 import com.google.common.annotations.Beta;
13 import com.google.common.collect.Collections2;
14 import java.util.Collection;
15 import javax.inject.Inject;
16 import javax.inject.Singleton;
17 import org.eclipse.jdt.annotation.NonNull;
18 import org.kohsuke.MetaInfServices;
19 import org.opendaylight.yangtools.yang.model.parser.api.YangParser;
20 import org.opendaylight.yangtools.yang.model.parser.api.YangParserFactory;
21 import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode;
22 import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
23 import org.opendaylight.yangtools.yang.xpath.api.YangXPathParserFactory;
24 import org.osgi.service.component.annotations.Activate;
25 import org.osgi.service.component.annotations.Component;
26 import org.osgi.service.component.annotations.Reference;
29 * Reference {@link YangParserFactory} implementation.
31 * @deprecated Use {@link DefaultYangParserFactory} instead.
36 @Component(immediate = true)
37 @Deprecated(since = "7.0.0", forRemoval = true)
38 public final class YangParserFactoryImpl implements YangParserFactory {
39 private final DefaultYangParserFactory delegate;
41 private YangParserFactoryImpl(final DefaultYangParserFactory delegate) {
42 this.delegate = requireNonNull(delegate);
46 * Construct a new {@link YangParserFactory} backed by {@link DefaultReactors#defaultReactor()}.
48 public YangParserFactoryImpl() {
49 this(new DefaultYangParserFactory());
54 public YangParserFactoryImpl(final @Reference YangXPathParserFactory xpathFactory) {
55 this(new DefaultYangParserFactory(xpathFactory));
59 public Collection<StatementParserMode> supportedParserModes() {
60 return Collections2.transform(delegate.supportedImportResolutionModes(), mode -> {
63 return StatementParserMode.DEFAULT_MODE;
64 case OPENCONFIG_SEMVER:
65 return StatementParserMode.SEMVER_MODE;
67 throw new IllegalStateException("Unhandled mode " + mode);
73 public @NonNull YangParser createParser(final YangParserConfiguration configuration) {
74 return new YangParserImpl(delegate.createParser(configuration));