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 13:27:32 UTC
[isis] branch master updated: ISIS-2480: adds some metamodel facets
for JPA
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 3adb6c3 ISIS-2480: adds some metamodel facets for JPA
3adb6c3 is described below
commit 3adb6c3d5c53c32be3550884ce39789a0a848c68
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jan 15 14:27:17 2021 +0100
ISIS-2480: adds some metamodel facets for JPA
also autodetect bean type for JPA entities during initial bean scanning
---
.../config/beans/IsisBeanTypeClassifierImpl.java | 6 +++
.../JdoPersistenceCapableFacetAnnotation.java | 2 +-
.../JdoPersistenceCapableFacetImpl.java | 36 --------------
.../column/MandatoryFacetDerivedFromJdoColumn.java | 2 +-
.../JdoNotPersistentFacetAnnotation.java | 2 +-
.../prop/notpersistent/JdoNotPersistentFacet.java | 6 +--
.../metamodel/JpaEntityFacetFactory.java | 10 ++--
.../integration/metamodel/JpaProgrammingModel.java | 5 +-
.../jpa/metamodel/JpaProgrammingModel.java | 11 +++--
.../column/MandatoryFacetDerivedFromJpaColumn.java | 17 +++++++
...ndatoryFromJpaColumnAnnotationFacetFactory.java | 55 ++++++++++++++++++++++
.../transients/JpaTransientAnnotationFacet.java} | 11 +++--
.../JpaTransientAnnotationFacetFactory.java | 52 ++++++++++++++++++++
.../facets/prop/transients/JpaTransientFacet.java} | 11 ++---
.../isis/testdomain/jpa/entities/JpaBook.java | 2 -
.../isis/testdomain/jpa/entities/JpaInventory.java | 2 -
.../isis/testdomain/jpa/entities/JpaProduct.java | 5 +-
.../testdomain/jpa/entities/JpaProductComment.java | 4 +-
.../isis/testdomain/jpa/springdata/Employee.java | 6 +--
19 files changed, 162 insertions(+), 83 deletions(-)
diff --git a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeClassifierImpl.java b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeClassifierImpl.java
index 4b86aa1..f0572ab 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeClassifierImpl.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeClassifierImpl.java
@@ -22,6 +22,7 @@ import java.io.Serializable;
import java.util.Collection;
import javax.enterprise.inject.Vetoed;
+import javax.persistence.Entity;
import org.springframework.stereotype.Component;
@@ -72,6 +73,11 @@ implements IsisBeanTypeClassifier {
return BeanClassification.selfManaged(BeanSort.VIEW_MODEL);
}
+ val entityAnnotation = findNearestAnnotation(type, Entity.class).orElse(null);
+ if(entityAnnotation!=null) {
+ return BeanClassification.selfManaged(BeanSort.ENTITY);
+ }
+
val aDomainObject = findNearestAnnotation(type, DomainObject.class).orElse(null);
if(aDomainObject!=null) {
switch (aDomainObject.nature()) {
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetAnnotation.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetAnnotation.java
index 92567f9..a3fb740 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetAnnotation.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetAnnotation.java
@@ -22,7 +22,7 @@ import javax.jdo.annotations.IdentityType;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-public class JdoPersistenceCapableFacetAnnotation extends JdoPersistenceCapableFacetImpl {
+public class JdoPersistenceCapableFacetAnnotation extends JdoPersistenceCapableFacetAbstract {
public JdoPersistenceCapableFacetAnnotation(
final String schemaName,
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetImpl.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetImpl.java
deleted file mode 100644
index f7e28ce..0000000
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetImpl.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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
- *
- * http://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 org.apache.isis.persistence.jdo.metamodel.facets.object.persistencecapable;
-
-import javax.jdo.annotations.IdentityType;
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public class JdoPersistenceCapableFacetImpl extends JdoPersistenceCapableFacetAbstract {
-
- public JdoPersistenceCapableFacetImpl(
- final String schemaName,
- final String tableOrTypeName,
- final IdentityType identityType,
- final FacetHolder holder) {
- super(schemaName, tableOrTypeName, identityType, holder);
- }
-
-
-}
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/MandatoryFacetDerivedFromJdoColumn.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/MandatoryFacetDerivedFromJdoColumn.java
index 2b26759..7fab184 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/MandatoryFacetDerivedFromJdoColumn.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/MandatoryFacetDerivedFromJdoColumn.java
@@ -28,7 +28,7 @@ import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFace
public class MandatoryFacetDerivedFromJdoColumn extends MandatoryFacetAbstract {
- public MandatoryFacetDerivedFromJdoColumn(final FacetHolder holder, boolean required ) {
+ public MandatoryFacetDerivedFromJdoColumn(final FacetHolder holder, final boolean required) {
super(holder, Semantics.of(required));
}
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetAnnotation.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetAnnotation.java
index 3ce3935..a687b3d 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetAnnotation.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetAnnotation.java
@@ -21,7 +21,7 @@ package org.apache.isis.persistence.jdo.metamodel.facets.prop.notpersistent;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-public class JdoNotPersistentFacetAnnotation extends JdoNotPersistentFacetImpl {
+public class JdoNotPersistentFacetAnnotation extends JdoNotPersistentFacetAbstract {
public JdoNotPersistentFacetAnnotation(final FacetHolder holder) {
super(holder);
diff --git a/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/prop/notpersistent/JdoNotPersistentFacet.java b/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/prop/notpersistent/JdoNotPersistentFacet.java
index 0e296f5..e1891eb 100644
--- a/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/prop/notpersistent/JdoNotPersistentFacet.java
+++ b/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/prop/notpersistent/JdoNotPersistentFacet.java
@@ -18,16 +18,16 @@
*/
package org.apache.isis.persistence.jdo.provider.metamodel.facets.prop.notpersistent;
-import javax.jdo.annotations.PrimaryKey;
+import javax.jdo.annotations.NotPersistent;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.facetapi.Facet;
/**
- * Corresponds to the property with the {@link PrimaryKey} annotation.
+ * Corresponds to the property with the {@link NotPersistent} annotation.
* <p>
- * The JDO {@link PrimaryKey} annotation is used internally the JDO object store to
+ * The JDO {@link NotPersistent} annotation is used internally the JDO object store to
* create the {@link Oid}.
*/
public interface JdoNotPersistentFacet extends Facet {
diff --git a/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/metamodel/JpaEntityFacetFactory.java b/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/metamodel/JpaEntityFacetFactory.java
index a46338a..b31a913 100644
--- a/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/metamodel/JpaEntityFacetFactory.java
+++ b/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/metamodel/JpaEntityFacetFactory.java
@@ -45,7 +45,6 @@ import org.apache.isis.commons.internal.memento._Mementos.SerializingAdapter;
import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.Annotations;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -64,13 +63,14 @@ public class JpaEntityFacetFactory extends FacetFactoryAbstract {
@Override
public void process(ProcessClassContext processClassContext) {
val cls = processClassContext.getCls();
-
- val entityAnnotation = Annotations.getAnnotation(cls, Entity.class);
- if (entityAnnotation == null) {
+
+ val facetHolder = processClassContext.getFacetHolder();
+
+ val entityAnnotation = processClassContext.synthesizeOnType(Entity.class);
+ if(!entityAnnotation.isPresent()) {
return;
}
- val facetHolder = processClassContext.getFacetHolder();
val serviceRegistry = super.getMetaModelContext().getServiceRegistry();
val jpaEntityFacet = new JpaEntityFacet(facetHolder, cls, serviceRegistry);
diff --git a/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/metamodel/JpaProgrammingModel.java b/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/metamodel/JpaProgrammingModel.java
index 2daf77f..0c6f754 100644
--- a/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/metamodel/JpaProgrammingModel.java
+++ b/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/metamodel/JpaProgrammingModel.java
@@ -18,11 +18,8 @@
*/
package org.apache.isis.persistence.jpa.integration.metamodel;
-import javax.inject.Inject;
-
import org.springframework.stereotype.Component;
-import org.apache.isis.core.config.IsisConfiguration;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel.Marker;
@@ -32,7 +29,7 @@ import lombok.val;
@Component
public class JpaProgrammingModel implements MetaModelRefiner {
- @Inject private IsisConfiguration config;
+ // @Inject private IsisConfiguration config;
@Override
public void refineProgrammingModel(ProgrammingModel pm) {
diff --git a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/JpaProgrammingModel.java b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/JpaProgrammingModel.java
index 4656430..f1c8970 100644
--- a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/JpaProgrammingModel.java
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/JpaProgrammingModel.java
@@ -22,6 +22,9 @@ import org.springframework.stereotype.Component;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
+import org.apache.isis.core.metamodel.progmodel.ProgrammingModel.Marker;
+import org.apache.isis.persistence.jpa.metamodel.facets.prop.column.MandatoryFromJpaColumnAnnotationFacetFactory;
+import org.apache.isis.persistence.jpa.metamodel.facets.prop.transients.JpaTransientAnnotationFacetFactory;
import lombok.val;
@@ -33,7 +36,7 @@ public class JpaProgrammingModel implements MetaModelRefiner {
@Override
public void refineProgrammingModel(ProgrammingModel pm) {
- val step1 = ProgrammingModel.FacetProcessingOrder.C2_AFTER_METHOD_REMOVING;
+// val step1 = ProgrammingModel.FacetProcessingOrder.C2_AFTER_METHOD_REMOVING;
//
// // come what may, we have to ignore the PersistenceCapable supertype.
// pm.addFactory(step1, RemoveJdoEnhancementTypesFacetFactory.class, Marker.JDO);
@@ -45,8 +48,8 @@ public class JpaProgrammingModel implements MetaModelRefiner {
val step2 = ProgrammingModel.FacetProcessingOrder.A2_AFTER_FALLBACK_DEFAULTS;
-//
-// pm.addFactory(step2, JdoPersistenceCapableAnnotationFacetFactory.class, Marker.JDO);
+
+ pm.addFactory(step2, JpaTransientAnnotationFacetFactory.class, Marker.JPA);
// pm.addFactory(step2, JdoDatastoreIdentityAnnotationFacetFactory.class, Marker.JDO);
//
// pm.addFactory(step2, JdoPrimaryKeyAnnotationFacetFactory.class, Marker.JDO);
@@ -61,7 +64,7 @@ public class JpaProgrammingModel implements MetaModelRefiner {
// // must appear after JdoPrimaryKeyAnnotationFacetFactory (above)
// // and also MandatoryFacetOnPropertyMandatoryAnnotationFactory
// // and also PropertyAnnotationFactory
-// pm.addFactory(step2, MandatoryFromJdoColumnAnnotationFacetFactory.class, Marker.JDO);
+ pm.addFactory(step2, MandatoryFromJpaColumnAnnotationFacetFactory.class, Marker.JPA);
//
//
// // -- validators
diff --git a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/column/MandatoryFacetDerivedFromJpaColumn.java b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/column/MandatoryFacetDerivedFromJpaColumn.java
new file mode 100644
index 0000000..4529614
--- /dev/null
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/column/MandatoryFacetDerivedFromJpaColumn.java
@@ -0,0 +1,17 @@
+package org.apache.isis.persistence.jpa.metamodel.facets.prop.column;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetAbstract;
+
+/**
+ * Derived by presence of an <tt>@Column</tt> method.
+ */
+public class MandatoryFacetDerivedFromJpaColumn extends MandatoryFacetAbstract {
+
+
+ public MandatoryFacetDerivedFromJpaColumn(final FacetHolder holder, final boolean required) {
+ super(holder, Semantics.of(required));
+ }
+
+
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..01afd37
--- /dev/null
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/column/MandatoryFromJpaColumnAnnotationFacetFactory.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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
+ *
+ * http://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 org.apache.isis.persistence.jpa.metamodel.facets.prop.column;
+
+import javax.persistence.Column;
+
+import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+
+import lombok.val;
+
+public class MandatoryFromJpaColumnAnnotationFacetFactory
+extends FacetFactoryAbstract {
+
+ public MandatoryFromJpaColumnAnnotationFacetFactory() {
+ super(FeatureType.PROPERTIES_ONLY);
+ }
+
+ @Override
+ public void process(final ProcessMethodContext processMethodContext) {
+
+ //val cls = processMethodContext.getCls();
+
+ final Column annotation = processMethodContext.synthesizeOnMethod(Column.class)
+ .orElse(null);
+
+ if (annotation == null) {
+ return;
+ }
+
+ val facetHolder = processMethodContext.getFacetHolder();
+ FacetUtil.addFacet(new MandatoryFacetDerivedFromJpaColumn(
+ facetHolder,
+ !annotation.nullable()));
+ }
+
+
+}
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetImpl.java b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/transients/JpaTransientAnnotationFacet.java
similarity index 74%
copy from persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetImpl.java
copy to persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/transients/JpaTransientAnnotationFacet.java
index b4086da..1f70861 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetImpl.java
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/transients/JpaTransientAnnotationFacet.java
@@ -16,15 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.persistence.jdo.metamodel.facets.prop.notpersistent;
+package org.apache.isis.persistence.jpa.metamodel.facets.prop.transients;
+import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+public class JpaTransientAnnotationFacet
+extends FacetAbstract {
-public class JdoNotPersistentFacetImpl extends JdoNotPersistentFacetAbstract {
-
- public JdoNotPersistentFacetImpl(final FacetHolder holder) {
- super(holder);
+ protected JpaTransientAnnotationFacet(FacetHolder holder) {
+ super(JpaTransientFacet.class, holder);
}
}
diff --git a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/transients/JpaTransientAnnotationFacetFactory.java b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/transients/JpaTransientAnnotationFacetFactory.java
new file mode 100644
index 0000000..d13e877
--- /dev/null
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/transients/JpaTransientAnnotationFacetFactory.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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
+ *
+ * http://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 org.apache.isis.persistence.jpa.metamodel.facets.prop.transients;
+
+import javax.persistence.Transient;
+
+import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.FacetedMethod;
+
+public class JpaTransientAnnotationFacetFactory
+extends FacetFactoryAbstract {
+
+ public JpaTransientAnnotationFacetFactory() {
+ super(FeatureType.PROPERTIES_ONLY);
+ }
+
+ @Override
+ public void process(ProcessMethodContext processMethodContext) {
+
+ //val cls = processMethodContext.getCls();
+
+ final Transient annotation = processMethodContext.synthesizeOnMethod(Transient.class)
+ .orElse(null);
+
+ if (annotation == null) {
+ return;
+ }
+
+ final FacetedMethod holder = processMethodContext.getFacetHolder();
+ FacetUtil.addFacet(new JpaTransientAnnotationFacet(holder));
+ }
+
+
+}
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetImpl.java b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/transients/JpaTransientFacet.java
similarity index 72%
rename from persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetImpl.java
rename to persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/transients/JpaTransientFacet.java
index b4086da..9e9bc6f 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetImpl.java
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/transients/JpaTransientFacet.java
@@ -16,15 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.persistence.jdo.metamodel.facets.prop.notpersistent;
+package org.apache.isis.persistence.jpa.metamodel.facets.prop.transients;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.Facet;
-
-public class JdoNotPersistentFacetImpl extends JdoNotPersistentFacetAbstract {
-
- public JdoNotPersistentFacetImpl(final FacetHolder holder) {
- super(holder);
- }
+public interface JpaTransientFacet extends Facet {
}
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaBook.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaBook.java
index 6767119..33ef8e0 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaBook.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaBook.java
@@ -26,7 +26,6 @@ import javax.persistence.EntityListeners;
import javax.persistence.Transient;
import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Nature;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.Publishing;
import org.apache.isis.persistence.jpa.applib.integration.JpaEntityInjectionPointResolver;
@@ -46,7 +45,6 @@ import lombok.extern.log4j.Log4j2;
@DiscriminatorValue("Book")
@DomainObject(
objectType = "testdomain.jpa.Book",
- nature = Nature.ENTITY, //TODO[ISIS-2332] should not be required, when using JPA quick classify SPI
entityChangePublishing = Publishing.ENABLED)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString(callSuper = true)
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaInventory.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaInventory.java
index 579f332..7a9fd8f 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaInventory.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaInventory.java
@@ -30,7 +30,6 @@ import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Nature;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.Publishing;
@@ -43,7 +42,6 @@ import lombok.ToString;
@Entity
@DomainObject(
objectType = "testdomain.jdo.Inventory",
- nature = Nature.ENTITY, //TODO[2033] should not be required, when using JPA quick classify SPI
entityChangePublishing = Publishing.ENABLED)
@NamedQuery(
name = "JpaInventory.findAffordableProducts",
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaProduct.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaProduct.java
index 883e590..be665d6 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaProduct.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaProduct.java
@@ -36,7 +36,6 @@ import javax.persistence.OneToMany;
import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.Nature;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.commons.internal.base._Strings;
@@ -54,9 +53,7 @@ import lombok.ToString;
name="product_type",
discriminatorType = DiscriminatorType.STRING)
@DomainObject(
- objectType = "testdomain.jpa.Product",
- nature = Nature.ENTITY //TODO[2033] should not be required, when using JPA quick classify SPI
- )
+ objectType = "testdomain.jpa.Product")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaProductComment.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaProductComment.java
index 0cc4cd0..67bad27 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaProductComment.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/entities/JpaProductComment.java
@@ -29,7 +29,6 @@ import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Nature;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.mixins.timestamp.Timestampable;
@@ -38,8 +37,7 @@ import lombok.Setter;
@Entity
@DomainObject(
- objectType = "testdomain.jpa.ProductComment",
- nature = Nature.ENTITY) //TODO[ISIS-2332] should not be required, when using JPA quick classify SPI
+ objectType = "testdomain.jpa.ProductComment")
public class JpaProductComment implements Timestampable {
@Id
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/springdata/Employee.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/springdata/Employee.java
index 7aa7268..db3d128 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/springdata/Employee.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jpa/springdata/Employee.java
@@ -18,13 +18,11 @@
*/
package org.apache.isis.testdomain.jpa.springdata;
+import javax.inject.Named;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Nature;
-
import lombok.AccessLevel;
import lombok.EqualsAndHashCode;
import lombok.Getter;
@@ -33,7 +31,7 @@ import lombok.Setter;
import lombok.ToString;
@Entity
-@DomainObject(nature=Nature.ENTITY, objectType = "testdomain.jpa.springdata.Employee")
+@Named("testdomain.jpa.springdata.Employee")
@Getter @Setter @ToString @EqualsAndHashCode
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Employee {