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 2022/05/24 12:24:27 UTC
[isis] branch master updated: ISIS-3063: purge logical naming facets
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 c675a0676d ISIS-3063: purge logical naming facets
c675a0676d is described below
commit c675a0676d00d6031a099780ade26eca8e3e22b9
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue May 24 14:24:20 2022 +0200
ISIS-3063: purge logical naming facets
---
.../org/apache/isis/applib/annotation/Aliased.java | 54 ----------
.../isis/applib/annotation/DomainObject.java | 7 +-
.../isis/applib/annotation/DomainService.java | 7 ++
.../org/apache/isis/applib/id/LogicalType.java | 27 ++++-
.../beans/IsisBeanTypeClassifierDefault.java | 63 ++---------
.../progmodel/ProgrammingModelConstants.java | 4 +-
... => AliasedFacetForDomainObjectAnnotation.java} | 31 +++---
.../DomainObjectAnnotationFacetFactory.java | 25 +++--
.../LogicalTypeFacetForAnnotationFacetFactory.java | 67 ------------
...gicalTypeFacetForLogicalTypeNameAnnotation.java | 53 ---------
.../LogicalTypeFacetForNamedAnnotation.java | 52 ---------
.../{LogicalTypeFacet.java => AliasedFacet.java} | 9 +-
...acetAbstract.java => AliasedFacetAbstract.java} | 28 ++---
.../logicaltype/LogicalTypeMalformedValidator.java | 8 +-
.../classname/LogicalTypeFacetFromClassName.java | 37 -------
.../LogicalTypeFacetFromClassNameFactory.java | 49 ++-------
.../LogicalTypeFacetFromIoCNamingStrategy.java | 36 -------
.../LogicalTypeFacetOnStandaloneList.java | 30 ------
...ionOrAnyMatchingValueSemanticsFacetFactory.java | 10 +-
.../LogicalTypeFacetForValueAnnotation.java | 52 ---------
.../annotation/ValueAnnotationFacetFactory.java | 54 ----------
.../dflt/ProgrammingModelFacetsJava11.java | 3 -
.../specloader/LogicalTypeResolverDefault.java | 9 +-
.../specloader/specimpl/IntrospectionState.java | 2 +-
.../DomainObjectAnnotationFacetFactoryTest.java | 26 ++---
.../NamedAnnotationFacetFactoryTest.java | 32 ++++--
.../ObjectTypeAnnotationFacetFactoryTest.java | 69 ------------
.../LogicalTypeFacetFromClassNameFactoryTest.java | 113 --------------------
.../logicaltype/LogicalTypeInferenceTest.java | 66 ++++++++++++
.../facets/param/name/ParameterNameFacetTest.java | 4 +-
.../testspec/ObjectSpecificationStub.java | 13 +--
.../dom/CustomerAsProxiedByDataNucleus.java | 4 +-
.../jdo/metamodel/beans/JdoBeanTypeClassifier.java | 41 +++----
.../JdoDiscriminatorAnnotationFacetFactory.java | 111 -------------------
.../JdoDiscriminatorFacetDefault.java | 31 ------
.../facets/object/discriminator/package-info.java | 17 ---
...calTypeFacetFromJdoPersistenceCapableFacet.java | 58 ----------
.../JdoPersistenceCapableFacetFactory.java | 9 --
...JdoDiscriminatorAnnotationFacetFactoryTest.java | 118 ---------------------
.../discriminator/JdoDiscriminatorFacet.java | 25 -----
.../LogicalTypeFacetForTableAnnotation.java | 57 ----------
.../table/JpaTableAnnotationFacetFactory.java | 8 --
42 files changed, 230 insertions(+), 1289 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/Aliased.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/Aliased.java
deleted file mode 100644
index 8768f26294..0000000000
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/Aliased.java
+++ /dev/null
@@ -1,54 +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.applib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import javax.inject.Named;
-
-import org.apache.isis.applib.services.bookmark.Bookmark;
-
-/**
- * Introduced to allow for historic bookmarks to be resolved to
- * their corresponding new types.
- * @see Bookmark
- * @see Named
- *
- * @since 2.0 {@index}
- */
-@Inherited
-@Target({
- ElementType.TYPE,
- ElementType.ANNOTATION_TYPE
-})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Aliased {
-
- /**
- * Alternative logical type name(s) for the annotated type.
- * @see Bookmark
- * @see Named
- */
- String[] value() default {};
-
-}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObject.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObject.java
index 7d10da9d6f..b2b5e751e1 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObject.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObject.java
@@ -66,7 +66,12 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
@Component @Scope("prototype")
public @interface DomainObject {
- // ...
+ /**
+ * Alternative logical type name(s) for the annotated type.
+ * @see Bookmark
+ * @see Named
+ */
+ String[] aliased() default {};
/**
* The class of the domain service that provides an <code>autoComplete(String)</code> method.
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainService.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainService.java
index 1106ad67b1..343a91fa52 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainService.java
@@ -57,6 +57,13 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
@Service @Singleton
public @interface DomainService {
+ /**
+ * Alternative logical type name(s) for the annotated type.
+ * @see Bookmark
+ * @see Named
+ */
+ String[] aliased() default {};
+
/**
* The nature of this service, either in the UI or REST only
*
diff --git a/api/applib/src/main/java/org/apache/isis/applib/id/LogicalType.java b/api/applib/src/main/java/org/apache/isis/applib/id/LogicalType.java
index fe40ab9113..e5a52fe773 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/id/LogicalType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/id/LogicalType.java
@@ -21,10 +21,13 @@ package org.apache.isis.applib.id;
import java.io.InvalidObjectException;
import java.io.ObjectInputStream;
import java.io.Serializable;
+import java.util.Locale;
import java.util.Objects;
+import java.util.Optional;
import java.util.function.Supplier;
import javax.inject.Named;
+import javax.persistence.Table;
import org.springframework.lang.Nullable;
@@ -111,6 +114,7 @@ implements
/**
* Infer from annotations.
*/
+ @SuppressWarnings("removal")
public static LogicalType infer(
final @NonNull Class<?> correspondingClass) {
@@ -154,8 +158,29 @@ implements
return eager(correspondingClass, logicalTypeName);
}
}
+
+ // fallback to @Table annotations
+ {
+ val logicalTypeName =
+ _Annotations.synthesize(correspondingClass, Table.class)
+ .map(table->
+ _Strings.nullToEmpty(table.schema())
+ .toLowerCase(Locale.ROOT)
+ + "."
+ + _Strings.nullToEmpty(table.name()))
+ .orElse(null);
+ if(logicalTypeName!=null
+ && !logicalTypeName.startsWith(".")
+ && !logicalTypeName.endsWith(".")) {
+ return eager(correspondingClass, logicalTypeName);
+ }
+ }
+
// fallback to fqcn
- return eager(correspondingClass, correspondingClass.getName());
+ return eager(correspondingClass,
+ Optional
+ .ofNullable(correspondingClass.getCanonicalName())
+ .orElseGet(correspondingClass::getName));
}
// -- HIDDEN CONSTRUTORS
diff --git a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeClassifierDefault.java b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeClassifierDefault.java
index 13afb846e1..00b2c4254b 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeClassifierDefault.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeClassifierDefault.java
@@ -21,20 +21,17 @@ package org.apache.isis.core.config.beans;
import java.io.Serializable;
import java.lang.reflect.Modifier;
import java.util.Collection;
-import java.util.Locale;
-import javax.inject.Named;
import javax.persistence.Entity;
-import javax.persistence.Table;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.applib.services.metamodel.BeanSort;
import org.apache.isis.commons.collections.Can;
-import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.reflection._Annotations;
import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.TypeVetoMarker;
@@ -105,12 +102,11 @@ implements IsisBeanTypeClassifier {
val aDomainService = _Annotations.synthesize(type, DomainService.class);
if(aDomainService.isPresent()) {
- return _Strings.isNotEmpty(aDomainService.get().logicalTypeName())
- ? BeanClassification
+ val logicalType = LogicalType.infer(type);
+ // overrides Spring naming strategy
+ return BeanClassification
.delegated(BeanSort.MANAGED_BEAN_CONTRIBUTING,
- aDomainService.get().logicalTypeName())
- : BeanClassification
- .delegated(BeanSort.MANAGED_BEAN_CONTRIBUTING);
+ logicalType.getLogicalTypeName());
}
// allow ServiceLoader plugins to have a say, eg. when classifying entity types
@@ -127,58 +123,19 @@ implements IsisBeanTypeClassifier {
val entityAnnotation = _Annotations.synthesize(type, Entity.class).orElse(null);
if(entityAnnotation!=null) {
-
- String logicalTypeName = null;
-
- // deprecated @DomainObject(logicalTypeName=...)
- val aDomainObject = _Annotations.synthesize(type, DomainObject.class).orElse(null);
- if(aDomainObject!=null) {
- logicalTypeName = aDomainObject.logicalTypeName();
- }
-
- val named = _Annotations.synthesize(type, Named.class).orElse(null);
- if(named!=null) {
- logicalTypeName = named.value();
- }
-
- // don't trample over the @Named/@DomainObject(logicalTypeName=..) if present
- if(_Strings.isEmpty(logicalTypeName)) {
- val aTable = _Annotations.synthesize(type, Table.class).orElse(null);
- if(aTable!=null) {
- val schema = aTable.schema();
- if(_Strings.isNotEmpty(schema)) {
- val table = aTable.name();
- logicalTypeName = String.format("%s.%s", schema.toLowerCase(Locale.ROOT),
- _Strings.isNotEmpty(table)
- ? table
- : type.getSimpleName());
- }
- }
- }
-
- if(_Strings.isNotEmpty(logicalTypeName)) {
- BeanClassification.selfManaged(
- BeanSort.ENTITY, logicalTypeName);
- }
- return BeanClassification.selfManaged(BeanSort.ENTITY);
+ val logicalType = LogicalType.infer(type);
+ return BeanClassification.selfManaged(
+ BeanSort.ENTITY, logicalType.getLogicalTypeName());
}
val aDomainObject = _Annotations.synthesize(type, DomainObject.class).orElse(null);
if(aDomainObject!=null) {
switch (aDomainObject.nature()) {
case BEAN:
-
- // deprecated @DomainObject(logicalTypeName=...)
- String logicalTypeName = aDomainObject.logicalTypeName();
-
- val named = _Annotations.synthesize(type, Named.class).orElse(null);
- if(named!=null) {
- logicalTypeName = named.value();
- }
-
+ val logicalTypeName = LogicalType.infer(type).getLogicalTypeName();
return BeanClassification.delegated(
BeanSort.MANAGED_BEAN_CONTRIBUTING,
- _Strings.emptyToNull(logicalTypeName));
+ logicalTypeName);
case MIXIN:
return BeanClassification.selfManaged(BeanSort.MIXIN);
case ENTITY:
diff --git a/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java b/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
index 8dc2ca1b07..b79084ddea 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
@@ -447,8 +447,8 @@ public final class ProgrammingModelConstants {
+ "(for de-serialization from memento string)."),
DOMAIN_OBJECT_MISSING_A_NAMESPACE("${type}: the object type must declare a namespace, "
+ "yet there was none found in '${logicalTypeName}'; "
- + "eg. @DomainObject(logicalTypeName=\"Customer\") is considered invalid, "
- + "whereas @DomainObject(logicalTypeName=\"sales.Customer\") is valid."),
+ + "eg. @Named(\"Customer\") is considered invalid, "
+ + "whereas @Named(\"sales.Customer\") is valid."),
DOMAIN_SERVICE_MISSING_A_NAMESPACE("${type}: the service type must declare a namespace, "
+ "yet there was none found in '${logicalTypeName}'; "
+ "Spring supports various naming strategies @Named(...) being one of them, "
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/AliasedFacetForDomainObjectAnnotation.java
similarity index 67%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForDomainObjectAnnotation.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/AliasedFacetForDomainObjectAnnotation.java
index 0ffe337c1b..8cfd760020 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/AliasedFacetForDomainObjectAnnotation.java
@@ -16,37 +16,38 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.metamodel.facets.object.domainobject.logicaltype;
+package org.apache.isis.core.metamodel.facets.object.domainobject;
import java.util.Optional;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacetAbstract;
+import org.apache.isis.core.metamodel.facets.object.logicaltype.AliasedFacet;
+import org.apache.isis.core.metamodel.facets.object.logicaltype.AliasedFacetAbstract;
-@Deprecated //@DomainObject(logicalTypeName=...) is deprecated
-public class LogicalTypeFacetForDomainObjectAnnotation
-extends LogicalTypeFacetAbstract {
+public class AliasedFacetForDomainObjectAnnotation
+extends AliasedFacetAbstract {
- public static Optional<LogicalTypeFacet> create(
+ public static Optional<AliasedFacet> create(
final Optional<DomainObject> domainObjectIfAny,
final Class<?> correspondingClass,
final FacetHolder holder) {
return domainObjectIfAny
- .map(annot->annot.logicalTypeName())
- .filter(_Strings::isNotEmpty)
- .map(logicalTypeName -> new LogicalTypeFacetForDomainObjectAnnotation(
- LogicalType.eager(correspondingClass, logicalTypeName),
+ .map(annot->annot.aliased())
+ .map(Can::ofArray)
+ .filter(Can::isNotEmpty)
+ .map(aliasNames -> new AliasedFacetForDomainObjectAnnotation(
+ aliasNames
+ .map(aliasName->LogicalType.eager(correspondingClass, aliasName)),
holder));
}
- private LogicalTypeFacetForDomainObjectAnnotation(
- final LogicalType logicalType,
+ private AliasedFacetForDomainObjectAnnotation(
+ final Can<LogicalType> aliases,
final FacetHolder holder) {
- super(logicalType, holder);
+ super(aliases, holder);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index 64267f8ce6..959c9aeac4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -25,6 +25,7 @@ import java.util.Optional;
import java.util.stream.Collectors;
import javax.inject.Inject;
+import javax.inject.Named;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.Action;
@@ -71,7 +72,6 @@ import org.apache.isis.core.metamodel.facets.object.domainobject.editing.Editing
import org.apache.isis.core.metamodel.facets.object.domainobject.editing.ImmutableFacetForDomainObjectAnnotation;
import org.apache.isis.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetForDomainObjectAnnotation;
import org.apache.isis.core.metamodel.facets.object.domainobject.introspection.IntrospectionPolicyFacetForDomainObjectAnnotation;
-import org.apache.isis.core.metamodel.facets.object.domainobject.logicaltype.LogicalTypeFacetForDomainObjectAnnotation;
import org.apache.isis.core.metamodel.facets.object.mixin.MetaModelValidatorForMixinTypes;
import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacetForDomainObjectAnnotation;
import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacetForDomainObjectAnnotation;
@@ -112,7 +112,8 @@ implements
public void process(final ProcessObjectTypeContext processClassContext) {
val domainObjectIfAny = processClassContext.synthesizeOnType(DomainObject.class);
- processLogicalTypeName(domainObjectIfAny, processClassContext);
+ processAliased(domainObjectIfAny, processClassContext);
+ processIntrospecion(domainObjectIfAny, processClassContext);
// conflicting type semantics validation ...
validateConflictingTypeSemantics(domainObjectIfAny, processClassContext);
@@ -166,7 +167,8 @@ implements
}
if(domainObject.nature().isMixin()
- && _Strings.isNotEmpty(domainObject.logicalTypeName())) {
+ && (_Strings.isNotEmpty(domainObject.logicalTypeName())
+ || processClassContext.synthesizeOnType(Named.class).isPresent())) {
// just a console warning, not decided yet whether we should be strict and fail MM validation
log.warn("Mixins don't need a logicalTypeName, as was declared with {}.", cls.getName());
}
@@ -311,8 +313,8 @@ implements
.create(domainObjectIfAny, getConfiguration(), facetHolder));
}
- // check from @DomainObject(logicalTypeName=..., introspection=...)
- void processLogicalTypeName(
+ // check from @DomainObject(aliased=...)
+ void processAliased(
final Optional<DomainObject> domainObjectIfAny,
final ProcessObjectTypeContext processClassContext) {
@@ -320,16 +322,25 @@ implements
val facetHolder = processClassContext.getFacetHolder();
FacetUtil.addFacetIfPresent(
- LogicalTypeFacetForDomainObjectAnnotation
+ AliasedFacetForDomainObjectAnnotation
.create(domainObjectIfAny, cls, facetHolder));
+ }
+
+ // check from @DomainObject(introspection=...)
+ void processIntrospecion(
+ final Optional<DomainObject> domainObjectIfAny,
+ final ProcessObjectTypeContext processClassContext) {
+
+ val cls = processClassContext.getCls();
+ val facetHolder = processClassContext.getFacetHolder();
FacetUtil.addFacetIfPresent(
IntrospectionPolicyFacetForDomainObjectAnnotation
.create(domainObjectIfAny, cls, facetHolder));
-
}
+
void processNature(
final Optional<DomainObject> domainObjectIfAny,
final ProcessClassContext processClassContext) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForAnnotationFacetFactory.java
deleted file mode 100644
index 150f630006..0000000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForAnnotationFacetFactory.java
+++ /dev/null
@@ -1,67 +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.core.metamodel.facets.object.domainobject.logicaltype;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.apache.isis.applib.annotation.LogicalTypeName;
-import org.apache.isis.core.metamodel.commons.ClassExtensions;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-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.methods.MethodByClassMap;
-
-import lombok.val;
-
-public class LogicalTypeFacetForAnnotationFacetFactory
-extends FacetFactoryAbstract {
-
- @Inject
- public LogicalTypeFacetForAnnotationFacetFactory(
- final MetaModelContext mmc,
- final MethodByClassMap postConstructMethodsCache) {
- super(mmc, FeatureType.OBJECTS_ONLY);
- }
-
- @Override
- public void process(final ProcessClassContext processClassContext) {
-
- val cls = processClassContext.getCls();
- val facetHolder = processClassContext.getFacetHolder();
-
- // deprecated annotation @LogicalTypeName
- if(cls.isInterface()
- || ClassExtensions.isAbstract(cls)) {
- val logicalTypeNameIfAny = processClassContext.synthesizeOnType(LogicalTypeName.class);
- FacetUtil.addFacetIfPresent(
- LogicalTypeFacetForLogicalTypeNameAnnotation
- .create(logicalTypeNameIfAny, cls, facetHolder));
- }
-
- val namedIfAny = processClassContext.synthesizeOnType(Named.class);
-
- FacetUtil.addFacetIfPresent(
- LogicalTypeFacetForNamedAnnotation
- .create(namedIfAny, cls, facetHolder));
-
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForLogicalTypeNameAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForLogicalTypeNameAnnotation.java
deleted file mode 100644
index e75746e631..0000000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForLogicalTypeNameAnnotation.java
+++ /dev/null
@@ -1,53 +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.core.metamodel.facets.object.domainobject.logicaltype;
-
-import java.util.Optional;
-
-import org.apache.isis.applib.annotation.LogicalTypeName;
-import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacetAbstract;
-
-@Deprecated //@LogicalTypeName(...) is deprecated
-public class LogicalTypeFacetForLogicalTypeNameAnnotation
-extends LogicalTypeFacetAbstract {
-
- public static Optional<LogicalTypeFacet> create(
- final Optional<LogicalTypeName> logicalTypeIfAny,
- final Class<?> correspondingClass,
- final FacetHolder holder) {
-
- return logicalTypeIfAny
- .map(annot->annot.value())
- .filter(_Strings::isNotEmpty)
- .map(logicalTypeName -> new LogicalTypeFacetForLogicalTypeNameAnnotation(
- LogicalType.eager(correspondingClass, logicalTypeName),
- holder));
- }
-
- private LogicalTypeFacetForLogicalTypeNameAnnotation(
- final LogicalType logicalType,
- final FacetHolder holder) {
- // Precedence.LOW ensures, to get overruled by @DomainObject(logicalTypeName=...)
- super(logicalType, holder, Precedence.LOW);
- }
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForNamedAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForNamedAnnotation.java
deleted file mode 100644
index 29ac9968fe..0000000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForNamedAnnotation.java
+++ /dev/null
@@ -1,52 +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.core.metamodel.facets.object.domainobject.logicaltype;
-
-import java.util.Optional;
-
-import javax.inject.Named;
-
-import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacetAbstract;
-
-public class LogicalTypeFacetForNamedAnnotation
-extends LogicalTypeFacetAbstract {
-
- public static Optional<LogicalTypeFacet> create(
- final Optional<Named> namedIfAny,
- final Class<?> correspondingClass,
- final FacetHolder holder) {
-
- return namedIfAny
- .map(annot->annot.value())
- .filter(_Strings::isNotEmpty)
- .map(logicalTypeName -> new LogicalTypeFacetForNamedAnnotation(
- LogicalType.eager(correspondingClass, logicalTypeName),
- holder));
- }
-
- private LogicalTypeFacetForNamedAnnotation(
- final LogicalType logicalType,
- final FacetHolder holder) {
- super(logicalType, holder, Precedence.HIGH);
- }
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/AliasedFacet.java
similarity index 91%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeFacet.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/AliasedFacet.java
index e5b7f0827b..1ec8aa8baa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/AliasedFacet.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.facets.object.logicaltype;
import javax.inject.Named;
import org.apache.isis.applib.id.LogicalType;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.facetapi.Facet;
/**
@@ -44,12 +45,8 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
* in principle allowed to share the same logical type-name. In which case reverse
* lookup from logical-type-name to type must always resolve the most specific one (B).
*/
-public interface LogicalTypeFacet extends Facet {
+public interface AliasedFacet extends Facet {
- LogicalType getLogicalType();
-
- default String value() {
- return getLogicalType().getLogicalTypeName();
- }
+ Can<LogicalType> getAliases();
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/AliasedFacetAbstract.java
similarity index 69%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeFacetAbstract.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/AliasedFacetAbstract.java
index 29ab26e3b5..a79bcf4a00 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/AliasedFacetAbstract.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.facets.object.logicaltype;
import java.util.function.BiConsumer;
import org.apache.isis.applib.id.LogicalType;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -28,36 +29,35 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import lombok.Getter;
import lombok.NonNull;
-public abstract class LogicalTypeFacetAbstract
+public abstract class AliasedFacetAbstract
extends FacetAbstract
-implements LogicalTypeFacet {
+implements AliasedFacet {
private static final Class<? extends Facet> type() {
- return LogicalTypeFacet.class;
+ return AliasedFacet.class;
}
@Getter(onMethod_ = {@Override})
- private final @NonNull LogicalType logicalType;
+ private final @NonNull Can<LogicalType> aliases;
- protected LogicalTypeFacetAbstract(
- final LogicalType logicalType,
+ protected AliasedFacetAbstract(
+ final Can<LogicalType> aliases,
final FacetHolder holder) {
- super(LogicalTypeFacetAbstract.type(), holder);
- this.logicalType = logicalType;
+ super(AliasedFacetAbstract.type(), holder);
+ this.aliases = aliases;
}
- protected LogicalTypeFacetAbstract(
- final LogicalType logicalType,
+ protected AliasedFacetAbstract(
+ final Can<LogicalType> aliases,
final FacetHolder holder,
final Facet.Precedence precedence) {
- super(LogicalTypeFacetAbstract.type(), holder, precedence);
- this.logicalType = logicalType;
+ super(AliasedFacetAbstract.type(), holder, precedence);
+ this.aliases = aliases;
}
@Override
public void visitAttributes(final BiConsumer<String, Object> visitor) {
super.visitAttributes(visitor);
- visitor.accept("logicalTypeName", logicalType.getLogicalTypeName());
- visitor.accept("logicalTypeCorrespondingClass", logicalType.getCorrespondingClass().getName());
+ visitor.accept("aliases", aliases);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeMalformedValidator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeMalformedValidator.java
index e33fb6c7f5..cea0dc5abe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeMalformedValidator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeMalformedValidator.java
@@ -49,12 +49,8 @@ implements MetaModelRefiner {
return;
}
- val logicalTypeFacet = spec.getFacet(LogicalTypeFacet.class);
- if(logicalTypeFacet == null) {
- return;
- }
-
- val logicalTypeName = logicalTypeFacet.value();
+ val logicalType = spec.getLogicalType();
+ val logicalTypeName = logicalType.getLogicalTypeName();
val nameParts = _Strings.splitThenStream(logicalTypeName, ".")
.collect(Can.toCan());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromClassName.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromClassName.java
deleted file mode 100644
index 030d913fda..0000000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromClassName.java
+++ /dev/null
@@ -1,37 +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.core.metamodel.facets.object.logicaltype.classname;
-
-import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.core.metamodel.commons.ClassUtil;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacetAbstract;
-
-public class LogicalTypeFacetFromClassName
-extends LogicalTypeFacetAbstract {
-
- public LogicalTypeFacetFromClassName(final Class<?> cls, final FacetHolder holder) {
- this(LogicalType.eager(cls, ClassUtil.getCanonicalName_friendlyToInnerClasses(cls)), holder);
- }
-
- public LogicalTypeFacetFromClassName(final LogicalType logicalType, final FacetHolder holder) {
- super(logicalType, holder, Precedence.INFERRED);
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromClassNameFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromClassNameFactory.java
index bc20506466..09514d3f5d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromClassNameFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromClassNameFactory.java
@@ -23,16 +23,12 @@ import java.util.Collections;
import javax.inject.Inject;
import javax.xml.bind.annotation.XmlType;
-import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
import org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorDefault;
import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorRegistry;
@@ -69,49 +65,14 @@ implements
@Override
public void process(final ProcessObjectTypeContext processClassContext) {
- final FacetHolder facetHolder = processClassContext.getFacetHolder();
- // don't trash existing facet
- if(facetHolder.containsNonFallbackFacet(LogicalTypeFacet.class)) {
- return;
- }
- val cls = processClassContext.getCls();
- val substitute = classSubstitutorRegistry.getSubstitution(cls);
- if(substitute.isNeverIntrospect()) {
- return;
- }
- FacetUtil.addFacet(
- createLogicalTypeFacet(facetHolder, substitute.apply(cls)));
+ // no-op.
}
@Override
public void process(final ProcessClassContext processClassContext) {
- // now a no-op.
- }
-
- private static LogicalTypeFacet createLogicalTypeFacet(
- final FacetHolder facetHolder,
- final Class<?> substitutedClass) {
-
- val serviceId = getServiceId(facetHolder);
- val isService = serviceId!=null;
-
- return isService
- ? new LogicalTypeFacetFromIoCNamingStrategy(
- LogicalType
- .eager(substitutedClass, serviceId),
- facetHolder)
- : new LogicalTypeFacetFromClassName(substitutedClass, facetHolder);
+ // no-op.
}
- private static String getServiceId(final FacetHolder facetHolder) {
- if(facetHolder instanceof ObjectSpecification) {
- ObjectSpecification objectSpecification = (ObjectSpecification) facetHolder;
- if(objectSpecification.isManagedBean()) {
- return objectSpecification.getManagedBeanName();
- }
- }
- return null;
- }
@Override
public void refineProgrammingModel(final ProgrammingModel programmingModel) {
@@ -127,8 +88,10 @@ implements
return;
}
- val logicalTypeFacet = objectSpec.getFacet(LogicalTypeFacet.class);
- if(logicalTypeFacet instanceof LogicalTypeFacetFromClassName) {
+ val logicalType = objectSpec.getLogicalType();
+
+ //XXX has a slight chance to be a false positive; would need to check whether annotated with @Named
+ if(logicalType.getClassName().equals(logicalType.getLogicalTypeName())) {
ValidationFailure.raiseFormatted(
objectSpec,
"%s: the object type must be specified explicitly ('%s' config property). "
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromIoCNamingStrategy.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromIoCNamingStrategy.java
deleted file mode 100644
index 8e43e636de..0000000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromIoCNamingStrategy.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.core.metamodel.facets.object.logicaltype.classname;
-
-import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacetAbstract;
-
-/**
- * @since 2.0
- */
-public class LogicalTypeFacetFromIoCNamingStrategy
-extends LogicalTypeFacetAbstract {
-
- LogicalTypeFacetFromIoCNamingStrategy(
- final LogicalType logicalType, final FacetHolder holder) {
- super(logicalType, holder, Precedence.INFERRED);
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetOnStandaloneList.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetOnStandaloneList.java
deleted file mode 100644
index bbf822df1c..0000000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetOnStandaloneList.java
+++ /dev/null
@@ -1,30 +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.core.metamodel.facets.object.logicaltype.classname;
-
-import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacetAbstract;
-
-public class LogicalTypeFacetOnStandaloneList extends LogicalTypeFacetAbstract {
-
- public LogicalTypeFacetOnStandaloneList(final LogicalType logicalType, final FacetHolder holder) {
- super(logicalType, holder);
- }
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
index e54a230f80..90492a9dc9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
@@ -42,7 +42,6 @@ import org.apache.isis.core.metamodel.facets.object.value.MaxLengthFacetFromValu
import org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetFromValueFacet;
import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProvider;
-import org.apache.isis.core.metamodel.facets.value.annotation.LogicalTypeFacetForValueAnnotation;
import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
import lombok.AccessLevel;
@@ -87,14 +86,7 @@ extends FacetFactoryAbstract {
val facetHolder = processClassContext.getFacetHolder();
val valueIfAny = processClassContext.synthesizeOnType(Value.class);
- val logicalTypeFacetIfAny = addFacetIfPresent(
- LogicalTypeFacetForValueAnnotation
- .create(valueIfAny, valueClass, facetHolder));
-
- val logicalType = logicalTypeFacetIfAny
- .map(logicalTypeFacet->logicalTypeFacet.getLogicalType())
- .orElseGet(()->LogicalType.fqcn(valueClass));
-
+ val logicalType = LogicalType.infer(valueClass);
val identifier = Identifier.classIdentifier(logicalType);
val valueFacetIfAny = addAllFacetsForValueSemantics(identifier, valueClass, facetHolder, valueIfAny);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/annotation/LogicalTypeFacetForValueAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/annotation/LogicalTypeFacetForValueAnnotation.java
deleted file mode 100644
index 4c75e61ba4..0000000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/annotation/LogicalTypeFacetForValueAnnotation.java
+++ /dev/null
@@ -1,52 +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.core.metamodel.facets.value.annotation;
-
-import java.util.Optional;
-
-import org.apache.isis.applib.annotation.Value;
-import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacetAbstract;
-
-@Deprecated // @Value(logicalTypeName=...) is deprecated
-public class LogicalTypeFacetForValueAnnotation
-extends LogicalTypeFacetAbstract {
-
- public static Optional<LogicalTypeFacetForValueAnnotation> create(
- final Optional<Value> valueIfAny,
- final Class<?> correspondingClass,
- final FacetHolder holder) {
-
- return valueIfAny
- .map(annot->annot.logicalTypeName())
- .filter(_Strings::isNotEmpty)
- .map(logicalTypeName -> new LogicalTypeFacetForValueAnnotation(
- LogicalType.eager(correspondingClass, logicalTypeName),
- holder));
- }
-
- private LogicalTypeFacetForValueAnnotation(
- final LogicalType logicalType,
- final FacetHolder holder) {
- super(logicalType, holder);
- }
-
-}
\ No newline at end of file
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/annotation/ValueAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/annotation/ValueAnnotationFacetFactory.java
deleted file mode 100644
index 538e59b328..0000000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/annotation/ValueAnnotationFacetFactory.java
+++ /dev/null
@@ -1,54 +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.core.metamodel.facets.value.annotation;
-
-import javax.inject.Inject;
-
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
-
-import lombok.val;
-
-@Deprecated // @Value(logicalTypeName=...) is deprecated
-public class ValueAnnotationFacetFactory
-extends FacetFactoryAbstract
-implements
- ObjectTypeFacetFactory {
-
- @Inject
- public ValueAnnotationFacetFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.OBJECTS_ONLY);
- }
-
- @Override
- public void process(final ProcessObjectTypeContext processClassContext) {
- val cls = processClassContext.getCls();
- val facetHolder = processClassContext.getFacetHolder();
-
- // deprecated
- // @Value(logicalTypeName=...)
- val valueIfAny = processClassContext.synthesizeOnType(org.apache.isis.applib.annotation.Value.class);
- addFacetIfPresent(LogicalTypeFacetForValueAnnotation.create(valueIfAny, cls, facetHolder));
-
- }
-
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
index e0fb1088af..ae0a2e4b51 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
@@ -45,7 +45,6 @@ import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.bookmarkable.
import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacetFactory;
import org.apache.isis.core.metamodel.facets.object.choices.enums.ChoicesFacetFromEnumFactory;
import org.apache.isis.core.metamodel.facets.object.domainobject.DomainObjectAnnotationFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.domainobject.logicaltype.LogicalTypeFacetForAnnotationFacetFactory;
import org.apache.isis.core.metamodel.facets.object.domainobjectlayout.DomainObjectLayoutFacetFactory;
import org.apache.isis.core.metamodel.facets.object.domainservice.annotation.DomainServiceFacetAnnotationFactory;
import org.apache.isis.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacetFactory;
@@ -191,8 +190,6 @@ extends ProgrammingModelAbstract {
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ViewModelFacetFactory(mmc, postConstructMethodsCache));
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new JaxbFacetFactory(mmc));
- addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new LogicalTypeFacetForAnnotationFacetFactory(mmc, postConstructMethodsCache));
-
// must come after RecreatableObjectFacetFactory
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new DomainObjectAnnotationFacetFactory(mmc, postConstructMethodsCache));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/LogicalTypeResolverDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/LogicalTypeResolverDefault.java
index ce7a271a8b..8f92d4d553 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/LogicalTypeResolverDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/LogicalTypeResolverDefault.java
@@ -23,7 +23,6 @@ import java.util.Optional;
import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.commons.internal.collections._Maps;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import lombok.NonNull;
@@ -50,7 +49,7 @@ class LogicalTypeResolverDefault implements LogicalTypeResolver {
// collect concrete classes (do not collect abstract or anonymous types or interfaces)
if(!spec.isAbstract()
- && hasUsableObjectTypeFacet(spec)) {
+ && hasTypeIdentity(spec)) {
val key = spec.getLogicalTypeName();
@@ -74,10 +73,10 @@ class LogicalTypeResolverDefault implements LogicalTypeResolver {
// -- HELPER
- private boolean hasUsableObjectTypeFacet(ObjectSpecification spec) {
+ private boolean hasTypeIdentity(final ObjectSpecification spec) {
// anonymous inner classes (eg org.estatio.dom.WithTitleGetter$ToString$1)
- // don't have an ObjectType; hence the guard.
- return spec.containsNonFallbackFacet(LogicalTypeFacet.class);
+ // don't have type identity; hence the guard.
+ return spec.getCorrespondingClass().getCanonicalName()!=null;
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionState.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionState.java
index add420ac7b..9163ef62dc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionState.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionState.java
@@ -18,7 +18,7 @@
*/
package org.apache.isis.core.metamodel.specloader.specimpl;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
+import org.apache.isis.core.metamodel.facets.object.logicaltype.AliasedFacet;
public enum IntrospectionState implements Comparable<IntrospectionState> {
/**
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index 5441f32a4f..f6c649657a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -35,6 +35,7 @@ import static org.junit.Assert.assertFalse;
import org.apache.isis.applib.annotation.Bounding;
import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.applib.mixins.system.HasInteractionId;
import org.apache.isis.core.config.IsisConfiguration;
import org.apache.isis.core.config.metamodel.facets.EditingObjectsConfiguration;
@@ -51,10 +52,8 @@ import org.apache.isis.core.metamodel.facets.object.domainobject.editing.Immutab
import org.apache.isis.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetForDomainObjectAnnotation;
import org.apache.isis.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured;
import org.apache.isis.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetFromConfiguration;
-import org.apache.isis.core.metamodel.facets.object.domainobject.logicaltype.LogicalTypeFacetForAnnotationFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.domainobject.logicaltype.LogicalTypeFacetForNamedAnnotation;
import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
+import org.apache.isis.core.metamodel.facets.object.logicaltype.AliasedFacet;
import org.apache.isis.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacet;
import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacetForDomainObjectAnnotation;
@@ -67,12 +66,10 @@ public class DomainObjectAnnotationFacetFactoryTest
extends AbstractFacetFactoryJUnit4TestCase {
DomainObjectAnnotationFacetFactory facetFactory;
- LogicalTypeFacetForAnnotationFacetFactory facetFactory2;
@Before
public void setUp() throws Exception {
facetFactory = new DomainObjectAnnotationFacetFactory(metaModelContext, new MethodByClassMap());
- facetFactory2 = new LogicalTypeFacetForAnnotationFacetFactory(metaModelContext, new MethodByClassMap());
}
@Override
@@ -578,19 +575,8 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void whenDomainObjectAndObjectTypeSetToTrue() {
-
- facetFactory2.process(ProcessClassContext
- .forTesting(CustomerWithDomainObjectAndObjectTypeSet.class, mockMethodRemover, facetHolder));
-
- final Facet facet = facetHolder.getFacet(LogicalTypeFacet.class);
- Assert.assertNotNull(facet);
-
- Assert.assertTrue(facet instanceof LogicalTypeFacetForNamedAnnotation);
- final LogicalTypeFacetForNamedAnnotation facetForDomainObjectAnnotation =
- (LogicalTypeFacetForNamedAnnotation) facet;
-
- assertThat(facetForDomainObjectAnnotation.value(), is("CUS"));
-
+ assertThat(LogicalType.infer(CustomerWithDomainObjectAndObjectTypeSet.class).getLogicalTypeName(),
+ is("CUS"));
expectNoMethodsRemoved();
}
@@ -600,7 +586,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
facetFactory.process(ProcessClassContext
.forTesting(CustomerWithDomainObjectButNoObjectType.class, mockMethodRemover, facetHolder));
- final Facet facet = facetHolder.getFacet(LogicalTypeFacet.class);
+ final Facet facet = facetHolder.getFacet(AliasedFacet.class);
Assert.assertNull(facet);
expectNoMethodsRemoved();
@@ -612,7 +598,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
facetFactory.process(ProcessClassContext
.forTesting(DomainObjectAnnotationFacetFactoryTest.Customer.class, mockMethodRemover, facetHolder));
- final Facet facet = facetHolder.getFacet(LogicalTypeFacet.class);
+ final Facet facet = facetHolder.getFacet(AliasedFacet.class);
Assert.assertNull(facet);
expectNoMethodsRemoved();
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/LogicalTypeFacetFromJdoDiscriminatorValueAnnotation.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/NamedAnnotationFacetFactoryTest.java
similarity index 56%
rename from persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/LogicalTypeFacetFromJdoDiscriminatorValueAnnotation.java
rename to core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/NamedAnnotationFacetFactoryTest.java
index bc5942e3b3..a5f2592ee0 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/LogicalTypeFacetFromJdoDiscriminatorValueAnnotation.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/NamedAnnotationFacetFactoryTest.java
@@ -16,20 +16,32 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.persistence.jdo.metamodel.facets.object.discriminator;
+package org.apache.isis.core.metamodel.facets.object.domainobject;
+import javax.inject.Named;
+
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacetAbstract;
+import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
+
+public class NamedAnnotationFacetFactoryTest
+extends AbstractFacetFactoryJUnit4TestCase {
-public class LogicalTypeFacetFromJdoDiscriminatorValueAnnotation
-extends LogicalTypeFacetAbstract {
+ @Test
+ public void logicalTypeNameAnnotationPickedUpOnClass() {
+
+ @Named("CUS")
+ @DomainObject
+ class Customer {
+ }
+
+ assertThat(LogicalType.infer(Customer.class).getLogicalTypeName(), is("CUS"));
- public LogicalTypeFacetFromJdoDiscriminatorValueAnnotation(
- final LogicalType logicalType,
- final FacetHolder holder) {
- super(logicalType, holder);
}
}
-
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectTypeAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectTypeAnnotationFacetFactoryTest.java
deleted file mode 100644
index 08b43506e6..0000000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectTypeAnnotationFacetFactoryTest.java
+++ /dev/null
@@ -1,69 +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.core.metamodel.facets.object.domainobject;
-
-import javax.inject.Named;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.object.domainobject.logicaltype.LogicalTypeFacetForAnnotationFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.domainobject.logicaltype.LogicalTypeFacetForNamedAnnotation;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
-import org.apache.isis.core.metamodel.methods.MethodByClassMap;
-
-public class ObjectTypeAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
-
- private LogicalTypeFacetForAnnotationFacetFactory facetFactory;
-
- @Before
- public void setUp() throws Exception {
- facetFactory = new LogicalTypeFacetForAnnotationFacetFactory(metaModelContext, new MethodByClassMap());
- }
-
- @Test
- public void logicalTypeNameAnnotationPickedUpOnClass() {
-
- @Named("CUS")
- @DomainObject
- class Customer {
- }
-
- expectNoMethodsRemoved();
-
- facetFactory.process(ProcessClassContext
- .forTesting(Customer.class, mockMethodRemover, facetHolder));
-
- final LogicalTypeFacet facet = facetHolder.getFacet(LogicalTypeFacet.class);
-
- assertThat(facet, is(not(nullValue())));
- assertThat(facet instanceof LogicalTypeFacetForNamedAnnotation, is(true));
- assertThat(facet.value(), is("CUS"));
-
- }
-
-}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeFacetFromClassNameFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeFacetFromClassNameFactoryTest.java
deleted file mode 100644
index b33cd622c5..0000000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeFacetFromClassNameFactoryTest.java
+++ /dev/null
@@ -1,113 +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.core.metamodel.facets.object.logicaltype;
-
-import javax.inject.Named;
-
-import org.datanucleus.testing.dom.CustomerAsProxiedByDataNucleus;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-import org.apache.isis.applib.annotation.Value;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.domainobject.logicaltype.LogicalTypeFacetForAnnotationFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.domainobject.logicaltype.LogicalTypeFacetForNamedAnnotation;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.classname.LogicalTypeFacetFromClassName;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.classname.LogicalTypeFacetFromClassNameFactory;
-import org.apache.isis.core.metamodel.methods.MethodByClassMap;
-
-import lombok.val;
-
-public class LogicalTypeFacetFromClassNameFactoryTest
-extends AbstractFacetFactoryJUnit4TestCase {
-
- private ObjectTypeFacetFactory facetFactory;
-
- public static class Customer {
- }
-
- @Test
- public void installsFacet_passedThroughClassSubstitutor() {
-
- facetFactory = LogicalTypeFacetFromClassNameFactory.forTesting(metaModelContext);
-
- expectNoMethodsRemoved();
-
- facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(CustomerAsProxiedByDataNucleus.class, facetHolder));
-
- final LogicalTypeFacet facet = facetHolder.getFacet(LogicalTypeFacet.class);
-
- assertThat(facet, is(not(nullValue())));
- assertThat(facet instanceof LogicalTypeFacetFromClassName, is(true));
- assertThat(facet.value(), is(Customer.class.getCanonicalName()));
- }
-
- @Value
- public static class ValueExample1 {
- }
-
- @Test
- public void installsFacet_onValues() {
-
- facetFactory = LogicalTypeFacetFromClassNameFactory.forTesting(metaModelContext);
-
- expectNoMethodsRemoved();
-
- facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(ValueExample1.class, facetHolder));
-
- final LogicalTypeFacet facet = facetHolder.getFacet(LogicalTypeFacet.class);
-
- assertThat(facet, is(not(nullValue())));
- assertThat(facet instanceof LogicalTypeFacetFromClassName, is(true));
- assertThat(facet.value(), is(ValueExample1.class.getCanonicalName()));
- }
-
- @Named("xxx.ValueExample")
- @Value
- public static class ValueExample2 {
- }
-
- @Test
- public void installsFacet_onValuesUsingLogicalTypeName() {
-
- val facetFactory =
- new LogicalTypeFacetForAnnotationFacetFactory(metaModelContext, new MethodByClassMap());
-
- expectNoMethodsRemoved();
-
- facetFactory.process(ProcessClassContext
- .forTesting(ValueExample2.class, mockMethodRemover, facetHolder));
-
- final LogicalTypeFacet facet = facetHolder.getFacet(LogicalTypeFacet.class);
-
- assertThat(facet, is(not(nullValue())));
- assertThat(facet instanceof LogicalTypeFacetForNamedAnnotation, is(true));
- assertThat(facet.value(), is("xxx.ValueExample"));
- }
-
-
-
-}
-
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeInferenceTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeInferenceTest.java
new file mode 100644
index 0000000000..dabd9d8af4
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeInferenceTest.java
@@ -0,0 +1,66 @@
+/*
+ * 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.core.metamodel.facets.object.logicaltype;
+
+import javax.inject.Named;
+
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+import org.apache.isis.applib.annotation.Value;
+import org.apache.isis.applib.id.LogicalType;
+import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
+
+public class LogicalTypeInferenceTest
+extends AbstractFacetFactoryJUnit4TestCase {
+
+ public static class Customer {
+ }
+
+ @Test
+ public void installsFacet_passedThroughClassSubstitutor() {
+ assertThat(LogicalType.infer(Customer.class).getLogicalTypeName(),
+ is(Customer.class.getCanonicalName()));
+ }
+
+ @Value
+ public static class ValueExample1 {
+ }
+
+ @Test
+ public void installsFacet_onValues() {
+ assertThat(LogicalType.infer(ValueExample1.class).getLogicalTypeName(),
+ is(ValueExample1.class.getCanonicalName()));
+ }
+
+ @Named("xxx.ValueExample")
+ @Value
+ public static class ValueExample2 {
+ }
+
+ @Test
+ public void installsFacet_onValuesUsingLogicalTypeName() {
+ assertThat(LogicalType.infer(ValueExample2.class).getLogicalTypeName(),
+ is("xxx.ValueExample"));
+ }
+
+}
+
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
index 4b84f805c3..c24dc764f2 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
@@ -27,8 +27,8 @@ import org.junit.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
-import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.Introspection.IntrospectionPolicy;
+import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.commons.internal.reflection._Reflect;
import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
@@ -67,7 +67,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void verifyProgrammingModelNumberOfFactories() {
- assertEquals(63, programmingModel.streamFactories().count());
+ assertEquals(62, programmingModel.streamFactories().count());
}
@Test //verify we have the javac -parameter flag set when compiling this class
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
index 0de46cd282..49b3ea5b9a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
@@ -43,7 +43,6 @@ import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFactory;
import org.apache.isis.core.metamodel.facets.object.icon.ObjectIcon;
import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
import org.apache.isis.core.metamodel.facets.object.title.TitleRenderRequest;
import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
import org.apache.isis.core.metamodel.interactions.ObjectTitleContext;
@@ -58,7 +57,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.metamodel.specloader.specimpl.IntrospectionState;
-import lombok.Synchronized;
import lombok.val;
public class ObjectSpecificationStub
@@ -71,7 +69,7 @@ implements ObjectSpecification {
/**
* lazily derived, see {@link #getLogicalType()}
*/
- private LogicalType logicalType;
+ private final LogicalType logicalType;
private ObjectSpecification elementSpecification;
private final Class<?> correspondingClass;
@@ -98,8 +96,9 @@ implements ObjectSpecification {
public ObjectSpecificationStub(final MetaModelContext mmc, final Class<?> correspondingClass) {
super(mmc);
this.correspondingClass = correspondingClass;
- title = "";
- name = correspondingClass.getCanonicalName();
+ this.logicalType = LogicalType.infer(correspondingClass);
+ this.title = "";
+ this.name = correspondingClass.getCanonicalName();
}
@Override
@@ -137,12 +136,8 @@ implements ObjectSpecification {
return name;
}
- @Synchronized
@Override
public LogicalType getLogicalType() {
- if(logicalType == null) {
- logicalType = getFacet(LogicalTypeFacet.class).getLogicalType();
- }
return logicalType;
}
diff --git a/core/metamodel/src/test/java/org/datanucleus/testing/dom/CustomerAsProxiedByDataNucleus.java b/core/metamodel/src/test/java/org/datanucleus/testing/dom/CustomerAsProxiedByDataNucleus.java
index a0143368c6..b86727d797 100644
--- a/core/metamodel/src/test/java/org/datanucleus/testing/dom/CustomerAsProxiedByDataNucleus.java
+++ b/core/metamodel/src/test/java/org/datanucleus/testing/dom/CustomerAsProxiedByDataNucleus.java
@@ -18,8 +18,8 @@
*/
package org.datanucleus.testing.dom;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacetFromClassNameFactoryTest;
+import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeInferenceTest;
public class CustomerAsProxiedByDataNucleus
-extends LogicalTypeFacetFromClassNameFactoryTest.Customer {
+extends LogicalTypeInferenceTest.Customer {
}
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/beans/JdoBeanTypeClassifier.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/beans/JdoBeanTypeClassifier.java
index dc3fdc46aa..8da281bcf9 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/beans/JdoBeanTypeClassifier.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/beans/JdoBeanTypeClassifier.java
@@ -18,12 +18,9 @@
*/
package org.apache.isis.persistence.jdo.metamodel.beans;
-import java.util.Locale;
-
-import javax.inject.Named;
import javax.jdo.annotations.EmbeddedOnly;
-import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.applib.services.metamodel.BeanSort;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.reflection._Annotations;
@@ -41,7 +38,8 @@ public class JdoBeanTypeClassifier implements IsisBeanTypeClassifier {
public BeanClassification classify(
final Class<?> type) {
- val persistenceCapableAnnot = _Annotations.synthesize(type, javax.jdo.annotations.PersistenceCapable.class);
+ val persistenceCapableAnnot = _Annotations
+ .synthesize(type, javax.jdo.annotations.PersistenceCapable.class);
if(persistenceCapableAnnot.isPresent()) {
val embeddedOnlyAttribute = persistenceCapableAnnot.get().embeddedOnly();
@@ -53,39 +51,24 @@ public class JdoBeanTypeClassifier implements IsisBeanTypeClassifier {
return null; // don't categorize as entity ... fall through in the caller's logic
}
- String logicalTypeName = null;
-
- // deprecated @DomainObject(logicalTypeName=...)
- val aDomainObject = _Annotations.synthesize(type, DomainObject.class).orElse(null);
- if(aDomainObject!=null) {
- logicalTypeName = aDomainObject.logicalTypeName();
- }
+ String logicalTypeName = LogicalType.infer(type).getLogicalTypeName();
- val named = _Annotations.synthesize(type, Named.class).orElse(null);
- if(named!=null) {
- logicalTypeName = named.value();
- }
-
- // don't trample over the @DomainObject(logicalTypeName=..) if present
- if(_Strings.isEmpty(logicalTypeName)) {
+ // don't trample over the @Named(=...) if present
+ if(logicalTypeName.equals(type.getName())) {
val schema = persistenceCapableAnnot.get().schema();
if(_Strings.isNotEmpty(schema)) {
val table = persistenceCapableAnnot.get().table();
- logicalTypeName = String.format("%s.%s", schema.toLowerCase(Locale.ROOT),
- _Strings.isNotEmpty(table)
- ? table
- : type.getSimpleName());
+ //FIXME - this custom name is never honored
+// logicalTypeName = String.format("%s.%s", schema.toLowerCase(Locale.ROOT),
+// _Strings.isNotEmpty(table)
+// ? table
+// : type.getSimpleName());
}
}
-
- if(_Strings.isNotEmpty(logicalTypeName)) {
- BeanClassification.selfManaged(
- BeanSort.ENTITY, logicalTypeName);
- }
- return BeanClassification.selfManaged(BeanSort.ENTITY);
+ return BeanClassification.selfManaged(BeanSort.ENTITY, logicalTypeName);
}
return null; // we don't feel responsible to classify given type
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
deleted file mode 100644
index 25799cef8b..0000000000
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
+++ /dev/null
@@ -1,111 +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.discriminator;
-
-import javax.inject.Inject;
-import javax.jdo.annotations.Discriminator;
-
-import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-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.ObjectTypeFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.classname.LogicalTypeFacetFromClassName;
-import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorRegistry;
-import org.apache.isis.persistence.jdo.provider.entities.JdoFacetContext;
-
-import lombok.val;
-
-public class JdoDiscriminatorAnnotationFacetFactory
-extends FacetFactoryAbstract
-implements ObjectTypeFacetFactory {
-
- private final ClassSubstitutorRegistry classSubstitutorRegistry;
- private final JdoFacetContext jdoFacetContext;
-
- @Inject
- public JdoDiscriminatorAnnotationFacetFactory(
- final MetaModelContext mmc,
- final JdoFacetContext jdoFacetContext,
- final ClassSubstitutorRegistry classSubstitutorRegistry) {
- super(mmc, FeatureType.OBJECTS_ONLY);
- this.jdoFacetContext = jdoFacetContext;
- this.classSubstitutorRegistry = classSubstitutorRegistry;
- }
-
- @Override
- public void process(final ProcessObjectTypeContext processClassContext) {
-
- // only applies to JDO entities; ignore any view models
- final Class<?> cls = processClassContext.getCls();
- if(!jdoFacetContext.isPersistenceEnhanced(cls)) {
- return;
- }
-
- final Discriminator annotation = processClassContext.synthesizeOnType(Discriminator.class).orElse(null);
- if (annotation == null) {
- return;
- }
- final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
- final String annotationValue = annotation.value();
- final LogicalTypeFacet logicalTypeFacet; // non-null
- if (!_Strings.isNullOrEmpty(annotationValue)) {
- logicalTypeFacet = new LogicalTypeFacetFromJdoDiscriminatorValueAnnotation(
- LogicalType.eager(cls, annotationValue),
- facetHolder);
- } else {
- val substitute = classSubstitutorRegistry.getSubstitution(cls);
- if(substitute.isNeverIntrospect()) {
- return;
- }
-
- val substituted = substitute.apply(cls);
- logicalTypeFacet = new LogicalTypeFacetFromClassName(
- LogicalType.eager(substituted, substituted.getCanonicalName()),
- facetHolder);
-
- }
- FacetUtil.addFacet(logicalTypeFacet);
- }
-
-
- @Override
- public void process(final ProcessClassContext processClassContext) {
-
- // only applies to JDO entities; ignore any view models
- final Class<?> cls = processClassContext.getCls();
- if(!jdoFacetContext.isPersistenceEnhanced(cls)) {
- return;
- }
-
- final Discriminator annotation = processClassContext.synthesizeOnType(Discriminator.class).orElse(null);
- if (annotation == null) {
- return;
- }
- String annotationValueAttribute = annotation.value();
- final FacetHolder facetHolder = processClassContext.getFacetHolder();
- FacetUtil.addFacet(new JdoDiscriminatorFacetDefault(annotationValueAttribute, facetHolder));
- }
-
-}
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorFacetDefault.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorFacetDefault.java
deleted file mode 100644
index 0fb5eb6cef..0000000000
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorFacetDefault.java
+++ /dev/null
@@ -1,31 +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.discriminator;
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract;
-import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.discriminator.JdoDiscriminatorFacet;
-
-public class JdoDiscriminatorFacetDefault extends SingleValueFacetAbstract<String> implements JdoDiscriminatorFacet {
-
- public JdoDiscriminatorFacetDefault(String value, FacetHolder holder) {
- super(JdoDiscriminatorFacet.class, value, holder);
- }
-
-}
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/package-info.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/package-info.java
deleted file mode 100644
index 4533006f17..0000000000
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/package-info.java
+++ /dev/null
@@ -1,17 +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.discriminator;
\ No newline at end of file
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/domainobject/objectspecid/LogicalTypeFacetFromJdoPersistenceCapableFacet.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/domainobject/objectspecid/LogicalTypeFacetFromJdoPersistenceCapableFacet.java
deleted file mode 100644
index 9348df7713..0000000000
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/domainobject/objectspecid/LogicalTypeFacetFromJdoPersistenceCapableFacet.java
+++ /dev/null
@@ -1,58 +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.domainobject.objectspecid;
-
-import java.util.Locale;
-import java.util.Optional;
-
-import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacetAbstract;
-import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
-
-public class LogicalTypeFacetFromJdoPersistenceCapableFacet
-extends LogicalTypeFacetAbstract {
-
- public static Optional<LogicalTypeFacet> create(
- final JdoPersistenceCapableFacet persistenceCapableFacet,
- final Class<?> correspondingClass,
- final FacetHolder holder) {
-
- if(persistenceCapableFacet.getPrecedence().isFallback()) {
- return Optional.empty();
- }
- final String schema = persistenceCapableFacet.getSchema();
- if(_Strings.isNullOrEmpty(schema)) {
- return Optional.empty();
- }
- final String logicalTypeName =
- schema.toLowerCase(Locale.ROOT) + "." + persistenceCapableFacet.getTable();
- return Optional.of(new LogicalTypeFacetFromJdoPersistenceCapableFacet(
- LogicalType.eager(correspondingClass, logicalTypeName),
- holder));
- }
-
- private LogicalTypeFacetFromJdoPersistenceCapableFacet(
- final LogicalType logicalType,
- final FacetHolder holder) {
- super(logicalType, holder, Precedence.INFERRED);
- }
-}
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetFactory.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetFactory.java
index e3904db5ff..70b0254c4e 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetFactory.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetFactory.java
@@ -31,7 +31,6 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
import org.apache.isis.core.metamodel.facets.object.domainobject.DomainObjectAnnotationFacetFactory;
-import org.apache.isis.persistence.jdo.metamodel.facets.object.domainobject.objectspecid.LogicalTypeFacetFromJdoPersistenceCapableFacet;
import org.apache.isis.persistence.jdo.provider.entities.JdoFacetContext;
import lombok.val;
@@ -86,10 +85,6 @@ implements ObjectTypeFacetFactory {
.createUsingJdo(persistenceCapableIfAny, embeddedOnlyIfAny, cls, facetHolder))
.map(jdoPersistenceCapableFacet->{
- FacetUtil.addFacetIfPresent(
- LogicalTypeFacetFromJdoPersistenceCapableFacet
- .create(jdoPersistenceCapableFacet, cls, facetHolder));
-
FacetUtil.addFacet(
jdoFacetContext.createEntityFacet(facetHolder));
@@ -115,10 +110,6 @@ implements ObjectTypeFacetFactory {
.createUsingJpa(entityIfAny, tableIfAny, cls, facetHolder))
.ifPresent(jdoPersistenceCapableFacet->{
- FacetUtil.addFacetIfPresent(
- LogicalTypeFacetFromJdoPersistenceCapableFacet
- .create(jdoPersistenceCapableFacet, cls, facetHolder));
-
FacetUtil.addFacet(
jdoFacetContext.createEntityFacet(facetHolder));
diff --git a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java
deleted file mode 100644
index f9cda31e99..0000000000
--- a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java
+++ /dev/null
@@ -1,118 +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.discriminator;
-
-import javax.jdo.annotations.Discriminator;
-import javax.jdo.annotations.PersistenceCapable;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
-import org.apache.isis.persistence.jdo.metamodel.testing.AbstractFacetFactoryTest;
-import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.discriminator.JdoDiscriminatorFacet;
-
-import lombok.val;
-
-public class GivenJdoDiscriminatorAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
-
- private JdoDiscriminatorAnnotationFacetFactory facetFactory;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
- facetFactory = new JdoDiscriminatorAnnotationFacetFactory(metaModelContext, jdoFacetContext, null);
- }
-
- @Override
- protected void tearDown() throws Exception {
- facetFactory = null;
- super.tearDown();
- }
-
- public void testFeatureTypes() {
- val featureTypes = facetFactory.getFeatureTypes();
- assertTrue(contains(featureTypes, FeatureType.OBJECT));
- assertFalse(contains(featureTypes, FeatureType.PROPERTY));
- assertFalse(contains(featureTypes, FeatureType.COLLECTION));
- assertFalse(contains(featureTypes, FeatureType.ACTION));
- assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER_SCALAR));
- }
-
- public void testDiscriminatorValueAnnotationPickedUpOnClass() {
- @Discriminator("CUS")
- abstract class Customer {
- }
-
- facetFactory.process(ProcessClassContext
- .forTesting(Customer.class, methodRemover, facetHolder));
-
- final Facet facet = facetHolder.getFacet(JdoDiscriminatorFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof JdoDiscriminatorFacetDefault);
- }
-
- public void testObjectTypeAnnotationPickedUpOnClass() {
- @Discriminator("CUS")
- abstract class Customer {
- }
-
- facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(Customer.class, facetHolder));
-
- final Facet facet = facetHolder.getFacet(LogicalTypeFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof LogicalTypeFacetFromJdoDiscriminatorValueAnnotation);
- }
-
- public void testIfNoEntityAnnotationThenNoFacet() {
-
- abstract class Customer {
- }
-
- facetFactory.process(ProcessClassContext
- .forTesting(Customer.class, methodRemover, facetHolder));
-
- final Facet facet = facetHolder.getFacet(LogicalTypeFacet.class);
- assertNull(facet);
- }
-
- public void testAnnotationValue() {
- @Discriminator("CUS")
- abstract class Customer {
- }
-
- facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(Customer.class, facetHolder));
-
- final LogicalTypeFacet discriminatorValueFacet = facetHolder.getFacet(LogicalTypeFacet.class);
- assertEquals("CUS", discriminatorValueFacet.value());
- }
-
- public void testNoMethodsRemoved() {
- @PersistenceCapable
- abstract class Customer {
- }
-
- facetFactory.process(ProcessClassContext
- .forTesting(Customer.class, methodRemover, facetHolder));
-
- assertNoMethodsRemoved();
- }
-}
diff --git a/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/object/discriminator/JdoDiscriminatorFacet.java b/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/object/discriminator/JdoDiscriminatorFacet.java
deleted file mode 100644
index 92899efb6a..0000000000
--- a/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/object/discriminator/JdoDiscriminatorFacet.java
+++ /dev/null
@@ -1,25 +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.provider.metamodel.facets.object.discriminator;
-
-import org.apache.isis.core.metamodel.facets.SingleValueFacet;
-
-public interface JdoDiscriminatorFacet extends SingleValueFacet<String> {
-
-}
diff --git a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/domainobject/objectspecid/LogicalTypeFacetForTableAnnotation.java b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/domainobject/objectspecid/LogicalTypeFacetForTableAnnotation.java
deleted file mode 100644
index 03646a696e..0000000000
--- a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/domainobject/objectspecid/LogicalTypeFacetForTableAnnotation.java
+++ /dev/null
@@ -1,57 +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.jpa.metamodel.object.domainobject.objectspecid;
-
-import java.util.Locale;
-import java.util.Optional;
-
-import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
-import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacetAbstract;
-import org.apache.isis.persistence.jpa.metamodel.object.table.JpaTableFacetAnnotation;
-
-public class LogicalTypeFacetForTableAnnotation
-extends LogicalTypeFacetAbstract {
-
- public static Optional<LogicalTypeFacet> create(
- final JpaTableFacetAnnotation tableFacet,
- final Class<?> correspondingClass,
- final FacetHolder holder) {
-
- if(tableFacet.getPrecedence().isFallback()) {
- return Optional.empty();
- }
- final String schema = tableFacet.getSchema();
- if(_Strings.isNullOrEmpty(schema)) {
- return Optional.empty();
- }
- final String logicalTypeName = schema.toLowerCase(Locale.ROOT) + "." + tableFacet.getTable();
- return Optional.of(
- new LogicalTypeFacetForTableAnnotation(
- LogicalType.eager(correspondingClass, logicalTypeName), holder));
- }
-
- private LogicalTypeFacetForTableAnnotation(
- final LogicalType logicalType,
- final FacetHolder holder) {
- super(logicalType, holder);
- }
-}
diff --git a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/table/JpaTableAnnotationFacetFactory.java b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/table/JpaTableAnnotationFacetFactory.java
index e591c15114..31693dbe4c 100644
--- a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/table/JpaTableAnnotationFacetFactory.java
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/table/JpaTableAnnotationFacetFactory.java
@@ -29,7 +29,6 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
import org.apache.isis.core.metamodel.facets.object.domainobject.DomainObjectAnnotationFacetFactory;
-import org.apache.isis.persistence.jpa.metamodel.object.domainobject.objectspecid.LogicalTypeFacetForTableAnnotation;
import lombok.val;
@@ -64,18 +63,11 @@ implements ObjectTypeFacetFactory {
val facetHolder = processClassContext.getFacetHolder();
- val jdoPersistenceCapableFacet =
FacetUtil.addFacet(
new JpaTableFacetAnnotationImpl(
annotationSchemaAttribute,
annotationTableAttribute,
facetHolder));
-
- FacetUtil.addFacetIfPresent(
- LogicalTypeFacetForTableAnnotation
- .create(jdoPersistenceCapableFacet, cls, facetHolder));
-
- return;
}