aws / aws/aws-sdk-java-v2

Comparable Arns

Ouverte
#2,955 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
feature-request p3
Langage dominant
Java
Étoiles
2.6k
Forks
1k
Merge moyen
2 j 9 h
PR mergées (30 j)
51

Description

### Describe the feature

It'd be nice if [Arn](https://github.com/aws/aws-sdk-java-v2/blob/master/core/arns/src/main/java/software/amazon/awssdk/arns/Arn.java) implemented `Comparable`.

This would make Arns usable in sorted collection types, etc.

### Is your Feature Request related to a problem?

Not really.
- We can use `HashMap` instead of `TreeMap`, etc.
- We can sort Arns by converting to strings, sorting, then converting back to Arns.

So this would just make Arns more flexible.

### Proposed Solution

Here is a straightforward implementation:

public static final Comparator COMPARATOR =
Comparator.comparing(Arn::toString);

@Override
public int compareTo(Arn rhs) {
return COMPARATOR.compare(this, rhs);
}

Here is a more elaborate one, which may be more efficient by avoiding the String construction:

public static final Comparator COMPARATOR =
Comparator.comparing(Arn::partition)
.thenComparing(Arn::service)
.thenComparing(x -> x.region, Comparator.nullsLast(Comparator.naturalOrder()))
.thenComparing(x -> x.accountId, Comparator.nullsLast(Comparator.naturalOrder()))
.thenComparing(Arn::resourceAsString);

@Override
public int compareTo(Arn rhs) {
return COMPARATOR.compare(this, rhs);
}

### Describe alternatives you've considered

_No response_

### Acknowledge

- [X] I may be able to implement this feature request

### AWS Java SDK version used

aws-sdk-java-v2 c0eb030fceaa9ccb64ad8acd74445f4e5ee3a547

### JDK version used

openjdk version "1.8.0_312"

### Operating System and version

MacOS Big Sur Version 11.6.2 (20G314)

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par Arn.java, le point d’entrée indiqué dans l’issue, et examinez comment les composants ARN et les représentations sous forme de chaînes sont exposés. Implémentez le comportement comparable demandé en utilisant l’une des approches de classement proposées, puis vérifiez que les instances de Arn peuvent être utilisées dans des collections triées et que l’ordre est cohérent.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
backend
Type d'issue
Fonctionnalité
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
38/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.