Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JavaGenerator and JavaFileGenerator has too different arguments #1577

Open
Tenischev opened this issue Oct 18, 2023 · 1 comment
Open

JavaGenerator and JavaFileGenerator has too different arguments #1577

Tenischev opened this issue Oct 18, 2023 · 1 comment
Labels
enhancement New feature or request

Comments

@Tenischev
Copy link
Member

Tenischev commented Oct 18, 2023

Reason/Context

I observed the strange difference between how JavaGenerator and JavaFileGenerator are instanced and used.
Issue found during exploration of possibility to use Modelina for model generation in Java spring template, see #asyncapi/java-spring-template#342
In case of JavaGenerator:

const generator = new JavaGenerator({
  collectionType: "List",
  presets: [
    {
      preset: JAVA_COMMON_PRESET,
      options: {
        classToString: true
      }
    }
  ]
});

// const input = ...AsyncAPI document
const models = await generator.generate(input)

In case of JavaFileGenerator:

        const javaGenerator = new modelina.JavaFileGenerator();

        javaGenerator.generateToFiles(generator.asyncapi, path.resolve(generator.targetDir, 'src/main/java/com/asyncapi/modelina/'), {
            collectionType: "List",
            presets: [
                {
                    preset: modelina.JAVA_COMMON_PRESET,
                    options: {
                        equal: true,
                        hashCode: true,
                        classToString: true
                    }
                }
            ]
        }, true)

So, difference in how options are passed.

Description

I would expect similar way to create an instance of JavaGenerator and JavaFileGenerator. Thus JavaFileGenerator is instanced with options and generateToFiles method is not require them. This means, that AbstractFileGenerator interface also should be changed.

During Slack discussion there was argument from @jonaslagoni that options are passed to generateToFiles because of package name which is related to outputPath.
But for Java class it would be incorrect if outputPath not match with package name.
Thus, additionally I would suggest to use following logic to determine destination path where files will be stored:
resultPath = outputDir + packageName
e.g.
outputDir = "generated-source"
packageName = "com.asyncapi.template.java"
then
resultPath = generated-source/com/asyncapi/template/java

Copy link
Contributor

This issue has been automatically marked as stale because it has not had recent activity 😴

It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.

There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.

Let us figure out together how to push this issue forward. Connect with us through one of many communication channels we established here.

Thank you for your patience ❤️

@github-actions github-actions bot added stale and removed stale labels Feb 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant