Search in sources :

Example 1 with DOMRpcService

use of org.opendaylight.controller.md.sal.dom.api.DOMRpcService in project controller by opendaylight.

the class DomBrokerImplModule method createInstance.

@Override
@SuppressWarnings("checkstyle:IllegalCatch")
public AutoCloseable createInstance() {
    // The services are provided via blueprint so retrieve then from the OSGi service registry for
    // backwards compatibility.
    final List<AutoCloseable> closeables = new ArrayList<>();
    DOMNotificationService domNotificationService = newTracker(DOMNotificationService.class, closeables).waitForService(WaitingServiceTracker.FIVE_MINUTES);
    DOMNotificationPublishService domNotificationPublishService = newTracker(DOMNotificationPublishService.class, closeables).waitForService(WaitingServiceTracker.FIVE_MINUTES);
    DOMRpcService domRpcService = newTracker(DOMRpcService.class, closeables).waitForService(WaitingServiceTracker.FIVE_MINUTES);
    DOMRpcProviderService domRpcProvider = newTracker(DOMRpcProviderService.class, closeables).waitForService(WaitingServiceTracker.FIVE_MINUTES);
    DOMMountPointService mountService = newTracker(DOMMountPointService.class, closeables).waitForService(WaitingServiceTracker.FIVE_MINUTES);
    SchemaService globalSchemaService = newTracker(SchemaService.class, closeables).waitForService(WaitingServiceTracker.FIVE_MINUTES);
    final DOMDataBroker dataBroker = getAsyncDataBrokerDependency();
    final ClassToInstanceMap<BrokerService> services = MutableClassToInstanceMap.create();
    services.putInstance(DOMNotificationService.class, domNotificationService);
    services.putInstance(DOMNotificationPublishService.class, domNotificationPublishService);
    final SchemaService schemaService = getSchemaServiceImpl(globalSchemaService);
    services.putInstance(SchemaService.class, schemaService);
    services.putInstance(DOMDataBroker.class, dataBroker);
    services.putInstance(DOMRpcService.class, domRpcService);
    services.putInstance(DOMRpcProviderService.class, domRpcProvider);
    services.putInstance(DOMMountPointService.class, mountService);
    BrokerImpl broker = new BrokerImpl(domRpcService, domRpcProvider, services);
    broker.setDeactivator(() -> {
        for (AutoCloseable ac : closeables) {
            try {
                ac.close();
            } catch (Exception e) {
                LOG.warn("Exception while closing {}", ac, e);
            }
        }
    });
    return broker;
}
Also used : DOMRpcService(org.opendaylight.controller.md.sal.dom.api.DOMRpcService) ArrayList(java.util.ArrayList) DOMMountPointService(org.opendaylight.controller.md.sal.dom.api.DOMMountPointService) DOMRpcProviderService(org.opendaylight.controller.md.sal.dom.api.DOMRpcProviderService) DOMNotificationService(org.opendaylight.controller.md.sal.dom.api.DOMNotificationService) BrokerImpl(org.opendaylight.controller.sal.dom.broker.BrokerImpl) SchemaService(org.opendaylight.controller.sal.core.api.model.SchemaService) DOMNotificationPublishService(org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService) DOMDataBroker(org.opendaylight.controller.md.sal.dom.api.DOMDataBroker) BrokerService(org.opendaylight.controller.sal.core.api.BrokerService)

Example 2 with DOMRpcService

use of org.opendaylight.controller.md.sal.dom.api.DOMRpcService in project controller by opendaylight.

the class DOMRpcServiceTestBugfix560 method test.

@Test
public void test() throws ExecutionException, InterruptedException {
    // FIXME: This is made to only make sure instance identifier codec for path is instantiated.
    domMountPointService.createMountPoint(BI_MOUNT_ID).addService(DOMRpcService.class, new DOMRpcService() {

        @Override
        public <T extends DOMRpcAvailabilityListener> ListenerRegistration<T> registerRpcListener(final T arg0) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public CheckedFuture<DOMRpcResult, DOMRpcException> invokeRpc(final SchemaPath arg0, final NormalizedNode<?, ?> arg1) {
            final DOMRpcResult result = new DefaultDOMRpcResult((NormalizedNode<?, ?>) null);
            return Futures.immediateCheckedFuture(result);
        }
    }).register();
    final Optional<MountPoint> mountInstance = bindingMountPointService.getMountPoint(BA_MOUNT_ID);
    assertTrue(mountInstance.isPresent());
    final Optional<RpcConsumerRegistry> rpcRegistry = mountInstance.get().getService(RpcConsumerRegistry.class);
    assertTrue(rpcRegistry.isPresent());
    final OpendaylightTestRpcServiceService rpcService = rpcRegistry.get().getRpcService(OpendaylightTestRpcServiceService.class);
    assertNotNull(rpcService);
    try {
        final Future<RpcResult<Void>> result = rpcService.rockTheHouse(new RockTheHouseInputBuilder().build());
        assertTrue(result.get().isSuccessful());
    } catch (final IllegalStateException ex) {
        fail("OpendaylightTestRpcServiceService class doesn't contain rockTheHouse method!");
    }
}
Also used : DefaultDOMRpcResult(org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult) DOMRpcService(org.opendaylight.controller.md.sal.dom.api.DOMRpcService) DOMRpcResult(org.opendaylight.controller.md.sal.dom.api.DOMRpcResult) DefaultDOMRpcResult(org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult) RockTheHouseInputBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.RockTheHouseInputBuilder) DOMRpcResult(org.opendaylight.controller.md.sal.dom.api.DOMRpcResult) RpcResult(org.opendaylight.yangtools.yang.common.RpcResult) DefaultDOMRpcResult(org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult) DOMRpcException(org.opendaylight.controller.md.sal.dom.api.DOMRpcException) MountPoint(org.opendaylight.controller.md.sal.binding.api.MountPoint) DOMRpcAvailabilityListener(org.opendaylight.controller.md.sal.dom.api.DOMRpcAvailabilityListener) RpcConsumerRegistry(org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry) OpendaylightTestRpcServiceService(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.OpendaylightTestRpcServiceService) SchemaPath(org.opendaylight.yangtools.yang.model.api.SchemaPath) NormalizedNode(org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode) Test(org.junit.Test)

Example 3 with DOMRpcService

use of org.opendaylight.controller.md.sal.dom.api.DOMRpcService in project controller by opendaylight.

the class AbstractInvokableServiceMetadata method retrievedDOMRpcService.

private void retrievedDOMRpcService(final Object service) {
    log.debug("{}: retrievedDOMRpcService {}", logName(), service);
    final DOMRpcService domRpcService = (DOMRpcService) service;
    setDependencyDesc("Available DOM RPC for binding RPC: " + rpcInterface);
    rpcListenerReg = domRpcService.registerRpcListener(new DOMRpcAvailabilityListener() {

        @Override
        public void onRpcAvailable(final Collection<DOMRpcIdentifier> rpcs) {
            onRpcsAvailable(rpcs);
        }

        @Override
        public void onRpcUnavailable(final Collection<DOMRpcIdentifier> rpcs) {
        }
    });
}
Also used : DOMRpcAvailabilityListener(org.opendaylight.controller.md.sal.dom.api.DOMRpcAvailabilityListener) DOMRpcService(org.opendaylight.controller.md.sal.dom.api.DOMRpcService) Collection(java.util.Collection)

Aggregations

DOMRpcService (org.opendaylight.controller.md.sal.dom.api.DOMRpcService)3 DOMRpcAvailabilityListener (org.opendaylight.controller.md.sal.dom.api.DOMRpcAvailabilityListener)2 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 Test (org.junit.Test)1 MountPoint (org.opendaylight.controller.md.sal.binding.api.MountPoint)1 DOMDataBroker (org.opendaylight.controller.md.sal.dom.api.DOMDataBroker)1 DOMMountPointService (org.opendaylight.controller.md.sal.dom.api.DOMMountPointService)1 DOMNotificationPublishService (org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService)1 DOMNotificationService (org.opendaylight.controller.md.sal.dom.api.DOMNotificationService)1 DOMRpcException (org.opendaylight.controller.md.sal.dom.api.DOMRpcException)1 DOMRpcProviderService (org.opendaylight.controller.md.sal.dom.api.DOMRpcProviderService)1 DOMRpcResult (org.opendaylight.controller.md.sal.dom.api.DOMRpcResult)1 DefaultDOMRpcResult (org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult)1 RpcConsumerRegistry (org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry)1 BrokerService (org.opendaylight.controller.sal.core.api.BrokerService)1 SchemaService (org.opendaylight.controller.sal.core.api.model.SchemaService)1 BrokerImpl (org.opendaylight.controller.sal.dom.broker.BrokerImpl)1 OpendaylightTestRpcServiceService (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.OpendaylightTestRpcServiceService)1 RockTheHouseInputBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.RockTheHouseInputBuilder)1