| /******************************************************************************** |
| * Copyright (c) 2015-2019 Contributors to the Eclipse Foundation |
| * |
| * See the NOTICE file(s) distributed with this work for additional |
| * information regarding copyright ownership. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| ********************************************************************************/ |
| |
| package org.eclipse.mdm.api.base; |
| |
| import java.util.Map; |
| import java.util.Optional; |
| |
| import org.eclipse.mdm.api.base.adapter.ModelManager; |
| import org.eclipse.mdm.api.base.file.FileService; |
| import org.eclipse.mdm.api.base.model.BaseEntityFactory; |
| import org.eclipse.mdm.api.base.notification.NotificationService; |
| import org.eclipse.mdm.api.base.query.QueryService; |
| import org.eclipse.mdm.api.base.search.SearchService; |
| |
| /** |
| * Base application context represents a connection/session to the underlying |
| * data store. It provides access to managers and services. |
| * |
| * @param <S> Type of the connected entity factory. |
| * @param <T> Type of the connected entity manager. |
| * @since 1.0.0 |
| */ |
| public interface BaseApplicationContext<S extends BaseEntityFactory, T extends BaseEntityManager> |
| extends AutoCloseable { |
| /** |
| * The returned service loads entities from the underlying data source. |
| * |
| * @return {@code Optional} is empty if no such service is available. |
| */ |
| default Optional<T> getEntityManager() { |
| return Optional.empty(); |
| } |
| |
| /** |
| * The returned service creates new entities. |
| * |
| * @return {@code Optional} is empty if no such service is available. |
| */ |
| default Optional<S> getEntityFactory() { |
| return Optional.empty(); |
| } |
| |
| /** |
| * The returned service provides access to the application model's meta data. |
| * |
| * @return {@code Optional} is empty if no such service is available. |
| * @see ModelManager |
| */ |
| default Optional<ModelManager> getModelManager() { |
| return Optional.empty(); |
| } |
| |
| /** |
| * The returned service provides advanced search capabilities for supported |
| * entity types. |
| * |
| * @return {@code Optional} is empty if no such service is available. |
| * @see SearchService |
| */ |
| default Optional<SearchService> getSearchService() { |
| return Optional.empty(); |
| } |
| |
| /** |
| * The returned service provides access to the low level query API. |
| * |
| * @return {@code Optional} is empty if no such service is available. |
| * @see QueryService |
| */ |
| default Optional<QueryService> getQueryService() { |
| return Optional.empty(); |
| } |
| |
| /** |
| * The returned service allows to download linked files from the file storage. |
| * |
| * @return {@code Optional} is empty if no such service is available. |
| * @see FileService |
| */ |
| default Optional<FileService> getFileService() { |
| return Optional.empty(); |
| } |
| |
| /** |
| * The returned service allows to register/unregister for events at a |
| * registration service. |
| * |
| * @return {@code Optional} is empty if no such service is available. |
| * @see NotificationService |
| */ |
| default Optional<NotificationService> getNotificationService() { |
| return Optional.empty(); |
| } |
| |
| /** |
| * Returns a map with all configuration parameters, which where given to |
| * initialize this context. |
| * |
| * @return map with configuration parameters |
| */ |
| Map<String, String> getParameters(); |
| |
| /** |
| * Returns a string describing the type of the underlying API implementation. |
| * The exact content is up to the individual adapter and it is intended to be |
| * interpreted by the client. |
| * |
| * @return a string describing the type of the underlying API implementation. |
| */ |
| String getAdapterType(); |
| |
| /** |
| * Closes the BaseContext. |
| * |
| * This closes all underlying managers and services. |
| */ |
| void close() throws ConnectionException; |
| } |