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 0472ad1 ISIS-2681: remodel the ObjectTypeFacet to hold a LogicalType
instance instead of just a string
0472ad1 is described below
commit 0472ad1cff06642d58f3f0ffc9f40067cf9528f6
Author: [email protected] <[email protected]@luna>
AuthorDate: Mon May 17 10:40:22 2021 +0200
ISIS-2681: remodel the ObjectTypeFacet to hold a LogicalType instance
instead of just a string
also improve MetaModelService (Applib)
---
.../services/metamodel/MetaModelService.java | 19 +++++++-----
.../DomainObjectAnnotationFacetFactory.java | 3 +-
.../ObjectTypeFacetForDomainObjectAnnotation.java | 11 +++++--
.../object/objectspecid/ObjectTypeFacet.java | 7 ++++-
.../objectspecid/ObjectTypeFacetAbstract.java | 24 ++++++++-------
.../ObjectTypeFacetDerivedFromClassName.java | 7 +++--
...ObjectTypeFacetDerivedFromClassNameFactory.java | 5 ++-
...bjectTypeFacetDerivedFromIoCNamingStrategy.java | 5 +--
.../classname/ObjectTypeFacetOnStandaloneList.java | 5 +--
.../metamodel/MetaModelServiceDefault.java | 36 ++++++++++------------
.../specimpl/ObjectSpecificationAbstract.java | 2 +-
.../testspec/ObjectSpecificationStub.java | 3 +-
.../runtimeservices/jaxb/JaxbServiceDefault.java | 5 ++-
.../security/authentication/logout/LogoutMenu.java | 3 +-
.../TableColumnVisibilityServiceForSecman.java | 16 +++++++---
.../JdoDiscriminatorAnnotationFacetFactory.java | 6 ++--
...nferredFromJdoDiscriminatorValueAnnotation.java | 5 +--
...ypeFacetForJdoPersistenceCapableAnnotation.java | 11 +++++--
...doPersistenceCapableAnnotationFacetFactory.java | 3 +-
.../ObjectTypeFacetForTableAnnotation.java | 8 +++--
.../table/JpaTableAnnotationFacetFactory.java | 2 +-
21 files changed, 113 insertions(+), 73 deletions(-)
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
index 9c49f7b..1e0fae5 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
@@ -18,9 +18,14 @@
*/
package org.apache.isis.applib.services.metamodel;
+import java.util.Optional;
+
+import javax.annotation.Nullable;
+
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.applib.services.bookmark.Bookmark;
import
org.apache.isis.applib.services.commanddto.processor.CommandDtoProcessor;
import org.apache.isis.schema.metamodel.v2.MetamodelDto;
@@ -36,18 +41,18 @@ import org.apache.isis.schema.metamodel.v2.MetamodelDto;
public interface MetaModelService {
/**
- * Provides a reverse lookup of a domain class' object type, as defined by
+ * Provides a lookup by objectType of a domain class' object type, as
defined by
* {@link DomainObject#objectType()} (or any other mechanism that
corresponds to Isis'
- * <code>ObjectSpecIdFacet</code>).
+ * <code>ObjectTypeFacet</code>).
*/
- Class<?> fromObjectType(final String objectType);
+ Optional<LogicalType> lookupLogicalTypeByName(final String objectType);
/**
- * Provides a lookup of a domain class' object type, as defined by
+ * Provides a lookup by class of a domain class' object type, as defined by
* {@link DomainObject#objectType()} (or any other mechanism that
corresponds to Isis'
- * <code>ObjectSpecIdFacet</code>).
+ * <code>ObjectTypeFacet</code>).
*/
- String toObjectType(final Class<?> domainType);
+ Optional<LogicalType> lookupLogicalTypeByClass(final Class<?> domainType);
/**
* Invalidates and rebuilds the internal metadata for the specified domain
@@ -76,7 +81,7 @@ public interface MetaModelService {
* @param domainType
* @param mode
*/
- BeanSort sortOf(Class<?> domainType, Mode mode);
+ BeanSort sortOf(@Nullable Class<?> domainType, Mode mode);
/**
* Override of {@link #sortOf(Class, Mode)}, extracting the domain type
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 9799643..054bf58 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
@@ -258,11 +258,12 @@ implements
void processObjectType(final ProcessObjectTypeContext processClassContext)
{
+ val cls = processClassContext.getCls();
val facetHolder = processClassContext.getFacetHolder();
// check from @DomainObject(objectType=...)
val domainObjectIfAny =
processClassContext.synthesizeOnType(DomainObject.class);
- val facet =
ObjectTypeFacetForDomainObjectAnnotation.create(domainObjectIfAny, facetHolder);
+ val facet =
ObjectTypeFacetForDomainObjectAnnotation.create(domainObjectIfAny, cls,
facetHolder);
// then add
super.addFacet(facet);
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForDomainObjectAnnotation.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForDomainObjectAnnotation.java
index cc05554..3124d33 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForDomainObjectAnnotation.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForDomainObjectAnnotation.java
@@ -22,6 +22,7 @@ package
org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid;
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.core.metamodel.facetapi.FacetHolder;
import
org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
@@ -31,17 +32,21 @@ public class ObjectTypeFacetForDomainObjectAnnotation
extends ObjectTypeFacetAbs
public static ObjectTypeFacet create(
final Optional<DomainObject> domainObjectIfAny,
+ final Class<?> correspondingClass,
final FacetHolder holder) {
return domainObjectIfAny
.map(DomainObject::objectType)
.filter(_Strings::isNotEmpty)
- .map(objectType -> new
ObjectTypeFacetForDomainObjectAnnotation(objectType, holder))
+ .map(objectType -> new
ObjectTypeFacetForDomainObjectAnnotation(
+ LogicalType.eager(correspondingClass, objectType),
+ holder))
.orElse(null);
}
- private ObjectTypeFacetForDomainObjectAnnotation(final String value,
+ private ObjectTypeFacetForDomainObjectAnnotation(
+ final LogicalType logicalType,
final FacetHolder holder) {
- super(value, holder);
+ super(logicalType, holder);
}
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacet.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacet.java
index d63600d..0ef95d3 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacet.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacet.java
@@ -20,6 +20,7 @@ package
org.apache.isis.core.metamodel.facets.object.objectspecid;
import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -32,6 +33,10 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
*/
public interface ObjectTypeFacet extends Facet {
- String value();
+ LogicalType getLogicalType();
+
+ default String value() {
+ return getLogicalType().getLogicalTypeName();
+ }
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacetAbstract.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacetAbstract.java
index c99c3d8..b3f97fe 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacetAbstract.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacetAbstract.java
@@ -21,10 +21,14 @@ package
org.apache.isis.core.metamodel.facets.object.objectspecid;
import java.util.Map;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import lombok.Getter;
+import lombok.NonNull;
+
public abstract class ObjectTypeFacetAbstract
extends FacetAbstract
implements ObjectTypeFacet {
@@ -33,28 +37,26 @@ implements ObjectTypeFacet {
return ObjectTypeFacet.class;
}
- private final String value;
+ @Getter(onMethod_ = {@Override})
+ private final @NonNull LogicalType logicalType;
- public ObjectTypeFacetAbstract(final String value, final FacetHolder
holder) {
- this(value, holder, Derivation.NOT_DERIVED);
+ public ObjectTypeFacetAbstract(
+ final LogicalType logicalType,
+ final FacetHolder holder) {
+ this(logicalType, holder, Derivation.NOT_DERIVED);
}
protected ObjectTypeFacetAbstract(
- final String value,
+ final LogicalType logicalType,
final FacetHolder holder,
final Derivation derivation) {
super(ObjectTypeFacetAbstract.type(), holder, derivation);
- this.value = value;
- }
-
- @Override
- public String value() {
- return value;
+ this.logicalType = logicalType;
}
@Override
public void appendAttributesTo(final Map<String, Object> attributeMap) {
super.appendAttributesTo(attributeMap);
- attributeMap.put("value", value);
+ attributeMap.put("logicalType", logicalType.getLogicalTypeName());
}
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassName.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassName.java
index 3914f4c..b2d1aa7 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassName.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassName.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.facets.object.objectspecid.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.objectspecid.ObjectTypeFacetAbstract;
@@ -27,11 +28,11 @@ public class ObjectTypeFacetDerivedFromClassName
extends ObjectTypeFacetAbstract {
public ObjectTypeFacetDerivedFromClassName(final Class<?> cls, final
FacetHolder holder) {
- this(ClassUtil.getCanonicalName_friendlyToInnerClasses(cls), holder);
+ this(LogicalType.eager(cls,
ClassUtil.getCanonicalName_friendlyToInnerClasses(cls)), holder);
}
- public ObjectTypeFacetDerivedFromClassName(final String value, final
FacetHolder holder) {
- super(value, holder, Derivation.DERIVED);
+ public ObjectTypeFacetDerivedFromClassName(final LogicalType logicalType,
final FacetHolder holder) {
+ super(logicalType, holder, Derivation.DERIVED);
}
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassNameFactory.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassNameFactory.java
index 0a1c0f8..9a67e65 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassNameFactory.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassNameFactory.java
@@ -24,6 +24,7 @@ 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.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -88,7 +89,9 @@ implements MetaModelRefiner, ObjectTypeFacetFactory {
val isService = serviceId!=null;
if (isService) {
- return new ObjectTypeFacetDerivedFromIoCNamingStrategy(serviceId,
facetHolder);
+ return new ObjectTypeFacetDerivedFromIoCNamingStrategy(
+ LogicalType.eager(substitutedClass, serviceId),
+ facetHolder);
}
return new ObjectTypeFacetDerivedFromClassName(substitutedClass,
facetHolder);
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromIoCNamingStrategy.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromIoCNamingStrategy.java
index a555c1e..9763be0 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromIoCNamingStrategy.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromIoCNamingStrategy.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.facets.object.objectspecid.classname;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import
org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacetAbstract;
@@ -27,8 +28,8 @@ import
org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet
*/
public class ObjectTypeFacetDerivedFromIoCNamingStrategy extends
ObjectTypeFacetAbstract {
- ObjectTypeFacetDerivedFromIoCNamingStrategy(final String value, final
FacetHolder holder) {
- super(value, holder);
+ ObjectTypeFacetDerivedFromIoCNamingStrategy(final LogicalType logicalType,
final FacetHolder holder) {
+ super(logicalType, holder);
}
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetOnStandaloneList.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetOnStandaloneList.java
index 3ca3c7c..bf5908f 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetOnStandaloneList.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetOnStandaloneList.java
@@ -19,12 +19,13 @@
package org.apache.isis.core.metamodel.facets.object.objectspecid.classname;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import
org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacetAbstract;
public class ObjectTypeFacetOnStandaloneList extends ObjectTypeFacetAbstract {
- public ObjectTypeFacetOnStandaloneList(final String value, final
FacetHolder holder) {
- super(value, holder, Derivation.NOT_DERIVED);
+ public ObjectTypeFacetOnStandaloneList(final LogicalType logicalType,
final FacetHolder holder) {
+ super(logicalType, holder, Derivation.NOT_DERIVED);
}
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index 6f7f59c..82ef79d 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -20,6 +20,7 @@ package org.apache.isis.core.metamodel.services.metamodel;
import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import javax.annotation.Nullable;
import javax.inject.Inject;
@@ -31,6 +32,7 @@ import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureSort;
import org.apache.isis.applib.services.bookmark.Bookmark;
@@ -43,8 +45,8 @@ import org.apache.isis.applib.services.metamodel.DomainModel;
import org.apache.isis.applib.services.metamodel.MetaModelService;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
import
org.apache.isis.core.metamodel.facets.members.publish.command.CommandPublishingFacet;
-import
org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.MixedIn;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -66,24 +68,16 @@ public class MetaModelServiceDefault implements
MetaModelService {
@Inject private SpecificationLoader specificationLoader;
@Inject private GridService gridService;
- @Nullable
@Override
- public Class<?> fromObjectType(final @Nullable String objectType) {
+ public Optional<LogicalType> lookupLogicalTypeByName(final @Nullable
String objectType) {
return specificationLoader.specForLogicalTypeName(objectType)
- .map(ObjectSpecification::getCorrespondingClass)
- .orElse(null);
+ .map(ObjectSpecification::getLogicalType);
}
@Override
- public String toObjectType(final @Nullable Class<?> domainType) {
- if(domainType == null) {
- return null;
- }
-
+ public Optional<LogicalType> lookupLogicalTypeByClass(final @Nullable
Class<?> domainType) {
return specificationLoader.specForType(domainType)
- .flatMap(spec->spec.lookupFacet(ObjectTypeFacet.class))
- .map(ObjectTypeFacet::value)
- .orElse(null);
+ .map(ObjectSpecification::getLogicalType);
}
@Override
@@ -153,7 +147,7 @@ public class MetaModelServiceDefault implements
MetaModelService {
@Override
public BeanSort sortOf(
- final Class<?> domainType, final Mode mode) {
+ final @Nullable Class<?> domainType, final Mode mode) {
if(domainType == null) {
return null;
}
@@ -185,17 +179,19 @@ public class MetaModelServiceDefault implements
MetaModelService {
final Class<?> domainType;
switch (mode) {
case RELAXED:
- try {
- domainType = this.fromObjectType(bookmark.getObjectType());
- } catch (Exception e) {
- return BeanSort.UNKNOWN;
- }
+ domainType = specificationLoader.specForBookmark(bookmark)
+ .map(ObjectSpecification::getCorrespondingClass)
+ .orElse(null);
break;
case STRICT:
// fall through to...
default:
- domainType = this.fromObjectType(bookmark.getObjectType());
+ domainType = specificationLoader.specForBookmark(bookmark)
+ .map(ObjectSpecification::getCorrespondingClass)
+ .orElseThrow(()->_Exceptions
+ .noSuchElement("Cannot resolve logical type name %s to
a java class",
+ bookmark.getObjectType()));
break;
}
return sortOf(domainType, mode);
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 338d761..e0be801 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -226,7 +226,7 @@ implements ObjectSpecification {
if(objectTypeFacet == null) {
throw new IllegalStateException("could not find an ObjectTypeFacet
for " + this.getFullIdentifier());
}
- return LogicalType.eager(correspondingClass, objectTypeFacet.value());
+ return objectTypeFacet.getLogicalType();
}
/**
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 06897ff..ad77e16 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
@@ -132,8 +132,7 @@ implements ObjectSpecification {
@Override
public LogicalType getLogicalType() {
if(logicalType == null) {
- val logicalTypeName = getFacet(ObjectTypeFacet.class).value();
- logicalType = LogicalType.eager(correspondingClass,
logicalTypeName);
+ logicalType = getFacet(ObjectTypeFacet.class).getLogicalType();
}
return logicalType;
}
diff --git
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/jaxb/JaxbServiceDefault.java
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/jaxb/JaxbServiceDefault.java
index c385cee..5837e6d 100644
---
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/jaxb/JaxbServiceDefault.java
+++
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/jaxb/JaxbServiceDefault.java
@@ -36,6 +36,7 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.domain.DomainObjectList;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.applib.jaxb.PersistentEntitiesAdapter;
import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
import org.apache.isis.applib.services.inject.ServiceInjector;
@@ -67,7 +68,9 @@ public class JaxbServiceDefault extends Simple {
val domainObjectList = (DomainObjectList) domainObject;
try {
val elementType = metaModelServiceProvider.get()
-
.fromObjectType(domainObjectList.getElementObjectType());
+
.lookupLogicalTypeByName(domainObjectList.getElementObjectType())
+ .map(LogicalType::getCorrespondingClass)
+ .orElse(null);
if (elementType!=null
&& elementType.getAnnotation(XmlJavaTypeAdapter.class)
== null) {
diff --git
a/core/security/src/main/java/org/apache/isis/core/security/authentication/logout/LogoutMenu.java
b/core/security/src/main/java/org/apache/isis/core/security/authentication/logout/LogoutMenu.java
index c22e8e8..d60ab74 100644
---
a/core/security/src/main/java/org/apache/isis/core/security/authentication/logout/LogoutMenu.java
+++
b/core/security/src/main/java/org/apache/isis/core/security/authentication/logout/LogoutMenu.java
@@ -35,7 +35,6 @@ import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.value.LocalResourcePath;
import org.apache.isis.applib.value.OpenUrlStrategy;
import org.apache.isis.commons.internal.base._NullSafe;
-import org.apache.isis.core.config.IsisConfiguration;
import org.apache.isis.core.security.IsisModuleCoreSecurity;
import org.apache.isis.core.security.authentication.Authentication;
import org.apache.isis.core.security.authentication.AuthenticationContext;
@@ -53,7 +52,7 @@ public class LogoutMenu {
private final List<LogoutHandler> logoutHandler;
private final AuthenticationContext authenticationTracker;
- private final IsisConfiguration configuration;
+ //private final IsisConfiguration configuration;
public static class LogoutDomainEvent
extends IsisModuleApplib.ActionDomainEvent<LogoutMenu> {}
diff --git
a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/spiimpl/TableColumnVisibilityServiceForSecman.java
b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/spiimpl/TableColumnVisibilityServiceForSecman.java
index 1970c60..3b0597e 100644
---
a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/spiimpl/TableColumnVisibilityServiceForSecman.java
+++
b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/spiimpl/TableColumnVisibilityServiceForSecman.java
@@ -8,6 +8,7 @@ import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
import org.apache.isis.applib.services.metamodel.MetaModelService;
import org.apache.isis.applib.services.tablecol.TableColumnVisibilityService;
@@ -28,13 +29,20 @@ public class TableColumnVisibilityServiceForSecman
implements TableColumnVisibil
final MetaModelService metaModelService;
@Override
- public boolean hides(Class<?> collectionType, String memberId) {
+ public boolean hides(Class<?> elementType, String memberId) {
val me = meService.me();
val permissionSet = me.getPermissionSet();
- val objectType = metaModelService.toObjectType(collectionType);
- val featureId = ApplicationFeatureId.newMember(objectType, memberId);
- val granted = permissionSet.evaluate(featureId,
ApplicationPermissionMode.VIEWING).isGranted();
+
+ final boolean granted =
metaModelService.lookupLogicalTypeByClass(elementType)
+ .map(LogicalType::getLogicalTypeName)
+ .map(objectType->{
+ val featureId = ApplicationFeatureId.newMember(objectType,
memberId);
+ return permissionSet.evaluate(featureId,
ApplicationPermissionMode.VIEWING).isGranted();
+ })
+ .orElse(false); // do not grant if elementType has no objectType
+
return !granted;
+
}
}
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
index 19cf324..cf46311 100644
---
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
@@ -22,6 +22,7 @@ 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.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
@@ -67,7 +68,8 @@ implements ObjectTypeFacetFactory {
final ObjectTypeFacet facet;
if (!_Strings.isNullOrEmpty(annotationValue)) {
facet = new
ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation(
- annotationValue, facetHolder);
+ LogicalType.eager(cls, annotationValue),
+ facetHolder);
} else {
val substitute = classSubstitutorRegistry.getSubstitution(cls);
if(substitute.isNeverIntrospect()) {
@@ -76,7 +78,7 @@ implements ObjectTypeFacetFactory {
val substituted = substitute.apply(cls);
facet = new ObjectTypeFacetDerivedFromClassName(
- substituted.getCanonicalName(),
+ LogicalType.eager(substituted,
substituted.getCanonicalName()),
facetHolder);
}
diff --git
a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation.java
b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation.java
index 158701a..4fe4c38 100644
---
a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation.java
+++
b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation.java
@@ -18,6 +18,7 @@
*/
package org.apache.isis.persistence.jdo.metamodel.facets.object.discriminator;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import
org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacetAbstract;
@@ -25,9 +26,9 @@ public class
ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation
extends ObjectTypeFacetAbstract {
public ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation(
- final String value,
+ final LogicalType logicalType,
final FacetHolder holder) {
- super(value, holder);
+ super(logicalType, holder);
}
}
diff --git
a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForJdoPersistenceCapableAnnotation.java
b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForJdoPersistenceCapableAnnotation.java
index 3e6d0ca..043fc48 100644
---
a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForJdoPersistenceCapableAnnotation.java
+++
b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForJdoPersistenceCapableAnnotation.java
@@ -21,6 +21,7 @@ package
org.apache.isis.persistence.jdo.metamodel.facets.object.domainobject.obj
import java.util.Locale;
+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.objectspecid.ObjectTypeFacet;
@@ -32,6 +33,7 @@ extends ObjectTypeFacetAbstract {
public static ObjectTypeFacet create(
final JdoPersistenceCapableFacet persistenceCapableFacet,
+ final Class<?> correspondingClass,
final FacetHolder holder) {
if(persistenceCapableFacet.isFallback()) {
@@ -42,11 +44,14 @@ extends ObjectTypeFacetAbstract {
return null;
}
final String objectType = schema.toLowerCase(Locale.ROOT) + "." +
persistenceCapableFacet.getTable();
- return new
ObjectTypeFacetForJdoPersistenceCapableAnnotation(objectType, holder);
+ return new ObjectTypeFacetForJdoPersistenceCapableAnnotation(
+ LogicalType.eager(correspondingClass, objectType),
+ holder);
}
- private ObjectTypeFacetForJdoPersistenceCapableAnnotation(final String
value,
+ private ObjectTypeFacetForJdoPersistenceCapableAnnotation(
+ final LogicalType logicalType,
final FacetHolder holder) {
- super(value, holder);
+ super(logicalType, holder);
}
}
diff --git
a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java
b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java
index 1022ce4..710db8b 100644
---
a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java
+++
b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java
@@ -89,7 +89,8 @@ implements ObjectTypeFacetFactory {
annotationSchemaAttribute,
annotationTableAttribute, annotationIdentityType,
facetHolder);
FacetUtil.addFacet(jdoPersistenceCapableFacet);
-
FacetUtil.addFacet(ObjectTypeFacetForJdoPersistenceCapableAnnotation.create(jdoPersistenceCapableFacet,
facetHolder));
+
FacetUtil.addFacet(ObjectTypeFacetForJdoPersistenceCapableAnnotation
+ .create(jdoPersistenceCapableFacet, cls, facetHolder));
}
return;
diff --git
a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/domainobject/objectspecid/ObjectTypeFacetForTableAnnotation.java
b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/domainobject/objectspecid/ObjectTypeFacetForTableAnnotation.java
index 3dba838..0f87fd7 100644
---
a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/domainobject/objectspecid/ObjectTypeFacetForTableAnnotation.java
+++
b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/domainobject/objectspecid/ObjectTypeFacetForTableAnnotation.java
@@ -20,6 +20,7 @@ package
org.apache.isis.persistence.jpa.metamodel.object.domainobject.objectspec
import java.util.Locale;
+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.objectspecid.ObjectTypeFacet;
@@ -31,6 +32,7 @@ extends ObjectTypeFacetAbstract {
public static ObjectTypeFacet create(
final JpaTableFacetAnnotation tableFacet,
+ final Class<?> correspondingClass,
final FacetHolder holder) {
if(tableFacet.isFallback()) {
@@ -41,12 +43,12 @@ extends ObjectTypeFacetAbstract {
return null;
}
final String objectType = schema.toLowerCase(Locale.ROOT) + "." +
tableFacet.getTable();
- return new ObjectTypeFacetForTableAnnotation(objectType, holder);
+ return new
ObjectTypeFacetForTableAnnotation(LogicalType.eager(correspondingClass,
objectType), holder);
}
private ObjectTypeFacetForTableAnnotation(
- final String value,
+ final LogicalType logicalType,
final FacetHolder holder) {
- super(value, 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 ccf18a6..ae72a91 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
@@ -68,7 +68,7 @@ implements ObjectTypeFacetFactory {
annotationTableAttribute,
facetHolder);
FacetUtil.addFacet(jdoPersistenceCapableFacet);
-
FacetUtil.addFacet(ObjectTypeFacetForTableAnnotation.create(jdoPersistenceCapableFacet,
facetHolder));
+
FacetUtil.addFacet(ObjectTypeFacetForTableAnnotation.create(jdoPersistenceCapableFacet,
cls, facetHolder));
return;
}