| /******************************************************************************* |
| * Copyright (c) 2009 EclipseSource and others. All rights reserved. This |
| * program and the accompanying materials are made available under the terms of |
| * the Eclipse Public License v1.0 which accompanies this distribution, and is |
| * available at http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * EclipseSource - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.ecf.remoteservice; |
| |
| import org.eclipse.ecf.core.ContainerConnectException; |
| import org.eclipse.ecf.core.IContainer; |
| import org.osgi.framework.InvalidSyntaxException; |
| |
| /** |
| * |
| * Remote service container that provides access to underlying IContainer and remote service container adapter. |
| * @since 3.0 |
| */ |
| public interface IRemoteServiceContainer { |
| |
| /** |
| * Get the container instance for this remote service container. Will |
| * not return <code>null</code>. |
| * @return IContainer for this remote service container. Will not return <code>null</code>. |
| */ |
| public IContainer getContainer(); |
| |
| /** |
| * Get the container adapter for this remote service container. |
| * Will not return <code>null</code> |
| * |
| * @return IRemoteServiceContainerAdapter that is the adapter for the container |
| * returned from {@link #getContainer()}. |
| */ |
| public IRemoteServiceContainerAdapter getContainerAdapter(); |
| |
| /** |
| * Get the remote service for given targetLocation and given serviceInterface class. |
| * @param targetLocation the targetLocation to connect to. |
| * See {@link IRemoteServiceContainerAdapter#getRemoteServiceReferences(org.eclipse.ecf.core.identity.ID, String, String)}. May be <code>null</code>. |
| * @param serviceInterfaceClass the service to find. Must not be <code>null</code>. |
| * @param filter the {@link IRemoteFilter} to use for finding the desired remote service. |
| * @return IRemoteService the remote service. May be <code>null</code> if the desired remote service is not available. |
| * @exception ContainerConnectException thrown if underlying container cannot connect to get remote service. |
| * @exception InvalidSyntaxException thrown if the filter does not have correct syntax. |
| */ |
| public IRemoteService getRemoteService(String targetLocation, String serviceInterfaceClass, String filter) throws ContainerConnectException, InvalidSyntaxException; |
| |
| /** |
| * Get the remote service for given targetLocation and given serviceInterface class. |
| * @param targetLocation the targetLocation to connect to. |
| * See {@link IRemoteServiceContainerAdapter#getRemoteServiceReferences(org.eclipse.ecf.core.identity.ID, String, String)}. May be <code>null</code>. |
| * @param serviceInterfaceClass the service to find. Must not be <code>null</code>. |
| * @return IRemoteService the remote service. May be <code>null</code> if the desired remote service is not available. |
| * @exception ContainerConnectException thrown if underlying container cannot connect to get remote service. |
| */ |
| public IRemoteService getRemoteService(String targetLocation, String serviceInterfaceClass) throws ContainerConnectException; |
| |
| /** |
| * Get the remote service for given serviceInterface class. |
| * @param serviceInterfaceClass the service to find. Must not be <code>null</code>. |
| * @return IRemoteService the remote service. May be <code>null</code> if the desired remote service is not available. |
| */ |
| public IRemoteService getRemoteService(String serviceInterfaceClass); |
| |
| } |