carestra
carestra

Reputation: 75

JHipster 7.1.0: Failed to use jdl-import, throws Error looking for otherEntity User at

Im using java Openjdk 11.0.11, JHipster 7.1.0 and node v14.17.3 Im creating a simple microservice (one backend and one gateway) but JHipster fails to create using the jdl command (jdl-import), it throws

Error: Error looking for otherEntity User at Tag,Product,Blog,Post
    at /Users/carestra/.nvm/versions/node/v14.17.3/lib/node_modules/generator-jhipster/generators/entity/index.js:560:19
    at Array.forEach (<anonymous>)
    at EntityGenerator.loadRelationships (/Users/carestra/.nvm/versions/node/v14.17.3/lib/node_modules/generator-jhipster/generators/entity/index.js:556:36)
    at Object.<anonymous> (/Users/carestra/.nvm/versions/node/v14.17.3/lib/node_modules/generator-jhipster/node_modules/yeoman-generator/lib/index.js:1024:25)
    at /Users/carestra/.nvm/versions/node/v14.17.3/lib/node_modules/generator-jhipster/node_modules/run-async/index.js:49:25
    at new Promise (<anonymous>)
    at /Users/carestra/.nvm/versions/node/v14.17.3/lib/node_modules/generator-jhipster/node_modules/run-async/index.js:26:19
    at runLoop.add.once.once (/Users/carestra/.nvm/versions/node/v14.17.3/lib/node_modules/generator-jhipster/node_modules/yeoman-generator/lib/index.js:1025:11)
    at Immediate.<anonymous> (/Users/carestra/.nvm/versions/node/v14.17.3/lib/node_modules/generator-jhipster/node_modules/grouped-queue/lib/subqueue.js:48:34)
    at processImmediate (internal/timers.js:464:21)
INFO! Generator app child process exited with code 1
ERROR! Error executing app --reproducible --no-force --with-entities --no-dry-run --no-whitespace --no-bail --no-skip-regenerate --no-skip-yo-resolve --from-jdl --no-skip-cache --no-skip-install --no-force-install --no-ask-answered --no-defaults --no-skip-git
Error: Error executing app --reproducible --no-force --with-entities --no-dry-run --no-whitespace --no-bail --no-skip-regenerate --no-skip-yo-resolve --from-jdl --no-skip-cache --no-skip-install --no-force-install --no-ask-answered --no-defaults --no-skip-git
    at ChildProcess.<anonymous> (/Users/carestra/.nvm/versions/node/v14.17.3/lib/node_modules/generator-jhipster/cli/import-jdl.js:194:16)
    at ChildProcess.emit (events.js:375:28)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12)

It does create the folders blogBackend, blogGateWat and docker-compose .... but the folder blogBackend is empty.

If I move to blogGateWay and run: mvn clean install

I get an exception also;

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[ERROR] java.util.ServiceConfigurationError: org.junit.platform.launcher.TestExecutionListener: Provider reactor.blockhound.junit.platform.BlockHoundTestExecutionListener could not be instantiated
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:16 min
[INFO] Finished at: 2021-07-20T09:32:12+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M5:test (default-test) on project blog-gate-way: There are test failures.
[ERROR]
[ERROR] Please refer to /Users/carestra/_A/repos/JHipster/microservices/blog1/blogGateWay/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] There was an error in the forked process
[ERROR] java.util.ServiceConfigurationError: org.junit.platform.launcher.TestExecutionListener: Provider reactor.blockhound.junit.platform.BlockHoundTestExecutionListener could not be instantiated
[ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process
[ERROR] java.util.ServiceConfigurationError: org.junit.platform.launcher.TestExecutionListener: Provider reactor.blockhound.junit.platform.BlockHoundTestExecutionListener could not be instantiated
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:733)
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:305)
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:265)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1314)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1159)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:932)
[ERROR]     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
[ERROR]     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
[ERROR]     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
[ERROR]     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
[ERROR]     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
[ERROR]     at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
[ERROR]     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
[ERROR]
[ERROR] -> [Help 1]
[ERROR]

I will post the instantiated error as a separate question.

Any idea how to solve this?

Here is the jdl-file (blog.jdl) that I use:

application {
  config {
    applicationType gateway,
    baseName blogGateWay,
    packageName com.carestra.learn.jhipster.gateway,
    authenticationType jwt,
    serviceDiscoveryType eureka,
    buildTool maven,
    reactive true, // default true
    skipClient false,
    skipServer false,
    skipUserManagement false,
    databaseType sql,
    prodDatabaseType postgresql,
    devDatabaseType h2Disk,
    cacheProvider ehcache,
    testFrameworks [cypress]
  }

  entities *
}

application {
  config {
    applicationType microservice,
    baseName blogBackend,
    packageName com.carestra.learn.jhipster.backend,
    authenticationType jwt,
    serviceDiscoveryType eureka,
    buildTool maven,
    reactive true,
    skipClient true,
    skipUserManagement true,
    clientFramework react,
    databaseType sql,
    prodDatabaseType postgresql,
    devDatabaseType h2Disk,
    cacheProvider hazelcast,
    enableHibernateCache true,
    testFrameworks [cypress]
  }

  entities *
}

entity Blog {
  name String required minlength(3)
  handle String required minlength(2)
}

entity Post {
  title String required
  content TextBlob required
  date Instant required
}

entity Tag {
  name String required minlength(2)
}

entity Product {
  title String required
  price BigDecimal required min(0)
  image ImageBlob
}

relationship ManyToOne {
  Blog{user(login)} to User
  Post{blog(name)} to Blog
}

relationship ManyToMany {
  Post{tag(name)} to Tag{post}
}


microservice * with blogBackend

deployment {
  deploymentType docker-compose
  appsFolders [blogGateWay, blogBackend]
  dockerRepositoryName "carestra"
  serviceDiscoveryType eureka
}

Steps to reproduce: 1 - Create folder blog 2 - Move to folder blog 3 - Run: jhipster jdl blog.jdl 4 - Mover to blogGateWay 5 - Run: mvn clean install

Running: jhpster info om folder blog gives me;

jhipster info
INFO! Using JHipster version installed globally
Welcome to the JHipster Information Sub-Generator

##### **JHipster Version(s)**

```
/<intentionally removed info>/blog
└── (empty)

```

cat: no such file or directory: .yo-rc.json

##### **JHipster configuration, a `.yo-rc.json` file generated in the root folder**


<details>
<summary>.yo-rc.json file</summary>
<pre>

</pre>
</details>


##### **JDL for the Entity configuration(s) `entityName.json` files generated in the `.jhipster` directory**

<details>
<summary>JDL entity definitions</summary>

<pre>

</pre>
</details>


##### **Environment and Tools**

openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
Eclipse OpenJ9 VM AdoptOpenJDK-11.0.11+9 (build openj9-0.26.0, JRE 11 Mac OS X amd64-64-Bit Compressed References 20210421_957 (JIT enabled, AOT enabled)
OpenJ9   - b4cc246d9
OMR      - 162e6f729
JCL      - 7796c80419 based on jdk-11.0.11+9)

git version 2.23.0

node: v14.17.3

npm: 6.14.13

Docker version 20.10.7, build f0df350

docker-compose version 1.29.2, build 5becea4c


No change to package.json was detected. No package manager install will be executed.
Congratulations, JHipster execution is complete!
Sponsored with ❤️  by @oktadev.

Running: jhpster info om folder blogGateWay gives me;

jhipster info
INFO! Using JHipster version installed locally in current project's node_modules
Welcome to the JHipster Information Sub-Generator

##### **JHipster Version(s)**

```
[email protected] /<intentional removed>/blog/blogGateWay
└── (empty)

```


##### **JHipster configuration, a `.yo-rc.json` file generated in the root folder**


<details>
<summary>.yo-rc.json file</summary>
<pre>
{
  "generator-jhipster": {
    "authenticationType": "jwt",
    "clientFramework": "angularX",
    "serverPort": "8080",
    "serviceDiscoveryType": "eureka",
    "skipUserManagement": false,
    "withAdminUi": true,
    "baseName": "blogGateWay",
    "buildTool": "maven",
    "databaseType": "sql",
    "devDatabaseType": "h2Disk",
    "cacheProvider": "no",
    "enableHibernateCache": false,
    "enableSwaggerCodegen": false,
    "enableTranslation": true,
    "jhiPrefix": "jhi",
    "languages": ["en"],
    "messageBroker": false,
    "prodDatabaseType": "postgresql",
    "searchEngine": false,
    "skipClient": false,
    "testFrameworks": ["cypress"],
    "websocket": false,
    "applicationType": "gateway",
    "packageName": "com.carestra.learn.jhipster.gateway",
    "packageFolder": "com/carestra/learn/jhipster/gateway",
    "reactive": true,
    "skipServer": false,
    "jhipsterVersion": "7.1.0",
    "clientPackageManager": "npm",
    "dtoSuffix": "DTO",
    "entitySuffix": "",
    "clientTheme": "none",
    "clientThemeVariant": "",
    "applicationIndex": 0,
    "applications": {
      "blogBackend": {
        "serverPort": "8081",
        "applicationIndex": 1
      }
    },
    "skipCheckLengthOfIdentifier": false,
    "skipFakeData": false,
    "blueprints": [],
    "otherModules": [],
    "pages": [],
    "nativeLanguage": "en",
    "creationTimestamp": 1626765856461,
    "jwtSecretKey": "YourJWTSecretKeyWasReplacedByThisMeaninglessTextByTheJHipsterInfoCommandForObviousSecurityReasons",
    "devServerPort": 4200,
    "entities": ["Tag", "Product", "Blog", "Post"],
    "lastLiquibaseTimestamp": 1626766096000
  }
}

</pre>
</details>


##### **JDL for the Entity configuration(s) `entityName.json` files generated in the `.jhipster` directory**

<details>
<summary>JDL entity definitions</summary>

<pre>
entity Tag {
  name String required minlength(2)
}
entity Product {
  title String required
  price BigDecimal required min(0)
  image ImageBlob
}
entity Blog {
  name String required minlength(3)
  handle String required minlength(2)
}
entity Post {
  title String required
  content TextBlob required
  date Instant required
}
relationship ManyToOne {
  Blog{user(login)} to User
  Post{blog(name)} to Blog
}
relationship ManyToMany {
  Post{tag(name)} to Tag{post}
}

microservice Tag, Product, Blog, Post with blogBackend
clientRootFolder Tag, Product, Blog, Post with blogBackend

</pre>
</details>


##### **Environment and Tools**

openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
Eclipse OpenJ9 VM AdoptOpenJDK-11.0.11+9 (build openj9-0.26.0, JRE 11 Mac OS X amd64-64-Bit Compressed References 20210421_957 (JIT enabled, AOT enabled)
OpenJ9   - b4cc246d9
OMR      - 162e6f729
JCL      - 7796c80419 based on jdk-11.0.11+9)

git version 2.23.0

node: v14.17.3

npm: 6.14.13

Docker version 20.10.7, build f0df350

docker-compose version 1.29.2, build 5becea4c


No change to package.json was detected. No package manager install will be executed.
Congratulations, JHipster execution is complete!
Sponsored with ❤️  by @oktadev.

Upvotes: 1

Views: 2051

Answers (2)

Khasan 24-7
Khasan 24-7

Reputation: 467

Almost the same error took me an hour to find the solution. In my case I was writing relationship entity name incorrectly, so writing correct relationship entity name did the trick. I was writing:

ChatToSearch

but my entity name was:

ChatsToSearch

So, I have corrected it and it worked!

Upvotes: 0

Ga&#235;l Marziou
Ga&#235;l Marziou

Reputation: 16294

The error occurs because you're using JWT authentication type and not OAuth2.

For OAuth2, there is a mechanism in the microservice to extract user data from token and save it to the service's database.

Unfortunately, I could not find any doc about this so I read the code at https://github.com/jhipster/generator-jhipster/blob/main/utils/entity.js where the test to determine whether to activate this user snapshot is:

  entityWithConfig.saveUserSnapshot =
    entityWithConfig.applicationType === MICROSERVICE &&
    entityWithConfig.authenticationType === OAUTH2 &&
    hasBuiltInUserField &&
    entityWithConfig.dto === NO_MAPPER;

You can see that there is also a condition about not using a DTO.

This mechanism has some restrictions though because the user's data is updated only when service API gets called, you can imagine cases where a user has been updated in gateway and a background job is running in service that will use a stale version of the user.

For JWT, this has not been implemented because the token does not contain enough data about user, it contains only the login and roles.

So with JWT, can you store in Blog only the ID (or login) of a User and not define a relationship with User entity because it exists only in gateway database.

Upvotes: 1

Related Questions