aws / aws/aws-sdk-java-v2

Equivalent of `com.amazonaws.util.json.Jackson` in sdk v2

Aperta
#5,251 5 commenti 0 reazioni 0 assegnatari Vedi su GitHub
documentation needs-review p2
Lingua principale
Java
Stelle
2.6k
Fork
1k
Merge medio
2g 9h
PR unite (30g)
51

Descrizione

### Describe the issue

I am trying to migrate some code from the SDK v1 to the SDK v2 and one of the last hurdle is the following piece of code:

```java
import com.amazonaws.util.json.Jackson;
...
private static Optional deserializeConfig(final Map config) {
if (config == null) {
return Optional.empty();
}
for (final Class clazz : new Class[] {AwsKeyPairConfig.class, AwsKmsConfig.class}) {
try {
return Optional.of((AwsConfig) Jackson.getObjectMapper().convertValue(config, clazz));
} catch (final IllegalArgumentException exception) {
LOGGER.log(Level.INFO, "Failed to deserialize AWS client side encryption config.", exception);
}
}
throw new Exception("Failed to deserialize AWS client side encryption config.")
}
}
```
The classes involved are:

```java
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import software.amazon.awssdk.regions.Region;

public class AwsKmsConfig extends AwsConfig {

@JsonProperty("key_id")
public final String keyId;

@JsonCreator
public AwsKmsConfig(
@JsonProperty(value = "region", required = true) final Region region,
@JsonProperty(value = "key_id", required = true) final String keyId) {
super(region);
this.keyId = keyId;
}
}
```

```java
import software.amazon.awssdk.regions.Region;

public class AwsKeyPairConfig extends AwsConfig {

public final String publicKey;

public final String privateKey;

public final PublicKey deserializedPublicKey;

public final PrivateKey deserializedPrivateKey;

/**
* Constructor.
*
* @param region the AWS region in which the S3 objects are stored
* @param publicKey public key to read data in the bucket
* @param privateKey private key to read data in the bucket
*/
@JsonCreator
public AwsKeyPairConfig(
@JsonProperty(value = "region", required = true) final Region region,
@JsonProperty(value = "public_key", required = true) final String publicKey,
@JsonProperty(value = "private_key", required = true) final String privateKey) {
super(region);
this.privateKey = privateKey;
this.publicKey = publicKey;
final Pair deserializedKeys =
KeyPairConfig.getDeserializedKeys(publicKey, privateKey);
this.deserializedPublicKey = deserializedKeys.getLeft();
this.deserializedPrivateKey = deserializedKeys.getRight();
}
}

```

and

```java
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import software.amazon.awssdk.regions.Region;

public class AwsConfig {

@JsonProperty("region")
public final Region region;

@JsonCreator
public AwsConfig(@JsonProperty(value = "region", required = true) final Region region) {
this.region = region;
}
}
```

What is the equivalent to use in the SDK v2, I did not find anything about it in the documentation, except this opened discussion: https://github.com/aws/aws-sdk-java-v2/discussions/3904 and this issue https://github.com/aws/aws-sdk-java-v2/issues/2254

Thanks in advance

### Links

https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration-serialization-changes.html

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Leggi prima la guida sulle modifiche alla serializzazione delle migrazioni e la discussione e l’issue collegate. Confronta l’uso di Jackson in SDK v1 con le funzionalità di serializzazione di SDK v2 per le classi di configurazione mostrate; il lavoro è completato quando viene identificato o documentato un equivalente supportato, comprese eventuali limitazioni o passaggi di migrazione necessari.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
api
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.