Skip to content

Commit

Permalink
Merge branch 'main' into breedloj/uiFixes
Browse files Browse the repository at this point in the history
  • Loading branch information
taldekar authored Feb 20, 2025
2 parents a52288e + 924c905 commit a603a80
Show file tree
Hide file tree
Showing 24 changed files with 508 additions and 351 deletions.
4 changes: 2 additions & 2 deletions feature/feature.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<feature
id="software.aws.toolkits.eclipse.amazonq.feature"
label="Amazon Q for Eclipse"
version="1.0.2.qualifier">
version="1.0.3.qualifier">

<description>
Amazon Q Developer helps users build faster across the entire software development lifecycle by providing tailored responses and code recommendations that conform to their team's internal libraries, proprietary algorithmic techniques, and enterprise code style.
Expand Down Expand Up @@ -198,6 +198,6 @@ https://github.com/aws/amazon-q-eclipse/blob/main/attribution.xml
id="amazon-q-eclipse"
download-size="11000"
install-size="0"
version="1.0.2.qualifier"
version="1.0.3.qualifier"
unpack="false"/>
</feature>
2 changes: 1 addition & 1 deletion feature/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>software.aws.toolkits.eclipse</groupId>
<artifactId>amazon-q-eclipse-group</artifactId>
<version>1.0.2-SNAPSHOT</version>
<version>1.0.3-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>

Expand Down
81 changes: 43 additions & 38 deletions plugin/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Bundle-Name: Amazon Q for Eclipse
Bundle-Provider: Amazon Web Services
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-SymbolicName: amazon-q-eclipse;singleton:=true
Bundle-Version: 1.0.2.qualifier
Bundle-Version: 1.0.3.qualifier
Automatic-Module-Name: amazon.q.eclipse
Bundle-ActivationPolicy: lazy
Bundle-Activator: software.aws.toolkits.eclipse.amazonq.plugin.Activator
Expand All @@ -29,40 +29,45 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.31.0",
slf4j.api;bundle-version="2.0.13",
org.apache.commons.lang3;bundle-version="3.14.0"
Bundle-Classpath: target/classes/,
target/dependency/annotations-2.28.26.jar,
target/dependency/apache-client-2.28.26.jar,
target/dependency/auth-2.28.26.jar,
target/dependency/aws-core-2.28.26.jar,
target/dependency/aws-json-protocol-2.28.26.jar,
target/dependency/checksums-2.28.26.jar,
target/dependency/checksums-spi-2.28.26.jar,
target/dependency/cognitoidentity-2.28.26.jar,
target/dependency/commons-codec-1.17.1.jar,
target/dependency/endpoints-spi-2.28.26.jar,
target/dependency/http-auth-2.28.26.jar,
target/dependency/http-auth-aws-2.28.26.jar,
target/dependency/http-auth-aws-eventstream-2.28.26.jar,
target/dependency/http-auth-spi-2.28.26.jar,
target/dependency/http-client-spi-2.28.26.jar,
target/dependency/httpclient-4.5.14.jar,
target/dependency/httpcore-4.4.16.jar,
target/dependency/identity-spi-2.28.26.jar,
target/dependency/jackson-annotations-2.17.2.jar,
target/dependency/jackson-core-2.17.2.jar,
target/dependency/jackson-databind-2.17.2.jar,
target/dependency/jakarta.inject-api-2.0.1.jar,
target/dependency/json-utils-2.28.26.jar,
target/dependency/maven-artifact-3.9.9.jar,
target/dependency/metrics-spi-2.28.26.jar,
target/dependency/netty-nio-client-2.28.26.jar,
target/dependency/nimbus-jose-jwt-9.41.2.jar,
target/dependency/profiles-2.28.26.jar,
target/dependency/protocol-core-2.28.26.jar,
target/dependency/reactive-streams-1.0.4.jar,
target/dependency/regions-2.28.26.jar,
target/dependency/retries-2.28.26.jar,
target/dependency/retries-spi-2.28.26.jar,
target/dependency/rxjava-3.1.5.jar,
target/dependency/sdk-core-2.28.26.jar,
target/dependency/third-party-jackson-core-2.28.26.jar,
target/dependency/utils-2.28.26.jar
target/dependency/annotations.jar,
target/dependency/apache-client.jar,
target/dependency/auth.jar,
target/dependency/aws-core.jar,
target/dependency/aws-json-protocol.jar,
target/dependency/checksums-spi.jar,
target/dependency/checksums.jar,
target/dependency/cognitoidentity.jar,
target/dependency/commons-codec.jar,
target/dependency/delight-rhino-sandbox.jar,
target/dependency/endpoints-spi.jar,
target/dependency/http-auth-aws-eventstream.jar,
target/dependency/http-auth-aws.jar,
target/dependency/http-auth-spi.jar,
target/dependency/http-auth.jar,
target/dependency/http-client-spi.jar,
target/dependency/httpclient.jar,
target/dependency/httpcore.jar,
target/dependency/identity-spi.jar,
target/dependency/jackson-annotations.jar,
target/dependency/jackson-core.jar,
target/dependency/jackson-databind.jar,
target/dependency/jakarta.inject-api.jar,
target/dependency/jna-platform.jar,
target/dependency/jna.jar,
target/dependency/json-utils.jar,
target/dependency/maven-artifact.jar,
target/dependency/metrics-spi.jar,
target/dependency/netty-nio-client.jar,
target/dependency/nimbus-jose-jwt.jar,
target/dependency/profiles.jar,
target/dependency/protocol-core.jar,
target/dependency/proxy-vole.jar,
target/dependency/reactive-streams.jar,
target/dependency/regions.jar,
target/dependency/retries-spi.jar,
target/dependency/retries.jar,
target/dependency/rxjava.jar,
target/dependency/sdk-core.jar,
target/dependency/slf4j-api.jar,
target/dependency/third-party-jackson-core.jar,
target/dependency/utils.jar
2 changes: 1 addition & 1 deletion plugin/build/syncDependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ if [ ! -f "$manifest_file" ]; then
fi

# Initialize the Bundle-Classpath entry
bundle_classpath="Bundle-Classpath: .,\n"
bundle_classpath="Bundle-Classpath: target/classes/,\n"

# Loop through the JAR files in the dependency directory
for jar in "$dependency_dir"/*.jar; do
Expand Down
42 changes: 29 additions & 13 deletions plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>software.aws.toolkits.eclipse</groupId>
<artifactId>amazon-q-eclipse-group</artifactId>
<version>1.0.2-SNAPSHOT</version>
<version>1.0.3-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>

Expand Down Expand Up @@ -42,21 +42,16 @@
</dependencyManagement>

<dependencies>
<dependency>
<groupId>io.reactivex.rxjava3</groupId>
<artifactId>rxjava</artifactId>
<version>3.1.5</version>
</dependency>
<dependency>
<groupId>io.reactivex.rxjava3</groupId>
<artifactId>rxjava</artifactId>
<version>3.1.5</version>
</dependency>
<dependency>
<groupId>jakarta.inject</groupId>
<artifactId>jakarta.inject-api</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>io.reactivex.rxjava3</groupId>
<artifactId>rxjava</artifactId>
<version>3.1.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
Expand Down Expand Up @@ -106,6 +101,11 @@
<artifactId>maven-artifact</artifactId>
<version>3.9.9</version>
</dependency>
<dependency>
<groupId>org.bidib.com.github.markusbernhardt</groupId>
<artifactId>proxy-vole</artifactId>
<version>1.1.6</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
Expand All @@ -118,7 +118,7 @@
<scope>test</scope>
</dependency>
</dependencies>

<build>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>tst</testSourceDirectory>
Expand Down Expand Up @@ -148,8 +148,24 @@
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeScope>runtime</includeScope>
<stripVersion>true</stripVersion>
<outputDirectory>${project.build.directory}/dependency</outputDirectory>
<includeGroupIds>io.reactivex,software.amazon.awssdk,com.fasterxml.jackson,com.nimbusds,jakarta.inject,commons-codec,org.apache.httpcomponents,org.reactivestreams,org.apache.maven</includeGroupIds>
<includeGroupIds>
io.reactivex,
software.amazon.awssdk,
com.fasterxml.jackson,
com.nimbusds,jakarta.inject,
commons-codec,
org.apache.httpcomponents,
org.reactivestreams,
org.apache.maven,
org.bidib.com.github.markusbernhardt,
net.java.dev.jna,
org.ini4j,
org.javadelight,
org.slf4j
</includeGroupIds>
</configuration>
</execution>
<execution>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@

import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage;

import software.aws.toolkits.eclipse.amazonq.lsp.model.UpdateCredentialsPayload;

public interface AuthCredentialsService {
CompletableFuture<ResponseMessage> updateTokenCredentials(String accessToken, boolean isEncrypted);
CompletableFuture<ResponseMessage> updateTokenCredentials(UpdateCredentialsPayload params);
CompletableFuture<Void> deleteTokenCredentials();
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@

import java.util.concurrent.CompletableFuture;

import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.GetSsoTokenResult;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.InvalidateSsoTokenParams;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.InvalidateSsoTokenResult;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.LoginParams;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.LoginType;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.SsoToken;

public interface AuthTokenService {
CompletableFuture<SsoToken> getSsoToken(LoginType loginType, LoginParams loginParams, boolean loginOnInvalidToken);
CompletableFuture<GetSsoTokenResult> getSsoToken(LoginType loginType, LoginParams loginParams, boolean loginOnInvalidToken);
CompletableFuture<InvalidateSsoTokenResult> invalidateSsoToken(InvalidateSsoTokenParams invalidateSsoTokenParams);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,35 +9,25 @@
import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage;

import software.aws.toolkits.eclipse.amazonq.exception.AmazonQPluginException;
import software.aws.toolkits.eclipse.amazonq.lsp.encryption.LspEncryptionManager;
import software.aws.toolkits.eclipse.amazonq.lsp.model.BearerCredentials;
import software.aws.toolkits.eclipse.amazonq.lsp.model.UpdateCredentialsPayload;
import software.aws.toolkits.eclipse.amazonq.lsp.model.UpdateCredentialsPayloadData;
import software.aws.toolkits.eclipse.amazonq.plugin.Activator;
import software.aws.toolkits.eclipse.amazonq.providers.LspProvider;

public final class DefaultAuthCredentialsService implements AuthCredentialsService {
private LspProvider lspProvider;
private LspEncryptionManager encryptionManager;

private DefaultAuthCredentialsService(final Builder builder) {
this.lspProvider = Objects.requireNonNull(builder.lspProvider, "lspProvider must not be null");
this.encryptionManager = Objects.requireNonNull(builder.encryptionManager, "encryptionManager must not be null");
}

public static Builder builder() {
return new Builder();
}

@Override
public CompletableFuture<ResponseMessage> updateTokenCredentials(final String accessToken, final boolean isEncrypted) {
String token = accessToken;
if (isEncrypted) {
token = decryptSsoToken(accessToken);
}
UpdateCredentialsPayload payload = createUpdateCredentialsPayload(token);
public CompletableFuture<ResponseMessage> updateTokenCredentials(final UpdateCredentialsPayload params) {
return lspProvider.getAmazonQServer()
.thenCompose(server -> server.updateTokenCredentials(payload))
.thenCompose(server -> server.updateTokenCredentials(params))
.exceptionally(throwable -> {
throw new AmazonQPluginException("Failed to update token credentials", throwable);
});
Expand All @@ -52,32 +42,13 @@ public CompletableFuture<Void> deleteTokenCredentials() {
});
}

private String decryptSsoToken(final String encryptedSsoToken) {
String decryptedToken = encryptionManager.decrypt(encryptedSsoToken);
return decryptedToken.substring(1, decryptedToken.length() - 1); // Remove extra quotes surrounding token
}

private UpdateCredentialsPayload createUpdateCredentialsPayload(final String ssoToken) {
BearerCredentials credentials = new BearerCredentials();
credentials.setToken(ssoToken);

UpdateCredentialsPayloadData data = new UpdateCredentialsPayloadData(credentials);
String encryptedData = encryptionManager.encrypt(data);
return new UpdateCredentialsPayload(encryptedData, true);
}

public static class Builder {
private LspProvider lspProvider;
private LspEncryptionManager encryptionManager;

public final Builder withLspProvider(final LspProvider lspProvider) {
this.lspProvider = lspProvider;
return this;
}
public final Builder withEncryptionManager(final LspEncryptionManager encryptionManager) {
this.encryptionManager = encryptionManager;
return this;
}

public final DefaultAuthCredentialsService build() {
if (lspProvider == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import software.aws.toolkits.eclipse.amazonq.exception.AmazonQPluginException;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.GetSsoTokenOptions;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.GetSsoTokenParams;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.GetSsoTokenResult;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.GetSsoTokenSource;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.InvalidateSsoTokenParams;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.InvalidateSsoTokenResult;
Expand All @@ -22,7 +23,6 @@
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.ProfileSettings;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.SsoSession;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.SsoSessionSettings;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.SsoToken;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.UpdateProfileOptions;
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.UpdateProfileParams;
import software.aws.toolkits.eclipse.amazonq.plugin.Activator;
Expand All @@ -41,7 +41,7 @@ public static Builder builder() {
}

@Override
public CompletableFuture<SsoToken> getSsoToken(final LoginType loginType, final LoginParams loginParams,
public CompletableFuture<GetSsoTokenResult> getSsoToken(final LoginType loginType, final LoginParams loginParams,
final boolean loginOnInvalidToken) {
GetSsoTokenParams getSsoTokenParams = createGetSsoTokenParams(loginType, loginOnInvalidToken);
return lspProvider.getAmazonQServer()
Expand Down Expand Up @@ -70,7 +70,7 @@ public CompletableFuture<SsoToken> getSsoToken(final LoginType loginType, final
})
.thenCompose(server -> server.getSsoToken(getSsoTokenParams))
.thenApply(response -> {
return response.ssoToken();
return response;
})
.exceptionally(throwable -> {
throw new AmazonQPluginException("Failed to fetch SSO token", throwable);
Expand Down
Loading

0 comments on commit a603a80

Please sign in to comment.