Move handling generated files to the serialization classes (#8952)

* move handling generated files to the serilization classes

* remove unneeded methods

* fix compile
This commit is contained in:
Anthony Dresser
2020-01-30 21:27:21 -08:00
committed by GitHub
parent 261e6fa89e
commit 7d751a20ab
9 changed files with 27 additions and 58 deletions

View File

@@ -83,7 +83,7 @@ export const Extensions = {
Registry.add(Extensions.LanguageAssociations, languageAssociationRegistery);
export function doHandleUpgrade(editor: EditorInput): EditorInput {
export function doHandleUpgrade(editor?: EditorInput): EditorInput | undefined {
if (editor instanceof UntitledTextEditorInput || editor instanceof FileEditorInput) {
const activeWidget = getCodeEditor(editor);
const textModel = activeWidget.getModel();

View File

@@ -394,7 +394,7 @@ suite('commandLineService tests', () => {
const instantiationService = new TestInstantiationService();
let uri = URI.file(args._[0]);
const untitledEditorInput = new UntitledTextEditorInput(uri, false, '', '', '', instantiationService, undefined, new LabelService(undefined, undefined), undefined, undefined);
const queryInput = new UntitledQueryEditorInput(undefined, untitledEditorInput, undefined, connectionManagementService.object, querymodelService.object, configurationService.object, undefined);
const queryInput = new UntitledQueryEditorInput(undefined, untitledEditorInput, undefined, connectionManagementService.object, querymodelService.object, configurationService.object);
queryInput.state.connected = true;
const editorService: TypeMoq.Mock<IEditorService> = TypeMoq.Mock.ofType<IEditorService>(TestEditorService, TypeMoq.MockBehavior.Strict);
editorService.setup(e => e.editors).returns(() => [queryInput]);

View File

@@ -13,7 +13,6 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
import { EncodingMode } from 'vs/workbench/common/editor';
import { TextFileEditorModel } from 'vs/workbench/services/textfile/common/textFileEditorModel';
import { BinaryEditorModel } from 'vs/workbench/common/editor/binaryEditorModel';
import { IFileService } from 'vs/platform/files/common/files';
type PublicPart<T> = { [K in keyof T]: T[K] };
@@ -27,10 +26,9 @@ export class FileQueryEditorInput extends QueryEditorInput implements PublicPart
results: QueryResultsInput,
@IConnectionManagementService connectionManagementService: IConnectionManagementService,
@IQueryModelService queryModelService: IQueryModelService,
@IConfigurationService configurationService: IConfigurationService,
@IFileService fileService: IFileService
@IConfigurationService configurationService: IConfigurationService
) {
super(description, text, results, connectionManagementService, queryModelService, configurationService, fileService);
super(description, text, results, connectionManagementService, queryModelService, configurationService);
}
public resolve(): Promise<TextFileEditorModel | BinaryEditorModel> {

View File

@@ -9,7 +9,6 @@ import { Emitter } from 'vs/base/common/event';
import { URI } from 'vs/base/common/uri';
import { EditorInput, GroupIdentifier, IRevertOptions, ISaveOptions, IEditorInput } from 'vs/workbench/common/editor';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IFileService } from 'vs/platform/files/common/files';
import { IConnectionManagementService, IConnectableInput, INewConnectionParams, RunQueryOnConnectionMode } from 'sql/platform/connection/common/connectionManagement';
import { QueryResultsInput } from 'sql/workbench/contrib/query/common/queryResultsInput';
@@ -123,8 +122,7 @@ export abstract class QueryEditorInput extends EditorInput implements IConnectab
protected _results: QueryResultsInput,
@IConnectionManagementService private readonly connectionManagementService: IConnectionManagementService,
@IQueryModelService private readonly queryModelService: IQueryModelService,
@IConfigurationService private readonly configurationService: IConfigurationService,
@IFileService private _fileService: IFileService
@IConfigurationService private readonly configurationService: IConfigurationService
) {
super();
@@ -199,10 +197,6 @@ export abstract class QueryEditorInput extends EditorInput implements IConnectab
return (this._text instanceof inputType);
}
public inputFileExists(): Promise<boolean> {
return this._fileService.exists(this.getResource());
}
public getName(longForm?: boolean): string {
if (this.configurationService.getValue('sql.showConnectionInfoInTitle')) {
let profile = this.connectionManagementService.getConnectionProfile(this.uri);

View File

@@ -19,6 +19,8 @@ import { IObjectExplorerService } from 'sql/workbench/services/objectExplorer/br
import { IConnectionManagementService, IConnectionCompletionOptions, ConnectionType } from 'sql/platform/connection/common/connectionManagement';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
import { onUnexpectedError } from 'vs/base/common/errors';
import { IFileService } from 'vs/platform/files/common/files';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
const editorInputFactoryRegistry = Registry.as<IEditorInputFactoryRegistry>(EditorInputExtensions.EditorInputFactories);
@@ -63,6 +65,10 @@ export class QueryEditorLanguageAssociation implements ILanguageAssociation {
}
export class FileQueryEditorInputFactory implements IEditorInputFactory {
constructor(@IFileService private readonly fileService: IFileService) {
}
serialize(editorInput: FileQueryEditorInput): string {
const factory = editorInputFactoryRegistry.getEditorInputFactory(FILE_EDITOR_INPUT_ID);
if (factory) {
@@ -74,8 +80,14 @@ export class FileQueryEditorInputFactory implements IEditorInputFactory {
deserialize(instantiationService: IInstantiationService, serializedEditorInput: string): FileQueryEditorInput | undefined {
const factory = editorInputFactoryRegistry.getEditorInputFactory(FILE_EDITOR_INPUT_ID);
const fileEditorInput = factory.deserialize(instantiationService, serializedEditorInput) as FileEditorInput;
const queryResultsInput = instantiationService.createInstance(QueryResultsInput, fileEditorInput.getResource().toString());
return instantiationService.createInstance(FileQueryEditorInput, '', fileEditorInput, queryResultsInput);
// only successfully deserilize the file if the resource actually exists
if (this.fileService.exists(fileEditorInput.getResource())) {
const queryResultsInput = instantiationService.createInstance(QueryResultsInput, fileEditorInput.getResource().toString());
return instantiationService.createInstance(FileQueryEditorInput, '', fileEditorInput, queryResultsInput);
} else {
fileEditorInput.dispose();
return undefined;
}
}
canSerialize(): boolean { // we can always serialize query inputs
@@ -84,9 +96,12 @@ export class FileQueryEditorInputFactory implements IEditorInputFactory {
}
export class UntitledQueryEditorInputFactory implements IEditorInputFactory {
constructor(@IConfigurationService private readonly configurationService: IConfigurationService) { }
serialize(editorInput: UntitledQueryEditorInput): string {
const factory = editorInputFactoryRegistry.getEditorInputFactory(UntitledTextEditorInput.ID);
if (factory) {
// only serialize non-dirty files if the user has that setting
if (factory && (editorInput.isDirty() || this.configurationService.getValue<boolean>('sql.promptToSaveGeneratedFiles'))) {
return factory.serialize(editorInput.text); // serialize based on the underlying input
}
return undefined;

View File

@@ -11,7 +11,6 @@ import { IQueryModelService } from 'sql/workbench/services/query/common/queryMod
import { IEncodingSupport, EncodingMode } from 'vs/workbench/common/editor';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IResolvedTextEditorModel } from 'vs/editor/common/services/resolverService';
import { IFileService } from 'vs/platform/files/common/files';
import { UntitledTextEditorInput } from 'vs/workbench/common/editor/untitledTextEditorInput';
import { UntitledTextEditorModel } from 'vs/workbench/common/editor/untitledTextEditorModel';
@@ -29,10 +28,9 @@ export class UntitledQueryEditorInput extends QueryEditorInput implements IEncod
results: QueryResultsInput,
@IConnectionManagementService connectionManagementService: IConnectionManagementService,
@IQueryModelService queryModelService: IQueryModelService,
@IConfigurationService configurationService: IConfigurationService,
@IFileService fileService: IFileService
@IConfigurationService configurationService: IConfigurationService
) {
super(description, text, results, connectionManagementService, queryModelService, configurationService, fileService);
super(description, text, results, connectionManagementService, queryModelService, configurationService);
}
public resolve(): Promise<UntitledTextEditorModel & IResolvedTextEditorModel> {

View File

@@ -296,8 +296,7 @@ suite('SQL QueryEditor Tests', () => {
undefined,
connectionManagementService.object,
queryModelService.object,
configurationService.object,
undefined
configurationService.object
);
});