mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
* Changed the activation event from onCommand to startup "*" * Refractored some code to fix the issue * Made some PR related changes and fixed a condition where the same error was occurring when the flatFileImport has to download binaries from the internet. * Reverted activation event back to previous state as it had no effect. * Made changes mentioned in the PR Co-authored-by: Aasim Shahnawaz Khan <aaskhan@microsoft.com>
This commit is contained in:
@@ -25,17 +25,19 @@ export default class MainController extends ControllerBase {
|
|||||||
public deactivate(): void {
|
public deactivate(): void {
|
||||||
}
|
}
|
||||||
|
|
||||||
public activate(): Promise<boolean> {
|
public async activate(): Promise<boolean> {
|
||||||
|
return new Promise<boolean>(async (resolve) => {
|
||||||
const outputChannel = vscode.window.createOutputChannel(constants.serviceName);
|
const outputChannel = vscode.window.createOutputChannel(constants.serviceName);
|
||||||
new ServiceClient(outputChannel).startService(this._context);
|
|
||||||
|
|
||||||
managerInstance.onRegisteredApi<FlatFileProvider>(ApiType.FlatFileProvider)(provider => {
|
managerInstance.onRegisteredApi<FlatFileProvider>(ApiType.FlatFileProvider)(provider => {
|
||||||
this.initializeFlatFileProvider(provider);
|
this.initializeFlatFileProvider(provider);
|
||||||
|
resolve(true);
|
||||||
|
});
|
||||||
|
await new ServiceClient(outputChannel).startService(this._context);
|
||||||
});
|
});
|
||||||
|
|
||||||
return Promise.resolve(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private initializeFlatFileProvider(provider: FlatFileProvider) {
|
private initializeFlatFileProvider(provider: FlatFileProvider) {
|
||||||
azdata.tasks.registerTask('flatFileImport.start', (profile: azdata.IConnectionProfile, ...args: any[]) => new FlatFileWizard(provider).start(profile, args));
|
azdata.tasks.registerTask('flatFileImport.start', (profile: azdata.IConnectionProfile, ...args: any[]) => new FlatFileWizard(provider).start(profile, args));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,24 +10,13 @@ import MainController from './controllers/mainController';
|
|||||||
|
|
||||||
let controllers: ControllerBase[] = [];
|
let controllers: ControllerBase[] = [];
|
||||||
|
|
||||||
export function activate(context: vscode.ExtensionContext) {
|
export async function activate(context: vscode.ExtensionContext): Promise<boolean> {
|
||||||
let activations: Promise<boolean>[] = [];
|
|
||||||
|
|
||||||
// Start the main controller
|
// Start the main controller
|
||||||
let mainController = new MainController(context);
|
let mainController = new MainController(context);
|
||||||
controllers.push(mainController);
|
controllers.push(mainController);
|
||||||
context.subscriptions.push(mainController);
|
context.subscriptions.push(mainController);
|
||||||
activations.push(mainController.activate());
|
await mainController.activate();
|
||||||
|
|
||||||
return Promise.all(activations)
|
|
||||||
.then((results: boolean[]) => {
|
|
||||||
for (let result of results) {
|
|
||||||
if (!result) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deactivate() {
|
export function deactivate() {
|
||||||
|
|||||||
@@ -30,18 +30,16 @@ export class ServiceClient {
|
|||||||
config.installDirectory = path.join(context.extensionPath, config.installDirectory);
|
config.installDirectory = path.join(context.extensionPath, config.installDirectory);
|
||||||
config.proxy = vscode.workspace.getConfiguration('http').get('proxy');
|
config.proxy = vscode.workspace.getConfiguration('http').get('proxy');
|
||||||
config.strictSSL = vscode.workspace.getConfiguration('http').get('proxyStrictSSL') || true;
|
config.strictSSL = vscode.workspace.getConfiguration('http').get('proxyStrictSSL') || true;
|
||||||
|
|
||||||
const serverdownloader = new ServerProvider(config);
|
const serverdownloader = new ServerProvider(config);
|
||||||
serverdownloader.eventEmitter.onAny(this.generateHandleServerProviderEvent());
|
serverdownloader.eventEmitter.onAny(this.generateHandleServerProviderEvent());
|
||||||
|
|
||||||
let clientOptions: ClientOptions = this.createClientOptions();
|
let clientOptions: ClientOptions = this.createClientOptions();
|
||||||
|
|
||||||
|
try {
|
||||||
const installationStart = Date.now();
|
const installationStart = Date.now();
|
||||||
let client: SqlOpsDataClient;
|
let client: SqlOpsDataClient;
|
||||||
return new Promise((resolve, reject) => {
|
let serviceBinaries = await serverdownloader.getOrDownloadServer();
|
||||||
serverdownloader.getOrDownloadServer().then(e => {
|
|
||||||
const installationComplete = Date.now();
|
const installationComplete = Date.now();
|
||||||
let serverOptions = this.generateServerOptions(e, context);
|
let serverOptions = this.generateServerOptions(serviceBinaries, context);
|
||||||
client = new SqlOpsDataClient(Constants.serviceName, serverOptions, clientOptions);
|
client = new SqlOpsDataClient(Constants.serviceName, serverOptions, clientOptions);
|
||||||
const processStart = Date.now();
|
const processStart = Date.now();
|
||||||
client.onReady().then(() => {
|
client.onReady().then(() => {
|
||||||
@@ -61,14 +59,14 @@ export class ServiceClient {
|
|||||||
this.statusView.text = localize('serviceStarting', "Starting {0}", Constants.serviceName);
|
this.statusView.text = localize('serviceStarting', "Starting {0}", Constants.serviceName);
|
||||||
let disposable = client.start();
|
let disposable = client.start();
|
||||||
context.subscriptions.push(disposable);
|
context.subscriptions.push(disposable);
|
||||||
resolve(client);
|
return client;
|
||||||
}, e => {
|
}
|
||||||
|
catch (error) {
|
||||||
Telemetry.sendTelemetryEvent('ServiceInitializingFailed');
|
Telemetry.sendTelemetryEvent('ServiceInitializingFailed');
|
||||||
vscode.window.showErrorMessage(localize('flatFileImport.serviceStartFailed', "Failed to start {0}: {1}", Constants.serviceName, e));
|
vscode.window.showErrorMessage(localize('flatFileImport.serviceStartFailed', "Failed to start {0}: {1}", Constants.serviceName, error));
|
||||||
// Just resolve to avoid unhandled promise. We show the error to the user.
|
// Just resolve to avoid unhandled promise. We show the error to the user.
|
||||||
resolve(undefined);
|
return undefined;
|
||||||
});
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private createClientOptions(): ClientOptions {
|
private createClientOptions(): ClientOptions {
|
||||||
|
|||||||
Reference in New Issue
Block a user