From: Maros Marsalek Date: Thu, 7 Jan 2016 12:25:18 +0000 (+0100) Subject: Expose yang source provider into config subsystem X-Git-Tag: release/beryllium~37 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=ef4c25805dd9e249ffa786c937528e06d055b65b Expose yang source provider into config subsystem Change-Id: Ie5ae543e2be0f1ef129c97cd3e5e945ba6467d89 Signed-off-by: Maros Marsalek --- diff --git a/opendaylight/md-sal/md-sal-config/src/main/resources/initial/01-md-sal.xml b/opendaylight/md-sal/md-sal-config/src/main/resources/initial/01-md-sal.xml index 55bac1ee62..0aab59ef40 100644 --- a/opendaylight/md-sal/md-sal-config/src/main/resources/initial/01-md-sal.xml +++ b/opendaylight/md-sal/md-sal-config/src/main/resources/initial/01-md-sal.xml @@ -202,13 +202,20 @@ - - dom:schema-service - - yang-schema-service - /modules/module[type='schema-service-singleton'][name='yang-schema-service'] - - + + dom:schema-service + + yang-schema-service + /modules/module[type='schema-service-singleton'][name='yang-schema-service'] + + + + dom:yang-text-source-provider + + yang-text-source-provider + /modules/module[type='schema-service-singleton'][name='yang-schema-service'] + + config-dom-store-spi:config-dom-datastore diff --git a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/model/YangTextSourceProvider.java b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/model/YangTextSourceProvider.java new file mode 100644 index 0000000000..a17cd70310 --- /dev/null +++ b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/model/YangTextSourceProvider.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. 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.controller.sal.core.api.model; + +import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; +import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider; + +/** + * Concrete source provider for text based yang sources. Suitable when trying to avoid + * generics e.g. when exposing a source provider into config subsystem. + */ +public interface YangTextSourceProvider extends SchemaSourceProvider { +} diff --git a/opendaylight/md-sal/sal-dom-broker-config/src/main/yang/opendaylight-dom-broker-impl.yang b/opendaylight/md-sal/sal-dom-broker-config/src/main/yang/opendaylight-dom-broker-impl.yang index 7655a921ec..05d5b3e186 100644 --- a/opendaylight/md-sal/sal-dom-broker-config/src/main/yang/opendaylight-dom-broker-impl.yang +++ b/opendaylight/md-sal/sal-dom-broker-config/src/main/yang/opendaylight-dom-broker-impl.yang @@ -37,6 +37,7 @@ module opendaylight-sal-dom-broker-impl { identity schema-service-singleton { base config:module-type; config:provided-service sal:schema-service; + config:provided-service sal:yang-text-source-provider; config:java-name-prefix SchemaServiceImplSingleton; } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/GlobalBundleScanningSchemaServiceImpl.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/GlobalBundleScanningSchemaServiceImpl.java index cf5e5fafce..db1f9755ee 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/GlobalBundleScanningSchemaServiceImpl.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/GlobalBundleScanningSchemaServiceImpl.java @@ -8,11 +8,13 @@ package org.opendaylight.controller.sal.dom.broker; import static com.google.common.base.Preconditions.checkState; + import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; +import com.google.common.util.concurrent.CheckedFuture; import java.net.URL; import java.util.ArrayList; import java.util.Collections; @@ -21,6 +23,7 @@ import java.util.List; import java.util.concurrent.atomic.AtomicReference; import javax.annotation.concurrent.GuardedBy; import org.opendaylight.controller.sal.core.api.model.SchemaService; +import org.opendaylight.controller.sal.core.api.model.YangTextSourceProvider; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.util.ListenerRegistry; @@ -28,6 +31,9 @@ import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; +import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException; +import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; +import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; import org.opendaylight.yangtools.yang.parser.repo.URLSchemaContextResolver; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; @@ -40,7 +46,7 @@ import org.osgi.util.tracker.ServiceTrackerCustomizer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class GlobalBundleScanningSchemaServiceImpl implements SchemaContextProvider, SchemaService, ServiceTrackerCustomizer, AutoCloseable { +public class GlobalBundleScanningSchemaServiceImpl implements SchemaContextProvider, SchemaService, ServiceTrackerCustomizer, YangTextSourceProvider, AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(GlobalBundleScanningSchemaServiceImpl.class); private static AtomicReference globalInstance = new AtomicReference<>(); @@ -184,6 +190,12 @@ public class GlobalBundleScanningSchemaServiceImpl implements SchemaContextProvi } } + @Override + public CheckedFuture getSource(final SourceIdentifier sourceIdentifier) { + return contextResolver.getSource(sourceIdentifier); + + } + private class BundleScanner implements BundleTrackerCustomizer> { @Override public Iterable addingBundle(final Bundle bundle, final BundleEvent event) { diff --git a/opendaylight/md-sal/sal-dom-config/src/main/yang/opendaylight-md-sal-dom.yang b/opendaylight/md-sal/sal-dom-config/src/main/yang/opendaylight-md-sal-dom.yang index a926cc684d..db62d04eaa 100644 --- a/opendaylight/md-sal/sal-dom-config/src/main/yang/opendaylight-md-sal-dom.yang +++ b/opendaylight/md-sal/sal-dom-config/src/main/yang/opendaylight-md-sal-dom.yang @@ -4,10 +4,10 @@ module opendaylight-md-sal-dom { prefix "md-sal-dom"; import config { prefix config; revision-date 2013-04-05; } - + description "Service definition for Binding Aware MD-SAL."; - + revision "2013-10-28" { description "Initial revision"; @@ -27,4 +27,9 @@ module opendaylight-md-sal-dom { base "config:service-type"; config:java-class "org.opendaylight.controller.sal.core.api.model.SchemaService"; } + + identity yang-text-source-provider { + base "config:service-type"; + config:java-class "org.opendaylight.controller.sal.core.api.model.YangTextSourceProvider"; + } } \ No newline at end of file