@Override public Boolean call() { String serviceId = serviceDescriptor.getServiceId(); String version = serviceDescriptor.getVersion(); final ServiceDescriptor descriptor = serviceRegistry.lookupService(serviceId, version, "", protocols); return descriptor != null; } });
/** * return service with given list of acceptable protocols */ @Override public <T extends Service> ServiceProxy<T> getService(final String sid, final Class<T> serviceInterface, final String[] protocols) { final String version = getLocalServiceInterfaceVersion(serviceInterface); final ServiceDescriptor descriptor = serviceRegistry.lookupService(sid, version, getContainerName(), protocols); if (descriptor != null) { validateVersion(version, descriptor.getVersion()); } return connectorManager.createConnector(descriptor, serviceInterface); }
/** * Checks if given service meet query criteria. * @param serviceGlobalIds * @param containerName */ private boolean checkConditions(final Collection<String> serviceGlobalIds, final ServiceInformation serviceInformation, final QueryCriteria queryCriteria, final String containerName) { final String candidateGlobalId = serviceInformation.getDescriptor().getGlobalId(); final String candidateServiceId = serviceInformation.getDescriptor().getServiceId(); final ServiceState candidateState = serviceInformation.getState(); final boolean correctService = (serviceGlobalIds.contains(candidateGlobalId) || candidateServiceId.equals(queryCriteria.getServiceId())); final boolean alive = candidateState == ServiceState.STARTED; if (correctService && alive) { final Collection<String> acceptableProtocols = queryCriteria.getAcceptableProtocols(); final VersionComparingResult comparingResult = serviceVersionComparator.compareVersions(queryCriteria.getVersion(), serviceInformation.getDescriptor().getVersion()); final boolean correctVersion = comparingResult.isCompatible(); if (correctVersion && haveCommonElement(acceptableProtocols, serviceInformation.getDescriptor(), queryCriteria.getClientName(), containerName)) { return true; } } return false; }
private ServiceDetails transformToServiceDetails(final ServiceInformation serviceInformation) { ServiceDetails serviceDetails = new ServiceDetails(); serviceDetails.setId(serviceInformation.getDescriptor().getServiceId()); serviceDetails.setGlobalId(serviceInformation.getDescriptor().getGlobalId()); serviceDetails.setStatus(serviceInformation.getState().name()); serviceDetails.setVersion(serviceInformation.getDescriptor().getVersion()); serviceDetails.setType(serviceInformation.getDescriptor().getType()); List<String> protocols = new ArrayList<String>(); List<ConnectionDescriptor> serviceLocations = serviceInformation.getDescriptor().getServiceLocations(); if (serviceLocations != null) { for (ConnectionDescriptor connectionDescriptor : serviceLocations) { protocols.add(connectionDescriptor.getProtocol()); } } serviceDetails.setProtocols(protocols); Collection<String> aliases = registryManager.findAllAliasesForService(serviceDetails.getGlobalId()); List<String> serviceDetailsAliases = new ArrayList<String>(); if (aliases != null) { for (String alias : aliases) { serviceDetailsAliases.add(alias); } } serviceDetails.setAliases(serviceDetailsAliases); serviceDetails.setManagersAvailable(ArrayUtils.isNotEmpty(serviceInformation.getManagerDescriptors())); return serviceDetails; }
@Override public ServiceDescriptorProto convertFrom(final ServiceDescriptor serviceDescriptor) { if (serviceDescriptor == null) { return null; } Builder builder = ServiceDescriptorProto.newBuilder(); Collection<Feature> features = transformMap(serviceDescriptor.getFeatures()); builder.addAllFeatures(features); if (serviceDescriptor.getGlobalId() != null) { builder.setGlobalId(serviceDescriptor.getGlobalId()); } builder.setServiceId(serviceDescriptor.getServiceId()); builder.setType(serviceDescriptor.getType()); builder.setVersion(serviceDescriptor.getVersion()); List<ConnectionDescriptor> locations = serviceDescriptor.getServiceLocations(); for (ConnectionDescriptor connectionDescriptor : locations) { ConnectionDescriptorProto connectionDescProto; connectionDescProto = transformConnectionDesc(connectionDescriptor); builder.addLocations(connectionDescProto); } return builder.build(); }
/** * Create new ServiceDescriptor based on given as a parameter and limit serviceLocations and generate service globalId * @param candidate * @param queryCriteria * @return */ private ServiceDescriptor modifyServiceDescriptor(final ServiceCandidate candidate, final QueryCriteria queryCriteria) { final ServiceDescriptor origDescriptor = candidate.getServiceInformation().getDescriptor(); final Collection<String> acceptableProtocols = queryCriteria.getAcceptableProtocols(); final ServiceDescriptor modifiedDescriptor = new ServiceDescriptor(); modifiedDescriptor.setServiceId(origDescriptor.getServiceId()); modifiedDescriptor.setType(origDescriptor.getType()); modifiedDescriptor.setVersion(origDescriptor.getVersion()); modifiedDescriptor.setFeatures(origDescriptor.getFeatures()); modifiedDescriptor.setGlobalId(origDescriptor.getGlobalId()); modifiedDescriptor.setServiceLocations(limitServiceLocations(origDescriptor.getServiceLocations(), acceptableProtocols)); modifiedDescriptor.setServicePriority(origDescriptor.getServicePriority()); return modifiedDescriptor; }