Skip to content

Releases: neo4j-contrib/neo4j-sproc-compiler

Release "Wally B. Feed"

01 May 18:36
Compare
Choose a tag to compare

This release takes 1.1 further by introducing more control over what can be exported as DSV 🎛

What's new since 1.1 💹

  • [#48] Allow first field to be delimited as well

the first field can be prefixed with the configured or default delimiter (handy for working with Asciidoctor!)

  • [#51] Add return type to signature field
  • [#50] Control whether fields can be quoted or not

fields were always quoted, now you can disable that! 💃

As usual, the full documentation is here. Enjoy 🍾

Here is a possible timeline of releases (not that I commit to that in any way):

Let's keep strong 💪 and hope for the best!

1.1 - Release "Rum Rogers Jr."

20 Mar 15:45
Compare
Choose a tag to compare

The big focus of this release is to allow users to export DSV (Delimiter-Separated Values) in a configurable way. 🚀

While the compiler is now an official and proud part of Neo4j, this new functionality is, at least temporarily, implemented only here. ❗

The full documentation is here 🔖

Here is the list of main changes since last release:

  • Target (min) version is now Neo4j 3.1.0
  • [#41] Allow DSV export of procedures/functions

I will be working into transforming this repository into some kind of plugin, if possible.
Stay tuned 🎉

1.1-M01 - Release "LeChuck"

06 Oct 11:50
Compare
Choose a tag to compare

This release is probably the last one you will see before neo4j/neo4j#8068 is merged 👍
This one targets Neo4j 3.1.0-M10 and the introduction of user-defined functions 😮

Here is what has been introduced since 1.0.4 :shipit:

  • [#29] Check that @PerformWrites configuration is consistent with the newly introduced Mode
  • [#27] Support the new name attribute of @Procedure
  • [#22] Support user-defined functions ⭐️
    • functions cannot be in the root namespace
    • apply the same type/parameter/name collision rules as for the procedures

Enjoy and grab it while it's hot! 🔥

1.0.4 - Release "Rapp Scallion"

01 Oct 12:23
Compare
Choose a tag to compare

Not much to see here, except the change of some internals... like some Rapp Scallion bones 💀

This project could not remain at peace before release the last changes, mainly some test reorg 👷

You probably don't need to upgrade to this version 😄

1.0.3 - Release "Stan S. Stanman"

25 Sep 11:31
Compare
Choose a tag to compare

It is nice to be reminded that something is probably not done the way it should. 👊

Well, sometimes, there is no way around it, so no need to be reminded all the time, right, Stan, leave us alone for a minute, will you?! 🙊

So this tiny release is about ignoring the specific warnings introduced in the "Voodoo Lady" release.

It is a piece of 🍰 , just pass -AIgnoreContextWarnings to the compiler as an option and it will rest in peace 😶

Enjoy and grab it while it's hot! 🔥

1.0.2 - Release "Voodoo lady"

21 Sep 17:42
Compare
Choose a tag to compare

No one saw this release coming, not even Voodoo Lady! 🎉

This release is still intended for Neo4j 3.0.x procedure validation. 😉
The upcoming versions for 3.1.x will be prefixed by 1.1.

The current release improves some and adds new validation rules:

  • All non-static fields that are not annotated with @Context will trigger a compilation error
  • Compilation will now fail if a Map does not declare its key as String instances

the nice thing about compile-time annotation processor is that they give you to this information, it is not erased yet! :neckbeard:

  • [#28] Procedure classes without a public no-argument constructor will trigger a compilation error 💣
  • [#10] Emit warning when any type other than GraphDatabaseService and Log are injected with @Context

A big thanks to @fpavageau for implementing half of this release (and reminding me that #28 was not specific to Neo 3.1).

Enjoy and grab it while it's hot 🔥

1.0.1 - Release "Largo LaGrande"

18 Sep 06:29
Compare
Choose a tag to compare

A release as tiny as Largo!

That's what happens when one is too eager to release and notices a tiny glitch afterwards 😅
This tiny release just consists in properly declaring the supported source version of the annotation processor responsible for @Context. Fun, right? 👍

Anyway, grab it while it's hot! 🔥

1.0 - Release "Guybrush Threepwood"

18 Sep 06:10
Compare
Choose a tag to compare

Look behind you, a three-headed monkey!

More seriously, here come a new release and the general availability of neo4j-sproc-compiler.
Apart from being cleanup a lot, here are the notable changes that have been pushed to the codebase since the last milestone:

  • [#24] Also validate List element types for record and parameter types

Somehow, I completely missed this in the milestone. 😫

  • [#23] Fix procedure unicity check

The previous unicity check was only taking account of the default procedure names (package+method name). 😨 This is obviously incorrect when procedures override their name via their value() method. This is now fixed! 🎉

Next release will focus on the changes introduced in the soon-to-come Neo4j 3.1 and notably User-Defined Functions! 💃

In the mean time, enjoy the release and grab it while it's hot! 🔥

1.0-M01 - Release "Anders Nawroth"

17 Jun 20:01
Compare
Choose a tag to compare

Anders Nawroth

Neo4j manual has been the first Living Documentation example I ever encountered, before I even heard of the term.

Most (if not all) of Neo4j manual quality is due to Anders Nawroth work. I did not know Anders personally, although his work has inspired me a lot in general and for this project, in particular.

The best documentation is the one that is readable to the target audience and the easiest/cheapest to maintain by its authors.

Where is the best documentation you can get as a developer from? The one that comes from the compiler!

neo4j-sproc-compiler is a compile-time annotation processor that implements exhaustive checks on @org.neo4j.procedure.Procedure and @org.neo4j.procedure.Context usage.

The main advantage is that most of the checks are now caught immediately (rather than being checked by custom integration tests or Neo4j runtime)!

neo4j-sproc-compiler implements the following controls:

  • [#1][#12] Check that procedure declared parameter types are supported
  • Check that the declared return type is a java.util.stream.Stream
  • [#2][#13] Check that declared record field types are supported and public
  • [#3] Check that procedure class fields annotated with @Context are public, nonstatic and nonfinal
  • [#4] Check that the processed packages do not contain duplicate procedure names

🔥 1.0-M01 is on Maven Central, grab it while it is hot 🔥
📖 README.md will help you set everything up 📖