Releases: neo4j-contrib/neo4j-sproc-compiler
Release "Wally B. Feed"
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!)
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):
- 1.3 : fixes for #43 and #52
- 1.4 : fix #42, so that this project can become a plugin of the official Neo4j procedure compiler
Let's keep strong 💪 and hope for the best!
1.1 - Release "Rum Rogers Jr."
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"
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
- [#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"
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"
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"
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!
- [#28] Procedure classes without a public no-argument constructor will trigger a compilation error 💣
- [#10] Emit warning when any type other than
GraphDatabaseService
andLog
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"
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"
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"
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
arepublic
, 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 📖