/*
* Copyright 2016 Red Hat, Inc. 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 org.guvnor.ala.registry;
import java.util.List;
import java.util.Optional;
import org.guvnor.ala.runtime.Runtime;
import org.guvnor.ala.runtime.RuntimeId;
import org.guvnor.ala.runtime.providers.Provider;
import org.guvnor.ala.runtime.providers.ProviderId;
import org.guvnor.ala.runtime.providers.ProviderType;
/*
* Represents the RuntimeRegistry where all the ProviderTypes, Providers and Runtimes are registered
*/
public interface RuntimeRegistry {
/*
* Register a new Provider Type
* @param ProviderType to be registered
* @see ProviderType
*/
void registerProviderType( final ProviderType pt );
/*
* Return the list of registered Provider Types
* @return List<ProviderType> with all the Provider Types registered
*/
List<ProviderType> getProviderTypes( Integer page, Integer pageSize, String sort, boolean sortOrder );
/*
* Return a Provider Type by Name
* @param a String representing the provider type name
* @return the selected ProviderType
* @see ProviderType
*/
ProviderType getProviderType( final String providerTypeName );
/*
* Unregister the provider type
* @param ProviderType to be unregistered
* @see ProviderType
*/
void unregisterProviderType( final ProviderType providerType );
/*
* Register a new Provider
* @param Provider to be registered
* @see Provider
*/
void registerProvider( final Provider provider );
/*
* Return a Provider Type by Name
* @param a String representing the provider name
* @return the selected Provider
* @see Provider
*/
Provider getProvider( final String providerName );
/*
* Return the list of registered Provider
* @return List<Provider> with all the Providers registered
* @see Provider
*/
List<Provider> getProviders( Integer page, Integer pageSize, String sort, boolean sortOrder );
/*
* Return the list of registered Provider filtering by type
* @param ProviderType to filter by
* @return List<Provider> with all the Providers matching with the provider type
* @see Provider
* @see ProviderType
*/
List<Provider> getProvidersByType( final ProviderType type );
/*
* Unregister the provider
* @param Provider to be unregistered
* @see Provider
*/
void unregisterProvider( final Provider provider );
/*
* Unregister the provider by provider name
* @param String the provider name to be unregistered
* @see Provider
*/
void unregisterProvider( final String providerName );
/*
* Register a new Runtime
* @param Runtime to be registered
* @see Runtime
*/
void registerRuntime( final Runtime runtime );
/*
* Return the list of registered Runtimes
* @return List<Runtime> with all the Runtimes registered in the system
* @see Runtime
*/
List<Runtime> getRuntimes( Integer page, Integer pageSize, String sort, boolean sortOrder );
/*
* Return the list of registered Runtimes filtering by provider type
* @param ProviderType to filter by
* @return List<Runtime> with all the Runtimes matching with the provider type
* @see ProviderType
* @see Runtime
*/
List<Runtime> getRuntimesByProvider( final ProviderType provider );
/*
* Return the Runtime based on the Runtime id
* @param String to filter by
* @return Runtime matching the provided id
* @see Runtime
*/
Runtime getRuntimeById( final String id );
/*
* Unregister the provider
* @param RuntimeId to be unregistered
* @see RuntimeId
*/
void unregisterRuntime( final RuntimeId runtime );
/*
* Get provider based on ProviderId and Class type
* @param ProviderId
* @param Class<T>
* @return Provider
* @see RuntimeId
*/
<T extends Provider> Optional<T> getProvider( final ProviderId providerId,
final Class<T> clazz );
}