All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.dell.cpsd.hdp.capability.registry.client.binder.AbstractAmqpCapabilityBindingService Maven / Gradle / Ivy

Go to download

This repository contains the source code for the capability registry API. This API exposes the interface through which a consumer or provider interacts with the capability registry.

There is a newer version: 1.1.0
Show newest version
/**
 * Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved.
 * Dell EMC Confidential/Proprietary Information
 */

package com.dell.cpsd.hdp.capability.registry.client.binder;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.amqp.core.Binding;

import com.dell.cpsd.hdp.capability.registry.api.CapabilityProvider;
import com.dell.cpsd.hdp.capability.registry.api.ProviderEndpoint;
import com.dell.cpsd.hdp.capability.registry.client.CapabilityRegistryException;
import com.dell.cpsd.hdp.capability.registry.client.ICapabilityRegistryLookupManager;
import com.dell.cpsd.hdp.capability.registry.client.callback.ListCapabilityProvidersResponse;
import com.dell.cpsd.service.common.client.exception.ServiceTimeoutException;

/**
 * 

* Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved. * Dell EMC Confidential/Proprietary Information *

* * @since 1.0 */ public abstract class AbstractAmqpCapabilityBindingService implements CapabilityBindingService { private final ICapabilityRegistryLookupManager capabilityRegistryLookupManager; private final AmqpAdmin amqpAdmin; /** * Constructor * * @param capabilityRegistryLookupManager * The capability register service client * @param amqpAdmin * The AMQP administrative operations */ public AbstractAmqpCapabilityBindingService(ICapabilityRegistryLookupManager capabilityRegistryLookupManager, AmqpAdmin amqpAdmin) { this.capabilityRegistryLookupManager = capabilityRegistryLookupManager; this.amqpAdmin = amqpAdmin; } /** * {@inheritDoc} */ @Override public List lookupCapabilities(CapabilityMatcher... matchers) throws CapabilityRegistryException, ServiceTimeoutException { if (matchers != null) { return lookupCapabilities(Arrays.asList(matchers)); } return Collections.emptyList(); } /** * {@inheritDoc} */ @Override public List lookupCapabilities(List matchers) throws CapabilityRegistryException, ServiceTimeoutException { final ListCapabilityProvidersResponse listCapabilityProvidersResponse = capabilityRegistryLookupManager .listCapabilityProviders(TimeUnit.SECONDS.toMillis(5)); final List providers = listCapabilityProvidersResponse.getResponse(); Set matched = new HashSet<>(); if (matchers != null) { for (CapabilityMatcher matcher : matchers) { matched.addAll(matcher.match(providers)); } } return new ArrayList<>(matched); } /** * {@inheritDoc} */ @Override public void add(CapabilityData capabilityData) throws CapabilityRegistryException { ProviderEndpoint providerEndpoint = capabilityData.getCapability().getProviderEndpoint(); Binding binding = createBinding(providerEndpoint); amqpAdmin.declareBinding(binding); } /** * {@inheritDoc} */ @Override public void remove(CapabilityData capabilityData) throws CapabilityRegistryException { ProviderEndpoint providerEndpoint = capabilityData.getCapability().getProviderEndpoint(); Binding binding = createBinding(providerEndpoint); amqpAdmin.removeBinding(binding); } /** * Create the necessary binding for the endpoint * * @param providerEndpoint * The provider endpoint * @return The binding been created * @throws CapabilityRegistryException * Thrown if the request fails. */ protected abstract Binding createBinding(ProviderEndpoint providerEndpoint) throws CapabilityRegistryException; }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy