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 2018/09/29 17:49:42 UTC
[isis] 01/03: ISIS-1976: move element spec. property from OA into
ObjectSpecification
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 5985538b886152b4bc2081b08fc67e80fe371de6
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Sep 29 17:37:31 2018 +0200
ISIS-1976: move element spec. property from OA into ObjectSpecification
Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
.../isis/core/metamodel/adapter/ObjectAdapter.java | 38 ++++++++--------
...ctionInvocationFacetForDomainEventAbstract.java | 2 +-
.../isis/core/metamodel/spec/ManagedObject.java | 36 +++++++--------
.../core/metamodel/spec/ObjectSpecification.java | 9 ++++
.../spec/feature/OneToOneAssociation.java | 1 +
.../specimpl/dflt/ObjectSpecificationDefault.java | 11 +++++
.../ObjectSpecificationOnStandaloneList.java | 12 +++++
.../testspec/ObjectSpecificationStub.java | 12 +++++
.../runtime/persistence/adapter/PojoAdapter.java | 52 +++++++++++-----------
.../ObjectAdapterContext_Factories.java | 3 +-
.../actionresponse/ActionResultResponseType.java | 3 +-
11 files changed, 111 insertions(+), 68 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
index f38375d..f2f54f1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
@@ -110,26 +110,24 @@ public interface ObjectAdapter extends ManagedObject {
*/
Instance getInstance(Specification specification);
- /**
- * For (stand-alone) collections, returns the element type.
- *
- * <p>
- * For owned (aggregated) collections, the element type can be determined
- * from the <tt>TypeOfFacet</tt> associated with the
- * <tt>ObjectAssociation</tt> representing the collection.
- *
- * @see #setElementSpecificationProvider(ElementSpecificationProvider)
- */
- ObjectSpecification getElementSpecification();
-
- /**
- * For (stand-alone) collections, returns the element type.
- *
- * @see #getElementSpecification()
- */
- void setElementSpecificationProvider(ElementSpecificationProvider elementSpecificationProvider);
-
-
+// /**
+// * For (stand-alone) collections, returns the element type.
+// *
+// * <p>
+// * For owned (aggregated) collections, the element type can be determined
+// * from the <tt>TypeOfFacet</tt> associated with the
+// * <tt>ObjectAssociation</tt> representing the collection.
+// *
+// * @see #setElementSpecificationProvider(ElementSpecificationProvider)
+// */
+// ObjectSpecification getElementSpecification();
+//
+// /**
+// * For (stand-alone) collections, returns the element type.
+// *
+// * @see #getElementSpecification()
+// */
+// void setElementSpecificationProvider(ElementSpecificationProvider elementSpecificationProvider);
/**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index 871e667..590f471 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -425,7 +425,7 @@ implements ImperativeFacet {
// copy over TypeOfFacet if required
final TypeOfFacet typeOfFacet = getFacetHolder().getFacet(TypeOfFacet.class);
- clonedAdapter.setElementSpecificationProvider(ElementSpecificationProvider.of(typeOfFacet));
+ clonedAdapter.getSpecification().setElementSpecificationProvider(ElementSpecificationProvider.of(typeOfFacet));
return clonedAdapter;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
index dd36175..2bfd140 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
@@ -19,8 +19,6 @@
package org.apache.isis.core.metamodel.spec;
-import static org.apache.isis.commons.internal.base._With.requires;
-
import java.util.function.Supplier;
import org.apache.isis.commons.internal.base._Lazy;
@@ -119,9 +117,15 @@ public interface ManagedObject extends Instance {
}
- // -- COLLECTIN SUPPORT
+ // -- COLLECTION SUPPORT
- ObjectSpecification getElementSpecification();
+ /**
+ * Used only for (standalone or parented) collections.
+ * @return
+ */
+ default public ObjectSpecification getElementSpecification() {
+ return getSpecification().getElementSpecification();
+ }
// -- GLUE CODE
@@ -131,7 +135,10 @@ public interface ManagedObject extends Instance {
// -- FACTORIES
- public static ManagedObject of(ObjectSpecification specification, Object pojo) {
+ public static ManagedObject of(
+ final ObjectSpecification specification,
+ final Object pojo) {
+
return new ManagedObject() {
@Override
public ObjectSpecification getSpecification() {
@@ -141,18 +148,16 @@ public interface ManagedObject extends Instance {
public Object getPojo() {
return pojo;
}
- @Override
- public ObjectSpecification getElementSpecification() {
- // TODO Auto-generated method stub
- return null;
- }
};
}
- public static ManagedObject of(Supplier<ObjectSpecification> specificationSupplier, Object pojo) {
- requires(specificationSupplier, "specificationSupplier");
+ public static ManagedObject of(
+ final Supplier<ObjectSpecification> specificationSupplier,
+ final Object pojo) {
+
return new ManagedObject() {
private final _Lazy<ObjectSpecification> specification = _Lazy.of(specificationSupplier);
+
@Override
public ObjectSpecification getSpecification() {
return specification.get();
@@ -161,15 +166,8 @@ public interface ManagedObject extends Instance {
public Object getPojo() {
return pojo;
}
- @Override
- public ObjectSpecification getElementSpecification() {
- // TODO Auto-generated method stub
- return null;
- }
};
}
-
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
index 33d2fc3..d9d67fe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
@@ -197,6 +197,14 @@ ObjectAssociationContainer, Hierarchical, DefaultProvider {
boolean isAbstract();
+ /**
+ *
+ * @since 2.0.0-M2
+ */
+ ObjectSpecification getElementSpecification();
+ void setElementSpecificationProvider(ElementSpecificationProvider provider);
+
+
// //////////////////////////////////////////////////////////////
// TitleContext
// //////////////////////////////////////////////////////////////
@@ -345,4 +353,5 @@ ObjectAssociationContainer, Hierarchical, DefaultProvider {
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToOneAssociation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToOneAssociation.java
index bee5db5..fc148a4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToOneAssociation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToOneAssociation.java
@@ -52,6 +52,7 @@ public interface OneToOneAssociation extends ObjectAssociation, OneToOneFeature,
//FIXME[ISIS-1976] only temporary for refactoring - remove
+ @Deprecated
ManagedObject get2(ManagedObject adapter, InteractionInitiatedBy initiatedBy);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index 234bc30..ae6f899 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -50,6 +50,7 @@ import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.facets.object.wizard.WizardFacet;
import org.apache.isis.core.metamodel.services.ServicesInjector;
import org.apache.isis.core.metamodel.spec.ActionType;
+import org.apache.isis.core.metamodel.spec.ElementSpecificationProvider;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
@@ -87,6 +88,8 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
private final FacetedMethodsBuilder facetedMethodsBuilder;
private final boolean isService;
+ private ObjectSpecification elementSpecification;
+
public ObjectSpecificationDefault(
final Class<?> correspondingClass,
@@ -407,6 +410,14 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
return str.toString();
}
+ @Override
+ public ObjectSpecification getElementSpecification() {
+ return elementSpecification;
+ }
+ @Override
+ public void setElementSpecificationProvider(ElementSpecificationProvider provider) {
+ this.elementSpecification = provider.getElementType();
+ }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
index 0e59555..b73f85f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
@@ -26,6 +26,7 @@ import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetDefaultTo
import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetOnStandaloneList;
import org.apache.isis.core.metamodel.services.ServicesInjector;
import org.apache.isis.core.metamodel.spec.ActionType;
+import org.apache.isis.core.metamodel.spec.ElementSpecificationProvider;
import org.apache.isis.core.metamodel.spec.FreeStandingList;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
@@ -44,6 +45,7 @@ public class ObjectSpecificationOnStandaloneList extends ObjectSpecificationAbst
private static final String NAME = "Instances";
private static final String DESCRIBED_AS = "Typed instances";
private static final String ICON_NAME = "instances";
+ private ObjectSpecification elementSpecification;
// -- constructor
@@ -151,5 +153,15 @@ public class ObjectSpecificationOnStandaloneList extends ObjectSpecificationAbst
return null;
}
+ @Override
+ public ObjectSpecification getElementSpecification() {
+ return elementSpecification;
+ }
+
+ @Override
+ public void setElementSpecificationProvider(ElementSpecificationProvider provider) {
+ this.elementSpecification = provider.getElementType();
+ }
+
}
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 aa7f40d..887469e 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
@@ -40,6 +40,7 @@ import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
import org.apache.isis.core.metamodel.services.ServicesInjector;
import org.apache.isis.core.metamodel.services.configinternal.ConfigurationServiceInternal;
import org.apache.isis.core.metamodel.spec.ActionType;
+import org.apache.isis.core.metamodel.spec.ElementSpecificationProvider;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -61,6 +62,7 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
private ObjectSpecId specId;
private ServicesInjector servicesInjector;
+ private ObjectSpecification elementSpecification;
public ObjectSpecificationStub(final Class<?> type) {
this(type.getName());
@@ -377,4 +379,14 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
return getFullIdentifier();
}
+ @Override
+ public ObjectSpecification getElementSpecification() {
+ return elementSpecification;
+ }
+
+ @Override
+ public void setElementSpecificationProvider(ElementSpecificationProvider provider) {
+ this.elementSpecification = provider.getElementType();
+ }
+
}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
index 0f6a16c..bcc114c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
@@ -56,10 +56,10 @@ public final class PojoAdapter extends InstanceAbstract implements ObjectAdapter
private final Object pojo;
private final Oid oid;
- /**
- * only for standalone or parented collections.
- */
- private ElementSpecificationProvider elementSpecificationProvider;
+// /**
+// * only for standalone or parented collections.
+// */
+// private ElementSpecificationProvider elementSpecificationProvider;
public static PojoAdapter of(
final Object pojo,
@@ -356,28 +356,28 @@ public final class PojoAdapter extends InstanceAbstract implements ObjectAdapter
- // -- elementSpecification
-
- @Override
- public ObjectSpecification getElementSpecification() {
- if (elementSpecificationProvider == null) {
- return null;
- }
- return elementSpecificationProvider.getElementType();
- }
-
- /**
- * Called whenever there is a {@link org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet} present.
- *
- * <p>
- * Specifically, if an action which has been annotated (is copied by {@link org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet action invocation facet}), and for a parented collection
- * (is copied by the {@link PersistenceSession5} when {@link PersistenceSession5#adapterFor(Object, ObjectAdapter, OneToManyAssociation) creating} an adapter for a collection.
- * </p>
- */
- @Override
- public void setElementSpecificationProvider(final ElementSpecificationProvider elementSpecificationProvider) {
- this.elementSpecificationProvider = elementSpecificationProvider;
- }
+// // -- elementSpecification
+//
+// @Override
+// public ObjectSpecification getElementSpecification() {
+// if (elementSpecificationProvider == null) {
+// return null;
+// }
+// return elementSpecificationProvider.getElementType();
+// }
+//
+// /**
+// * Called whenever there is a {@link org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet} present.
+// *
+// * <p>
+// * Specifically, if an action which has been annotated (is copied by {@link org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet action invocation facet}), and for a parented collection
+// * (is copied by the {@link PersistenceSession5} when {@link PersistenceSession5#adapterFor(Object, ObjectAdapter, OneToManyAssociation) creating} an adapter for a collection.
+// * </p>
+// */
+// @Override
+// public void setElementSpecificationProvider(final ElementSpecificationProvider elementSpecificationProvider) {
+// this.elementSpecificationProvider = elementSpecificationProvider;
+// }
// -- getInstance (unsupported for this impl)
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_Factories.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_Factories.java
index 8a99b90..56031ac 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_Factories.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_Factories.java
@@ -83,7 +83,8 @@ class ObjectAdapterContext_Factories implements ObjectAdapterFactories {
// the adapter
// to look this up on the fly?]
final TypeOfFacet facet = otma.getFacet(TypeOfFacet.class);
- collectionAdapter.setElementSpecificationProvider(ElementSpecificationProvider.of(facet));
+ collectionAdapter.getSpecification()
+ .setElementSpecificationProvider(ElementSpecificationProvider.of(facet));
return collectionAdapter;
}
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseType.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseType.java
index 4f367be..1917699 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseType.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseType.java
@@ -67,7 +67,8 @@ public enum ActionResultResponseType {
.getAction(IsisContext.getSessionFactory().getSpecificationLoader())
.getFacet(TypeOfFacet.class);
if (typeOfFacet != null) {
- resultAdapter.setElementSpecificationProvider(ElementSpecificationProvider.of(typeOfFacet));
+ resultAdapter.getSpecification()
+ .setElementSpecificationProvider(ElementSpecificationProvider.of(typeOfFacet));
}
}