optimizely / optimizely/java-sdk

[BUG] Required dependency missing: org.json:json

Abierto
#568 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug
Lenguaje dominante
Java
Estrellas
44
Forks
32
Merge medio
8 h 39 min
PR fusionados (30 d)
1

Descripción

Is there an existing issue for this?
  • I have searched the existing issues
SDK Version
<dependency>
  <groupId>com.optimizely.ab</groupId>
  <artifactId>core-api</artifactId>
  <version>4.1.1</version>
</dependency>
Current Behavior

Using JsonConfigParser leads to runtime exception, because it requires org.json.JsonObject from org.json:json which is not provided as an implementation dependency.

JsonConfigParser https://github.com/optimizely/java-sdk/blob/master/core-api/src/main/java/com/optimizely/ab/config/parser/JsonConfigParser.java

Dependency excluded here: https://github.com/optimizely/java-sdk/blob/master/core-api/build.gradle#L11

Expected Behavior

Users of your library should be able to use JsonConfigParser without knowing about its internal dependencies.

Steps To Reproduce

Create a Project with
pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <artifactId>repro</artifactId>
    <groupId>repro</groupId>
    <version>1.0.0</version>


    <dependencies>
        <dependency>
            <groupId>com.optimizely.ab</groupId>
            <artifactId>core-api</artifactId>
            <version>4.1.1</version>
        </dependency>
    </dependencies>
</project>

and settings.xml

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
          https://maven.apache.org/xsd/settings-1.0.0.xsd">

</settings>

and src/main/java/Main.java

import com.optimizely.ab.config.parser.ConfigParseException;
import com.optimizely.ab.config.parser.JsonConfigParser;

public class Main {

    public static void main(String[] args) {

        System.out.println("Hello, World!");

        JsonConfigParser parser = new JsonConfigParser();
        try {
            parser.parseProjectConfig("{}");
        } catch (ConfigParseException e) {
            e.printStackTrace();
        }
    }
}

% mvn clean compile
% mvn exec:java -Dexec.mainClass=Main

Java Version

% mvn -version
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /usr/local/Cellar/maven/3.9.9/libexec
Java version: 11.0.22, vendor: Amazon.com Inc.

Link

No response

Logs

No response

Severity

No response

Workaround/Solution

Solution
Change https://github.com/optimizely/java-sdk/blob/master/core-api/build.gradle#L11
from compileOnly to implementation

Alternatively, do not expose JsonConfigParser to consumers of your library.

Recent Change

No response

Conflicts

No response

Guía de contribución

Abrir la guía de contribución

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.

Línea de trabajo

Comienza en core-api/build.gradle, línea 11, e inspecciona cómo se declara la dependencia org.json para JsonConfigParser. Ejecuta la reproducción de Maven indicada con la versión 4.1.1 de core-api y, a continuación, verifica que los consumidores puedan ejecutar JsonConfigParser sin declarar org.json por su cuenta.

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

Evaluación

Stack tecnológico
java
Área
build-system
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.