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

org.wildfly.discovery.ServiceRegistry Maven / Gradle / Ivy

/*
 * JBoss, Home of Professional Open Source.
 * Copyright 2016 Red Hat, Inc., and individual contributors
 * as indicated by the @author tags.
 *
 * 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 org.wildfly.discovery;

import org.wildfly.common.Assert;
import org.wildfly.common.context.ContextManager;
import org.wildfly.common.context.Contextual;
import org.wildfly.discovery.spi.RegistryProvider;

/**
 * A configured service registry.  A service registry is able to advertise services to local or remote clients.
 * 

* Some providers only support certain types of services and will ignore others. Some providers cannot support * repeated attribute values, or may be restricted as to which attribute names are recognized, or may not support * attributes at all. Such providers generally must evaluate a service URL and determine if it can correctly * advertise it, ignoring the registration if the provider cannot. * * @author David M. Lloyd */ public final class ServiceRegistry implements Contextual { private static final ContextManager CONTEXT_MANAGER; static { CONTEXT_MANAGER = new ContextManager(ServiceRegistry.class, "org.wildfly.discovery.registration"); CONTEXT_MANAGER.setGlobalDefaultSupplier(() -> create(ConfiguredProvider.INSTANCE)); } private final RegistryProvider registryProvider; private ServiceRegistry(final RegistryProvider registryProvider) { this.registryProvider = registryProvider; } /** * Get the instance context manager. Delegates to {@link #getContextManager()}. * * @return the instance context manager (not {@code null}) */ public ContextManager getInstanceContextManager() { return getContextManager(); } /** * Get the context manager. * * @return the context manager (not {@code null}) */ public static ContextManager getContextManager() { return CONTEXT_MANAGER; } /** * Create a new service registry instance. * * @param registryProvider the backing registry provider (must not be {@code null}) * @return the new service registry (not {@code null}) */ public static ServiceRegistry create(final RegistryProvider registryProvider) { Assert.checkNotNullParam("registryProvider", registryProvider); return new ServiceRegistry(registryProvider); } /** * Register a service URL. Any valid service URL may be provided, and the registration will last until the handle * is closed. If the service URL is not supported, the {@linkplain ServiceRegistration#EMPTY empty registration handle} * is returned. * * @param serviceURL the service to register (must not be {@code null}) * @return the registration handle (not {@code null}) */ public ServiceRegistration registerService(ServiceURL serviceURL) { Assert.checkNotNullParam("serviceURL", serviceURL); return registryProvider.registerService(serviceURL); } /** * Register a group of service URLs to be controlled with a single handle. Any valid service URL may be provided, * and the registrations will last until the handle is closed. If the service URL is not supported, the * {@linkplain ServiceRegistration#EMPTY empty registration handle} is returned. * * @param serviceURLs the services to register (must not be {@code null} or contain {@code null} elements) * @return the registration handle (not {@code null}) */ public ServiceRegistration registerServices(ServiceURL... serviceURLs) { Assert.checkNotNullParam("serviceURLs", serviceURLs); final int length = serviceURLs.length; for (int i = 0; i < length; i++) { Assert.checkNotNullArrayParam("serviceURLs", i, serviceURLs[i]); } return registryProvider.registerServices(serviceURLs); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy