Skip to content
This repository has been archived by the owner on Aug 10, 2024. It is now read-only.

Commit

Permalink
Adopt ALS 5.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
agusayerza committed Jan 20, 2022
1 parent e1c71e7 commit 8a4788e
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 89 deletions.
42 changes: 13 additions & 29 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 2 additions & 15 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"displayName": "AML support",
"description": "",
"publisher": "MuleSoftInc",
"version": "0.3.196",
"version": "0.4.0",
"engines": {
"vscode": "^1.52.0"
},
Expand Down Expand Up @@ -132,19 +132,6 @@
"default": null,
"description": "Select a specific path to dump logs to. (Requires restart)"
},
"amlLanguageServer.run.configurationStyle": {
"type": "string",
"default": "file",
"enum": [
"command",
"file"
],
"description": "Select how should ALS determine a project configuration, either by `didChangeConfiguration` command or by reading an exchange.json file. (Reload required)",
"enumDescription": [
"ALS projects can only be configured by using the `didChangeConfiguration`",
"ALS will try to find and read an exchange.json file at the root of the workspace to configure the project."
]
},
"amlLanguageServer.run.hotReload": {
"type": "boolean",
"default": false,
Expand Down Expand Up @@ -326,7 +313,7 @@
}
},
"dependencies": {
"@aml-org/als-node-client": "4.2.2",
"@aml-org/als-node-client": "5.0.0-1",
"@types/mocha": "^8.2.1",
"@types/node": "^11.15.20",
"@types/vscode": "1.52.0",
Expand Down
2 changes: 1 addition & 1 deletion src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ async function createLanguageClient(alsLog: vscode.OutputChannel, context: Exten

const isJVM = runParams.get("platform") === "jvm";
languageClient.registerFeatures([
new AlsInitializeParamsFeature(runParams.get("configurationStyle"), runParams.get("hotReload"), isJVM),
new AlsInitializeParamsFeature(runParams.get("hotReload"), isJVM),
new ConversionFeature()
])

Expand Down
18 changes: 1 addition & 17 deletions src/features.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { AlsClientCapabilities, AlsInitializeParams } from '@aml-org/als-node-client';
import { DocumentSelector } from 'vscode';
import { ClientCapabilities, InitializeParams, ServerCapabilities, StaticFeature } from 'vscode-languageclient';
import { ProjectConfigurationStyles } from './types';
export class ConversionFeature implements StaticFeature {
fillInitializeParams?: (params: InitializeParams) => void;
dispose(): void {
Expand All @@ -28,27 +27,12 @@ export class SerializationNotificationFeature implements StaticFeature {
}

export class AlsInitializeParamsFeature implements StaticFeature {
private configurationStyle: string = ProjectConfigurationStyles.Command;
private hotReload: boolean = false
constructor(configStyle: String, hotReload: boolean, readonly isJvm: boolean) {
switch(configStyle) {
case ProjectConfigurationStyles.Command:
this.configurationStyle = ProjectConfigurationStyles.Command;
break;
case ProjectConfigurationStyles.File:
this.configurationStyle = ProjectConfigurationStyles.File;
break;
default:
this.configurationStyle = ProjectConfigurationStyles.Command;
break;
}
constructor(hotReload: boolean, readonly isJvm: boolean) {
this.hotReload = hotReload
}
fillInitializeParams?: (params: InitializeParams) => void = (params: InitializeParams) => {
var castedParams = params as AlsInitializeParams
castedParams.projectConfigurationStyle = {
style: this.configurationStyle
}
castedParams.hotReload = this.hotReload
}

Expand Down
17 changes: 6 additions & 11 deletions src/server/als.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,23 @@ import { ConfigurationViewProvider } from '../ui/configurationView';
import { SettingsManager } from '../settings';
import { Disposable } from 'vscode';
import { ConversionParams, DidChangeConfigurationNotificationParams, GetWorkspaceConfigurationParams, GetWorkspaceConfigurationResult, RenameFileActionParams, RenameFileActionResult, SerializationParams, SerializationResult, SerializedDocument } from '@aml-org/als-node-client';
import { messages, ProjectConfigurationStyles } from '../types';
import { messages } from '../types';


// todo: cleanup all URIs using languageClient.code2ProtocolConverter.asUri(fileUri)
// vscode.Uri with `toString()` causes issues with windows paths
export class AlsLanguageClient {
disposables: Disposable[] = []

configurationStyle: string = vscode.workspace.getConfiguration(`amlLanguageServer.run`).get("configurationStyle")
configurationByCommand: Boolean = this.configurationStyle == ProjectConfigurationStyles.Command

readonly wsConfigTreeViewProvider = new ConfigurationViewProvider(vscode.workspace.workspaceFolders, this)
constructor(readonly languageClient: LanguageClient, private readonly extensionConfigurationManager: SettingsManager) {
this.disposable(vscode.commands.registerCommand("als.renameFile", renameFileHandler(this)))
this.disposable(vscode.commands.registerCommand("als.conversion", conversionHandler(this)))
this.disposable(vscode.commands.registerCommand("als.serialization", serializationHandler(this)))
if(this.configurationByCommand){
this.disposable(vscode.commands.registerCommand("als.setMainFile", setMainFileHandler(this)))
this.disposable(vscode.commands.registerCommand("als.registerProfile", registerProfileHandler(this)))
this.disposable(vscode.commands.registerCommand("als.unregisterProfile", unregisterProfileHandler(this)))
this.disposable(vscode.commands.registerCommand("als.registerSemantic", registerSemanticHandler(this)))
}
this.disposable(vscode.commands.registerCommand("als.setMainFile", setMainFileHandler(this)))
this.disposable(vscode.commands.registerCommand("als.registerProfile", registerProfileHandler(this)))
this.disposable(vscode.commands.registerCommand("als.unregisterProfile", unregisterProfileHandler(this)))
this.disposable(vscode.commands.registerCommand("als.registerSemantic", registerSemanticHandler(this)))
this.disposable(this.languageClient.onDidChangeState(this.languageClientStateListener))
this.disposable(vscode.languages.registerDocumentFormattingEditProvider(LANGUAGE_ID, new FormattingProvider(languageClient)))
this.disposable(vscode.languages.registerDocumentRangeFormattingEditProvider(LANGUAGE_ID, new FormattingProvider(languageClient)))
Expand Down Expand Up @@ -120,7 +115,7 @@ export class AlsLanguageClient {
command: 'didChangeConfiguration',
arguments: [
{
mainUri: params.mainUri,
mainPath: params.mainPath,
folder: params.folder,
dependencies: params.dependencies },
],
Expand Down
10 changes: 5 additions & 5 deletions src/server/handlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export const setMainFileHandler = (als: AlsLanguageClient) => {
als.getWorkspaceConfiguration(uri).then(workspaceConfig => {
const newWorkspaceConfig: DidChangeConfigurationNotificationParams = {
...workspaceConfig.configuration,
mainUri: uri
mainPath: uri
};
als.changeWorkspaceConfigurationCommand(newWorkspaceConfig);
});
Expand Down Expand Up @@ -114,8 +114,8 @@ function unregisterDependency(scopeName: string, fileUri: vscode.Uri, als: AlsLa
const uri = als.languageClient.code2ProtocolConverter.asUri(fileUri);
als.getWorkspaceConfiguration(uri).then(workspaceConfig => {
const newWorkspaceConfig: DidChangeConfigurationNotificationParams = {
mainUri: workspaceConfig.configuration.mainUri,
folder: uri,
mainPath: workspaceConfig.configuration.mainPath,
folder: workspaceConfig.configuration.folder,
dependencies: workspaceConfig.configuration.dependencies
.filter(v => {
return !isDependencyConfiguration(v) || !(v.scope == scopeName && v.file.toLowerCase() == uri.toLowerCase());
Expand All @@ -131,8 +131,8 @@ function registerDependency(als: AlsLanguageClient, fileUri: vscode.Uri, scopeNa
const uri = als.languageClient.code2ProtocolConverter.asUri(fileUri);
als.getWorkspaceConfiguration(uri).then(workspaceConfig => {
const newWorkspaceConfig: DidChangeConfigurationNotificationParams = {
mainUri: workspaceConfig.configuration.mainUri,
folder: uri,
mainPath: workspaceConfig.configuration.mainPath,
folder: workspaceConfig.configuration.folder,
dependencies: [...workspaceConfig.configuration.dependencies, { file: uri, scope: scopeName }]
};
als.changeWorkspaceConfigurationCommand(newWorkspaceConfig);
Expand Down
6 changes: 2 additions & 4 deletions src/test/e2e/custom-validations.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,10 @@ import { ExecuteCommandRequest } from 'vscode-languageclient';
suite('Custom Validations', async function () {
this.beforeAll(async () => {
const config = vscode.workspace.getConfiguration(`amlLanguageServer.run`)
await config.update("configurationStyle", "command");
await restartAls();
})
this.afterAll(async () => {
const config = vscode.workspace.getConfiguration(`amlLanguageServer.run`)
await config.update("configurationStyle", "file");
await restartAls();
})
test('Custom validation on RAML file', async () => {
Expand Down Expand Up @@ -56,7 +54,7 @@ async function testDiagnostics(docUri: vscode.Uri, profile: vscode.Uri, expected
await (languageClient.sendRequest(ExecuteCommandRequest.type, {
command: 'didChangeConfiguration',
arguments: [
{ mainUri: "", folder: docUri.toString(true), dependencies: [], customValidationProfiles: [profile.toString(true)] },
{ mainPath: "", folder: docUri.toString(true), dependencies: [], customValidationProfiles: [profile.toString(true)] },
],
}))
})
Expand All @@ -76,7 +74,7 @@ async function testDiagnostics(docUri: vscode.Uri, profile: vscode.Uri, expected
await (languageClient.sendRequest(ExecuteCommandRequest.type, {
command: 'didChangeConfiguration',
arguments: [
{ mainUri: "", folder: docUri.toString(true), dependencies: [], customValidationProfiles: [] },
{ mainPath: "", folder: docUri.toString(true), dependencies: [], customValidationProfiles: [] },
],
}))

Expand Down
5 changes: 0 additions & 5 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,3 @@ export namespace messages {
export function isDependencyConfiguration(t: AlsDependency): t is Dependency {
return (<Dependency>t).scope !== undefined;
}

export const ProjectConfigurationStyles = {
Command: "command",
File: "file"
}
4 changes: 2 additions & 2 deletions src/ui/configurationView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ export class ConfigurationViewProvider implements vscode.TreeDataProvider<Worksp

if (element && element instanceof WorkspaceConfigurationParent) {
const result = new Array<WorkspaceConfigurationEntry>()
if (element.configuration.configuration.mainUri != "") {
result.push(new MainFileEntry(element.configuration.configuration.mainUri))
if (element.configuration.configuration.mainPath != "") {
result.push(new MainFileEntry(element.configuration.configuration.mainPath))
}
if (element.configuration.configuration.dependencies.filter(isDependencyConfiguration).filter(v => v.scope == "custom-validation").length > 0) {
result.push(new DependencyHolderEntry("Profiles", vscode.TreeItemCollapsibleState.Collapsed, element.configuration))
Expand Down

0 comments on commit 8a4788e

Please sign in to comment.