Comparable Arns
- Lenguaje dominante
- Java
- Estrellas
- 2.6k
- Forks
- 1k
- Merge medio
- 2 d 9 h
- PR fusionados (30 d)
- 51
Descripción
### 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)
Guía de contribución
Línea de trabajo
Comienza con Arn.java, el punto de entrada mencionado en el issue, y revisa cómo se exponen los componentes de ARN y sus representaciones como cadenas. Implementa el comportamiento comparable solicitado utilizando uno de los enfoques de ordenación propuestos y, después, verifica que las instancias de Arn se puedan utilizar en colecciones ordenadas y que el orden sea consistente.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- backend
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 38/100