package hudson.plugins.tfs.commands; import com.microsoft.tfs.core.TFSTeamProjectCollection; import com.microsoft.tfs.core.clients.versioncontrol.VersionControlClient; import com.microsoft.tfs.core.clients.versioncontrol.VersionControlConstants; import com.microsoft.tfs.core.clients.versioncontrol.Workstation; import com.microsoft.tfs.core.config.persistence.PersistenceStoreProvider; import hudson.model.TaskListener; import hudson.plugins.tfs.model.ExtraSettings; import hudson.plugins.tfs.model.Server; import hudson.plugins.tfs.model.WebProxySettings; import hudson.remoting.Callable; import jenkins.security.MasterToSlaveCallable; import java.io.IOException; import java.io.Serializable; public abstract class AbstractCallableCommand<V, T extends Throwable> extends MasterToSlaveCallable<V, T> implements Serializable { private final String url; private final String userName; private final String userPassword; private final TaskListener listener; private final WebProxySettings webProxySettings; private final ExtraSettings extraSettings; protected AbstractCallableCommand(final ServerConfigurationProvider serverConfig) { url = serverConfig.getUrl(); userName = serverConfig.getUserName(); userPassword = serverConfig.getUserPassword(); listener = serverConfig.getListener(); webProxySettings = serverConfig.getWebProxySettings(); extraSettings = serverConfig.getExtraSettings(); } protected void updateCache(final TFSTeamProjectCollection connection) { final PersistenceStoreProvider persistenceStoreProvider = connection.getPersistenceStoreProvider(); final Workstation workstation = Workstation.getCurrent(persistenceStoreProvider); final VersionControlClient vcc = connection.getVersionControlClient(); workstation.updateWorkspaceInfoCache(vcc, VersionControlConstants.AUTHENTICATED_USER); } public Server createServer() throws IOException { final Server server = new Server(null, listener, url, userName, userPassword, webProxySettings, extraSettings); return server; } public abstract <V, E extends Throwable> Callable<V, E> getCallable(); }