From: Robert Varga Date: Wed, 21 Apr 2021 10:14:18 +0000 (+0200) Subject: Remove OSGiYangParserFactory X-Git-Tag: v7.0.0~28 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F74%2F95874%2F1;hp=e4d18a98a261c277589f1270676c03233c79a4a6;p=yangtools.git Remove OSGiYangParserFactory We have OSGi R7, use constructor injection and unify injection classes. Change-Id: I4c045b7bf8bedf2bfde42af2dd071d40ecf6130b Signed-off-by: Robert Varga --- diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/OSGiYangParserFactory.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/OSGiYangParserFactory.java deleted file mode 100644 index 3dcb2eb0bb..0000000000 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/OSGiYangParserFactory.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. 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 - */ -package org.opendaylight.yangtools.yang.parser.impl; - -import com.google.common.annotations.Beta; -import java.util.Collection; -import org.opendaylight.yangtools.yang.model.parser.api.YangParser; -import org.opendaylight.yangtools.yang.model.parser.api.YangParserFactory; -import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode; -import org.opendaylight.yangtools.yang.xpath.api.YangXPathParserFactory; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@Beta -@Component(immediate = true) -// FIXME: merge this with YangParserFactoryImpl once we have OSGi R7, which we really want because field injection is -// a static analysis pain. It also results in not-obvious classes like this one. -public final class OSGiYangParserFactory implements YangParserFactory { - private static final Logger LOG = LoggerFactory.getLogger(OSGiYangParserFactory.class); - - @Reference - YangXPathParserFactory xpathFactory = null; - - private YangParserFactory delegate = null; - - @Activate - void activate() { - delegate = new YangParserFactoryImpl(xpathFactory); - LOG.info("YANG Parser activated"); - } - - @Deactivate - void deactivate() { - LOG.info("YANG Parser deactivated"); - delegate = null; - } - - @Override - public Collection supportedParserModes() { - return delegate.supportedParserModes(); - } - - @Override - public YangParser createParser(final StatementParserMode parserMode) { - return delegate.createParser(parserMode); - } -} diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserFactoryImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserFactoryImpl.java index 7bc003d4e0..a8e9748b85 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserFactoryImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserFactoryImpl.java @@ -21,21 +21,26 @@ import org.opendaylight.yangtools.yang.model.parser.api.YangParserFactory; import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode; import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; import org.opendaylight.yangtools.yang.xpath.api.YangXPathParserFactory; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; /** * Reference {@link YangParserFactory} implementation. - * - * @author Robert Varga */ @Beta @MetaInfServices @Singleton +@Component(immediate = true) public final class YangParserFactoryImpl implements YangParserFactory { private static final ImmutableList SUPPORTED_MODES = ImmutableList.of( StatementParserMode.DEFAULT_MODE, StatementParserMode.SEMVER_MODE); - private final CrossSourceStatementReactor reactor; + private YangParserFactoryImpl(final @NonNull CrossSourceStatementReactor reactor) { + this.reactor = requireNonNull(reactor); + } + /** * Construct a new {@link YangParserFactory} backed by {@link DefaultReactors#defaultReactor()}. */ @@ -44,7 +49,8 @@ public final class YangParserFactoryImpl implements YangParserFactory { } @Inject - public YangParserFactoryImpl(final YangXPathParserFactory xpathFactory) { + @Activate + public YangParserFactoryImpl(final @Reference YangXPathParserFactory xpathFactory) { this(DefaultReactors.defaultReactorBuilder(xpathFactory).build()); } @@ -52,9 +58,10 @@ public final class YangParserFactoryImpl implements YangParserFactory { * Construct a new {@link YangParserFactory} backed by specified reactor. * * @param reactor Backing reactor + * @return A new YangParserFactory */ - public YangParserFactoryImpl(final @NonNull CrossSourceStatementReactor reactor) { - this.reactor = requireNonNull(reactor); + public static @NonNull YangParserFactory forReactor(final @NonNull CrossSourceStatementReactor reactor) { + return new YangParserFactoryImpl(reactor); } @Override