Skip to content

Commit d1c9849

Browse files
authored
Merge branch 'main' into breedloj/telemetryTypes
2 parents 31e2f72 + 5023db0 commit d1c9849

File tree

5 files changed

+85
-5
lines changed

5 files changed

+85
-5
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.eclipse.amazonq.customization;
5+
6+
import java.util.Map;
7+
import org.eclipse.lsp4j.DidChangeConfigurationParams;
8+
import software.aws.toolkits.eclipse.amazonq.exception.AmazonQPluginException;
9+
import software.aws.toolkits.eclipse.amazonq.providers.LspProvider;
10+
import software.aws.toolkits.eclipse.amazonq.util.PluginLogger;
11+
12+
public final class CustomizationUtil {
13+
14+
private CustomizationUtil() {
15+
// to avoid initiation
16+
}
17+
18+
public static void triggerChangeConfigurationNotification(final Map<String, Object> settings) {
19+
try {
20+
PluginLogger.info("Sending configuration update notification to Amazon Q LSP server");
21+
LspProvider.getAmazonQServer()
22+
.thenAccept(server -> server.getWorkspaceService().didChangeConfiguration(new DidChangeConfigurationParams(settings)));
23+
} catch (Exception e) {
24+
PluginLogger.error("Error occurred while sending change configuration notification to Amazon Q LSP server", e);
25+
throw new AmazonQPluginException(e);
26+
}
27+
}
28+
29+
}

plugin/src/software/aws/toolkits/eclipse/amazonq/lsp/AmazonQLspClientImpl.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,19 @@
33

44
package software.aws.toolkits.eclipse.amazonq.lsp;
55

6+
import java.util.ArrayList;
7+
import java.util.HashMap;
8+
import java.util.List;
9+
import java.util.Map;
610
import java.util.concurrent.CompletableFuture;
711

812
import org.eclipse.lsp4e.LanguageClientImpl;
13+
import org.eclipse.lsp4j.ConfigurationParams;
914

15+
import software.aws.toolkits.eclipse.amazonq.configuration.PluginStore;
1016
import software.aws.toolkits.eclipse.amazonq.lsp.model.ConnectionMetadata;
1117
import software.aws.toolkits.eclipse.amazonq.lsp.model.SsoProfileData;
18+
import software.aws.toolkits.eclipse.amazonq.util.Constants;
1219

1320
@SuppressWarnings("restriction")
1421
public class AmazonQLspClientImpl extends LanguageClientImpl implements AmazonQLspClient {
@@ -23,4 +30,23 @@ public final CompletableFuture<ConnectionMetadata> getConnectionMetadata() {
2330
return CompletableFuture.completedFuture(metadata);
2431
}
2532

33+
@Override
34+
public final CompletableFuture<List<Object>> configuration(final ConfigurationParams configurationParams) {
35+
if (configurationParams.getItems().size() == 0) {
36+
return CompletableFuture.completedFuture(null);
37+
}
38+
List<Object> output = new ArrayList<>();
39+
configurationParams.getItems().forEach(item -> {
40+
if (item.getSection().equals(Constants.LSP_CONFIGURATION_KEY)) {
41+
String customizationArn = PluginStore.get(Constants.CUSTOMIZATION_STORAGE_INTERNAL_KEY);
42+
Map<String, String> customization = new HashMap<>();
43+
customization.put(Constants.LSP_CUSTOMIZATION_CONFIGURATION_KEY, customizationArn);
44+
output.add(customization);
45+
} else {
46+
output.add(null);
47+
}
48+
});
49+
return CompletableFuture.completedFuture(output);
50+
}
51+
2652
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.eclipse.amazonq.util;
5+
6+
public final class Constants {
7+
8+
private Constants() {
9+
// to avoid initiation
10+
}
11+
12+
public static final String CUSTOMIZATION_STORAGE_INTERNAL_KEY = "aws.q.customization.eclipse";
13+
public static final String LSP_CUSTOMIZATION_CONFIGURATION_KEY = "customization";
14+
public static final String LSP_CONFIGURATION_KEY = "aws.q";
15+
16+
}

plugin/src/software/aws/toolkits/eclipse/amazonq/views/CustomizationDialog.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33

44
package software.aws.toolkits.eclipse.amazonq.views;
55

6+
import java.util.HashMap;
67
import java.util.List;
8+
import java.util.Map;
79
import org.eclipse.jface.dialogs.Dialog;
810
import org.eclipse.jface.dialogs.IDialogConstants;
911
import org.eclipse.swt.SWT;
@@ -22,13 +24,15 @@
2224
import org.eclipse.swt.widgets.Shell;
2325
import software.amazon.awssdk.utils.StringUtils;
2426
import software.aws.toolkits.eclipse.amazonq.configuration.PluginStore;
27+
import software.aws.toolkits.eclipse.amazonq.customization.CustomizationUtil;
28+
import software.aws.toolkits.eclipse.amazonq.util.Constants;
2529
import software.aws.toolkits.eclipse.amazonq.util.PluginLogger;
30+
import software.aws.toolkits.eclipse.amazonq.util.ThreadingUtils;
2631
import software.aws.toolkits.eclipse.amazonq.views.model.Customization;
2732

2833
public final class CustomizationDialog extends Dialog {
2934

3035
private static final String TITLE = "Amazon Q Customization";
31-
public static final String CUSTOMIZATION_STORAGE_INTERNAL_KEY = "aws.q.customization.eclipse";
3236
private Composite container;
3337
private Combo combo;
3438
private Font magnifiedFont;
@@ -110,10 +114,14 @@ protected void createButtonsForButtonBar(final Composite parent) {
110114
protected void okPressed() {
111115
PluginLogger.info(String.format("Select pressed with responseSelection:%s and selectedArn:%s", this.responseSelection, this.selectedCustomisationArn));
112116
if (this.responseSelection.equals(ResponseSelection.AMAZON_Q_FOUNDATION_DEFAULT)) {
113-
PluginStore.remove(CUSTOMIZATION_STORAGE_INTERNAL_KEY);
117+
PluginStore.remove(Constants.CUSTOMIZATION_STORAGE_INTERNAL_KEY);
114118
} else {
115-
// TODO: Add the logic to trigger notification to LSP server regarding change of configuration
116-
PluginStore.put(CUSTOMIZATION_STORAGE_INTERNAL_KEY, this.selectedCustomisationArn);
119+
PluginStore.put(Constants.CUSTOMIZATION_STORAGE_INTERNAL_KEY, this.selectedCustomisationArn);
120+
Map<String, Object> updatedSettings = new HashMap<>();
121+
Map<String, String> internalMap = new HashMap<>();
122+
internalMap.put(Constants.LSP_CUSTOMIZATION_CONFIGURATION_KEY, this.selectedCustomisationArn);
123+
updatedSettings.put(Constants.LSP_CONFIGURATION_KEY, internalMap);
124+
ThreadingUtils.executeAsyncTask(() -> CustomizationUtil.triggerChangeConfigurationNotification(updatedSettings));
117125
}
118126
super.okPressed();
119127
}

plugin/src/software/aws/toolkits/eclipse/amazonq/views/actions/CustomizationDialogContributionItem.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import software.amazon.awssdk.utils.StringUtils;
1919
import software.aws.toolkits.eclipse.amazonq.configuration.PluginStore;
2020
import software.aws.toolkits.eclipse.amazonq.util.AuthStatusChangedListener;
21+
import software.aws.toolkits.eclipse.amazonq.util.Constants;
2122
import software.aws.toolkits.eclipse.amazonq.views.CustomizationDialog;
2223
import software.aws.toolkits.eclipse.amazonq.views.CustomizationDialog.ResponseSelection;
2324
import software.aws.toolkits.eclipse.amazonq.views.model.Customization;
@@ -65,7 +66,7 @@ public void widgetSelected(final SelectionEvent e) {
6566
CustomizationDialog dialog = new CustomizationDialog(shell);
6667
// TODO: This mock will be replaced by an actual call to LSP
6768
dialog.setCustomisationResponse(getCustomizations());
68-
String storedCustomizationArn = PluginStore.get(CustomizationDialog.CUSTOMIZATION_STORAGE_INTERNAL_KEY);
69+
String storedCustomizationArn = PluginStore.get(Constants.CUSTOMIZATION_STORAGE_INTERNAL_KEY);
6970
if (StringUtils.isBlank(storedCustomizationArn)) {
7071
dialog.setResponseSelection(ResponseSelection.AMAZON_Q_FOUNDATION_DEFAULT);
7172
dialog.setSelectedCustomizationArn(null);

0 commit comments

Comments
 (0)