JPA/Spring annotation support (cross-language-JAM?)

The recent improvements to the fake PSI (exposing Scala annotations in the Java model) have been very useful.
For examples, component-scanned Scala spring beans are now recognized, JPA diagram works (not yet with field annotations though..).

However, in the Java world, IDEA provides much more.
For JPA annotations, references to database columns and relationship fields are provided.
For spring annotations, references to other spring beans (for instance, inside @Qualifier) are provided.

Many current-day usages of Scala take an incremental approach, integrating with common and well-known frameworks like JPA and Spring.
As such, having a higher level of code assistance inside the annotations would be beneficial.

In a discussion Peter Gromov mentioned that JAM should (could?) provide cross-language support already.
I've never worked with JAM myself. I'm curious though if indeed some level of language-agnostic framework annotation model could be provided.
After all, semantics of @Table or @Qualifier are the same, whether the class is written in Java or Scala (or Groovy).

Alexander, do you have some thoughs on this? Is there some potential to (re)use some of the exising code of the Jetbrains Spring/JPA plugins?
Or does this stuff need to be build from the ground up, with specific extension points and reference providers?
I realize that for the Scala plugin, there is much more lower-level fundamental work waiting. Still, the convenience provided by IDEA in Java..sets expectations ;)


1 comment
Comment actions Permalink

Cross-language support in IDEA is provided. There is no just good cross-language support in Scala plugin. Also there are few problems with fields, which are different from Java. So we need some general solution for it, I have few ideas how to do it. Anyway I'll do some foray on Spring/JPA etc. support pretty soon. Same things also right for all IDEA's features, which can be cross-language.

Best regards,
Alexander Podkhalyuzin.


Please sign in to leave a comment.