Skip to content

[Bug]: Module Resource Files Not Found When Using FileSystemHelper.readJson #552

Open
@halber

Description

@halber

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

When using the io.neonbee.internal.helper.FileSystemHelper.readJson method to load resource files within a NeonBee module, the resource file cannot be found. This occurs because the FileSystemHelper.readJson method relies on Vert.x's internal file resolver, which uses the application ClassLoader. The application ClassLoader is only aware of resource files within the NeonBee core, not those in the module's resources.

Expected Behavior

The FileSystemHelper.readJson method should be able to locate and load resource files from within the module’s resources when called from a NeonBee module.

Steps To Reproduce

  1. Create a NeonBee module with its own resources, such as a JSON file (somefile.json).
  2. Use the FileSystemHelper.readJson method in the module to attempt to load the JSON file from the module's resources.
  3. Observe that the file cannot be found, and an error is thrown.

Environment

- NeonBee: 0.37.0

Relevant log output

No response

Anything else?

A workaround involves manually loading the resource file using the module's ClassLoader, as shown in the following code snippet:

Future.future(promise -> {
    InputStream resourceAsStream = this.getClass().getClassLoader()
            .getResourceAsStream("somefile.json");

    try (BufferedReader reader = new BufferedReader(new InputStreamReader(resourceAsStream, StandardCharsets.UTF_8))) {
        StringBuilder stringBuilder = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            stringBuilder.append(line);
        }
        promise.complete(new JsonObject(stringBuilder.toString()));
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
})

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingneeds triageThis issue needs to be investigated and confirmed as a valid

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions