You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/01/15 14:52:58 UTC

[isis] branch master updated: ISIS-2480: jpa-metamodel: support 'mandatory' from @JoinColumn

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 59829b8  ISIS-2480: jpa-metamodel: support 'mandatory' from @JoinColumn
59829b8 is described below

commit 59829b878c8fa7fb23801444211e55a791b21ff7
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jan 15 15:52:24 2021 +0100

    ISIS-2480: jpa-metamodel: support 'mandatory' from @JoinColumn
---
 .../MandatoryFromJpaColumnAnnotationFacetFactory.java | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/column/MandatoryFromJpaColumnAnnotationFacetFactory.java b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/column/MandatoryFromJpaColumnAnnotationFacetFactory.java
index 01afd37..5098be7 100644
--- a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/column/MandatoryFromJpaColumnAnnotationFacetFactory.java
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/column/MandatoryFromJpaColumnAnnotationFacetFactory.java
@@ -18,7 +18,10 @@
  */
 package org.apache.isis.persistence.jpa.metamodel.facets.prop.column;
 
+import java.util.Optional;
+
 import javax.persistence.Column;
+import javax.persistence.JoinColumn;
 
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -38,17 +41,23 @@ extends FacetFactoryAbstract {
 
         //val cls = processMethodContext.getCls();
 
-        final Column annotation = processMethodContext.synthesizeOnMethod(Column.class)
-                .orElse(null);
-
-        if (annotation == null) {
+        final Optional<Boolean> nullable1 = processMethodContext.synthesizeOnMethod(JoinColumn.class)
+                .map(JoinColumn::nullable);
+        
+        final Optional<Boolean> nullable2 = processMethodContext.synthesizeOnMethod(Column.class)
+                .map(Column::nullable);
+        
+        if(!nullable1.isPresent() 
+                && !nullable2.isPresent()) {
             return;
         }
         
+        val nullable = nullable1.orElseGet(nullable2::get);
+        
         val facetHolder = processMethodContext.getFacetHolder();
         FacetUtil.addFacet(new MandatoryFacetDerivedFromJpaColumn(
                 facetHolder,
-                !annotation.nullable()));
+                !nullable));
     }