You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/08/28 19:16:09 UTC
[09/12] isis git commit: ISIS-1044: introducing interaction contexts
- analogous to those visibility/usability/validity checking, for accessing
properties, collections, invoking actions;
also action prompt (for choices and autoComplete).
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java
index b1303ef..6b23f3e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java
@@ -48,11 +48,20 @@ public class ParseableFacetAnnotation extends ParseableFacetAbstract {
}
public ParseableFacetAnnotation(final Class<?> annotatedClass, final IsisConfiguration configuration, final FacetHolder holder, DeploymentCategory deploymentCategory, final AuthenticationSessionProvider authenticationSessionProvider, final AdapterManager adapterManager, final ServicesInjector dependencyInjector) {
- this(parserName(annotatedClass, configuration), parserClass(annotatedClass), holder, deploymentCategory, authenticationSessionProvider, adapterManager, dependencyInjector);
+ this(parserName(annotatedClass, configuration), parserClass(annotatedClass), holder, configuration,
+ deploymentCategory, authenticationSessionProvider, adapterManager, dependencyInjector);
}
- private ParseableFacetAnnotation(final String candidateParserName, final Class<?> candidateParserClass, final FacetHolder holder, DeploymentCategory deploymentCategory, final AuthenticationSessionProvider authenticationSessionProvider, final AdapterManager adapterManager, final ServicesInjector dependencyInjector) {
- super(candidateParserName, candidateParserClass, holder, deploymentCategory, authenticationSessionProvider, dependencyInjector, adapterManager);
+ private ParseableFacetAnnotation(
+ final String candidateParserName,
+ final Class<?> candidateParserClass,
+ final FacetHolder holder,
+ final IsisConfiguration isisConfiguration,
+ final DeploymentCategory deploymentCategory,
+ final AuthenticationSessionProvider authenticationSessionProvider,
+ final AdapterManager adapterManager,
+ final ServicesInjector dependencyInjector) {
+ super(candidateParserName, candidateParserClass, holder, isisConfiguration, deploymentCategory, authenticationSessionProvider, dependencyInjector, adapterManager);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
index 49810a0..946e4fd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
@@ -65,16 +65,17 @@ public class ParseableFacetAnnotationElseConfigurationFactory extends FacetFacto
// create from annotation, if present
if (annotation != null) {
- final ParseableFacetAnnotation facet = new ParseableFacetAnnotation(cls, getIsisConfiguration(), holder, getDeploymentCategory(), authenticationSessionProvider, adapterManager, servicesInjector);
+ final ParseableFacetAnnotation facet = new ParseableFacetAnnotation(cls, getConfiguration(), holder, getDeploymentCategory(), authenticationSessionProvider, adapterManager, servicesInjector);
if (facet.isValid()) {
return facet;
}
}
// otherwise, try to create from configuration, if present
- final String parserName = ParserUtil.parserNameFromConfiguration(cls, getIsisConfiguration());
+ final String parserName = ParserUtil.parserNameFromConfiguration(cls, getConfiguration());
if (!Strings.isNullOrEmpty(parserName)) {
- final ParseableFacetFromConfiguration facet = new ParseableFacetFromConfiguration(parserName, holder, getDeploymentCategory(), authenticationSessionProvider, servicesInjector, adapterManager);
+ final ParseableFacetFromConfiguration facet = new ParseableFacetFromConfiguration(parserName, holder,
+ getConfiguration(), getDeploymentCategory(), authenticationSessionProvider, servicesInjector, adapterManager);
if (facet.isValid()) {
return facet;
}
@@ -94,7 +95,7 @@ public class ParseableFacetAnnotationElseConfigurationFactory extends FacetFacto
return runtimeContext.getDeploymentCategory();
}
- public IsisConfiguration getIsisConfiguration() {
+ public IsisConfiguration getConfiguration() {
return configuration;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java
index 5a29246..889e0d4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.metamodel.facets.object.parseable.annotcfg;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -28,7 +29,14 @@ import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
public class ParseableFacetFromConfiguration extends ParseableFacetAbstract {
- public ParseableFacetFromConfiguration(final String candidateParserName, final FacetHolder holder, DeploymentCategory deploymentCategory, final AuthenticationSessionProvider authenticationSessionProvider, final ServicesInjector dependencyInjector, final AdapterManager adapterManager) {
- super(candidateParserName, null, holder, deploymentCategory, authenticationSessionProvider, dependencyInjector, adapterManager);
+ public ParseableFacetFromConfiguration(
+ final String candidateParserName,
+ final FacetHolder holder,
+ final IsisConfiguration isisConfiguration,
+ final DeploymentCategory deploymentCategory,
+ final AuthenticationSessionProvider authenticationSessionProvider,
+ final ServicesInjector dependencyInjector,
+ final AdapterManager adapterManager) {
+ super(candidateParserName, null, holder, isisConfiguration, deploymentCategory, authenticationSessionProvider, dependencyInjector, adapterManager);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
index 705b083..f7eaaaa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
@@ -24,6 +24,7 @@ import org.apache.isis.applib.adapters.Parser;
import org.apache.isis.applib.adapters.ParsingException;
import org.apache.isis.applib.profiles.Localization;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
@@ -44,16 +45,23 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
public class ParseableFacetUsingParser extends FacetAbstract implements ParseableFacet {
private final Parser<?> parser;
+ private final IsisConfiguration configuration;
private final DeploymentCategory deploymentCategory;
private final AuthenticationSessionProvider authenticationSessionProvider;
private final ServicesInjector dependencyInjector;
private final AdapterManager adapterManager;
public ParseableFacetUsingParser(
- final Parser<?> parser, final FacetHolder holder,
- final DeploymentCategory deploymentCategory, final AuthenticationSessionProvider authenticationSessionProvider, final ServicesInjector dependencyInjector, final AdapterManager adapterManager) {
+ final Parser<?> parser,
+ final FacetHolder holder,
+ final IsisConfiguration isisConfiguration,
+ final DeploymentCategory deploymentCategory,
+ final AuthenticationSessionProvider authenticationSessionProvider,
+ final ServicesInjector dependencyInjector,
+ final AdapterManager adapterManager) {
super(ParseableFacet.class, holder, Derivation.NOT_DERIVED);
this.parser = parser;
+ configuration = isisConfiguration;
this.deploymentCategory = deploymentCategory;
this.authenticationSessionProvider = authenticationSessionProvider;
this.dependencyInjector = dependencyInjector;
@@ -76,7 +84,8 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
// (eg pick up any @RegEx on value type)
if (getFacetHolder().containsFacet(ValueFacet.class)) {
final ObjectAdapter entryAdapter = getAdapterManager().adapterFor(entry);
- final ParseValueContext parseValueContext = new ParseValueContext(deploymentCategory, getAuthenticationSessionProvider().getAuthenticationSession(), InteractionInvocationMethod.BY_USER, contextAdapter, getIdentified().getIdentifier(), entryAdapter);
+ final ParseValueContext parseValueContext = new ParseValueContext(configuration, deploymentCategory,
+ getAuthenticationSessionProvider().getAuthenticationSession(), InteractionInvocationMethod.BY_USER, contextAdapter, getIdentified().getIdentifier(), entryAdapter);
validate(parseValueContext);
}
@@ -132,24 +141,28 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
// Dependencies (from constructor)
// /////////////////////////////////////////////////////////
+ protected IsisConfiguration getConfiguration() {
+ return configuration;
+ }
+
/**
* @return the dependencyInjector
*/
- public ServicesInjector getDependencyInjector() {
+ protected ServicesInjector getDependencyInjector() {
return dependencyInjector;
}
/**
* @return the authenticationSessionProvider
*/
- public AuthenticationSessionProvider getAuthenticationSessionProvider() {
+ protected AuthenticationSessionProvider getAuthenticationSessionProvider() {
return authenticationSessionProvider;
}
/**
* @return the adapterManager
*/
- public AdapterManager getAdapterManager() {
+ protected AdapterManager getAdapterManager() {
return adapterManager;
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeAbstract.java
index 59233c0..7cf70bd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeAbstract.java
@@ -29,8 +29,10 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
+import org.apache.isis.core.metamodel.interactions.PropertyAccessingContext;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -90,7 +92,10 @@ public abstract class RecreatableObjectFacetDeclarativeAbstract extends Recreata
}
if(propertyValue != null) {
- property.set(viewModelAdapter, adapterManager.adapterFor(propertyValue));
+ final PropertyAccessingContext propertyAccessingContext = property
+ .createAccessingInteractionContext(null, InteractionInvocationMethod.BY_USER, viewModelAdapter);
+ final ObjectAdapter newValue = adapterManager.adapterFor(propertyValue);
+ property.set(propertyAccessingContext, viewModelAdapter, newValue);
}
}
}
@@ -132,8 +137,11 @@ public abstract class RecreatableObjectFacetDeclarativeAbstract extends Recreata
}
// otherwise, include
- final ObjectAdapter propertyValueAdapter = property.get(adapterManager.adapterFor(viewModelPojo)
- );
+ final ObjectAdapter targetAdapter = adapterManager.adapterFor(viewModelPojo);
+ final PropertyAccessingContext propertyAccessingContext = property
+ .createAccessingInteractionContext(null, InteractionInvocationMethod.BY_USER, targetAdapter);
+ final ObjectAdapter propertyValueAdapter = property.get(targetAdapter,
+ propertyAccessingContext);
if(propertyValueAdapter != null) {
final Object propertyValue = propertyValueAdapter.getObject();
if(mementoService.canSet(propertyValue)) {
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
index bc41a4c..49dbc9b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
@@ -24,7 +24,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.lang.ClassExtensions;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
@@ -73,7 +72,11 @@ public abstract class ValueFacetAbstract extends MultipleValueFacetAbstract impl
this(newValueSemanticsProviderOrNull(semanticsProviderClass, holder, configuration, context), addFacetsIfInvalid, holder, context);
}
- public ValueFacetAbstract(final ValueSemanticsProvider<?> semanticsProvider, final AddFacetsIfInvalidStrategy addFacetsIfInvalid, final FacetHolder holder, final ValueSemanticsProviderContext context) {
+ public ValueFacetAbstract(
+ final ValueSemanticsProvider<?> semanticsProvider,
+ final AddFacetsIfInvalidStrategy addFacetsIfInvalid,
+ final FacetHolder holder,
+ final ValueSemanticsProviderContext context) {
super(type(), holder);
this.semanticsProvider = semanticsProvider;
@@ -125,7 +128,8 @@ public abstract class ValueFacetAbstract extends MultipleValueFacetAbstract impl
// Parser
final Parser<?> parser = semanticsProvider.getParser();
if (parser != null) {
- facetHolder.addFacet(new ParseableFacetUsingParser(parser, holder, getDeploymentCategory(context), getAuthenticationSessionProvider(), getDependencyInjector(), getAdapterMap()));
+ facetHolder.addFacet(new ParseableFacetUsingParser(parser, holder, context.getConfiguration(),
+ context.getDeploymentCategory(), getAuthenticationSessionProvider(), getDependencyInjector(), getAdapterMap()));
facetHolder.addFacet(new TitleFacetUsingParser(parser, holder, getDependencyInjector()));
facetHolder.addFacet(new TypicalLengthFacetUsingParser(parser, holder, getDependencyInjector()));
if(parser instanceof Parser2) {
@@ -176,10 +180,6 @@ public abstract class ValueFacetAbstract extends MultipleValueFacetAbstract impl
// Dependencies (from constructor)
// /////////////////////////////////////////
- protected DeploymentCategory getDeploymentCategory(final ValueSemanticsProviderContext context) {
- return context.getDeploymentCategory();
- }
-
public AdapterManager getAdapterMap() {
return context.getAdapterManager();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
index a53fafa..9c377b5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
@@ -102,7 +102,7 @@ public class ValueFacetAnnotationOrConfigurationFactory extends FacetFactoryAbst
// create from annotation, if present
final Value annotation = Annotations.getAnnotation(cls, Value.class);
if (annotation != null) {
- final ValueFacetAnnotation facet = new ValueFacetAnnotation(cls, holder, getIsisConfiguration(), createValueSemanticsProviderContext());
+ final ValueFacetAnnotation facet = new ValueFacetAnnotation(cls, holder, getConfiguration(), createValueSemanticsProviderContext());
if (facet.isValid()) {
return facet;
}
@@ -111,7 +111,7 @@ public class ValueFacetAnnotationOrConfigurationFactory extends FacetFactoryAbst
// otherwise, try to create from configuration, if present
final String semanticsProviderName = ValueSemanticsProviderUtil.semanticsProviderNameFromConfiguration(cls, configuration);
if (!Strings.isNullOrEmpty(semanticsProviderName)) {
- final ValueFacetFromConfiguration facet = new ValueFacetFromConfiguration(semanticsProviderName, holder, getIsisConfiguration(), createValueSemanticsProviderContext());
+ final ValueFacetFromConfiguration facet = new ValueFacetFromConfiguration(semanticsProviderName, holder, getConfiguration(), createValueSemanticsProviderContext());
if (facet.isValid()) {
return facet;
}
@@ -122,7 +122,9 @@ public class ValueFacetAnnotationOrConfigurationFactory extends FacetFactoryAbst
}
protected ValueSemanticsProviderContext createValueSemanticsProviderContext() {
- return new ValueSemanticsProviderContext(getDeploymentCategory(), getAuthenticationSessionProvider(), getSpecificationLoader(), getAdapterManager(), getServicesInjector());
+ return new ValueSemanticsProviderContext(
+ getConfiguration(), getDeploymentCategory(), getAuthenticationSessionProvider(),
+ getSpecificationLoader(), getAdapterManager(), getServicesInjector());
}
// ////////////////////////////////////////////////////////////////////
@@ -136,7 +138,7 @@ public class ValueFacetAnnotationOrConfigurationFactory extends FacetFactoryAbst
return runtimeContext.getDeploymentCategory();
}
- public IsisConfiguration getIsisConfiguration() {
+ public IsisConfiguration getConfiguration() {
return configuration;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
index 8af29ce..b050b30 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
@@ -74,7 +74,7 @@ public abstract class ValueFacetUsingSemanticsProviderFactory<T> extends FacetFa
public ValueSemanticsProviderContext getContext() {
if (context == null) {
- context = new ValueSemanticsProviderContext(getDeploymentCategory(), authenticationSessionProvider, getSpecificationLoader(), adapterManager, servicesInjector);
+ context = new ValueSemanticsProviderContext(getConfiguration(), getDeploymentCategory(), authenticationSessionProvider, getSpecificationLoader(), adapterManager, servicesInjector);
}
return context;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java
index 22bd976..5687daf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderContext.java
@@ -17,13 +17,15 @@
package org.apache.isis.core.metamodel.facets.object.value.vsp;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
public class ValueSemanticsProviderContext {
-
+
+ private final IsisConfiguration isisConfiguration;
private final DeploymentCategory deploymentCategory;
private final AuthenticationSessionProvider authenticationSessionProvider;
private final SpecificationLoader specificationLookup;
@@ -31,7 +33,13 @@ public class ValueSemanticsProviderContext {
private final ServicesInjector dependencyInjector;
public ValueSemanticsProviderContext(
- final DeploymentCategory deploymentCategory, final AuthenticationSessionProvider authenticationSessionProvider, final SpecificationLoader specificationLookup, final AdapterManager adapterManager, final ServicesInjector dependencyInjector) {
+ final IsisConfiguration configuration,
+ final DeploymentCategory deploymentCategory,
+ final AuthenticationSessionProvider authenticationSessionProvider,
+ final SpecificationLoader specificationLookup,
+ final AdapterManager adapterManager,
+ final ServicesInjector dependencyInjector) {
+ this.isisConfiguration = configuration;
this.deploymentCategory = deploymentCategory;
this.authenticationSessionProvider = authenticationSessionProvider;
this.specificationLookup = specificationLookup;
@@ -39,6 +47,10 @@ public class ValueSemanticsProviderContext {
this.dependencyInjector = dependencyInjector;
}
+ public IsisConfiguration getConfiguration() {
+ return isisConfiguration;
+ }
+
public DeploymentCategory getDeploymentCategory() {
return deploymentCategory;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/choices/ChoicesFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/choices/ChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/choices/ChoicesFacet.java
index 5aefe69..014135f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/choices/ChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/choices/ChoicesFacet.java
@@ -23,6 +23,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.interactions.AccessContext;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
public interface ChoicesFacet extends Facet {
@@ -31,7 +32,8 @@ public interface ChoicesFacet extends Facet {
* Gets a set of choices for this object.
*/
public Object[] getChoices(
- ObjectAdapter adapter,
+ final AccessContext<?> accessContext,
+ final ObjectAdapter adapter,
final AuthenticationSession authenticationSession,
final DeploymentCategory deploymentCategory);
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
index 85e572b..4c4a0b0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.MarkerFacetAbstract;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
import org.apache.isis.core.metamodel.interactions.ActionArgumentContext;
-import org.apache.isis.core.metamodel.interactions.PropertyModifyContext;
+import org.apache.isis.core.metamodel.interactions.PropertyValidityContext;
import org.apache.isis.core.metamodel.interactions.ProposedHolder;
import org.apache.isis.core.metamodel.interactions.ValidityContext;
@@ -77,7 +77,7 @@ public abstract class MandatoryFacetAbstract extends MarkerFacetAbstract impleme
@Override
public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
- if (!(context instanceof PropertyModifyContext) && !(context instanceof ActionArgumentContext)) {
+ if (!(context instanceof PropertyValidityContext) && !(context instanceof ActionArgumentContext)) {
return null;
}
if (!(context instanceof ProposedHolder)) {
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacet.java
index 56a5838..dcc1fe0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacet.java
@@ -23,6 +23,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.interactions.ActionPromptContext;
/**
* Obtain autocompletion for each of the parameters of the action.
@@ -35,9 +36,11 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
public interface ActionParameterAutoCompleteFacet extends Facet {
public Object[] autoComplete(
- ObjectAdapter inObject,
- String searchArg,
- final AuthenticationSession authenticationSession, final DeploymentCategory deploymentCategory);
+ final ActionPromptContext actionPromptContext,
+ final ObjectAdapter inObject,
+ final String searchArg,
+ final AuthenticationSession authenticationSession,
+ final DeploymentCategory deploymentCategory);
/**
* The minimum number of characters that need to be entered.
*/
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
index eda2e50..1ab9595 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
@@ -36,6 +36,7 @@ import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacetAbstract;
import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
+import org.apache.isis.core.metamodel.interactions.ActionPromptContext;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
@@ -45,7 +46,12 @@ public class ActionParameterAutoCompleteFacetViaMethod extends ActionParameterAu
private final Class<?> choicesType;
private final int minLength;
- public ActionParameterAutoCompleteFacetViaMethod(final Method method, final Class<?> choicesType, final FacetHolder holder, final SpecificationLoader specificationLookup, final AdapterManager adapterManager) {
+ public ActionParameterAutoCompleteFacetViaMethod(
+ final Method method,
+ final Class<?> choicesType,
+ final FacetHolder holder,
+ final SpecificationLoader specificationLookup,
+ final AdapterManager adapterManager) {
super(holder, specificationLookup, adapterManager);
this.method = method;
this.choicesType = choicesType;
@@ -83,6 +89,7 @@ public class ActionParameterAutoCompleteFacetViaMethod extends ActionParameterAu
@Override
public Object[] autoComplete(
+ final ActionPromptContext actionPromptContext,
final ObjectAdapter owningAdapter,
final String searchArg,
final AuthenticationSession authenticationSession,
@@ -100,7 +107,7 @@ public class ActionParameterAutoCompleteFacetViaMethod extends ActionParameterAu
final List<ObjectAdapter> visibleAdapters =
ObjectAdapter.Util.visibleAdapters(
collectionAdapter,
- authenticationSession, deploymentCategory);
+ authenticationSession, actionPromptContext.getConfiguration(), deploymentCategory, actionPromptContext);
final List<Object> visibleObjects = Lists.newArrayList(
Iterables.transform(visibleAdapters, ObjectAdapter.Functions.getObject()));
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionChoicesFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionChoicesFacet.java
index a7efd0b..8a50b64 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionChoicesFacet.java
@@ -23,6 +23,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.interactions.ActionPromptContext;
/**
* Obtain choices for each of the parameters of the action.
@@ -34,7 +35,8 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
public interface ActionChoicesFacet extends Facet {
public Object[][] getChoices(
- ObjectAdapter inObject,
+ final ActionPromptContext actionPromptContext,
+ final ObjectAdapter inObject,
final AuthenticationSession authenticationSession,
final DeploymentCategory deploymentCategory);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacet.java
index 21a31b3..2ddc819 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacet.java
@@ -25,6 +25,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.interactions.ActionPromptContext;
/**
* Obtain choices for each of the parameters of the action.
@@ -37,6 +38,7 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
public interface ActionParameterChoicesFacet extends Facet {
public Object[] getChoices(
+ final ActionPromptContext actionPromptContext,
final ObjectAdapter target,
final List<ObjectAdapter> arguments,
final AuthenticationSession authenticationSession,
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
index 028f131..61f6e52 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
@@ -26,6 +26,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.interactions.ActionPromptContext;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
public class ActionParameterChoicesFacetNone extends ActionParameterChoicesFacetAbstract {
@@ -39,7 +40,7 @@ public class ActionParameterChoicesFacetNone extends ActionParameterChoicesFacet
@Override
public Object[] getChoices(
- final ObjectAdapter adapter,
+ final ActionPromptContext actionPromptContext, final ObjectAdapter adapter,
final List<ObjectAdapter> arguments,
final AuthenticationSession authenticationSession,
final DeploymentCategory deploymentCategory) {
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
index 4fcd09a..ee9cecd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.TypedHolder;
import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
+import org.apache.isis.core.metamodel.interactions.ActionPromptContext;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacetAbstract;
@@ -40,6 +41,7 @@ public class ActionParameterChoicesFacetDerivedFromChoicesFacet extends ActionPa
@Override
public Object[] getChoices(
+ final ActionPromptContext actionPromptContext,
final ObjectAdapter adapter,
final List<ObjectAdapter> arguments,
final AuthenticationSession authenticationSession,
@@ -51,7 +53,7 @@ public class ActionParameterChoicesFacetDerivedFromChoicesFacet extends ActionPa
if (choicesFacet == null) {
return new Object[0];
}
- return choicesFacet.getChoices(adapter, authenticationSession, deploymentCategory);
+ return choicesFacet.getChoices(actionPromptContext, adapter, authenticationSession, deploymentCategory);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
index 8cb847c..fe65dc3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
@@ -31,12 +31,13 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.CollectionUtils;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacetAbstract;
+import org.apache.isis.core.metamodel.interactions.ActionPromptContext;
import org.apache.isis.core.metamodel.spec.DomainModelException;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.facets.CollectionUtils;
public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract implements ImperativeFacet {
@@ -84,6 +85,7 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
@Override
public Object[][] getChoices(
+ final ActionPromptContext actionPromptContext,
final ObjectAdapter owningAdapter,
final AuthenticationSession authenticationSession,
final DeploymentCategory deploymentCategory) {
@@ -98,12 +100,13 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
final Object[][] results = new Object[options.length][];
for (int i = 0; i < results.length; i++) {
final Class<?> parameterType = method.getParameterTypes()[i];
- results[i] = handleResults(options[i], parameterType, authenticationSession, deploymentCategory);
+ results[i] = handleResults(actionPromptContext, options[i], parameterType, authenticationSession, deploymentCategory);
}
return results;
}
private Object[] handleResults(
+ final ActionPromptContext actionPromptContext,
final Object collectionOrArray,
final Class<?> parameterType,
final AuthenticationSession authenticationSession,
@@ -117,8 +120,9 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
final List<ObjectAdapter> visibleAdapters =
ObjectAdapter.Util.visibleAdapters(
collectionAdapter,
- authenticationSession, deploymentCategory
- );
+ authenticationSession,
+ actionPromptContext.getConfiguration(), deploymentCategory,
+ actionPromptContext);
final List<Object> filteredObjects = Lists.newArrayList(
Iterables.transform(visibleAdapters, ObjectAdapter.Functions.getObject()));
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
index d7500e0..2375968 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
@@ -35,6 +35,7 @@ import org.apache.isis.core.metamodel.facets.CollectionUtils;
import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacetAbstract;
+import org.apache.isis.core.metamodel.interactions.ActionPromptContext;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
@@ -80,6 +81,7 @@ public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoices
@Override
public Object[] getChoices(
+ final ActionPromptContext actionPromptContext,
final ObjectAdapter adapter,
final List<ObjectAdapter> argumentsIfAvailable,
final AuthenticationSession authenticationSession,
@@ -96,8 +98,8 @@ public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoices
final List<ObjectAdapter> visibleAdapters =
ObjectAdapter.Util.visibleAdapters(
objectAdapter,
- authenticationSession, deploymentCategory
- );
+ authenticationSession, actionPromptContext.getConfiguration(), deploymentCategory,
+ actionPromptContext);
final List<Object> visibleObjects = Lists.newArrayList(
Iterables.transform(visibleAdapters, ObjectAdapter.Functions.getObject()));
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java
index a4e45c9..232816f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java
@@ -23,6 +23,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.interactions.AssociationAccessingContext;
/**
* The mechanism by which the value of the property can be accessed.
@@ -42,12 +43,13 @@ public interface PropertyOrCollectionAccessorFacet extends Facet {
* omitted from that collection, while for a property if the referenced object is invisible then null will be
* returned.
* </p>
- *
+ * @param associationAccessingContext
* @param inObject
* @param authenticationSession - if null, then does _not_ filter out any objects that would otherwise be invisible to the current user
* @param deploymentCategory
*/
public Object getProperty(
+ final AssociationAccessingContext<?> associationAccessingContext,
final ObjectAdapter inObject,
final AuthenticationSession authenticationSession,
final DeploymentCategory deploymentCategory);
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
index 677ed98..46c5e04 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
@@ -27,6 +27,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
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 org.apache.isis.core.metamodel.interactions.AssociationAccessingContext;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
@@ -55,7 +56,8 @@ public abstract class PropertyOrCollectionAccessorFacetAbstract
@Override
public abstract Object getProperty(
- ObjectAdapter inObject,
+ final AssociationAccessingContext<?> associationAccessingContext,
+ final ObjectAdapter inObject,
final AuthenticationSession authenticationSession,
final DeploymentCategory deploymentCategory);
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
index 6875e24..4c1b53c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
@@ -32,6 +32,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
+import org.apache.isis.core.metamodel.interactions.AssociationAccessingContext;
import org.apache.isis.core.metamodel.interactions.InteractionUtils;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
@@ -83,6 +84,7 @@ public class PropertyAccessorFacetViaAccessor
@Override
public Object getProperty(
+ final AssociationAccessingContext<?> associationAccessingContext,
final ObjectAdapter owningAdapter,
final AuthenticationSession authenticationSession,
final DeploymentCategory deploymentCategory) {
@@ -97,7 +99,8 @@ public class PropertyAccessorFacetViaAccessor
if(filterForVisibility) {
final ObjectAdapter referencedAdapter = getAdapterManager().adapterFor(referencedObject);
final boolean visible = ObjectAdapter.Util
- .isVisible(referencedAdapter, authenticationSession, deploymentCategory);
+ .isVisible(referencedAdapter, authenticationSession, associationAccessingContext.getConfiguration(), deploymentCategory,
+ associationAccessingContext);
if (!visible) {
return null;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/PropertyAutoCompleteFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/PropertyAutoCompleteFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/PropertyAutoCompleteFacet.java
index aa5dda3..d934038 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/PropertyAutoCompleteFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/PropertyAutoCompleteFacet.java
@@ -23,6 +23,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.interactions.PropertyAccessingContext;
/**
* Provides a set of auto-complete choices for a property.
@@ -42,6 +43,7 @@ public interface PropertyAutoCompleteFacet extends Facet {
* Gets the available auto-complete choices for this property.
*/
public Object[] autoComplete(
+ final PropertyAccessingContext propertyAccessingContext,
final ObjectAdapter inObject,
final String searchArg,
final AuthenticationSession authenticationSession,
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
deleted file mode 100644
index 3e62cc5..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
+++ /dev/null
@@ -1,149 +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.properties.autocomplete.method;
-
-import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.List;
-
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.CollectionUtils;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
-import org.apache.isis.core.metamodel.facets.properties.autocomplete.PropertyAutoCompleteFacetAbstract;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-
-public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAbstract implements ImperativeFacet {
-
- private final Method method;
- private final Class<?> choicesClass;
- private final int minLength;
-
- private final AdapterManager adapterManager;
- private SpecificationLoader specificationLoader;
-
- public PropertyAutoCompleteFacetMethod(
- final Method method,
- final Class<?> choicesClass,
- final FacetHolder holder,
- final SpecificationLoader specificationLoader,
- final AdapterManager adapterManager) {
- super(holder);
- this.method = method;
- this.choicesClass = choicesClass;
- this.specificationLoader = specificationLoader;
- this.adapterManager = adapterManager;
- this.minLength = MinLengthUtil.determineMinLength(method);
- }
-
- /**
- * Returns a singleton list of the {@link Method} provided in the
- * constructor.
- */
- @Override
- public List<Method> getMethods() {
- return Collections.singletonList(method);
- }
-
- @Override
- public Intent getIntent(final Method method) {
- return Intent.CHOICES_OR_AUTOCOMPLETE;
- }
-
- @Override
- public int getMinLength() {
- return minLength;
- }
-
- @Override
- public boolean impliesResolve() {
- return true;
- }
-
- @Override
- public boolean impliesObjectChanged() {
- return false;
- }
-
- @Override
- public Object[] autoComplete(
- final ObjectAdapter owningAdapter,
- final String searchArg,
- final AuthenticationSession authenticationSession,
- final DeploymentCategory deploymentCategory) {
-
- final Object collectionOrArray = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter, searchArg);
- if (collectionOrArray == null) {
- return null;
- }
-
- final ObjectAdapter collectionAdapter = getAdapterManager().adapterFor(collectionOrArray);
-
- final FacetedMethod facetedMethod = (FacetedMethod) getFacetHolder();
- final Class<?> propertyType = facetedMethod.getType();
-
- final List<ObjectAdapter> visibleAdapters =
- ObjectAdapter.Util.visibleAdapters(
- collectionAdapter,
- authenticationSession, deploymentCategory
- );
- final List<Object> filteredObjects = Lists.newArrayList(
- Iterables.transform(visibleAdapters, ObjectAdapter.Functions.getObject()));
-
- final ObjectSpecification propertySpec = getSpecification(propertyType);
- return CollectionUtils.getCollectionAsObjectArray(filteredObjects, propertySpec, getAdapterManager());
- }
-
- @Override
- protected String toStringValues() {
- return "method=" + method + ",class=" + choicesClass;
- }
-
-
-
-
- protected ObjectSpecification getSpecification(final Class<?> type) {
- return type != null ? getSpecificationLoader().loadSpecification(type) : null;
- }
-
- // ////////////////////////////////////////////
- // Dependencies
- // ////////////////////////////////////////////
-
- protected AdapterManager getAdapterManager() {
- return adapterManager;
- }
-
- protected SpecificationLoader getSpecificationLoader() {
- return specificationLoader;
- }
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
index 3f73199..0ca146c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
@@ -62,7 +62,7 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
processMethodContext.removeMethod(autoCompleteMethod);
final FacetHolder property = processMethodContext.getFacetHolder();
- FacetUtil.addFacet(new PropertyAutoCompleteFacetMethod(autoCompleteMethod, returnType, property, getSpecificationLoader(), getAdapterManager()));
+ FacetUtil.addFacet(new PropertyAutoCompleteFacetViaMethod(autoCompleteMethod, returnType, property, getSpecificationLoader(), getAdapterManager()));
}
// ///////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetViaMethod.java
new file mode 100644
index 0000000..6c69c37
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetViaMethod.java
@@ -0,0 +1,153 @@
+/*
+ * 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.properties.autocomplete.method;
+
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.List;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.CollectionUtils;
+import org.apache.isis.core.metamodel.facets.FacetedMethod;
+import org.apache.isis.core.metamodel.facets.ImperativeFacet;
+import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
+import org.apache.isis.core.metamodel.facets.properties.autocomplete.PropertyAutoCompleteFacetAbstract;
+import org.apache.isis.core.metamodel.interactions.PropertyAccessingContext;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+
+public class PropertyAutoCompleteFacetViaMethod extends PropertyAutoCompleteFacetAbstract implements ImperativeFacet {
+
+ private final Method method;
+ private final Class<?> choicesClass;
+ private final int minLength;
+
+ private final AdapterManager adapterManager;
+ private SpecificationLoader specificationLoader;
+
+ public PropertyAutoCompleteFacetViaMethod(
+ final Method method,
+ final Class<?> choicesClass,
+ final FacetHolder holder,
+ final SpecificationLoader specificationLoader,
+ final AdapterManager adapterManager) {
+ super(holder);
+ this.method = method;
+ this.choicesClass = choicesClass;
+ this.specificationLoader = specificationLoader;
+ this.adapterManager = adapterManager;
+ this.minLength = MinLengthUtil.determineMinLength(method);
+ }
+
+ /**
+ * Returns a singleton list of the {@link Method} provided in the
+ * constructor.
+ */
+ @Override
+ public List<Method> getMethods() {
+ return Collections.singletonList(method);
+ }
+
+ @Override
+ public Intent getIntent(final Method method) {
+ return Intent.CHOICES_OR_AUTOCOMPLETE;
+ }
+
+ @Override
+ public int getMinLength() {
+ return minLength;
+ }
+
+ @Override
+ public boolean impliesResolve() {
+ return true;
+ }
+
+ @Override
+ public boolean impliesObjectChanged() {
+ return false;
+ }
+
+ @Override
+ public Object[] autoComplete(
+ final PropertyAccessingContext propertyAccessingContext,
+ final ObjectAdapter owningAdapter,
+ final String searchArg,
+ final AuthenticationSession authenticationSession,
+ final DeploymentCategory deploymentCategory) {
+
+ final Object collectionOrArray = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter, searchArg);
+ if (collectionOrArray == null) {
+ return null;
+ }
+
+ final ObjectAdapter collectionAdapter = getAdapterManager().adapterFor(collectionOrArray);
+
+ final FacetedMethod facetedMethod = (FacetedMethod) getFacetHolder();
+ final Class<?> propertyType = facetedMethod.getType();
+
+ final List<ObjectAdapter> visibleAdapters =
+ ObjectAdapter.Util.visibleAdapters(
+ collectionAdapter,
+ authenticationSession,
+ propertyAccessingContext.getConfiguration(),
+ deploymentCategory,
+ propertyAccessingContext);
+ final List<Object> filteredObjects = Lists.newArrayList(
+ Iterables.transform(visibleAdapters, ObjectAdapter.Functions.getObject()));
+
+ final ObjectSpecification propertySpec = getSpecification(propertyType);
+ return CollectionUtils.getCollectionAsObjectArray(filteredObjects, propertySpec, getAdapterManager());
+ }
+
+ @Override
+ protected String toStringValues() {
+ return "method=" + method + ",class=" + choicesClass;
+ }
+
+
+
+
+ protected ObjectSpecification getSpecification(final Class<?> type) {
+ return type != null ? getSpecificationLoader().loadSpecification(type) : null;
+ }
+
+ // ////////////////////////////////////////////
+ // Dependencies
+ // ////////////////////////////////////////////
+
+ protected AdapterManager getAdapterManager() {
+ return adapterManager;
+ }
+
+ protected SpecificationLoader getSpecificationLoader() {
+ return specificationLoader;
+ }
+
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacet.java
index a45b32d..fedc8b0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/PropertyChoicesFacet.java
@@ -23,6 +23,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.interactions.PropertyAccessingContext;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
/**
@@ -47,6 +48,7 @@ public interface PropertyChoicesFacet extends Facet {
* Gets the available choices for this property.
*/
public Object[] getChoices(
+ final PropertyAccessingContext propertyAccessingContext,
final ObjectAdapter adapter,
final SpecificationLoader specificationLookup,
final AuthenticationSession authenticationSession,
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
index a4a7d9c..1c06545 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
@@ -25,6 +25,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
+import org.apache.isis.core.metamodel.interactions.PropertyAccessingContext;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacetAbstract;
@@ -37,6 +38,7 @@ public class PropertyChoicesFacetDerivedFromChoicesFacet extends PropertyChoices
@Override
public Object[] getChoices(
+ final PropertyAccessingContext propertyAccessingContext,
final ObjectAdapter adapter,
final SpecificationLoader specificationLookup,
final AuthenticationSession authenticationSession,
@@ -49,7 +51,7 @@ public class PropertyChoicesFacetDerivedFromChoicesFacet extends PropertyChoices
if (choicesFacet == null) {
return new Object[0];
}
- return choicesFacet.getChoices(adapter, authenticationSession, deploymentCategory);
+ return choicesFacet.getChoices(propertyAccessingContext, adapter, authenticationSession, deploymentCategory);
}
public ObjectSpecification getSpecification(final Class<?> type) {
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
index 23fe31d..fde23cf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
@@ -30,6 +30,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
+import org.apache.isis.core.metamodel.interactions.PropertyAccessingContext;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
import org.apache.isis.core.metamodel.facets.CollectionUtils;
@@ -75,7 +76,7 @@ public class PropertyChoicesFacetViaMethod extends PropertyChoicesFacetAbstract
@Override
public Object[] getChoices(
- final ObjectAdapter owningAdapter,
+ final PropertyAccessingContext propertyAccessingContext, final ObjectAdapter owningAdapter,
final SpecificationLoader specificationLookup,
final AuthenticationSession authenticationSession, final DeploymentCategory deploymentCategory) {
final Object options = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventAbstract.java
index 2392c9d..3ee17f3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventAbstract.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.facets.DomainEventHelper;
import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract;
import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
+import org.apache.isis.core.metamodel.interactions.PropertyAccessingContext;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
public abstract class PropertyClearFacetForDomainEventAbstract
@@ -61,19 +62,21 @@ public abstract class PropertyClearFacetForDomainEventAbstract
}
@Override
- public void clearProperty(ObjectAdapter targetAdapter) {
+ public void clearProperty(
+ final PropertyAccessingContext propertyAccessingContext,
+ final ObjectAdapter targetAdapter) {
if(clearFacet == null) {
return;
}
if(!domainEventHelper.hasEventBusService()) {
- clearFacet.clearProperty(targetAdapter);
+ clearFacet.clearProperty(propertyAccessingContext, targetAdapter);
return;
}
// ... post the executing event
- final Object oldValue = getterFacet.getProperty(targetAdapter, null, null);
+ final Object oldValue = getterFacet.getProperty(propertyAccessingContext, targetAdapter, null, null);
final PropertyDomainEvent<?, ?> event =
domainEventHelper.postEventForProperty(
AbstractDomainEvent.Phase.EXECUTING,
@@ -82,10 +85,10 @@ public abstract class PropertyClearFacetForDomainEventAbstract
oldValue, null);
// ... perform the property clear
- clearFacet.clearProperty(targetAdapter);
+ clearFacet.clearProperty(propertyAccessingContext, targetAdapter);
// reading the actual value from the target object, playing it safe...
- final Object actualNewValue = getterFacet.getProperty(targetAdapter, null, null);
+ final Object actualNewValue = getterFacet.getProperty(propertyAccessingContext, targetAdapter, null, null);
if(Objects.equal(oldValue, actualNewValue)) {
// do nothing.
return;
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
index 860c35e..ffb8c7c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
@@ -32,12 +32,15 @@ import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.DomainEventHelper;
import org.apache.isis.core.metamodel.facets.SingleClassValueFacetAbstract;
import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
+import org.apache.isis.core.metamodel.interactions.PropertyAccessingContext;
+import org.apache.isis.core.metamodel.interactions.PropertyValidityContext;
import org.apache.isis.core.metamodel.interactions.ProposedHolder;
import org.apache.isis.core.metamodel.interactions.UsabilityContext;
import org.apache.isis.core.metamodel.interactions.ValidityContext;
import org.apache.isis.core.metamodel.interactions.VisibilityContext;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
public abstract class PropertyDomainEventFacetAbstract
extends SingleClassValueFacetAbstract implements PropertyDomainEventFacet {
@@ -110,7 +113,11 @@ public abstract class PropertyDomainEventFacetAbstract
return null;
}
- final Object oldValue = getterFacet.getProperty(ic.getTarget(), ic.getSession(), ic.getDeploymentCategory());
+ PropertyValidityContext pvc = (PropertyValidityContext) ic;
+ final OneToOneAssociation property = pvc.getProperty();
+ final PropertyAccessingContext propertyAccessingContext = property
+ .createAccessingInteractionContext(ic.getSession(), ic.getInvocationMethod(), ic.getTarget());
+ final Object oldValue = getterFacet.getProperty(propertyAccessingContext, ic.getTarget(), ic.getSession(), ic.getDeploymentCategory());
final Object proposedValue = proposedFrom(ic);
final PropertyDomainEvent<?, ?> event =
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventAbstract.java
index 24c3bb8..4b5398e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventAbstract.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.facets.DomainEventHelper;
import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract;
import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
+import org.apache.isis.core.metamodel.interactions.PropertyAccessingContext;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
public abstract class PropertySetterFacetForDomainEventAbstract
@@ -60,18 +61,20 @@ public abstract class PropertySetterFacetForDomainEventAbstract
}
@Override
- public void setProperty(ObjectAdapter targetAdapter, ObjectAdapter newValueAdapter) {
+ public void setProperty(
+ final PropertyAccessingContext propertyAccessingContext, ObjectAdapter targetAdapter,
+ ObjectAdapter newValueAdapter) {
if(setterFacet == null) {
return;
}
if(!domainEventHelper.hasEventBusService()) {
- setterFacet.setProperty(targetAdapter, newValueAdapter);
+ setterFacet.setProperty(propertyAccessingContext, targetAdapter, newValueAdapter);
return;
}
// ... post the executing event
- final Object oldValue = getterFacet.getProperty(targetAdapter, null, null);
+ final Object oldValue = getterFacet.getProperty(propertyAccessingContext, targetAdapter, null, null);
final Object newValue = ObjectAdapter.Util.unwrap(newValueAdapter);
final PropertyDomainEvent<?, ?> event =
@@ -82,10 +85,10 @@ public abstract class PropertySetterFacetForDomainEventAbstract
oldValue, newValue);
// ... perform the property modification
- setterFacet.setProperty(targetAdapter, newValueAdapter);
+ setterFacet.setProperty(propertyAccessingContext, targetAdapter, newValueAdapter);
// reading the actual value from the target object, playing it safe...
- final Object actualNewValue = getterFacet.getProperty(targetAdapter, null, null);
+ final Object actualNewValue = getterFacet.getProperty(propertyAccessingContext, targetAdapter, null, null);
if(Objects.equal(oldValue, actualNewValue)) {
// do nothing
return;
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacet.java
index 0b8fc87..b5f299a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacet.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.facets.properties.update.clear;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.interactions.PropertyAccessingContext;
/**
* Mechanism for clearing a property of an object (that is, setting it to
@@ -34,5 +35,7 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
*/
public interface PropertyClearFacet extends Facet {
- public void clearProperty(ObjectAdapter inObject);
+ public void clearProperty(
+ final PropertyAccessingContext propertyAccessingContext,
+ final ObjectAdapter targetAdapter);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4ac11bbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacetViaClearMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacetViaClearMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacetViaClearMethod.java
index ce0db84..c01e15a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacetViaClearMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacetViaClearMethod.java
@@ -26,6 +26,7 @@ import java.util.List;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
+import org.apache.isis.core.metamodel.interactions.PropertyAccessingContext;
public class PropertyClearFacetViaClearMethod extends PropertyClearFacetAbstract implements ImperativeFacet {
@@ -61,8 +62,10 @@ public class PropertyClearFacetViaClearMethod extends PropertyClearFacetAbstract
}
@Override
- public void clearProperty(final ObjectAdapter owningAdapter) {
- ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
+ public void clearProperty(
+ final PropertyAccessingContext propertyAccessingContext,
+ final ObjectAdapter targetAdapter) {
+ ObjectAdapter.InvokeUtils.invoke(method, targetAdapter);
}
@Override