Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Identify component factories by identifier string

Abierto
#99 0 comentarios 1 reacción 1 asignado Ver en GitHub

@kevinwallimann ya está trabajando en esto.

Desde el 19/2/2020.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
28/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
scala

Línea de trabajo

Empieza leyendo ComponentFactory y ClassLoaderUtils, además del trabajo de SPI referenciado en #83. La tarea consiste en añadir getIdentifier con el nombre de la clase como valor predeterminado y, después, cambiar la búsqueda de factorías para que encuentre por identificador las factorías proporcionadas por ServiceLoader. Se considera terminado cuando las configuraciones existentes basadas en nombres de clase siguen funcionando y las configuraciones pueden usar en su lugar un identificador estable.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

Description
Currently, component factories are loaded in ClassLoaderUtils given their fully qualified classnames. The classname is passed by the configuration. (e.g. component.writer)

That means that components don't have the possibility to be refactored (renaming, moving to a different package) without introducing a breaking change which would require updating any existing configuration that uses that component.

Tasks

  • Add a method getIdentifier: String to the interface ComponentFactory. getClass.getName may be used as a default value. (so this feature won't be a breaking change)
  • Implementing components are responsible for providing a unique identifier. It's advisable to prefix the identifier with a human readable name, because it will be referenced in the configuration, logged, etc..
  • Use getIdentifier to load the factory in ClassLoaderUtils. Currently, it loads the class directly given the class name. This approach doesn't work to efficiently load the factory by the identifier. With #83, component factories can be loaded using the Service Provider Interface (SPI), i.e. with ServiceLoader. All factories expose the getIdentifier method, that's how it can be found

Other

  • The same identifier might be used by each component to prefix its configuration properties to avoid name clashes.
Lenguaje dominante
Scala
Estrellas
47
Forks
14
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de AbsaOSS/hyperdrive

Todos los issues de AbsaOSS/hyperdrive

Issues similares

Más issues de Scala

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.