<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-actor_2.13</artifactId>
+ <version>2.5.31</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-cluster_2.13</artifactId>
+ <version>2.5.31</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-osgi_2.13</artifactId>
+ <version>2.5.31</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-persistence_2.13</artifactId>
+ <version>2.5.31</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-protobuf_2.13</artifactId>
+ <version>2.5.31</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-remote_2.13</artifactId>
+ <version>2.5.31</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-slf4j_2.13</artifactId>
+ <version>2.5.31</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-stream_2.13</artifactId>
+ <version>2.5.31</version>
</dependency>
</dependencies>
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>org.opendaylight.odlparent</groupId>
+ <groupId>org.opendaylight.controller</groupId>
<artifactId>bundle-parent</artifactId>
- <version>7.0.6</version>
- <relativePath/>
+ <version>3.0.0-SNAPSHOT</version>
+ <relativePath>../../bundle-parent</relativePath>
</parent>
- <groupId>org.opendaylight.controller</groupId>
<artifactId>repackaged-akka</artifactId>
<packaging>bundle</packaging>
- <version>3.0.0-SNAPSHOT</version>
<name>${project.artifactId}</name>
<properties>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>dom-parent</artifactId>
+ <version>7.0.0-SNAPSHOT</version>
+ <relativePath/>
+ </parent>
+
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>bundle-parent</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>controller-artifacts</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+
+ <!-- Scala and its modules -->
+ <dependency>
+ <groupId>org.scala-lang</groupId>
+ <artifactId>scala-library</artifactId>
+ <version>2.13.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.scala-lang</groupId>
+ <artifactId>scala-reflect</artifactId>
+ <version>2.13.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.scala-lang.modules</groupId>
+ <artifactId>scala-java8-compat_2.13</artifactId>
+ <version>0.9.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.scala-lang.modules</groupId>
+ <artifactId>scala-parser-combinators_2.13</artifactId>
+ <version>1.1.2</version>
+ </dependency>
+
+ <!-- Configuration library -->
+ <!-- This needs to be kept in sync with the version used by akka -->
+ <dependency>
+ <groupId>com.typesafe</groupId>
+ <artifactId>config</artifactId>
+ <version>1.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>com.typesafe</groupId>
+ <artifactId>ssl-config-core_2.13</artifactId>
+ <version>0.3.8</version>
+ </dependency>
+
+ <!-- Akka testkit -->
+ <dependency>
+ <groupId>com.typesafe.akka</groupId>
+ <artifactId>akka-testkit_2.13</artifactId>
+ <version>2.5.31</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>com.typesafe.akka</groupId>
+ <artifactId>akka-actor_2.13</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.typesafe.akka</groupId>
+ <artifactId>akka-persistence-tck_2.13</artifactId>
+ <version>2.5.31</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>com.typesafe.akka</groupId>
+ <artifactId>akka-persistence_2.13</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <!-- Reactive Streams, used by Akka -->
+ <dependency>
+ <groupId>org.reactivestreams</groupId>
+ <artifactId>reactive-streams</artifactId>
+ <version>1.0.3</version>
+ </dependency>
+
+ <!-- Aeron, required by Akka -->
+ <dependency>
+ <groupId>org.agrona</groupId>
+ <artifactId>agrona</artifactId>
+ <version>0.9.33</version>
+ </dependency>
+ <dependency>
+ <groupId>io.aeron</groupId>
+ <artifactId>aeron-client</artifactId>
+ <version>1.15.3</version>
+ </dependency>
+ <dependency>
+ <groupId>io.aeron</groupId>
+ <artifactId>aeron-driver</artifactId>
+ <version>1.15.3</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+</project>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<groupId>org.kohsuke.metainf-services</groupId>
<artifactId>metainf-services</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ </dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.cmpn</artifactId>
<link>http://hamcrest.org/JavaHamcrest/javadoc/2.2/</link>
<link>http://google.github.io/truth/api/1.0.1/</link>
<link>http://www.slf4j.org/apidocs/</link>
- <link>https://google.github.io/guava/releases/28.2-jre/api/docs/</link>
+ <link>https://google.github.io/guava/releases/29.0-jre/api/docs/</link>
<link>http://doc.akka.io/japi/akka/2.5.31/</link>
<link>http://netty.io/4.1/api/</link>
<link>https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/</link>
<link>https://commons.apache.org/proper/commons-lang/javadocs/api-3.9/</link>
<link>https://commons.apache.org/proper/commons-codec/apidocs/</link>
- <link>https://www.javadoc.io/doc/org.opendaylight.odlparent/odlparent-docs/7.0.6/</link>
- <link>https://www.javadoc.io/doc/org.opendaylight.yangtools/yangtools-docs/5.0.6/</link>
- <link>https://www.javadoc.io/doc/org.opendaylight.mdsal/mdsal-docs/6.0.5/</link>
+ <link>https://www.javadoc.io/doc/org.opendaylight.odlparent/odlparent-docs/8.0.0/</link>
+ <link>https://www.javadoc.io/doc/org.opendaylight.yangtools/yangtools-docs/6.0.0-SNAPSHOT/</link>
+ <link>https://www.javadoc.io/doc/org.opendaylight.mdsal/mdsal-docs/7.0.0-SNAPSHOT/</link>
</links>
<groups>
<group>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>feature-repo-parent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>feature-repo-parent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>feature-repo-parent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
-->
<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="odl-clustering-test-app-${project.version}">
<feature name="odl-clustering-test-app" version="${project.version}">
- <feature version="[6,7)">odl-mdsal-model-rfc6991</feature>
+ <feature version="[7,8)">odl-mdsal-model-rfc6991</feature>
</feature>
</features>
-->
<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="odl-controller-blueprint-${project.version}">
<feature name="odl-controller-blueprint" version="${project.version}">
- <feature version="[5,6)">odl-yangtools-codec</feature>
- <feature version="[6,7)">odl-mdsal-binding-api</feature>
- <feature version="[6,7)">odl-mdsal-binding-runtime</feature>
- <feature version="[6,7)">odl-mdsal-dom-api</feature>
+ <feature version="[6,7)">odl-yangtools-codec</feature>
+ <feature version="[7,8)">odl-mdsal-binding-api</feature>
+ <feature version="[7,8)">odl-mdsal-binding-runtime</feature>
+ <feature version="[7,8)">odl-mdsal-dom-api</feature>
<bundle start-level="40">mvn:org.opendaylight.controller/blueprint/${project.version}</bundle>
</feature>
</features>
-->
<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="odl-controller-exp-messagebus-${project.version}">
<feature name="odl-controller-exp-messagebus" version="${project.version}">
- <feature version="[6,7)">odl-mdsal-model-draft-clemm-netmod-yang-network-topo-01-minimal</feature>
+ <feature version="[7,8)">odl-mdsal-model-draft-clemm-netmod-yang-network-topo-01-minimal</feature>
</feature>
</features>
-->
<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-controller-exp-netty-config">
<feature name="odl-controller-exp-netty-config">
- <feature version="[7,8)">odl-netty-4</feature>
+ <feature version="[8,9)">odl-netty-4</feature>
</feature>
</features>
-->
<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="odl-controller-mdsal-common-${project.version}">
<feature name="odl-controller-mdsal-common" version="${project.version}">
- <feature version="[6,7)">odl-mdsal-common</feature>
- <feature version="[6,7)">odl-mdsal-binding-runtime</feature>
+ <feature version="[7,8)">odl-mdsal-common</feature>
+ <feature version="[7,8)">odl-mdsal-binding-runtime</feature>
</feature>
</features>
-->
<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="odl-controller-model-topology-${project.version}">
<feature name="odl-controller-model-topology" version="${project.version}">
- <feature version="[6,7)">odl-mdsal-model-draft-clemm-netmod-yang-network-topo-01-minimal</feature>
+ <feature version="[7,8)">odl-mdsal-model-draft-clemm-netmod-yang-network-topo-01-minimal</feature>
</feature>
</features>
-->
<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="odl-mdsal-${project.version}">
<feature name="odl-mdsal-broker-local" version="${project.version}">
- <feature version="[6,7)">odl-mdsal-dom</feature>
- <feature version="[6,7)">odl-mdsal-eos-binding</feature>
- <feature version="[6,7)">odl-mdsal-eos-dom</feature>
- <feature version="[6,7)">odl-mdsal-singleton-dom</feature>
+ <feature version="[7,8)">odl-mdsal-dom</feature>
+ <feature version="[7,8)">odl-mdsal-eos-binding</feature>
+ <feature version="[7,8)">odl-mdsal-eos-dom</feature>
+ <feature version="[7,8)">odl-mdsal-singleton-dom</feature>
</feature>
</features>
-->
<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="odl-mdsal-${project.version}">
<feature name="odl-mdsal-broker" version="${project.version}">
- <feature version="[6,7)">odl-mdsal-singleton-dom</feature>
- <feature version="[6,7)">odl-mdsal-eos-binding</feature>
+ <feature version="[7,8)">odl-mdsal-singleton-dom</feature>
+ <feature version="[7,8)">odl-mdsal-eos-binding</feature>
</feature>
</features>
<dependencies>
<dependency>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>odl-akka-system-2.5</artifactId>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>odl-akka-persistence-2.5</artifactId>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>odl-akka-clustering-2.5</artifactId>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>odl-controller-akka</artifactId>
<type>xml</type>
<classifier>features</classifier>
</dependency>
-->
<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-controller-${project.version}">
<feature name="odl-mdsal-clustering-commons" version="${project.version}">
- <feature version="[7,8)">odl-akka-system-2.5</feature>
- <feature version="[7,8)">odl-akka-persistence-2.5</feature>
- <feature version="[7,8)">odl-akka-clustering-2.5</feature>
- <feature version="[7,8)">odl-apache-commons-lang3</feature>
- <feature version="[7,8)">odl-dropwizard-metrics</feature>
- <feature version="[7,8)">odl-servlet-api</feature>
- <feature version="[5,6)">odl-yangtools-data</feature>
- <feature version="[5,6)">odl-yangtools-codec</feature>
+ <feature version="[8,9)">odl-apache-commons-lang3</feature>
+ <feature version="[8,9)">odl-dropwizard-metrics</feature>
+ <feature version="[8,9)">odl-servlet-api</feature>
+ <feature version="[6,7)">odl-yangtools-data</feature>
+ <feature version="[6,7)">odl-yangtools-codec</feature>
</feature>
</features>
-->
<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-controller-${project.version}">
<feature name="odl-mdsal-distributed-datastore" version="${project.version}">
- <feature version="[7,8)">odl-apache-commons-text</feature>
- <feature version="[5,6)">odl-yangtools-codec</feature>
- <feature version="[6,7)">odl-mdsal-eos-dom</feature>
- <feature version="[6,7)">odl-mdsal-dom-broker</feature>
- <feature version="[6,7)">odl-mdsal-binding-dom-adapter</feature>
+ <feature version="[8,9)">odl-apache-commons-text</feature>
+ <feature version="[6,7)">odl-yangtools-codec</feature>
+ <feature version="[7,8)">odl-mdsal-eos-dom</feature>
+ <feature version="[7,8)">odl-mdsal-dom-broker</feature>
+ <feature version="[7,8)">odl-mdsal-binding-dom-adapter</feature>
<configfile finalname="configuration/initial/akka.conf">
mvn:org.opendaylight.controller/sal-clustering-config/${project.version}/xml/akkaconf
</configfile>
-->
<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="odl-mdsal-model-inventory-${project.version}">
<feature name="odl-mdsal-model-inventory" version="${project.version}">
- <feature version="[6,7)">odl-mdsal-model-rfc6991</feature>
+ <feature version="[7,8)">odl-mdsal-model-rfc6991</feature>
</feature>
</features>
-->
<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="odl-toaster-${project.version}">
<feature name="odl-toaster" version="${project.version}">
- <feature version="[6,7)">odl-mdsal-binding-runtime</feature>
+ <feature version="[7,8)">odl-mdsal-binding-runtime</feature>
</feature>
</features>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.opendaylight.controller</groupId>
- <artifactId>mdsal-parent</artifactId>
+ <artifactId>bundle-parent</artifactId>
<version>3.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>karaf4-parent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yangtools-artifacts</artifactId>
- <version>5.0.6</version>
+ <version>6.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-artifacts</artifactId>
- <version>6.0.5</version>
+ <version>7.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
import org.opendaylight.mdsal.dom.spi.RpcRoutingStrategy;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.yang.binding.RpcService;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.osgi.service.blueprint.container.ComponentDefinitionException;
abstract class AbstractInvokableServiceMetadata extends AbstractDependentComponentFactoryMetadata {
private ListenerRegistration<DOMRpcAvailabilityListener> rpcListenerReg;
private RpcConsumerRegistry rpcRegistry;
private Class<RpcService> rpcInterface;
- private Set<SchemaPath> rpcSchemaPaths;
+ private Set<QName> rpcSchemaPaths;
AbstractInvokableServiceMetadata(final String id, final String interfaceName) {
super(id);
private void retrievedSchemaContext(final SchemaContext schemaContext) {
log.debug("{}: retrievedSchemaContext", logName());
- final Collection<SchemaPath> schemaPaths = RpcUtil.decomposeRpcService(rpcInterface, schemaContext,
+ final Collection<QName> schemaPaths = RpcUtil.decomposeRpcService(rpcInterface, schemaContext,
rpcFilter());
if (schemaPaths.isEmpty()) {
log.debug("{}: interface {} has no acceptable entries, assuming it is satisfied", logName(), rpcInterface);
import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.util.concurrent.FluentFutures;
import org.opendaylight.yangtools.yang.binding.RpcService;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.common.QName;
import org.osgi.framework.Bundle;
import org.osgi.service.blueprint.container.ComponentDefinitionException;
import org.slf4j.Logger;
}
private void registerFallback(final Class<RpcService> interfaceClass) {
- final Collection<SchemaPath> paths = RpcUtil.decomposeRpcService(interfaceClass,
+ final Collection<QName> paths = RpcUtil.decomposeRpcService(interfaceClass,
schemaService.getGlobalContext(), RpcRoutingStrategy::isContextBasedRouted);
if (paths.isEmpty()) {
LOG.warn("{}: interface {} has no actions defined", ACTION_PROVIDER, interfaceClass);
import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
import org.opendaylight.mdsal.dom.spi.RpcRoutingStrategy;
import org.opendaylight.yangtools.yang.binding.RpcService;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
throw new UnsupportedOperationException();
}
- static Collection<SchemaPath> decomposeRpcService(final Class<RpcService> service,
+ static Collection<QName> decomposeRpcService(final Class<RpcService> service,
final SchemaContext schemaContext, final Predicate<RpcRoutingStrategy> filter) {
final QNameModule moduleName = BindingReflections.getQNameModule(service);
final Module module = schemaContext.findModule(moduleName).orElseThrow(() -> new IllegalArgumentException(
LOG.debug("Resolved service {} to module {}", service, module);
final Collection<? extends RpcDefinition> rpcs = module.getRpcs();
- final Collection<SchemaPath> ret = new ArrayList<>(rpcs.size());
+ final Collection<QName> ret = new ArrayList<>(rpcs.size());
for (RpcDefinition rpc : rpcs) {
final RpcRoutingStrategy strategy = RpcRoutingStrategy.from(rpc);
if (filter.test(strategy)) {
- ret.add(rpc.getPath());
+ ret.add(rpc.getQName());
}
}
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-actor_2.13</artifactId>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>repackaged-akka</artifactId>
</dependency>
<dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-testkit_2.13</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<groupId>org.opendaylight.controller</groupId>
<artifactId>cds-access-api</artifactId>
</dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-actor_2.13</artifactId>
- </dependency>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-testkit_2.13</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<dependencies>
<dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-actor_2.13</artifactId>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>repackaged-akka</artifactId>
</dependency>
<dependency>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-artifacts</artifactId>
- <version>6.0.5</version>
+ <version>7.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<karaf.distro.artifactId>opendaylight-karaf-empty</karaf.distro.artifactId>
<karaf.distro.type>zip</karaf.distro.type>
<karaf.keep.unpack>false</karaf.keep.unpack>
+
+ <!-- FIXME: Remove this -->
+ <odlparent.modernizer.enforce>false</odlparent.modernizer.enforce>
</properties>
<dependencyManagement>
*/
package org.opendaylight.controller.messagebus.app.util;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.dom.api.DOMNotification;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventaggregator.rev141202.TopicNotification;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
public class TopicDOMNotification implements DOMNotification {
+ private static final @NonNull Absolute TOPIC_NOTIFICATION_ID = Absolute.of(TopicNotification.QNAME);
- private static final SchemaPath TOPIC_NOTIFICATION_ID = SchemaPath.create(true, TopicNotification.QNAME);
private final ContainerNode body;
public TopicDOMNotification(final ContainerNode body) {
}
@Override
- public SchemaPath getType() {
+ public Absolute getType() {
return TOPIC_NOTIFICATION_ID;
}
import org.junit.Test;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventaggregator.rev141202.TopicNotification;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
public class TopicDOMNotificationTest {
@Test
public void getTypeTest() {
- SchemaPath topicNotificationId = SchemaPath.create(true, TopicNotification.QNAME);
- assertEquals("Type has not been created correctly.", topicNotificationId, topicDOMNotification.getType());
+ assertEquals("Type has not been created correctly.", Absolute.of(TopicNotification.QNAME),
+ topicDOMNotification.getType());
}
@Test
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>6.0.5</version>
+ <version>7.0.0-SNAPSHOT</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.opendaylight.controller</groupId>
- <artifactId>controller-artifacts</artifactId>
+ <artifactId>bundle-parent</artifactId>
<version>3.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<artifactId>sal-clustering-commons</artifactId>
</dependency>
<dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-actor_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-cluster_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-persistence_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-remote_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-slf4j_2.13</artifactId>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>repackaged-akka</artifactId>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-testkit_2.13</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>sal-akka-segmented-journal</artifactId>
<packaging>bundle</packaging>
+ <properties>
+ <!-- FIXME: Remove this -->
+ <odlparent.modernizer.enforce>false</odlparent.modernizer.enforce>
+ </properties>
+
<dependencies>
<!-- Akka -->
<dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-actor_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-persistence_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-slf4j_2.13</artifactId>
- <scope>test</scope>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>repackaged-akka</artifactId>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
</dependency>
<!-- Akka -->
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-actor_2.13</artifactId>
- </dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-testkit_2.13</artifactId>
- <scope>test</scope>
</dependency>
<!-- Scala -->
<artifactId>sal-clustering-commons</artifactId>
<packaging>bundle</packaging>
+ <properties>
+ <!-- FIXME: Remove this -->
+ <odlparent.modernizer.enforce>false</odlparent.modernizer.enforce>
+ </properties>
+
<dependencies>
<!-- Java -->
<dependency>
<!-- Akka -->
<dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-actor_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-cluster_2.13</artifactId>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>repackaged-akka</artifactId>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
- <artifactId>akka-osgi_2.13</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-persistence_2.13</artifactId>
+ <artifactId>akka-testkit_2.13</artifactId>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
- <artifactId>akka-remote_2.13</artifactId>
+ <artifactId>akka-persistence-tck_2.13</artifactId>
</dependency>
+
<dependency>
<!-- Enforce Netty’s optional dependency on servlet API -->
<!-- FIXME: is this really needed ? -->
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-slf4j_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-testkit_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-persistence-tck_2.13</artifactId>
- </dependency>
<!-- Codahale -->
<dependency>
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode;
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
this.tree = requireNonNull(tree);
}
- AbstractNormalizedNodePruner(final SchemaContext schemaContext) {
+ AbstractNormalizedNodePruner(final EffectiveModelContext schemaContext) {
this(DataSchemaContextTree.from(schemaContext));
}
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
/**
* The NormalizedNodePruner removes all nodes from the input NormalizedNode that do not have a corresponding
@Beta
public abstract class ReusableNormalizedNodePruner extends AbstractNormalizedNodePruner {
private static final class SimplePruner extends ReusableNormalizedNodePruner {
- SimplePruner(final SchemaContext schemaContext) {
+ SimplePruner(final EffectiveModelContext schemaContext) {
super(schemaContext);
}
}
}
- ReusableNormalizedNodePruner(final SchemaContext schemaContext) {
+ ReusableNormalizedNodePruner(final EffectiveModelContext schemaContext) {
super(schemaContext);
}
* @return A new uninitialized pruner
* @throws NullPointerException if {@code schemaContext} is null
*/
- public static @NonNull ReusableNormalizedNodePruner forSchemaContext(final SchemaContext schemaContext) {
+ public static @NonNull ReusableNormalizedNodePruner forSchemaContext(final EffectiveModelContext schemaContext) {
return new SimplePruner(schemaContext);
}
/**
* Create a new pruner bound to a DataSchemaContextTree. This is a more efficient alternative of
- * {@link #forSchemaContext(SchemaContext)}.
+ * {@link #forSchemaContext(EffectiveModelContext)}.
*
* @param tree DataSchemaContextTree to use
* @return A new uninitialized pruner
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetEntryNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
@RunWith(MockitoJUnitRunner.StrictStubs.class)
public class NormalizedNodePrunerTest {
- private static final SchemaContext NO_TEST_SCHEMA = TestModel.createTestContextWithoutTestSchema();
- private static final SchemaContext NO_AUG_SCHEMA = TestModel.createTestContextWithoutAugmentationSchema();
- private static final SchemaContext FULL_SCHEMA = TestModel.createTestContext();
+ private static final EffectiveModelContext NO_TEST_SCHEMA = TestModel.createTestContextWithoutTestSchema();
+ private static final EffectiveModelContext NO_AUG_SCHEMA = TestModel.createTestContextWithoutAugmentationSchema();
+ private static final EffectiveModelContext FULL_SCHEMA = TestModel.createTestContext();
private static AbstractNormalizedNodePruner prunerFullSchema(final YangInstanceIdentifier path) {
final ReusableNormalizedNodePruner pruner = ReusableNormalizedNodePruner.forSchemaContext(FULL_SCHEMA);
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetEntryNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
public final class TestModel {
return TestModel.class.getResourceAsStream(resourceName);
}
- public static SchemaContext createTestContext() {
+ public static EffectiveModelContext createTestContext() {
return YangParserTestUtils.parseYangResources(TestModel.class, DATASTORE_TEST_YANG, DATASTORE_AUG_YANG,
DATASTORE_TEST_NOTIFICATION_YANG);
}
- public static SchemaContext createTestContextWithoutTestSchema() {
+ public static EffectiveModelContext createTestContextWithoutTestSchema() {
return YangParserTestUtils.parseYangResource(DATASTORE_TEST_NOTIFICATION_YANG);
}
- public static SchemaContext createTestContextWithoutAugmentationSchema() {
+ public static EffectiveModelContext createTestContextWithoutAugmentationSchema() {
return YangParserTestUtils.parseYangResources(TestModel.class, DATASTORE_TEST_YANG,
DATASTORE_TEST_NOTIFICATION_YANG);
}
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<artifactId>sal-distributed-datastore</artifactId>
<packaging>bundle</packaging>
+ <properties>
+ <!-- FIXME: Remove this -->
+ <odlparent.modernizer.enforce>false</odlparent.modernizer.enforce>
+ </properties>
+
<dependencies>
<!-- Java -->
<dependency>
</dependency>
<!-- Akka -->
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-actor_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-cluster_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-osgi_2.13</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-persistence_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-remote_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-slf4j_2.13</artifactId>
- </dependency>
<dependency>
<groupId>org.scala-lang.modules</groupId>
<artifactId>scala-java8-compat_2.13</artifactId>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-testkit_2.13</artifactId>
- <scope>test</scope>
</dependency>
<!-- Scala -->
import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModificationCursor;
import org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaValidationFailedException;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
}
@Override
- public final SchemaContext getSchemaContext() {
- return delegate.getSchemaContext();
+ public final EffectiveModelContext getEffectiveModelContext() {
+ return delegate.getEffectiveModelContext();
}
@Override
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
-import org.opendaylight.binding.runtime.spi.BindingRuntimeHelpers;
import org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext;
+import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.distributed.datastore.provider.rev140612.DataStorePropertiesContainer;
/**
<artifactId>sal-distributed-eos</artifactId>
<packaging>bundle</packaging>
+ <properties>
+ <!-- FIXME: Remove this -->
+ <odlparent.modernizer.enforce>false</odlparent.modernizer.enforce>
+ </properties>
+
<dependencies>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-testkit_2.13</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<packaging>bundle</packaging>
<dependencies>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-actor_2.13</artifactId>
- </dependency>
-
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-cluster_2.13</artifactId>
- </dependency>
-
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-persistence_2.13</artifactId>
- </dependency>
-
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-remote_2.13</artifactId>
- </dependency>
-
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-testkit_2.13</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-slf4j_2.13</artifactId>
- </dependency>
-
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-osgi_2.13</artifactId>
- </dependency>
-
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>sal-clustering-commons</artifactId>
<!-- Test Dependencies -->
<dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
- <scope>test</scope>
+ <groupId>com.typesafe.akka</groupId>
+ <artifactId>akka-testkit_2.13</artifactId>
</dependency>
<dependency>
<dependencies>
<dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-actor_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-cluster_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-remote_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-testkit_2.13</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-osgi_2.13</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-slf4j_2.13</artifactId>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-persistence_2.13</artifactId>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>repackaged-akka</artifactId>
</dependency>
<!-- SAL Dependencies -->
<dependency>
<artifactId>scala-library</artifactId>
</dependency>
<!-- Test Dependencies -->
+ <dependency>
+ <groupId>com.typesafe.akka</groupId>
+ <artifactId>akka-testkit_2.13</artifactId>
+ </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
import java.util.concurrent.TimeoutException;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import scala.concurrent.ExecutionContext;
import scala.concurrent.Future;
-abstract class AbstractRemoteFuture<T, E extends Exception> extends AbstractFuture<T> {
+abstract class AbstractRemoteFuture<T, O, E extends Exception> extends AbstractFuture<O> {
private static final Logger LOG = LoggerFactory.getLogger(AbstractRemoteFuture.class);
- private final @NonNull SchemaPath type;
+ private final @NonNull T type;
- AbstractRemoteFuture(final @NonNull SchemaPath type, final Future<Object> requestFuture) {
+ AbstractRemoteFuture(final @NonNull T type, final Future<Object> requestFuture) {
this.type = requireNonNull(type);
requestFuture.onComplete(new FutureUpdater(), ExecutionContext.Implicits$.MODULE$.global());
}
@Override
- public final T get() throws InterruptedException, ExecutionException {
+ public final O get() throws InterruptedException, ExecutionException {
try {
return super.get();
} catch (ExecutionException e) {
}
@Override
- public final T get(final long timeout, final TimeUnit unit)
+ public final O get(final long timeout, final TimeUnit unit)
throws InterruptedException, ExecutionException, TimeoutException {
try {
return super.get(timeout, unit);
}
@Override
- protected final boolean set(final T value) {
+ protected final boolean set(final O value) {
final boolean ret = super.set(value);
if (ret) {
LOG.debug("Future {} for action {} successfully completed", this, type);
setException(error);
}
- abstract @Nullable T processReply(Object reply);
+ abstract @Nullable O processReply(Object reply);
abstract @NonNull Class<E> exceptionClass();
@Override
public void onComplete(final Throwable error, final Object reply) {
if (error == null) {
- final T result = processReply(reply);
+ final O result = processReply(reply);
if (result != null) {
LOG.debug("Received response for operation {}: result is {}", type, result);
set(result);
/**
* An abstract base class for remote RPC/action implementations.
*/
-abstract class AbstractRemoteImplementation<T extends AbstractExecute<?>> {
+abstract class AbstractRemoteImplementation<T extends AbstractExecute<?, ?>> {
// 0 for local, 1 for binding, 2 for remote
static final long COST = 2;
import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
import org.opendaylight.mdsal.dom.api.DOMRpcResult;
import org.opendaylight.mdsal.dom.api.DOMRpcService;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.RpcError;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
/**
* Actor receiving invocation requests from remote nodes, routing them to
return;
}
- Futures.addCallback(future, new AbstractCallback<DOMRpcResult>(getSender(), msg.getType()) {
+ Futures.addCallback(future, new AbstractCallback<QName, DOMRpcResult>(getSender(), msg.getType()) {
@Override
- Object nullResponse(final SchemaPath type) {
+ Object nullResponse(final QName type) {
LOG.warn("Execution of {} resulted in null result", type);
return new RpcResponse(null);
}
@Override
- Object response(final SchemaPath type, final DOMRpcResult result) {
+ Object response(final QName type, final DOMRpcResult result) {
final Collection<? extends RpcError> errors = result.getErrors();
return errors.isEmpty() ? new RpcResponse(result.getResult())
// This is legacy (wrong) behavior, which ignores the fact that errors may be just warnings,
return;
}
- Futures.addCallback(future, new AbstractCallback<DOMActionResult>(getSender(), msg.getType()) {
+ Futures.addCallback(future, new AbstractCallback<Absolute, DOMActionResult>(getSender(), msg.getType()) {
@Override
- Object nullResponse(final SchemaPath type) {
+ Object nullResponse(final Absolute type) {
throw new IllegalStateException("Null invocation result of action " + type);
}
@Override
- Object response(final SchemaPath type, final DOMActionResult result) {
+ Object response(final Absolute type, final DOMActionResult result) {
final Collection<? extends RpcError> errors = result.getErrors();
return errors.isEmpty() ? new ActionResponse(result.getOutput(), result.getErrors())
// This is legacy (wrong) behavior, which ignores the fact that errors may be just warnings,
}, MoreExecutors.directExecutor());
}
- private abstract class AbstractCallback<T> implements FutureCallback<T> {
+ private abstract class AbstractCallback<T, R> implements FutureCallback<R> {
private final ActorRef replyTo;
- private final SchemaPath type;
+ private final T type;
- AbstractCallback(final ActorRef replyTo, final SchemaPath type) {
+ AbstractCallback(final ActorRef replyTo, final T type) {
this.replyTo = requireNonNull(replyTo);
this.type = requireNonNull(type);
}
@Override
- public final void onSuccess(final T result) {
+ public final void onSuccess(final R result) {
final Object response;
if (result == null) {
// This shouldn't happen but the FutureCallback annotates the result param with Nullable so handle null
replyTo.tell(new Failure(failure), self());
}
- abstract @NonNull Object nullResponse(@NonNull SchemaPath type);
+ abstract @NonNull Object nullResponse(@NonNull T type);
- abstract @NonNull Object response(@NonNull SchemaPath type, @NonNull T result);
+ abstract @NonNull Object response(@NonNull T type, @NonNull R result);
}
}
import org.opendaylight.mdsal.dom.api.DOMActionResult;
import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* Routes action request to a remote invoker, which will execute the action and return with result.
*/
@Override
- public ListenableFuture<DOMActionResult> invokeAction(final SchemaPath type, final DOMDataTreeIdentifier path,
+ public ListenableFuture<DOMActionResult> invokeAction(final Absolute type, final DOMDataTreeIdentifier path,
final ContainerNode input) {
LOG.debug("invoking action {} with path {}", type, path);
return new RemoteDOMActionFuture(type, ask(ExecuteAction.from(type, path, input)));
import org.opendaylight.mdsal.dom.api.DOMActionResult;
import org.opendaylight.mdsal.dom.spi.SimpleDOMActionResult;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import scala.concurrent.Future;
-final class RemoteDOMActionFuture extends AbstractRemoteFuture<DOMActionResult, DOMActionException> {
- RemoteDOMActionFuture(final @NonNull SchemaPath type, final @NonNull Future<Object> requestFuture) {
+final class RemoteDOMActionFuture extends AbstractRemoteFuture<Absolute, DOMActionResult, DOMActionException> {
+ RemoteDOMActionFuture(final @NonNull Absolute type, final @NonNull Future<Object> requestFuture) {
super(type, requestFuture);
}
import org.opendaylight.mdsal.dom.api.DOMRpcException;
import org.opendaylight.mdsal.dom.api.DOMRpcResult;
import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.common.QName;
import scala.concurrent.Future;
-final class RemoteDOMRpcFuture extends AbstractRemoteFuture<DOMRpcResult, DOMRpcException> {
- RemoteDOMRpcFuture(final @NonNull SchemaPath type, final @NonNull Future<Object> requestFuture) {
+final class RemoteDOMRpcFuture extends AbstractRemoteFuture<QName, DOMRpcResult, DOMRpcException> {
+ RemoteDOMRpcFuture(final @NonNull QName type, final @NonNull Future<Object> requestFuture) {
super(type, requestFuture);
}
import java.io.Serializable;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
/**
* An abstract base class for invocation requests. Specialized via {@link ExecuteAction} and {@link ExecuteRpc}.
*/
-public abstract class AbstractExecute<T extends NormalizedNode<?, ?>> implements Serializable {
+public abstract class AbstractExecute<T, I extends NormalizedNode<?, ?>> implements Serializable {
private static final long serialVersionUID = 1L;
- private final transient @NonNull SchemaPath type;
- private final transient T input;
+ private final transient @NonNull T type;
+ private final transient I input;
- AbstractExecute(final @NonNull SchemaPath type, final T input) {
+ AbstractExecute(final @NonNull T type, final I input) {
this.type = requireNonNull(type);
this.input = input;
}
- public final @NonNull SchemaPath getType() {
+ public final @NonNull T getType() {
return type;
}
- public final T getInput() {
+ public final I getInput() {
return input;
}
import com.google.common.base.MoreObjects.ToStringHelper;
import java.io.Externalizable;
import java.io.IOException;
+import java.io.InvalidObjectException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataInput;
import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataOutput;
import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeStreamVersion;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
-public final class ExecuteAction extends AbstractExecute<@NonNull ContainerNode> {
+public final class ExecuteAction extends AbstractExecute<Absolute, @NonNull ContainerNode> {
private static final long serialVersionUID = 1128904894827335676L;
private final @NonNull DOMDataTreeIdentifier path;
- private ExecuteAction(final @NonNull SchemaPath type, final @NonNull DOMDataTreeIdentifier path,
+ private ExecuteAction(final @NonNull Absolute type, final @NonNull DOMDataTreeIdentifier path,
final @NonNull ContainerNode input) {
super(type, requireNonNull(input));
this.path = requireNonNull(path);
}
- public static @NonNull ExecuteAction from(final @NonNull SchemaPath type, @NonNull final DOMDataTreeIdentifier path,
+ public static @NonNull ExecuteAction from(final @NonNull Absolute type, @NonNull final DOMDataTreeIdentifier path,
final @NonNull ContainerNode input) {
return new ExecuteAction(type, path, input);
}
@Override
public void writeExternal(final ObjectOutput out) throws IOException {
try (NormalizedNodeDataOutput stream = NormalizedNodeStreamVersion.current().newDataOutput(out)) {
- stream.writeSchemaPath(executeAction.getType());
+ stream.writeSchemaNodeIdentifier(executeAction.getType());
executeAction.getPath().getDatastoreType().writeTo(out);
stream.writeYangInstanceIdentifier(executeAction.getPath().getRootIdentifier());
stream.writeOptionalNormalizedNode(executeAction.getInput());
@Override
public void readExternal(final ObjectInput in) throws IOException {
final NormalizedNodeDataInput stream = NormalizedNodeDataInput.newDataInput(in);
- final SchemaPath name = stream.readSchemaPath();
+ final SchemaNodeIdentifier sni = stream.readSchemaNodeIdentifier();
+ if (!(sni instanceof Absolute)) {
+ throw new InvalidObjectException("Non-absolute type " + sni);
+ }
+
final LogicalDatastoreType type = LogicalDatastoreType.readFrom(in);
final YangInstanceIdentifier path = stream.readYangInstanceIdentifier();
final ContainerNode input = (ContainerNode) stream.readOptionalNormalizedNode().orElse(null);
- executeAction = new ExecuteAction(name, new DOMDataTreeIdentifier(type, path), input);
+ executeAction = new ExecuteAction((Absolute) sni, new DOMDataTreeIdentifier(type, path), input);
}
private Object readResolve() {
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataInput;
import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataOutput;
import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeStreamVersion;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-public final class ExecuteRpc extends AbstractExecute<@Nullable NormalizedNode<?, ?>> {
+public final class ExecuteRpc extends AbstractExecute<QName, @Nullable NormalizedNode<?, ?>> {
private static final long serialVersionUID = 1128904894827335676L;
- private ExecuteRpc(final @NonNull SchemaPath type, final @Nullable NormalizedNode<?, ?> input) {
+ private ExecuteRpc(final @NonNull QName type, final @Nullable NormalizedNode<?, ?> input) {
super(type, input);
}
@Override
public void writeExternal(final ObjectOutput out) throws IOException {
try (NormalizedNodeDataOutput stream = NormalizedNodeStreamVersion.current().newDataOutput(out)) {
- stream.writeQName(executeRpc.getType().getLastComponent());
+ stream.writeQName(executeRpc.getType());
stream.writeOptionalNormalizedNode(executeRpc.getInput());
}
}
@Override
public void readExternal(final ObjectInput in) throws IOException {
final NormalizedNodeDataInput stream = NormalizedNodeDataInput.newDataInput(in);
- final SchemaPath type = SchemaPath.ROOT.createChild(stream.readQName());
+ final QName type = stream.readQName();
final NormalizedNode<?, ?> input = stream.readOptionalNormalizedNode().orElse(null);
executeRpc = new ExecuteRpc(type, input);
}
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.Externalizable;
import java.io.IOException;
+import java.io.InvalidObjectException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.ArrayList;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.dom.api.DOMActionInstance;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataInput;
import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataOutput;
import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeStreamVersion;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
final NormalizedNodeDataOutput nnout = NormalizedNodeStreamVersion.current().newDataOutput(out);
nnout.writeInt(actions.size());
for (DOMActionInstance id : actions) {
- nnout.writeSchemaPath(id.getType());
- YangInstanceIdentifier actionPath = YangInstanceIdentifier.create(
- new YangInstanceIdentifier.NodeIdentifier(id.getType().getLastComponent()));
- nnout.writeYangInstanceIdentifier(actionPath);
+ final Absolute type = id.getType();
+ nnout.writeSchemaNodeIdentifier(type);
+ nnout.writeYangInstanceIdentifier(YangInstanceIdentifier.create(new NodeIdentifier(
+ type.lastNodeIdentifier())));
}
}
final int size = nnin.readInt();
actions = new ArrayList<>(size);
for (int i = 0; i < size; ++i) {
- actions.add(DOMActionInstance.of(nnin.readSchemaPath(), LogicalDatastoreType.OPERATIONAL,
+ final SchemaNodeIdentifier sni = nnin.readSchemaNodeIdentifier();
+ if (!(sni instanceof Absolute)) {
+ throw new InvalidObjectException("Non-absolute type " + sni);
+ }
+
+ actions.add(DOMActionInstance.of((Absolute) sni, LogicalDatastoreType.OPERATIONAL,
nnin.readYangInstanceIdentifier()));
}
}
import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataInput;
import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataOutput;
import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeStreamVersion;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
public final class RoutingTable extends AbstractRoutingTable<RoutingTable, DOMRpcIdentifier> {
private static final class Proxy implements Externalizable {
try (NormalizedNodeDataOutput nnout = NormalizedNodeStreamVersion.current().newDataOutput(out)) {
nnout.writeInt(rpcs.size());
for (DOMRpcIdentifier id : rpcs) {
- nnout.writeSchemaPath(id.getType());
+ // TODO: we should be able to get by with just a QName
+ nnout.writeSchemaNodeIdentifier(Absolute.of(id.getType()));
nnout.writeYangInstanceIdentifier(id.getContextReference());
}
}
final int size = nnin.readInt();
rpcs = new ArrayList<>(size);
for (int i = 0; i < size; ++i) {
- rpcs.add(DOMRpcIdentifier.create(nnin.readSchemaPath(), nnin.readYangInstanceIdentifier()));
+ // TODO: we should be able to get by with just a QName
+ rpcs.add(DOMRpcIdentifier.create(nnin.readSchemaNodeIdentifier().firstNodeIdentifier(),
+ nnin.readYangInstanceIdentifier()));
}
}
ActionRoutingTable table = localData();
Set<String> routedAction = new HashSet<>(table.getItems().size());
for (DOMActionInstance route : table.getItems()) {
- if (route.getType().getLastComponent() != null) {
- final YangInstanceIdentifier actionPath = YangInstanceIdentifier.create(
- new NodeIdentifier(route.getType().getLastComponent()));
- if (!actionPath.isEmpty()) {
- routedAction.add(ROUTE_CONSTANT + actionPath + NAME_CONSTANT + route.getType());
- }
+ final YangInstanceIdentifier actionPath = YangInstanceIdentifier.create(new NodeIdentifier(
+ route.getType().lastNodeIdentifier()));
+ if (!actionPath.isEmpty()) {
+ routedAction.add(ROUTE_CONSTANT + actionPath + NAME_CONSTANT + route.getType());
}
}
Collection<DOMActionInstance> routes = table.getItems();
Map<String, String> actionMap = new HashMap<>(routes.size());
for (DOMActionInstance route : routes) {
- if (route.getType().getLastComponent() != null) {
- final YangInstanceIdentifier actionPath = YangInstanceIdentifier.create(
- new NodeIdentifier(route.getType().getLastComponent()));
- if (!actionPath.isEmpty()) {
- String routeString = actionPath.toString();
- if (routeString.contains(routeName)) {
- actionMap.put(ROUTE_CONSTANT + routeString + NAME_CONSTANT + route.getType(), address);
- }
+ final YangInstanceIdentifier actionPath = YangInstanceIdentifier.create(new NodeIdentifier(
+ route.getType().lastNodeIdentifier()));
+ if (!actionPath.isEmpty()) {
+ String routeString = actionPath.toString();
+ if (routeString.contains(routeName)) {
+ actionMap.put(ROUTE_CONSTANT + routeString + NAME_CONSTANT + route.getType(), address);
}
}
}
Collection<DOMActionInstance> routes = table.getItems();
Map<String, String> actionMap = new HashMap<>(routes.size());
for (DOMActionInstance route : routes) {
- if (route.getType().getLastComponent() != null) {
- final YangInstanceIdentifier actionPath = YangInstanceIdentifier.create(
- new NodeIdentifier(route.getType().getLastComponent()));
- if (!actionPath.isEmpty()) {
- String type = route.getType().toString();
- if (type.contains(name)) {
- actionMap.put(ROUTE_CONSTANT + actionPath + NAME_CONSTANT + type, address);
- }
+ final YangInstanceIdentifier actionPath = YangInstanceIdentifier.create(new NodeIdentifier(
+ route.getType().lastNodeIdentifier()));
+ if (!actionPath.isEmpty()) {
+ String type = route.getType().toString();
+ if (type.contains(name)) {
+ actionMap.put(ROUTE_CONSTANT + actionPath + NAME_CONSTANT + type, address);
}
}
}
import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
/**
static final QName TEST_RPC_OUTPUT = QName.create(TEST_NS, TEST_REV, "output");
- static final SchemaPath TEST_RPC_TYPE = SchemaPath.create(true, TEST_RPC);
+ static final Absolute TEST_RPC_TYPE = Absolute.of(TEST_RPC);
static final YangInstanceIdentifier TEST_PATH = YangInstanceIdentifier.create(
new YangInstanceIdentifier.NodeIdentifier(TEST_RPC));
- public static final DOMRpcIdentifier TEST_RPC_ID = DOMRpcIdentifier.create(TEST_RPC_TYPE, TEST_PATH);
+ public static final DOMRpcIdentifier TEST_RPC_ID = DOMRpcIdentifier.create(TEST_RPC, TEST_PATH);
public static final DOMDataTreeIdentifier TEST_DATA_TREE_ID = new DOMDataTreeIdentifier(
LogicalDatastoreType.OPERATIONAL, TEST_PATH);
final ContainerNode invokeRpcResult = makeRPCOutput("bar");
final DOMRpcResult rpcResult = new DefaultDOMRpcResult(invokeRpcResult);
doReturn(FluentFutures.immediateFluentFuture(rpcResult)).when(domRpcService1)
- .invokeRpc(eq(TEST_RPC_TYPE), any());
+ .invokeRpc(eq(TEST_RPC), any());
final ExecuteRpc executeRpc = ExecuteRpc.from(TEST_RPC_ID, null);
rpcInvoker1.tell(executeRpc, rpcRegistry1Probe.getRef());
@Test
public void testExecuteRpcFailureWithException() {
- when(domRpcService1.invokeRpc(eq(TEST_RPC_TYPE), any())).thenReturn(FluentFutures.immediateFailedFluentFuture(
+ when(domRpcService1.invokeRpc(eq(TEST_RPC), any())).thenReturn(FluentFutures.immediateFailedFluentFuture(
new DOMRpcImplementationNotAvailableException("NOT FOUND")));
final ExecuteRpc executeMsg = ExecuteRpc.from(TEST_RPC_ID, null);
import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
public class OpsListenerTest {
private static final QName TEST_QNAME = QName.create("test", "2015-06-12", "test");
- private static final SchemaPath RPC_TYPE = SchemaPath.create(true, TEST_QNAME);
- private static final YangInstanceIdentifier TEST_PATH = YangInstanceIdentifier
- .create(new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME));
- private static final DOMRpcIdentifier RPC_ID = DOMRpcIdentifier.create(RPC_TYPE, TEST_PATH);
+ private static final Absolute RPC_TYPE = Absolute.of(TEST_QNAME);
+ private static final YangInstanceIdentifier TEST_PATH =
+ YangInstanceIdentifier.create(new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME));
+ private static final DOMRpcIdentifier RPC_ID = DOMRpcIdentifier.create(TEST_QNAME, TEST_PATH);
private static final DOMActionInstance ACTION_INSTANCE = DOMActionInstance.of(RPC_TYPE,
LogicalDatastoreType.OPERATIONAL, TEST_PATH);
import org.opendaylight.yangtools.concepts.ObjectRegistration;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
public class OpsRegistrarTest {
@Mock
testActorRef = new TestActorRef<>(system, props, testKit.getRef(), "actorRef");
endpointAddress = new Address("http", "local");
- final DOMRpcIdentifier firstEndpointId = DOMRpcIdentifier.create(
- SchemaPath.create(true, QName.create("first:identifier", "foo")));
- final DOMRpcIdentifier secondEndpointId = DOMRpcIdentifier.create(
- SchemaPath.create(true, QName.create("second:identifier", "bar")));
+ final DOMRpcIdentifier firstEndpointId = DOMRpcIdentifier.create(QName.create("first:identifier", "foo"));
+ final DOMRpcIdentifier secondEndpointId = DOMRpcIdentifier.create(QName.create("second:identifier", "bar"));
final QName firstActionQName = QName.create("first:actionIdentifier", "fooAction");
- final DOMActionInstance firstActionInstance = DOMActionInstance.of(
- SchemaPath.create(true, firstActionQName), LogicalDatastoreType.OPERATIONAL,
+ final DOMActionInstance firstActionInstance = DOMActionInstance.of(Absolute.of(firstActionQName),
+ LogicalDatastoreType.OPERATIONAL,
YangInstanceIdentifier.create(new YangInstanceIdentifier.NodeIdentifier(firstActionQName)));
- final DOMActionInstance secondActionInstance = DOMActionInstance.of(
- SchemaPath.create(true, firstActionQName), LogicalDatastoreType.OPERATIONAL,
+ final DOMActionInstance secondActionInstance = DOMActionInstance.of(Absolute.of(firstActionQName),
+ LogicalDatastoreType.OPERATIONAL,
YangInstanceIdentifier.create(new YangInstanceIdentifier.NodeIdentifier(firstActionQName)));
final TestKit senderKit = new TestKit(system);
import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult;
import org.opendaylight.mdsal.dom.spi.SimpleDOMActionResult;
import org.opendaylight.yangtools.util.concurrent.FluentFutures;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
/**
* Unit tests for RemoteRpcImplementation.
ArgumentCaptor.forClass(NormalizedNode.class);
doReturn(FluentFutures.immediateFluentFuture(rpcResult)).when(domRpcService2)
- .invokeRpc(eq(TEST_RPC_TYPE), inputCaptor.capture());
+ .invokeRpc(eq(TEST_RPC), inputCaptor.capture());
final ListenableFuture<DOMRpcResult> frontEndFuture = remoteRpcImpl1.invokeRpc(TEST_RPC_ID, invokeRpcInput);
assertTrue(frontEndFuture instanceof RemoteDOMRpcFuture);
(ArgumentCaptor) ArgumentCaptor.forClass(NormalizedNode.class);
doReturn(FluentFutures.immediateFluentFuture(rpcResult)).when(domRpcService2)
- .invokeRpc(eq(TEST_RPC_TYPE), inputCaptor.capture());
+ .invokeRpc(eq(TEST_RPC), inputCaptor.capture());
ListenableFuture<DOMRpcResult> frontEndFuture = remoteRpcImpl1.invokeRpc(TEST_RPC_ID, null);
assertTrue(frontEndFuture instanceof RemoteDOMRpcFuture);
(ArgumentCaptor) ArgumentCaptor.forClass(NormalizedNode.class);
doReturn(FluentFutures.immediateFluentFuture(rpcResult)).when(domRpcService2)
- .invokeRpc(eq(TEST_RPC_TYPE), inputCaptor.capture());
+ .invokeRpc(eq(TEST_RPC), inputCaptor.capture());
final ListenableFuture<DOMRpcResult> frontEndFuture = remoteRpcImpl1.invokeRpc(TEST_RPC_ID, invokeRpcInput);
assertTrue(frontEndFuture instanceof RemoteDOMRpcFuture);
final ArgumentCaptor<NormalizedNode<?, ?>> inputCaptor =
(ArgumentCaptor) ArgumentCaptor.forClass(NormalizedNode.class);
- when(domRpcService2.invokeRpc(eq(TEST_RPC_TYPE), inputCaptor.capture())).thenReturn(
+ when(domRpcService2.invokeRpc(eq(TEST_RPC), inputCaptor.capture())).thenReturn(
FluentFutures.immediateFailedFluentFuture(new RemoteDOMRpcException("Test Exception", null)));
final ListenableFuture<DOMRpcResult> frontEndFuture = remoteRpcImpl1.invokeRpc(TEST_RPC_ID, invokeRpcInput);
public void testInvokeRpcWithLookupException() throws Throwable {
final NormalizedNode<?, ?> invokeRpcInput = makeRPCInput("foo");
- doThrow(new RuntimeException("test")).when(domRpcService2).invokeRpc(any(SchemaPath.class),
+ doThrow(new RuntimeException("test")).when(domRpcService2).invokeRpc(any(QName.class),
any(NormalizedNode.class));
final ListenableFuture<DOMRpcResult> frontEndFuture = remoteRpcImpl1.invokeRpc(TEST_RPC_ID, invokeRpcInput);
public void testInvokeActionWithLookupException() throws Throwable {
final ContainerNode invokeRpcInput = makeRPCInput("foo");
- doThrow(new RuntimeException("test")).when(domActionService2).invokeAction(any(SchemaPath.class),
+ doThrow(new RuntimeException("test")).when(domActionService2).invokeAction(any(Absolute.class),
any(DOMDataTreeIdentifier.class), any(ContainerNode.class));
final ListenableFuture<DOMActionResult> frontEndFuture = remoteActionImpl1.invokeAction(TEST_RPC_TYPE,
import org.opendaylight.mdsal.dom.api.DOMActionInstance;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
final Collection<DOMActionInstance> added = new ArrayList<>(nRoutes);
for (int i = 0; i < nRoutes; i++) {
QName type = QName.create(URI.create("/mockaction"), "mockaction" + routeIdCounter++);
- final DOMActionInstance routeId = DOMActionInstance.of(SchemaPath.create(true,
- type), LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.create(new
- YangInstanceIdentifier.NodeIdentifier(type)));
+ final DOMActionInstance routeId = DOMActionInstance.of(Absolute.of(type), LogicalDatastoreType.OPERATIONAL,
+ YangInstanceIdentifier.create(new YangInstanceIdentifier.NodeIdentifier(type)));
added.add(routeId);
//Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS);
private List<DOMActionInstance> createRouteIds() {
QName type = QName.create(URI.create("/mockaction"), "mockaction" + routeIdCounter++);
List<DOMActionInstance> routeIds = new ArrayList<>(1);
- routeIds.add(DOMActionInstance.of(SchemaPath.create(true, type),
- LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.create(
- new YangInstanceIdentifier.NodeIdentifier(type))));
+ routeIds.add(DOMActionInstance.of(Absolute.of(type), LogicalDatastoreType.OPERATIONAL,
+ YangInstanceIdentifier.create(new YangInstanceIdentifier.NodeIdentifier(type))));
return routeIds;
}
}
import org.opendaylight.controller.remote.rpc.registry.gossip.Bucket;
import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier;
import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
final int nRoutes = 500;
final Collection<DOMRpcIdentifier> added = new ArrayList<>(nRoutes);
for (int i = 0; i < nRoutes; i++) {
- final DOMRpcIdentifier routeId = DOMRpcIdentifier.create(SchemaPath.create(true,
- QName.create(URI.create("/mockrpc"), "type" + i)));
+ final DOMRpcIdentifier routeId = DOMRpcIdentifier.create(QName.create(URI.create("/mockrpc"), "type" + i));
added.add(routeId);
//Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS);
private List<DOMRpcIdentifier> createRouteIds() {
QName type = QName.create(URI.create("/mockrpc"), "mockrpc" + routeIdCounter++);
List<DOMRpcIdentifier> routeIds = new ArrayList<>(1);
- routeIds.add(DOMRpcIdentifier.create(SchemaPath.create(true, type)));
+ routeIds.add(DOMRpcIdentifier.create(type));
return routeIds;
}
}
import org.opendaylight.mdsal.dom.api.DOMActionInstance;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
public class RemoteActionRegistryMXBeanImplTest {
private static final QName LOCAL_QNAME = QName.create("base", "local");
- private static final SchemaPath EMPTY_SCHEMA_PATH = SchemaPath.ROOT;
- private static final SchemaPath LOCAL_SCHEMA_PATH = SchemaPath.create(true, LOCAL_QNAME);
+ private static final QName REMOTE_QNAME = QName.create("base", "local");
+ private static final Absolute LOCAL_SCHEMA_PATH = Absolute.of(LOCAL_QNAME);
+ private static final Absolute REMOTE_SCHEMA_PATH = Absolute.of(REMOTE_QNAME);
private ActorSystem system;
private TestActorRef<ActionRegistry> testActor;
system = ActorSystem.create("test");
final DOMActionInstance emptyActionIdentifier = DOMActionInstance.of(
- EMPTY_SCHEMA_PATH, LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.empty());
+ REMOTE_SCHEMA_PATH, LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.empty());
final DOMActionInstance localActionIdentifier = DOMActionInstance.of(
LOCAL_SCHEMA_PATH, LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.of(LOCAL_QNAME));
*/
package org.opendaylight.controller.remote.rpc.registry.mbeans;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
public class RemoteRpcRegistryMXBeanImplTest {
-
private static final QName LOCAL_QNAME = QName.create("base", "local");
- private static final SchemaPath EMPTY_SCHEMA_PATH = SchemaPath.ROOT;
- private static final SchemaPath LOCAL_SCHEMA_PATH = SchemaPath.create(true, LOCAL_QNAME);
+ private static final QName REMOTE_QNAME = QName.create("base", "remote");
private ActorSystem system;
private TestActorRef<RpcRegistry> testActor;
system = ActorSystem.create("test");
final DOMRpcIdentifier emptyRpcIdentifier = DOMRpcIdentifier.create(
- EMPTY_SCHEMA_PATH, YangInstanceIdentifier.empty());
+ REMOTE_QNAME, YangInstanceIdentifier.empty());
final DOMRpcIdentifier localRpcIdentifier = DOMRpcIdentifier.create(
- LOCAL_SCHEMA_PATH, YangInstanceIdentifier.of(LOCAL_QNAME));
+ LOCAL_QNAME, YangInstanceIdentifier.of(LOCAL_QNAME));
buckets = Lists.newArrayList(emptyRpcIdentifier, localRpcIdentifier);
assertEquals(1, globalRpc.size());
final String rpc = globalRpc.iterator().next();
- assertEquals(EMPTY_SCHEMA_PATH.toString(), rpc);
+ assertEquals(REMOTE_QNAME.toString(), rpc);
}
@Test
assertEquals(1, localRegisteredRoutedRpc.size());
final String localRpc = localRegisteredRoutedRpc.iterator().next();
- assertTrue(localRpc.contains(LOCAL_QNAME.toString()));
- assertTrue(localRpc.contains(LOCAL_SCHEMA_PATH.toString()));
+ assertThat(localRpc, containsString(LOCAL_QNAME.toString()));
}
@Test
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
final DOMRpcProviderService rpcProviderService, final String constant) {
LOG.debug("Registering get-constant service, constant value: {}", constant);
return rpcProviderService.registerRpcImplementation(new GetConstantService(constant),
- DOMRpcIdentifier.create(SchemaPath.create(true, GET_CONSTANT)));
+ DOMRpcIdentifier.create(GET_CONSTANT));
}
@Override
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
LOG.debug("Registering get-contexted-constant on context: {}, with value: {}", context, constant);
final YangInstanceIdentifier yid = codec.toYangInstanceIdentifier(context);
- final DOMRpcIdentifier id = DOMRpcIdentifier.create(SchemaPath.create(true, GET_CONTEXTED_CONSTANT), yid);
+ final DOMRpcIdentifier id = DOMRpcIdentifier.create(GET_CONTEXTED_CONSTANT, yid);
return rpcProviderService.registerRpcImplementation(new RoutedGetConstantService(constant), id);
}
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Override
public void instantiateServiceInstance() {
LOG.debug("Gained ownership of get-singleton-constant, registering service into rpcService");
- final DOMRpcIdentifier id = DOMRpcIdentifier.create(SchemaPath.create(true, GET_SINGLETON_CONSTANT));
+ final DOMRpcIdentifier id = DOMRpcIdentifier.create(GET_SINGLETON_CONSTANT);
rpcRegistration = rpcProviderService.registerRpcImplementation(this, id);
}
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>6.0.5</version>
+ <version>7.0.0-SNAPSHOT</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>7.0.6</version>
+ <version>8.0.0</version>
<relativePath/>
</parent>
<modules>
<module>artifacts</module>
+ <module>bundle-parent</module>
<module>akka</module>
<!-- md-sal -->