This is an automated email from the ASF dual-hosted git repository. marat pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
The following commit(s) were added to refs/heads/main by this push: new fa8fdf90 #1091 in VsCode fa8fdf90 is described below commit fa8fdf90aeca75918932840e80455a79fb8a8098 Author: Marat Gubaidullin <ma...@talismancloud.io> AuthorDate: Wed Jan 31 17:21:02 2024 -0500 #1091 in VsCode --- karavan-vscode/src/designerView.ts | 14 +++++++++----- karavan-vscode/src/utils.ts | 16 ++++++++++++++++ karavan-vscode/webview/App.tsx | 8 ++++++-- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/karavan-vscode/src/designerView.ts b/karavan-vscode/src/designerView.ts index 265bc924..1f6879de 100644 --- a/karavan-vscode/src/designerView.ts +++ b/karavan-vscode/src/designerView.ts @@ -177,7 +177,9 @@ export class DesignerView { utils.readJavaCode(fullPath), // Read supported components utils.readSupportedComponents(), - utils.readSupportedOnlySettings() + utils.readSupportedOnlySettings(), + // Read property placeholders + utils.readPropertyPlaceholder(this.context) ]).then(results => { // Send Kamelets panel.webview.postMessage({ command: 'kamelets', kamelets: results[0] }); @@ -191,22 +193,24 @@ export class DesignerView { if (results[4]) panel.webview.postMessage({ command: 'supportedComponents', components: results[4]}); if (results[5] === true) panel.webview.postMessage({ command: 'supportedOnly'}); // Send integration - this.sendIntegrationData(panel, filename, relativePath, fullPath, reread, yaml, tab); + this.sendIntegrationData(panel, filename, relativePath, fullPath, reread, yaml, tab, results[6]); }).catch(err => console.log(err)); } - sendIntegrationData(panel: WebviewPanel, filename: string, relativePath: string, fullPath: string, reread: boolean, yaml?: string, tab?: string) { + sendIntegrationData(panel: WebviewPanel, filename: string, relativePath: string, fullPath: string, reread: boolean, yaml?: string, tab?: string, propertyPlaceholders?: string[]) { // Read file if required if (reread) { utils.readFile(path.resolve(fullPath)).then(readData => { const yaml = Buffer.from(readData).toString('utf8'); // Send integration - panel.webview.postMessage({ command: 'open', page: "designer", filename: filename, relativePath: relativePath, fullPath:fullPath, yaml: yaml, tab: tab }); + panel.webview.postMessage( + { command: 'open', page: "designer", filename: filename, relativePath: relativePath, fullPath:fullPath, yaml: yaml, tab: tab, propertyPlaceholders: propertyPlaceholders }); }); } else { // Send integration - panel.webview.postMessage({ command: 'open', page: "designer", filename: filename, relativePath: relativePath, fullPath:fullPath, yaml: yaml, tab: tab }); + panel.webview.postMessage( + { command: 'open', page: "designer", filename: filename, relativePath: relativePath, fullPath:fullPath, yaml: yaml, tab: tab, propertyPlaceholders: propertyPlaceholders }); } } diff --git a/karavan-vscode/src/utils.ts b/karavan-vscode/src/utils.ts index c55901ee..6cb7083b 100644 --- a/karavan-vscode/src/utils.ts +++ b/karavan-vscode/src/utils.ts @@ -111,6 +111,22 @@ export async function readComponents(context: ExtensionContext) { return jsons; } +export async function readPropertyPlaceholder(context: ExtensionContext) { + const result: string[] = []; + const properties = await getProperties(); + const lines = properties.split('\n').map((line) => line.trim()); + lines + .filter(line => !line.startsWith("camel.") && !line.startsWith("jkube.") && !line.startsWith("jib.")) + .filter(line => line !== undefined && line !== null && line.length > 0) + .forEach(line => { + const parts = line.split("="); + if (parts.length > 0) { + result.push(parts[0]); + } + }) + return result; +} + export async function readTemplates(context: ExtensionContext) { const result = new Map<string, string>(); const runtime = await getRuntime(); diff --git a/karavan-vscode/webview/App.tsx b/karavan-vscode/webview/App.tsx index c8742e52..e539d7f1 100644 --- a/karavan-vscode/webview/App.tsx +++ b/karavan-vscode/webview/App.tsx @@ -46,7 +46,8 @@ interface State { page: "designer" | "knowledgebase" | 'topology' active: boolean tab?: "routes" | "rest" | "beans" - files: IntegrationFile[] + files: IntegrationFile[], + propertyPlaceholders: string[] } class App extends React.Component<Props, State> { @@ -64,6 +65,7 @@ class App extends React.Component<Props, State> { page: "designer", active: false, files: [], + propertyPlaceholders: [] }; saveScheduledChanges = () => { @@ -153,7 +155,8 @@ class App extends React.Component<Props, State> { key: Math.random().toString(), loaded: true, active: true, - tab: message.tab + tab: message.tab, + propertyPlaceholders: message.propertyPlaceholders }); } break; @@ -219,6 +222,7 @@ class App extends React.Component<Props, State> { if (code === undefined || code.length === 0) code = TemplateApi.generateCode(javaType, name); return new Promise<string | undefined>(resolve => resolve(code)) }} + propertyPlaceholders={this.state.propertyPlaceholders} /> } {loaded && page === "knowledgebase" && <KnowledgebasePage dark={dark} />}