diff options
Diffstat (limited to 'infra/minimal-distribution/src/main/java/io')
5 files changed, 132 insertions, 1 deletions
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/ConfigAndOperationalPipelineModule.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/ConfigAndOperationalPipelineModule.java index 488f0b390..8cc959490 100644 --- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/ConfigAndOperationalPipelineModule.java +++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/ConfigAndOperationalPipelineModule.java @@ -27,11 +27,14 @@ import io.fd.honeycomb.infra.distro.data.oper.ReadableDTDelegProvider; import io.fd.honeycomb.infra.distro.data.oper.ReaderRegistryBuilderProvider; import io.fd.honeycomb.infra.distro.data.oper.ReaderRegistryProvider; import io.fd.honeycomb.infra.distro.initializer.PersistedFileInitializerProvider; +import io.fd.honeycomb.rpc.RpcRegistry; +import io.fd.honeycomb.rpc.RpcRegistryBuilder; import io.fd.honeycomb.translate.read.registry.ModifiableReaderRegistryBuilder; import io.fd.honeycomb.translate.read.registry.ReaderRegistry; import io.fd.honeycomb.translate.write.registry.ModifiableWriterRegistryBuilder; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; import org.opendaylight.controller.md.sal.dom.broker.impl.DOMNotificationRouter; import org.opendaylight.controller.sal.core.api.Broker; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree; @@ -81,6 +84,7 @@ public class ConfigAndOperationalPipelineModule extends PrivateModule { expose(DataTreeInitializer.class).annotatedWith(Names.named(HONEYCOMB_CONFIG)); configureNotifications(); + configureRpcs(); } private void configureNotifications() { @@ -91,4 +95,16 @@ public class ConfigAndOperationalPipelineModule extends PrivateModule { bind(Broker.class).toProvider(HoneycombDOMBrokerProvider.class).in(Singleton.class); expose(Broker.class); } + + private void configureRpcs() { + // Create rpc service + bind(DOMRpcService.class).toProvider(HoneycombDOMRpcServiceProvider.class).in(Singleton.class); + expose(DOMRpcService.class); + + bind(RpcRegistryBuilder.class).toProvider(RpcRegistryBuilderProvider.class).in(Singleton.class); + expose(RpcRegistryBuilder.class); + + bind(RpcRegistry.class).toProvider(RpcRegistryProvider.class).in(Singleton.class); + expose(RpcRegistry.class); + } } diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/HoneycombDOMBrokerProvider.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/HoneycombDOMBrokerProvider.java index eefa1c140..dd34c6c6f 100644 --- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/HoneycombDOMBrokerProvider.java +++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/HoneycombDOMBrokerProvider.java @@ -20,6 +20,7 @@ import com.google.inject.Inject; import io.fd.honeycomb.impl.NorthboundFacadeHoneycombDOMBroker; import io.fd.honeycomb.infra.distro.ProviderTrait; import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; import org.opendaylight.controller.md.sal.dom.broker.impl.DOMNotificationRouter; import org.opendaylight.controller.sal.core.api.Broker; import org.opendaylight.controller.sal.core.api.model.SchemaService; @@ -32,9 +33,12 @@ public final class HoneycombDOMBrokerProvider extends ProviderTrait<Broker> { private SchemaService schemaService; @Inject private DOMNotificationRouter domNotificationService; + @Inject + private DOMRpcService domRpcService; @Override protected NorthboundFacadeHoneycombDOMBroker create() { - return new NorthboundFacadeHoneycombDOMBroker(domDataBroker, schemaService, domNotificationService); + return new NorthboundFacadeHoneycombDOMBroker(domDataBroker, schemaService, domNotificationService, + domRpcService); } } diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/HoneycombDOMRpcServiceProvider.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/HoneycombDOMRpcServiceProvider.java new file mode 100644 index 000000000..0459b2fef --- /dev/null +++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/HoneycombDOMRpcServiceProvider.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2016 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fd.honeycomb.infra.distro.data; + +import com.google.inject.Inject; +import io.fd.honeycomb.infra.distro.ProviderTrait; +import io.fd.honeycomb.rpc.HoneycombDOMRpcService; +import io.fd.honeycomb.rpc.RpcRegistry; +import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; + +public final class HoneycombDOMRpcServiceProvider extends ProviderTrait<DOMRpcService> { + + @Inject + private BindingToNormalizedNodeCodec serializer; + + @Inject + private RpcRegistry rpcRegistry; + + @Override + protected DOMRpcService create() { + return new HoneycombDOMRpcService(serializer, rpcRegistry); + } +} diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/RpcRegistryBuilderProvider.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/RpcRegistryBuilderProvider.java new file mode 100644 index 000000000..92d9ce951 --- /dev/null +++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/RpcRegistryBuilderProvider.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2016 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fd.honeycomb.infra.distro.data; + +import com.google.inject.Inject; +import io.fd.honeycomb.infra.distro.ProviderTrait; +import io.fd.honeycomb.rpc.RpcRegistryBuilder; +import io.fd.honeycomb.rpc.RpcService; +import java.util.HashSet; +import java.util.Set; + +public final class RpcRegistryBuilderProvider extends ProviderTrait<RpcRegistryBuilder> { + + @Inject(optional = true) + private Set<RpcService> rpcServices = new HashSet<>(); + + @Override + protected RpcRegistryBuilder create() { + final RpcRegistryBuilder builder = new RpcRegistryBuilder(); + rpcServices.stream() + .forEach(service -> builder.addService(service)); + return builder; + } + +} diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/RpcRegistryProvider.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/RpcRegistryProvider.java new file mode 100644 index 000000000..4e09a9d2d --- /dev/null +++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/data/RpcRegistryProvider.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2016 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fd.honeycomb.infra.distro.data; + +import com.google.inject.Inject; +import io.fd.honeycomb.infra.distro.ProviderTrait; +import io.fd.honeycomb.rpc.RpcRegistry; +import io.fd.honeycomb.rpc.RpcRegistryBuilder; + +public final class RpcRegistryProvider extends ProviderTrait<RpcRegistry> { + + @Inject + private RpcRegistryBuilder builder; + + @Override + protected RpcRegistry create() { + return builder.build(); + } + +} |