optimizely / optimizely/java-sdk

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

Ouverte
#568 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug
Langage dominant
Java
Étoiles
44
Forks
32
Merge moyen
8 h 39 min
PR mergées (30 j)
1

Description

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

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez à la ligne 11 de core-api/build.gradle et examinez la manière dont la dépendance org.json est déclarée pour JsonConfigParser. Exécutez la reproduction Maven signalée avec la version 4.1.1 de core-api, puis vérifiez que les consommateurs peuvent exécuter JsonConfigParser sans déclarer eux-mêmes org.json.

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

Évaluation

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

Recevez les nouvelles issues par e-mail

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