blob: f5bb19b2d9ea0e80bfaa4aea2eecde5941245f98 [file] [log] [blame]
package com.intellij.openapi.externalSystem.service.remote.wrapper;
import com.intellij.openapi.externalSystem.model.settings.ExternalSystemExecutionSettings;
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId;
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskType;
import com.intellij.openapi.externalSystem.service.RemoteExternalSystemFacade;
import com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProgressNotificationManager;
import com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolver;
import com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemTaskManager;
import org.jetbrains.annotations.NotNull;
import java.rmi.RemoteException;
import java.util.Map;
import java.util.Set;
/**
* This class acts as a point where target remote gradle services are proxied.
* <p/>
* Check service wrapper contracts for more details.
* <p/>
* Thread-safe.
*
* @author Denis Zhdanov
* @since 2/8/12 7:21 PM
*/
public class ExternalSystemFacadeWrapper<S extends ExternalSystemExecutionSettings> implements RemoteExternalSystemFacade<S> {
@NotNull private final RemoteExternalSystemFacade<S> myDelegate;
@NotNull private final RemoteExternalSystemProgressNotificationManager myProgressManager;
public ExternalSystemFacadeWrapper(@NotNull RemoteExternalSystemFacade<S> delegate,
@NotNull RemoteExternalSystemProgressNotificationManager progressManager)
{
myDelegate = delegate;
myProgressManager = progressManager;
}
@NotNull
public RemoteExternalSystemFacade<S> getDelegate() {
return myDelegate;
}
@NotNull
@Override
public RemoteExternalSystemProjectResolver<S> getResolver() throws RemoteException, IllegalStateException {
return new ExternalSystemProjectResolverWrapper<S>(myDelegate.getResolver(), myProgressManager);
}
@NotNull
@Override
public RemoteExternalSystemTaskManager<S> getTaskManager() throws RemoteException {
return new ExternalSystemTaskManagerWrapper<S>(myDelegate.getTaskManager(), myProgressManager);
}
@Override
public void applySettings(@NotNull S settings) throws RemoteException {
myDelegate.applySettings(settings);
}
@Override
public void applyProgressManager(@NotNull RemoteExternalSystemProgressNotificationManager progressManager) throws RemoteException {
myDelegate.applyProgressManager(progressManager);
}
@Override
public boolean isTaskInProgress(@NotNull ExternalSystemTaskId id) throws RemoteException {
return myDelegate.isTaskInProgress(id);
}
@NotNull
@Override
public Map<ExternalSystemTaskType, Set<ExternalSystemTaskId>> getTasksInProgress() throws RemoteException {
return myDelegate.getTasksInProgress();
}
@Override
public boolean cancelTask(@NotNull ExternalSystemTaskId id) throws RemoteException {
return myDelegate.cancelTask(id);
}
}