diff --git a/extensions/neo4j-migrations-annotation-processing/catalog/pom.xml b/extensions/neo4j-migrations-annotation-processing/catalog/pom.xml index 148510c70b..a8d6f39cd8 100644 --- a/extensions/neo4j-migrations-annotation-processing/catalog/pom.xml +++ b/extensions/neo4j-migrations-annotation-processing/catalog/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-annotation-processing - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-annotation-catalog diff --git a/extensions/neo4j-migrations-annotation-processing/pom.xml b/extensions/neo4j-migrations-annotation-processing/pom.xml index daba36d9dd..ad8ea6f519 100644 --- a/extensions/neo4j-migrations-annotation-processing/pom.xml +++ b/extensions/neo4j-migrations-annotation-processing/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT ../../pom.xml diff --git a/extensions/neo4j-migrations-annotation-processing/processor-api/pom.xml b/extensions/neo4j-migrations-annotation-processing/processor-api/pom.xml index d3c50e1696..f85c6eb65a 100644 --- a/extensions/neo4j-migrations-annotation-processing/processor-api/pom.xml +++ b/extensions/neo4j-migrations-annotation-processing/processor-api/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-annotation-processing - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-annotation-processor-api diff --git a/extensions/neo4j-migrations-annotation-processing/processor/pom.xml b/extensions/neo4j-migrations-annotation-processing/processor/pom.xml index 89a3704054..80d1732e72 100644 --- a/extensions/neo4j-migrations-annotation-processing/processor/pom.xml +++ b/extensions/neo4j-migrations-annotation-processing/processor/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-annotation-processing - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-annotation-processor diff --git a/extensions/neo4j-migrations-annotation-processing/processor/src/main/java/ac/simons/neo4j/migrations/annotations/proc/impl/CatalogGeneratingProcessor.java b/extensions/neo4j-migrations-annotation-processing/processor/src/main/java/ac/simons/neo4j/migrations/annotations/proc/impl/CatalogGeneratingProcessor.java index f68fc7e5f8..094d3eae20 100644 --- a/extensions/neo4j-migrations-annotation-processing/processor/src/main/java/ac/simons/neo4j/migrations/annotations/proc/impl/CatalogGeneratingProcessor.java +++ b/extensions/neo4j-migrations-annotation-processing/processor/src/main/java/ac/simons/neo4j/migrations/annotations/proc/impl/CatalogGeneratingProcessor.java @@ -288,7 +288,7 @@ private void processOGMPropertyTypes(RoundEnvironment roundEnv) { .forEach(t -> { var labels = computeLabelsOGM(t); var owner = new DefaultNodeType(t.getQualifiedName().toString(), labels); - catalogItems.addAll(t.accept(new PropertyTypeConstraintGenerator<>(labels), owner)); + catalogItems.addAll(t.accept(new PropertyTypeConstraintGenerator<>(Mode.OGM, labels), owner)); }); roundEnv.getElementsAnnotatedWith(ogm.relationshipEntity()) @@ -297,7 +297,7 @@ private void processOGMPropertyTypes(RoundEnvironment roundEnv) { .forEach(t -> { var type = computeTypeOGM(t); var owner = new DefaultRelationshipType(t.getQualifiedName().toString(), type); - catalogItems.addAll(t.accept(new PropertyTypeConstraintGenerator<>(List.of(type)), owner)); + catalogItems.addAll(t.accept(new PropertyTypeConstraintGenerator<>(Mode.OGM, List.of(type)), owner)); }); } @@ -753,7 +753,7 @@ private void processSDN6IdAnnotations(RoundEnvironment roundEnv) { List labels = computeLabelsSDN6(t); DefaultNodeType owner = new DefaultNodeType(t.getQualifiedName().toString(), labels); if (requiresPrimaryKeyConstraintSDN6(t)) { - PropertyType idProperty = t.accept(new PropertySelector(supportedSDN6Annotations), + PropertyType idProperty = t.accept(new IdPropertySelector(Mode.SDN6, supportedSDN6Annotations), owner); String name = this.constraintNameGenerator.generateName(Constraint.Type.UNIQUE, Collections.singleton(idProperty)); @@ -761,7 +761,7 @@ private void processSDN6IdAnnotations(RoundEnvironment roundEnv) { .unique(idProperty.getName())); } if (generateTypeConstraints) { - catalogItems.addAll(t.accept(new PropertyTypeConstraintGenerator<>(labels), owner)); + catalogItems.addAll(t.accept(new PropertyTypeConstraintGenerator<>(Mode.SDN6, labels), owner)); } }); } @@ -769,9 +769,12 @@ private void processSDN6IdAnnotations(RoundEnvironment roundEnv) { @SuppressWarnings("squid:S110") // Not something we need or can do anything about (Number of parents) class PropertyTypeConstraintGenerator> extends ElementKindVisitor8>, WriteableElementType> { + private final Mode mode; + private final List labels; - PropertyTypeConstraintGenerator(List labels) { + PropertyTypeConstraintGenerator(Mode mode, List labels) { + this.mode = mode; this.labels = labels; } @@ -803,7 +806,12 @@ List> checkIfEligibleForPropertyTypeConstraint(Element e, Writeab return List.of(); } - var property = owner.addProperty(e.getSimpleName().toString()); + Optional additionalName = switch (mode) { + case SDN6 -> extractPropertyName(e, sdn6.property()); + case OGM -> extractPropertyName(e, ogm.property()); + case PURE -> Optional.empty(); + }; + var property = owner.addProperty(additionalName.orElseGet(() -> e.getSimpleName().toString())); var name = constraintNameGenerator.generateName(Constraint.Type.PROPERTY_TYPE, List.of(property)); return List.of(Constraint.forNode(labels.get(0).getValue()).named(name).type(property.getName(), TypesEligibleForPropertyTypeConstraints.get(type))); } @@ -822,7 +830,7 @@ private void processOGMIdAnnotations(RoundEnvironment roundEnv) { .map(TypeElement.class::cast) .forEach(t -> { List labels = computeLabelsOGM(t); - PropertyType idProperty = t.accept(new PropertySelector(Collections.singleton(ogm.id())), + PropertyType idProperty = t.accept(new IdPropertySelector(Mode.OGM, Collections.singleton(ogm.id())), new DefaultNodeType(t.getQualifiedName().toString(), labels)); String name = this.constraintNameGenerator.generateName(Constraint.Type.UNIQUE, Collections.singleton(idProperty)); @@ -1130,11 +1138,14 @@ List> handleRelationship(PropertyType property, boolean isRequ } @SuppressWarnings("squid:S110") // Not something we need or can do anything about (Number of parents) - class PropertySelector extends ElementKindVisitor8, DefaultNodeType> { + class IdPropertySelector extends ElementKindVisitor8, DefaultNodeType> { + + private final Mode mode; private final Set requiredAnnotations; - PropertySelector(Set requiredAnnotations) { + IdPropertySelector(Mode mode, Set requiredAnnotations) { + this.mode = mode; this.requiredAnnotations = requiredAnnotations; } @@ -1165,7 +1176,18 @@ public PropertyType visitVariableAsField(VariableElement e, DefaultNod .map(AnnotationMirror::getAnnotationType) .map(DeclaredType::asElement) .anyMatch(requiredAnnotations::contains); - return requiredAnnotationPresent ? owner.addProperty(e.getSimpleName().toString()) : null; + + if (!requiredAnnotationPresent) { + return null; + } + + Optional additionalName = switch (mode) { + case SDN6 -> extractPropertyName(e, sdn6.property()); + case OGM -> extractPropertyName(e, ogm.property()); + case PURE -> Optional.empty(); + }; + + return owner.addProperty(additionalName.orElseGet(() -> e.getSimpleName().toString())); } } diff --git a/extensions/neo4j-migrations-annotation-processing/processor/src/test/java/ac/simons/neo4j/migrations/annotations/proc/sdn6/movies/RenamedIdProperty.java b/extensions/neo4j-migrations-annotation-processing/processor/src/test/java/ac/simons/neo4j/migrations/annotations/proc/sdn6/movies/RenamedIdProperty.java new file mode 100644 index 0000000000..9b038f7e0a --- /dev/null +++ b/extensions/neo4j-migrations-annotation-processing/processor/src/test/java/ac/simons/neo4j/migrations/annotations/proc/sdn6/movies/RenamedIdProperty.java @@ -0,0 +1,30 @@ +/* + * Copyright 2020-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package ac.simons.neo4j.migrations.annotations.proc.sdn6.movies; + +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Property; + +/** + * Class for testing renamed id properties. + */ +@Node +public class RenamedIdProperty { + @Id + @Property("myOtherIdName") + private String myId; +} diff --git a/extensions/neo4j-migrations-annotation-processing/processor/src/test/resources/expected_catalog_sdn.xml b/extensions/neo4j-migrations-annotation-processing/processor/src/test/resources/expected_catalog_sdn.xml index 31f85457fe..8df664b81d 100644 --- a/extensions/neo4j-migrations-annotation-processing/processor/src/test/resources/expected_catalog_sdn.xml +++ b/extensions/neo4j-migrations-annotation-processing/processor/src/test/resources/expected_catalog_sdn.xml @@ -10,6 +10,12 @@ title + + + + myOtherIdName + + diff --git a/extensions/neo4j-migrations-annotation-processing/processor/src/test/resources/expected_catalog_sdn_movies_types.xml b/extensions/neo4j-migrations-annotation-processing/processor/src/test/resources/expected_catalog_sdn_movies_types.xml index 00c9d7daae..dbe7130972 100644 --- a/extensions/neo4j-migrations-annotation-processing/processor/src/test/resources/expected_catalog_sdn_movies_types.xml +++ b/extensions/neo4j-migrations-annotation-processing/processor/src/test/resources/expected_catalog_sdn_movies_types.xml @@ -16,10 +16,10 @@ title - + - description + tagline @@ -58,6 +58,18 @@ born + + + + myOtherIdName + + + + + + myOtherIdName + + diff --git a/extensions/neo4j-migrations-formats-adoc/pom.xml b/extensions/neo4j-migrations-formats-adoc/pom.xml index 2f44028a84..e59e9803e8 100644 --- a/extensions/neo4j-migrations-formats-adoc/pom.xml +++ b/extensions/neo4j-migrations-formats-adoc/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT ../../pom.xml diff --git a/extensions/neo4j-migrations-formats-csv/pom.xml b/extensions/neo4j-migrations-formats-csv/pom.xml index a2c8b12193..ddab1946c5 100644 --- a/extensions/neo4j-migrations-formats-csv/pom.xml +++ b/extensions/neo4j-migrations-formats-csv/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT ../../pom.xml diff --git a/extensions/neo4j-migrations-formats-markdown/pom.xml b/extensions/neo4j-migrations-formats-markdown/pom.xml index b8e75001b8..902e6d4186 100644 --- a/extensions/neo4j-migrations-formats-markdown/pom.xml +++ b/extensions/neo4j-migrations-formats-markdown/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT ../../pom.xml diff --git a/neo4j-migrations-bom/pom.xml b/neo4j-migrations-bom/pom.xml index ed4c8c6d4a..dd7b803078 100644 --- a/neo4j-migrations-bom/pom.xml +++ b/neo4j-migrations-bom/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-bom diff --git a/neo4j-migrations-cli/pom.xml b/neo4j-migrations-cli/pom.xml index 164d69f063..e34e2f16b9 100644 --- a/neo4j-migrations-cli/pom.xml +++ b/neo4j-migrations-cli/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-cli diff --git a/neo4j-migrations-core/pom.xml b/neo4j-migrations-core/pom.xml index 615baba3da..b94ca5a0dc 100644 --- a/neo4j-migrations-core/pom.xml +++ b/neo4j-migrations-core/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations diff --git a/neo4j-migrations-examples/neo4j-migrations-cluster-tests/pom.xml b/neo4j-migrations-examples/neo4j-migrations-cluster-tests/pom.xml index f70060125f..138970e1a1 100644 --- a/neo4j-migrations-examples/neo4j-migrations-cluster-tests/pom.xml +++ b/neo4j-migrations-examples/neo4j-migrations-cluster-tests/pom.xml @@ -21,7 +21,7 @@ eu.michael-simons.neo4j neo4j-migrations-examples - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-cluster-tests diff --git a/neo4j-migrations-examples/neo4j-migrations-examples-sb-testharness/pom.xml b/neo4j-migrations-examples/neo4j-migrations-examples-sb-testharness/pom.xml index a9acc9747e..c6e955683b 100644 --- a/neo4j-migrations-examples/neo4j-migrations-examples-sb-testharness/pom.xml +++ b/neo4j-migrations-examples/neo4j-migrations-examples-sb-testharness/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-examples - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-examples-sb-testharness diff --git a/neo4j-migrations-examples/neo4j-migrations-examples-sb/pom.xml b/neo4j-migrations-examples/neo4j-migrations-examples-sb/pom.xml index 9bb036922c..12e22b196b 100644 --- a/neo4j-migrations-examples/neo4j-migrations-examples-sb/pom.xml +++ b/neo4j-migrations-examples/neo4j-migrations-examples-sb/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-examples - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-examples-sb diff --git a/neo4j-migrations-examples/pom.xml b/neo4j-migrations-examples/pom.xml index 2ac23c043e..3b328e1785 100644 --- a/neo4j-migrations-examples/pom.xml +++ b/neo4j-migrations-examples/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-examples diff --git a/neo4j-migrations-maven-plugin/pom.xml b/neo4j-migrations-maven-plugin/pom.xml index 8833ee577f..a34b784545 100644 --- a/neo4j-migrations-maven-plugin/pom.xml +++ b/neo4j-migrations-maven-plugin/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-maven-plugin diff --git a/neo4j-migrations-quarkus-parent/deployment/pom.xml b/neo4j-migrations-quarkus-parent/deployment/pom.xml index a8c7e9189d..13ba1a1f1b 100644 --- a/neo4j-migrations-quarkus-parent/deployment/pom.xml +++ b/neo4j-migrations-quarkus-parent/deployment/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-quarkus-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-quarkus-deployment diff --git a/neo4j-migrations-quarkus-parent/integration-tests/pom.xml b/neo4j-migrations-quarkus-parent/integration-tests/pom.xml index 7c57c3ecb4..d95cee6eaf 100644 --- a/neo4j-migrations-quarkus-parent/integration-tests/pom.xml +++ b/neo4j-migrations-quarkus-parent/integration-tests/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-quarkus-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-quarkus-integration-tests diff --git a/neo4j-migrations-quarkus-parent/pom.xml b/neo4j-migrations-quarkus-parent/pom.xml index 85e949611a..22c03d7962 100644 --- a/neo4j-migrations-quarkus-parent/pom.xml +++ b/neo4j-migrations-quarkus-parent/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-quarkus-parent diff --git a/neo4j-migrations-quarkus-parent/runtime/pom.xml b/neo4j-migrations-quarkus-parent/runtime/pom.xml index a723dbc49e..234a2babf7 100644 --- a/neo4j-migrations-quarkus-parent/runtime/pom.xml +++ b/neo4j-migrations-quarkus-parent/runtime/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-quarkus-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-quarkus diff --git a/neo4j-migrations-spring-boot-starter-parent/neo4j-migrations-spring-boot-autoconfigure/pom.xml b/neo4j-migrations-spring-boot-starter-parent/neo4j-migrations-spring-boot-autoconfigure/pom.xml index e80ea210b0..745dc9915e 100644 --- a/neo4j-migrations-spring-boot-starter-parent/neo4j-migrations-spring-boot-autoconfigure/pom.xml +++ b/neo4j-migrations-spring-boot-starter-parent/neo4j-migrations-spring-boot-autoconfigure/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-spring-boot-starter-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-spring-boot-autoconfigure diff --git a/neo4j-migrations-spring-boot-starter-parent/neo4j-migrations-spring-boot-starter/pom.xml b/neo4j-migrations-spring-boot-starter-parent/neo4j-migrations-spring-boot-starter/pom.xml index d894dfa90d..924e53c6a5 100644 --- a/neo4j-migrations-spring-boot-starter-parent/neo4j-migrations-spring-boot-starter/pom.xml +++ b/neo4j-migrations-spring-boot-starter-parent/neo4j-migrations-spring-boot-starter/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-spring-boot-starter-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-spring-boot-starter diff --git a/neo4j-migrations-spring-boot-starter-parent/pom.xml b/neo4j-migrations-spring-boot-starter-parent/pom.xml index f1632769ca..80af9fc427 100644 --- a/neo4j-migrations-spring-boot-starter-parent/pom.xml +++ b/neo4j-migrations-spring-boot-starter-parent/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-spring-boot-starter-parent diff --git a/neo4j-migrations-test-resources/pom.xml b/neo4j-migrations-test-resources/pom.xml index f1e2cb8232..b5672df130 100644 --- a/neo4j-migrations-test-resources/pom.xml +++ b/neo4j-migrations-test-resources/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-test-resources diff --git a/neo4j-migrations-test-results/pom.xml b/neo4j-migrations-test-results/pom.xml index 8a560b774b..dcabf1595e 100644 --- a/neo4j-migrations-test-results/pom.xml +++ b/neo4j-migrations-test-results/pom.xml @@ -22,7 +22,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT neo4j-migrations-test-results diff --git a/pom.xml b/pom.xml index 5d69c09dfe..be57b555a8 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ eu.michael-simons.neo4j neo4j-migrations-parent - 2.9.4-SNAPSHOT + 2.10.0-SNAPSHOT pom Neo4j Migrations