cypher-dsl

A Java DSL (Builder) for the Cypher Query Language

APACHE-2.0 License

Stars
188
Committers
29

Bot releases are hidden (Show)

cypher-dsl -

Published by michael-simons about 1 year ago

๐Ÿš€ Features

  • Add callbacks for function and procedure invocations. (#764, #758, also backported as 2022.9.0, thanks to @ClemDoum for your input here)

๐Ÿ”„๏ธ Refactorings

  • Make TreeNode pretty printing prettier.

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump com.google.guava:guava (#769)
    • Bump org.checkerframework:checker-qual (#768)
    • Bump com.puppycrawl.tools:checkstyle (#767)
    • Bump org.asciidoctor:asciidoctorj-diagram (#766)
    • Bump org.neo4j.driver:neo4j-java-driver (#765)
    • Bump org.neo4j:neo4j-cypher-javacc-parser from 5.9.0 to 5.10.0 (#761)
    • Bump checker-qual from 3.35.0 to 3.36.0 (#757)
    • Bump spring-data-neo4j from 7.1.1 to 7.1.2 (#759)
    • Bump reactor-bom from 2022.0.8 to 2022.0.9 (#760)
    • Bump org.junit:junit-bom from 5.9.3 to 5.10.0 (#762)
    • Bump org.springframework.boot:spring-boot-starter-parent (#763)
cypher-dsl -

Published by michael-simons about 1 year ago

๐Ÿš€ Features

  • Add callbacks for function and procedure invocations. (#758)

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Update Spring Data Neo4j from 6.3.5 to 6.3.14
    • Update Neo4j from 4.4.12 to 4.4.23
    • Update Neo4j Java Driver from 4.4.9 to 4.4.12
cypher-dsl -

Published by michael-simons over 1 year ago

Wait what, another minor?
Yes, we added new methods to some builders for #753 and a new method in #756 that takes in the direction of a relationship.
While these are not interfaces for you to implemented and the methods are defaulted, semver requires a minor bump nevertheless.

Thanks to @israelstmz and ss with almost every release this year, to @ikwattro, for your input!

๐Ÿš€ Features

  • Provide non-builder method for creating relationships. (#756)
  • Allow REMOVE being used after MERGE. (#753)

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump guava from 32.0.1-jre to 32.1.1-jre (#755)
    • Bump neo4j-java-driver from 5.9.0 to 5.10.0 (#754)
    • Bump checkstyle from 10.12.0 to 10.12.1 (#752)
    • Bump spring-boot-starter-parent from 3.1.0 to 3.1.1 (#751)
cypher-dsl -

Published by michael-simons over 1 year ago

2023.4.0 comes with a whole list of new features. As we deprecated two things (the DEFAULT dialect and org.neo4j.cypherdsl.core.Cypher.use(org.neo4j.cypherdsl.core.SymbolicName, org.neo4j.cypherdsl.core.Statement)), your project might break depending on your warning settings. The DEFAULT dialect is now org.neo4j.cypherdsl.core.renderer.Dialect.NEO4J_4 (which keeps on being the default) and the use method has a new overload taking in an expression. You might need to explicitly cast here until we remove the deprecated method for good. This change was necessary to be able to put all functions in the graph.* namespace to use.

Thanks to our reporters, contributors and supporters @xdelox, @ikwattro, @nmervaillie and Rohan Kharwar.

๐Ÿš€ Features

  • Introduce event to capture parsed literals. (#742)
  • Allow retrieval of literals. (#741)
  • Add builder methods for FOREACH. (#740)
  • Provide all functions in the graph.* namespaces. (#734)
  • Provide a way to fill parsed parameters with values. (#732)

๐Ÿ› Bug Fixes

  • Strip off octal prefix.

๐Ÿ”„๏ธ Refactorings

  • Replace DEFAULT dialect with explicit NEO4J_4 dialect. (#736)
  • Use sorted sets everywhere to keep orders of identifiables in the catalog close to users expectations. (#733)

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump neo4j-cypher-javacc-parser from 5.8.0 to 5.9.0 (#743)
    • Bump reactor-bom from 2022.0.7 to 2022.0.8 (#748)
    • Bump mockito.version from 5.3.1 to 5.4.0 (#747)
    • Bump spring-data-neo4j from 7.1.0 to 7.1.1 (#746)
    • Bump native-maven-plugin from 0.9.22 to 0.9.23 (#745)
    • Bump maven-shade-plugin from 3.4.1 to 3.5.0 (#744)
    • Bump guava from 32.0.0-jre to 32.0.1-jre (#726)
    • Bump maven-surefire-plugin from 3.1.0 to 3.1.2 (#725)
    • Bump maven-failsafe-plugin from 3.1.0 to 3.1.2 (#724)
    • Bump asciidoctorj-diagram from 2.2.8 to 2.2.9 (#723)
    • Bump jackson-bom from 2.15.1 to 2.15.2 (#722)
    • Bump testcontainers.version from 1.18.1 to 1.18.3 (#721)
    • Bump checker-qual from 3.34.0 to 3.35.0 (#720)
    • Bump asciidoctorj from 2.5.8 to 2.5.10 (#719)
cypher-dsl -

Published by michael-simons over 1 year ago

๐Ÿ› Bug Fixes

  • Relationship chains didn't explicitly enter their elements. (#718, thanks @xdelox for your contribution)

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump spring-boot-starter-parent from 3.0.6 to 3.1.0 (#711)
    • Bump neo4j-cypher-javacc-parser from 5.7.0 to 5.8.0 (#709)
    • Bump guava from 31.1-jre to 32.0.0-jre (#714)
    • Bump checkstyle from 10.11.0 to 10.12.0 (#717)
    • Bump asciidoctor-maven-plugin from 2.2.3 to 2.2.4 (#716)
    • Bump maven-checkstyle-plugin from 3.2.2 to 3.3.0 (#715)
    • Bump neo4j-java-driver from 5.8.0 to 5.9.0 (#713)
    • Bump jackson-bom from 2.15.0 to 2.15.1 (#710)
    • Bump maven-source-plugin from 3.2.1 to 3.3.0 (#708)
    • Bump testcontainers.version from 1.18.0 to 1.18.1 (#704)
    • Bump native-maven-plugin from 0.9.21 to 0.9.22 (#707)
    • Bump reactor-bom from 2022.0.6 to 2022.0.7 (#706)
    • Bump asciidoctorj-diagram from 2.2.7 to 2.2.8 (#705)
    • Bump checkstyle from 10.10.0 to 10.11.0 (#703)
    • Bump flatten-maven-plugin from 1.4.1 to 1.5.0 (#702)
    • Bump spring-data-neo4j from 7.0.5 to 7.1.0 (#701)
cypher-dsl -

Published by michael-simons over 1 year ago

๐Ÿ“– Documentation

  • Add an example combining existential sub-queries and custom procedure calls (#694)

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump maven-failsafe-plugin from 3.0.0 to 3.1.0 (#698)
    • Bump checker-qual from 3.33.0 to 3.34.0 (#697)
    • Bump maven-surefire-plugin from 3.0.0 to 3.1.0 (#696)
    • Bump moditect-maven-plugin from 1.0.0.RC3 to 1.0.0.Final (#695)
    • Bump checkstyle from 10.9.3 to 10.10.0 (#692)
    • Bump junit-bom from 5.9.2 to 5.9.3 (#691)
    • Bump neo4j-java-driver from 5.7.0 to 5.8.0 (#690)
    • Bump jacoco-maven-plugin from 0.8.9 to 0.8.10 (#689)
    • Bump neo4j-cypher-javacc-parser from 5.6.0 to 5.7.0 (#685)
    • Bump jackson-bom from 2.14.2 to 2.15.0 (#688)
    • Bump spring-boot-starter-parent from 3.0.5 to 3.0.6 (#687)
    • Bump maven-checkstyle-plugin from 3.2.1 to 3.2.2 (#686)
    • Bump mockito.version from 5.3.0 to 5.3.1 (#684)
cypher-dsl -

Published by michael-simons over 1 year ago

๐Ÿš€ Features

  • Allow retrieval of relationship details from the catalog.

๐Ÿ› Bug Fixes

  • Collect LabelExpression's into the catalog, too. (#676)

๐Ÿ”„๏ธ Refactorings

  • Deprecate Functions.id() in favor of elementId(). (#678)

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump native-maven-plugin from 0.9.20 to 0.9.21 (#683)
    • Bump reactor-bom from 2022.0.5 to 2022.0.6 (#682)
    • Bump asciidoctorj from 2.5.7 to 2.5.8 (#681)
    • Bump mockito.version from 5.2.0 to 5.3.0 (#680)
    • Bump spring-data-neo4j from 7.0.4 to 7.0.5 (#679)
    • Bump jacoco-maven-plugin from 0.8.8 to 0.8.9 (#672)
    • Bump testcontainers.version from 1.17.6 to 1.18.0 (#671)
    • Bump maven-enforcer-plugin from 3.2.1 to 3.3.0 (#673)
    • Bump asciidoctorj-diagram from 2.2.4 to 2.2.7 (#670)
    • Bump checker-qual from 3.32.0 to 3.33.0 (#669)
    • Bump flatten-maven-plugin from 1.4.0 to 1.4.1 (#668)
    • Bump joda-time from 2.12.4 to 2.12.5 (#667)
    • Bump neo4j-java-driver from 5.6.0 to 5.7.0 (#666)

๐Ÿ›  Build

  • Skip driver IT without docker. (#665)
cypher-dsl -

Published by michael-simons over 1 year ago

๐Ÿš€ Features

  • Add adapter for Neo4j driver value.
  • Add support for Duration and Period literals.

๐Ÿ”„๏ธ Refactorings

  • Use StringBuilder with Matcher#appendReplacement.

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump neo4j-cypher-javacc-parser from 5.5.0 to 5.6.0 (#657)
    • Bump maven-install-plugin from 3.1.0 to 3.1.1 (#664)
    • Bump joda-time from 2.12.2 to 2.12.4 (#663)
    • Bump spring-boot-starter-parent from 3.0.4 to 3.0.5 (#662)
    • Bump asm from 9.4 to 9.5 (#661)
    • Bump checkstyle from 10.9.2 to 10.9.3 (#660)
    • Bump maven-deploy-plugin from 3.1.0 to 3.1.1 (#659)
    • Bump spring-data-neo4j from 7.0.3 to 7.0.4 (#658)
    • Bump maven-resources-plugin from 3.3.0 to 3.3.1 (#656)
cypher-dsl -

Published by michael-simons over 1 year ago

Thanks to @Andy2003 for his input on the 2023.2.0 release. The main topic of this release is adding support for semantic comparison. The Cypher-DSLs builder method creates an AST, so that is in theory an excellent and doable request. The AST has originally been created as good enough means of rendering Cypher proper when we invented the Cypher-DSL for Spring Data Neo4j 6 back in 2019. Good enough here means that it has optimizing potential and a full-blown analysis is - at least at the moment - out of scope.

Instead, we went with another approach: We added ways of normalizing

  • Variable names (identifiers for entities (nodes and relationships) and variables of lists and map comprehensions)
  • Parameter names
  • Aliases

into generated names and optionally make the parsing of literal Cypher maps constant (maps sorted alphabetically and not by order of key appearance).

This allows now for a "poor man's" semantic comparison. Imagine 2 Cypher-DSL Statement objects that you either created using the builder or parsed through our parser module. You can compare them like this:

static boolean areSemanticallyEquivalent(Statement statement1, Map<String, Object> args1, Statement statement2, Map<String, Object> args2) {

    if (!areSemanticallyEquivalent(statement1, statement2)) {
        return false;
    }

    var mapping1 = statement1.getCatalog().getRenamedParameters();
    var mapping2 = statement2.getCatalog().getRenamedParameters();
    for (Map.Entry<String, String> entry : mapping1.entrySet()) {
        String key1 = entry.getKey();
        String mapped = entry.getValue();

        String key2 = mapping2.entrySet().stream().filter(e -> e.getValue().equals(mapped))
            .map(Map.Entry::getKey).findFirst().orElseThrow();
        if (!args1.get(key1).equals(args2.get(key2))) {
            return false;
        }
    }

    return true;
}

The catalog featured added in 2023.1.0 has been enhanced so that it can return now the mapping of the renamed parameters as well, allowing for inspection of parameters from different sources.

Also thanks to @hindog for contributing map literals in #642 and to @sathishkumar294 for inspiring the new dedicated overloads for type and labels that now work with symbolic names, too.

๐Ÿš€ Features

  • Allow map literals to be parsed into sorted maps. (#644)
  • Add support for Map literals. (#642)
  • Use generated names for aliases too if possible. (#640)
  • Make the Asterisk proper identifiable. (#641)
  • Add Cypher.withAll to create a with clause importing all (*) variables. (#639)
  • Add overloads of Functions.type and Functions.labels taking in a symbolic name. (#633)
  • Add extended meta data and the ability to use generated variables. (#631)

๐Ÿ”„๏ธ Refactorings

  • Replace identifiers in list / pattern comprehensions, too. (#647)
  • Use scope for generated names. (#646)
  • Some general housekeeping. (#643 and #632)
  • Optimize structure of UNWIND.

๐Ÿ“– Documentation

  • Add a list comprehension example.

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump checkstyle from 10.8.1 to 10.9.2 (#653)
    • Bump reactor-bom from 2022.0.4 to 2022.0.5 (#652)
    • Bump asciidoctor-maven-plugin from 2.2.2 to 2.2.3 (#651)
    • Bump maven-failsafe-plugin from 3.0.0-M9 to 3.0.0 (#650)
    • Bump maven-surefire-plugin from 3.0.0-M9 to 3.0.0 (#649)
    • Bump flatten-maven-plugin from 1.3.0 to 1.4.0 (#648)
    • Bump moditect-maven-plugin from 1.0.0.RC2 to 1.0.0.RC3 (#637)
    • Bump checkstyle from 10.8.0 to 10.8.1 (#638)
    • Bump mockito.version from 5.1.1 to 5.2.0 (#636)
    • Bump spring-boot-starter-parent from 3.0.3 to 3.0.4 (#629)
    • Bump annotations from 24.0.0 to 24.0.1 (#628)
    • Bump checker-qual from 3.31.0 to 3.32.0 (#627)
    • Bump spring-data-neo4j from 7.0.2 to 7.0.3 (#626)
    • Bump reactor-bom from 2022.0.3 to 2022.0.4 (#625)
    • Bump japicmp-maven-plugin from 0.17.1 to 0.17.2 (#624)

๐Ÿ›  Build

  • Use correct version numbers for tags.
  • Replace symlink in gh-pages with static href.
cypher-dsl -

Published by michael-simons over 1 year ago

2023.1.0 is the first feat release after 2023.0.0 and contains several ideas and improvements that stem from sql2cypher and from input by @lukaseder. Thank you!

Additionally, we worked again with @ikwattro from Graph Aware on building the catalog feature. Each statement - regardless of being built or parsed with the Cypher-DSL - can be analyzed via it's catalog now. The catalog will contain labels, types and properties used in a statement and the filters created based on those tokens. You can access the catalog like this:

var input = """
    MATCH (m:`Movie` {title: 'The Matrix'})<-[a:`ACTED_IN`]-(p:`Person`)
    WHERE p.born >= $born
    RETURN p
    """;
var statement = CypherParser.parse(input);

var catalog = statement.getCatalog();

Also: All AST elements will now render themselves to Cypher-Fragments when used in toString() scenarios. Apart from that, all bug fixes and dependency upgrades from 2022.8.5 and 2023.0.4 are included:

๐Ÿš€ Features

  • Add overloads for count and exists taking in a statement and optional imports. (#623)
  • Add label existences conditions to catalog. (#622)
  • Provide a catalog for identifiable items in a statement. (#617)
  • Allow retrieving parameter names
  • Add missing string functions. (#584)
  • Add support for rewriting the MATCH clause after parsing. (#580)
  • Add length() function. (#569)
  • Allow direct rendering of Visitable objects. (#554)

๐Ÿ› Bug Fixes

  • Correctly shadow visible nodes in a subquery. (#616)
  • Parse Node pattern predicates correctly. (#615)
  • Ensure getting the type of relationships without type is safe.
  • Apply prefixes after potential separator. (#606)
  • Resolve symbolic names when looking for visited items. (#602)
  • Open implicit scope when entering a UNION clause. (#590)
  • Move resolved symbolic names into StatementContext. (#586)
  • Add support for label expressions. (#583)
  • Correctly track identifiable elements. (#579)

๐Ÿ”„๏ธ Refactorings

  • Replace requires static transitive with requires static.
  • Allow covariant collection overloads for PatternElement and Expression where sensible. (#566)

๐Ÿ“– Documentation

  • Fix title.
  • Improve JavaDoc.

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump neo4j-java-driver from 5.5.0 to 5.6.0 (#621)
    • Bump spring-boot-starter-parent from 3.0.2 to 3.0.3 (#619)
    • Bump checkstyle from 10.7.0 to 10.8.0 (#620)
    • Bump spring-data-neo4j from 7.0.1 to 7.0.2 (#614)
    • Bump maven-surefire-plugin from 3.0.0-M8 to 3.0.0-M9 (#613)
    • Bump maven-failsafe-plugin from 3.0.0-M8 to 3.0.0-M9 (#612)
    • Bump checker-qual from 3.30.0 to 3.31.0 (#611)
    • Bump reactor-bom from 2022.0.2 to 2022.0.3 (#610)
    • Bump native-maven-plugin from 0.9.19 to 0.9.20 (#608)
    • Bump maven-javadoc-plugin from 3.4.1 to 3.5.0 (#607)
    • Bump neo4j-cypher-javacc-parser from 5.4.0 to 5.5.0 (#609)
    • Bump maven-deploy-plugin from 3.0.0 to 3.1.0 (#603)
    • Bump checker-qual from 3.29.0 to 3.30.0 (#601)
    • Bump maven-enforcer-plugin from 3.1.0 to 3.2.1 (#600)
    • Bump mockito.version from 5.0.0 to 5.1.1 (#599)
    • Bump checkstyle from 10.6.0 to 10.7.0 (#598)
    • Bump asciidoctorj-diagram from 2.2.3 to 2.2.4 (#597)
    • Bump jackson-bom from 2.14.1 to 2.14.2 (#594)
    • Bump neo4j-java-driver from 5.4.0 to 5.5.0 (#592)
    • Bump neo4j-cypher-javacc-parser from 5.3.0 to 5.4.0 (#593)
    • Bump spring-boot-starter-parent from 3.0.1 to 3.0.2 (#577)
    • Bump assertj-core from 3.24.1 to 3.24.2 (#576)
    • Bump maven-checkstyle-plugin from 3.2.0 to 3.2.1 (#564)
    • Bump junit-bom from 5.9.1 to 5.9.2 (#563)
    • Bump maven-failsafe-plugin from 3.0.0-M7 to 3.0.0-M8 (#560)
    • Bump reactor-bom from 2022.0.1 to 2022.0.2 (#559)
    • Bump mockito.version from 4.11.0 to 5.0.0 (#558)
    • Bump annotations from 23.1.0 to 24.0.0 (#557)
    • Bump jna from 5.12.1 to 5.13.0 (#556)
    • Bump maven-surefire-plugin from 3.0.0-M7 to 3.0.0-M8 (#555)
    • Bump spring-data-neo4j from 7.0.0 to 7.0.1 (#562)
    • Bump neo4j-java-driver from 5.3.1 to 5.4.0 (#561)

๐Ÿ›  Build

  • Improve configuration of the license plugin.
  • Move the fixed module-info.java somewhere out of IDEAs reach.
cypher-dsl -

Published by michael-simons over 1 year ago

2023.0.4 is a bug fix release and fully compatible with 2023.0.3.

๐Ÿ› Bug Fixes

  • Correctly shadow visible nodes in a subquery. (#616)
  • Parse Node pattern predicates correctly. (#615)
  • Ensure getting the type of relationships without type is safe.
  • Apply prefixes after potential separator. (#606)

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump neo4j-java-driver from 5.5.0 to 5.6.0 (#621)
    • Bump spring-boot-starter-parent from 3.0.2 to 3.0.3 (#619)
    • Bump checkstyle from 10.7.0 to 10.8.0 (#620)
    • Bump spring-data-neo4j from 7.0.0 to 7.0.2 (#614)
    • Bump maven-surefire-plugin from 3.0.0-M8 to 3.0.0-M9 (#613)
    • Bump maven-failsafe-plugin from 3.0.0-M8 to 3.0.0-M9 (#612)
    • Bump checker-qual from 3.30.0 to 3.31.0 (#611)
    • Bump reactor-bom from 2022.0.1 to 2022.0.3 (#610)
    • Bump native-maven-plugin from 0.9.19 to 0.9.20 (#608)
    • Bump maven-javadoc-plugin from 3.4.1 to 3.5.0 (#607)
    • Bump neo4j-cypher-javacc-parser from 5.4.0 to 5.5.0 (#609)
cypher-dsl -

Published by michael-simons over 1 year ago

๐Ÿ› Bug Fixes

  • Apply prefixes after potential separator. (#606)

๐Ÿ”„๏ธ Refactorings

  • Ensure getting the type of relationships without type is safe.

๐Ÿ›  Build

  • Use inputEncoding for configuring checkstyle encoding.
cypher-dsl -

Published by michael-simons over 1 year ago

Thanks to @Andy2003 for their input on several bugs!

๐Ÿ› Bug Fixes

  • Resolve symbolic names when looking for visited items. (#602)
  • Open implicit scope when entering a UNION clause. (#590)
  • Move resolved symbolic names into StatementContext. (#588)

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump maven-surefire-plugin from 3.0.0-M7 to 3.0.0-M8 (#555)
    • Bump maven-failsafe-plugin from 3.0.0-M7 to 3.0.0-M8 (#560)
    • Bump checker-qual from 3.29.0 to 3.30.0 (#601)
    • Bump maven-enforcer-plugin from 3.1.0 to 3.2.1 (#600)
    • Bump mockito.version from 4.11.0 to 5.1.1 (#599)
    • Bump checkstyle from 10.6.0 to 10.7.0 (#598)
    • Bump asciidoctorj-diagram from 2.2.3 to 2.2.4 (#597)
    • Bump jackson-bom from 2.14.1 to 2.14.2 (#594)
    • Bump neo4j-java-driver from 5.3.1 to 5.5.0 (#592)
    • Bump neo4j-cypher-javacc-parser from 5.3.0 to 5.4.0 (#593)
cypher-dsl -

Published by michael-simons over 1 year ago

๐Ÿ› Bug Fixes

  • Correctly track identifiable elements. (#579)

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump checker-qual from 3.29.0 to 3.30.0 (#601)
    • Bump maven-enforcer-plugin from 3.1.0 to 3.2.1 (#600)
    • Bump checkstyle from 10.6.0 to 10.7.0 (#598)
    • Bump asciidoctorj-diagram from 2.2.3 to 2.2.4 (#597)
    • Bump jackson-bom from 2.14.1 to 2.14.2 (#594)
    • Bump assertj-core from 3.24.1 to 3.24.2 (#576)
    • Bump maven-checkstyle-plugin from 3.2.0 to 3.2.1 (#564)
    • Bump junit-bom from 5.9.1 to 5.9.2 (#563)
    • Bump reactor-bom from 2022.0.1 to 2022.0.2 (#559)
    • Bump mockito.version from 4.11.0 to 5.0.0 (#558)
    • Bump annotations from 23.1.0 to 24.0.0 (#557)
    • Bump jna from 5.12.1 to 5.13.0 (#556)
cypher-dsl -

Published by michael-simons over 1 year ago

Thanks to @ikwattro, @lukaseder and @bonelli for their input!

๐Ÿš€ Features

  • Add missing string functions. (#584)
  • Add support for rewriting the MATCH clause after parsing. (#580)

๐Ÿ› Bug Fixes

  • Add support for label expressions. (#582)
  • Correctly track identifiable elements. (#579)

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump spring-boot-starter-parent from 3.0.1 to 3.0.2 (#577)
    • Bump assertj-core from 3.24.1 to 3.24.2 (#576)

๐Ÿ›  Build

  • Move the fixed module-info.java somewhere out of IDEAs reach.
cypher-dsl -

Published by michael-simons over 1 year ago

This patch releases adds a build-in length function for paths (thanks @Lukasmp3 for the request) and fixes issues when running Cypher-DSL on the module path (see c7747ca35 on main for more information).

๐Ÿš€ Features

  • Add length() function. (#569)

๐Ÿ”„๏ธ Refactorings

  • Replace requires static transitive with requires static.
cypher-dsl -

Published by michael-simons almost 2 years ago

Welcome to 2023, welcome Java 17, welcome Neo4j 5 clauses. This is the first release of the Cypher-DSL requiring Java 17. This is in line with Neo4j itself, Spring Data Neo4j 7 and several other frameworks out there. This allows for more concise code (which is nice for us) as well as using the Neo4j 5 parser in neo4j-cypher-dsl-parser module. Bumping the JDK warrants a major upgrade already.

Apart from that we have been very reluctant on breaking changes. As a matter of fact, close to none has been necessary. One of the few improvements that might need changes on your side is #551 (Commit 10080df) in which we improved the WITH clause: You might see ambiguous method errors and the fix can be seen here for example: Either use JDK 17 reserved name var for local variable type-inference or use explicit IdentifiableElement.

There's a lot of new stuff as well: You can now use Expressions.count to build new Neo4j 5 COUNT expressions and we do support the USE clause for composite database queries as well.

Please fear not if you are still on JDK 8: We will maintain the 2022.8.x branch at least as long as Spring Data Neo4j 6.3 is maintained, as the latter is build on top of the Cypher-DSL and is JDK 8, too.

Thanks a lot to our friend @ikwattro from @graphaware for his continuous and well appreciated feedback and input to this project.

๐Ÿš€ Features

  • Add support for the COUNT {} sub-query expressions. (#546)
  • Pretty print USE clause proper. (#543, thanks to @ikwattro for contributing this)
  • Add support for the USE clause in the DSL. (#542)

๐Ÿ› Bug Fixes

  • Allow match after unwind as defined by OpenCypher. (#531)

๐Ÿ”„๏ธ Refactorings

  • Improve returning and with. (#551)
  • Allow yield * for standalone calls with arguments, too. (#545, thanks to @zakjan taking the time and report this)
  • Upgrade the parser module to use the new Neo4j 5 parser. (#503)
  • Migrate the project to Java 17. (#518)
  • Prevent usage of REMOVE item inside SET clause (during RT). (#506)

๐Ÿ“– Documentation

  • Update changelog.
  • Add section about dialect support.
  • Make clear that pretty printing does not always escape names.
  • Document correct Java version in README.adoc.

๐Ÿงฐ Tasks

  • Extend license header to 2023.

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump assertj-core from 3.23.1 to 3.24.1 (#549)
    • Bump checker-qual from 3.28.0 to 3.29.0 (#548)
    • Bump neo4j-java-driver from 5.3.0 to 5.3.1 (#535)
    • Bump spring-boot-starter-parent from 3.0.0 to 3.0.1 (#534)
    • Bump checkstyle from 10.5.0 to 10.6.0 (#537)
    • Bump mockito.version from 4.10.0 to 4.11.0 (#536)
    • Bump neo4j-cypher-javacc-parser from 5.2.0 to 5.3.0 (#529)
    • Bump annotations from 23.0.0 to 23.1.0 (#521)
    • Bump compile-testing from 0.20 to 0.21.0 (#526)
    • Bump reactor-bom from 2022.0.0 to 2022.0.1 (#527)
    • Bump mockito.version from 4.9.0 to 4.10.0 (#528)
    • Bump spring-boot-starter-parent from 2.7.5 to 3.0.0 (#509)
    • Bump neo4j-java-driver from 4.4.9 to 5.3.0 (#508)
    • Bump checker-qual from 3.27.0 to 3.28.0 (#517)
    • Bump compile-testing from 0.19 to 0.20 (#516)
    • Bump native-maven-plugin from 0.9.18 to 0.9.19 (#515)
    • Bump joda-time from 2.12.1 to 2.12.2 (#514)
    • Bump jackson-bom from 2.14.0 to 2.14.1 (#513)
    • Bump archunit from 1.0.0 to 1.0.1 (#512)
    • Bump native-maven-plugin from 0.9.17 to 0.9.18 (#511)
    • Bump checkstyle from 10.4 to 10.5.0 (#510)

๐Ÿ›  Build

  • Add more tests for GH-547.
  • Define JaCoCo config in plugin-management. (#541)
  • Add license-maven-plugin for checking Apache 2 compatible license and header formatting.
  • Fix quality gate.
  • Verify examples on Java LTS and next version.
  • Fix docs build.
  • Upgrade various actions to non-deprecated versions. (#519)
cypher-dsl -

Published by michael-simons almost 2 years ago

๐Ÿ”„๏ธ Refactorings

  • Allow yield * for standalone calls with arguments, too. (#545, thanks to @zakjan taking the time and report this)

๐Ÿงน Housekeeping

  • Extend license header to 2023.
  • Dependency upgrades:
    • Bump assertj-core from 3.23.1 to 3.24.1 (#549)
    • Bump checker-qual from 3.28.0 to 3.29.0 (#548)
    • Bump checkstyle from 10.5.0 to 10.6.0 (#537)
    • Bump mockito.version from 4.10.0 to 4.11.0 (#536)
cypher-dsl -

Published by michael-simons almost 2 years ago

Thanks to @ikwattro from @graphaware for investing his time and creating valuable tickets for this release.

๐Ÿ› Bug Fixes

  • Allow match after unwind as defined by OpenCypher. (#531)

๐Ÿ“ Documentation

  • Make clear that pretty printing does not always escape names

๐Ÿ›  Build

  • Upgrade various actions to non-deprecated versions. (#519)

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump annotations from 23.0.0 to 23.1.0 (#521)
    • Bump compile-testing from 0.20 to 0.21.0 (#526)
    • Bump reactor-bom from 2022.0.0 to 2022.0.1 (#527)
    • Bump mockito.version from 4.9.0 to 4.10.0 (#528)
cypher-dsl -

Published by michael-simons almost 2 years ago

๐Ÿ”„๏ธ Refactorings

  • Apply learnings from full JDK 17 migrations.
  • Prevent usage of REMOVE item inside SET clause (during RT). (#506)

๐Ÿงน Housekeeping

  • Dependency upgrades:
    • Bump checker-qual from 3.27.0 to 3.28.0 (#517)
    • Bump compile-testing from 0.19 to 0.20 (#516)
    • Bump native-maven-plugin from 0.9.18 to 0.9.19 (#515)
    • Bump joda-time from 2.12.1 to 2.12.2 (#514)
    • Bump jackson-bom from 2.14.0 to 2.14.1 (#513)
    • Bump archunit from 1.0.0 to 1.0.1 (#512)
    • Bump native-maven-plugin from 0.9.17 to 0.9.18 (#511)
    • Bump checkstyle from 10.4 to 10.5.0 (#510)